HunyuanVideo用キャラクタLoRA作成の手順

2025/1/7時点でのmusubi-tunerを利用したHunyuanVideoによる動画生成時にアニメキャラクタを再現可能にする静止画LoRAの作成手順をまとめました。

基本的にはmusubi-tunerのREADME.ja.mdそのままですが、おかしいところがあったたらごめんなさい。

Windows + Geforce 3060(12GB) + メモリ32GBのマシンで動作確認しています。

musubi-tunerのインストール

事前にpython3.10git for windowsをインストールして正常に動くか確認しておいてください。

musubi-tunerのインストールに従ってインストールしていきます。

エクスプローラーの適当なフォルダ上で右クリックのターミナルを開くを押してWindows PowerShellを起動し、git経由でインストールしてください。古いpythonを使っている場合は、忘れずにpipを最新版にアップグレードしてください(pip 22.2.1だとエラーが出ます)。

1
2
3
4
5
6
7
git clone https://github.com/kohya-ss/musubi-tuner.git
cd musubi-tuner
python -m venv venv
venv\Scripts\Activate.ps1
python -m pip install --upgrade pip
pip install torch torchvision --index-url https://download.pytorch.org/whl/cu124
pip install -r requirements.txt

accelerateの設定をします(しなくてもいいかも)。

accelerate config

次のように設定にしてください(HunyuanVideoモデル本体がbfloat16のようなので念のためbf16にしています)。

  • This machine
  • No distributed training
  • NO
  • NO
  • NO
  • all
  • bf16

モデルのダウンロード

musubi-tunerのモデルのダウンロードより、学習に必要なモデルは次の4つです(ファイル直リンク)。

ダウンロードしたファイルはmusubi-tunerのインストールフォルダ以下にmodelsフォルダを作成してそこに置いてください。

データセットの作成

データセット設定ファイルの作成

sd-scriptsと異なり、musubi-tunerのデータセットの作成によるとmusubi-tunerではTOML形式のデータセットの設定ファイルが必要です。

学習用データセットはgakushuフォルダ以下に置き、cachedirフォルダにlatentやText Encoderのキャッシュを置くように設定します。解像度512でも問題なかったのでそう設定しています(学習用画像のサイズは念のため1024x1024以下に縮小していますが意味ないかも←意味ないようです)(解像度768でも学習できます。3060で解像度1024では速度が極端に落ちます)。

メモ帳等で次の内容のgakushu.tomlを作成してmusubi-tunerのインストールフォルダに保存してください。

[general]
resolution = 512
caption_extension = '.txt'
batch_size = 1
enable_bucket = true
bucket_no_upscale = true

[[datasets]]
image_directory = 'gakushu'
cache_directory = 'cachedir' 

学習用画像データのタグ付けと学習用画像の配置

sd-scriptsと異なり、musubi-tunerではText Encoderについては学習しないので、トリガーワードは使われないようです(上のデータセット設定でも指定していないしそもそも指定できない)。なので、wd14-taggerでタグ付けする際には、キャラクタ名や三文字等のトリガーワードを追加せずタグ付けしてください。髪型や髪色や目の色などの特徴を示すタグは取っても取らなくても大丈夫です。取らない場合は生成時にタグを加えないと髪色が変わる場合があります。

学習用画像とタグの入ったtxtをgakushuフォルダに置いてください。

なお、キャラクタ学習の場合学習画像は10枚程度で十分再現できるようです。

LoRA学習

musubi-tunerの使い方に従い、latentのキャッシュ作成、Text Encoderのキャッシュ作成、本体の学習、ComfyUI対応モデルへの変換の順に作業していきます。

latentのキャッシュ作成

次のコマンドでlatentのキャッシュを作成します。

python cache_latents.py --dataset_config gakushu.toml --vae models\pytorch_model.pt --vae_chunk_size 32 --vae_tiling

学習画像が10枚ぐらいならモデルのロード時間を含めて1分かからないはずです。cachedirフォルダに*_hv.safetensorsのようなファイルが学習画像の枚数分できます。

Text Encoderのキャッシュ作成

次のコマンドでText Encoderのキャッシュを作成します。なお、text_encoder1をllava_llama3、text_encoder2をCLIPにしないとエラーになるはずです。

python cache_text_encoder_outputs.py --fp8_llm --dataset_config gakushu.toml  --text_encoder1 models\llava_llama3_fp16.safetensors --text_encoder2 models\clip_l.safetensors --batch_size 16

こちらはモデルのロードにかなり時間がかかり、学習画像が10枚ぐらいでも全体で5分ぐらいかかりました。cachedirフォルダに*_hv_te.safetensorsのようなファイルが学習画像の枚数分できます。

本体の学習(2025/1/17変更)

LoRA名は--output_nameで指定します。変更したい場合は--output_name gakushugakushuの部分を変更してください。outputsフォルダに学習したLoRAが保存されます。学習の設定はオプティマイザはadamw8bit、学習レート0.001(1e-3)、network_dimが32で、50エポックまで学習し10エポックごとに保存しています。--blocks_to_swap 36で限界までCPUにオフロードしています。

2025/1/16サンプルの学習設定を、学習率を2e-4に、`--timestep_sampling`を`shift`に、`--discrete_flow_shift`を7.0に変更しました。より高速な学習が期待されます。と公式文書が更新されたので次のようにします。50エポックにしていますが30エポックぐらいでも大丈夫だと思います。

長いですが1行で入力してください。

accelerate launch --num_cpu_threads_per_process 4 --mixed_precision bf16 hv_train_network.py --dit models\mp_rank_00_model_states.pt --dataset_config gakushu.toml --sdpa --mixed_precision bf16 --fp8_base --optimizer_type adamw8bit --learning_rate 2e-4 --gradient_checkpointing  --max_data_loader_n_workers 2 --persistent_data_loader_workers --network_module=networks.lora --network_dim=32 --timestep_sampling shift --discrete_flow_shift 7.0 --max_train_epochs 50 --save_every_n_epochs=10 --seed 42 --blocks_to_swap 36 --output_dir output --output_name gakushu

こちらもモデルのロードにかなり時間がかかります。学習開始まで20分ぐらいかかります。学習画像10枚で解像度512ならトータルで1時間15分ぐらいで終わるはずです。

LoRAをComfyUIで使える形式に変換

生成されたLoRAはそのままではComfyUIでは使えないので変換します。変換後のファイル名は--outputで指定します。outputフォルダのgakushu_lora.safetensorsにしていますが、変更したい場合は--output output/gakushu_lora.safetensorsgakushu_lora.safetensorsを変更してください。

python convert_lora.py --input output\gakushu.safetensors --output output\gakushu_lora.safetensors --target other

変換は1分以内に終わるはずです。

ComfyUIでのLoRA使用

Loraファイルgakushu_lora.safetensorsをComfyUIのmodelsのlorasフォルダに移動する等をしてワークフローにLoRAを追加してください。

Edit Report
Pub: 07 Jan 2025 07:28 UTC
Edit: 17 Jan 2025 06:21 UTC
Views: 2525