HunyuanVideo用キャラクタLoRA作成の手順
2025/1/7時点でのmusubi-tunerを利用したHunyuanVideoによる動画生成時にアニメキャラクタを再現可能にする静止画LoRAの作成手順をまとめました。
基本的にはmusubi-tunerのREADME.ja.mdそのままですが、おかしいところがあったたらごめんなさい。
Windows + Geforce 3060(12GB) + メモリ32GBのマシンで動作確認しています。
musubi-tunerのインストール
事前にpython3.10とgit for windowsをインストールして正常に動くか確認しておいてください。
musubi-tunerのインストールに従ってインストールしていきます。
エクスプローラーの適当なフォルダ上で右クリックのターミナルを開くを押してWindows PowerShellを起動し、git経由でインストールしてください。古いpythonを使っている場合は、忘れずにpipを最新版にアップグレードしてください(pip 22.2.1だとエラーが出ます)。
accelerateの設定をします(しなくてもいいかも)。
次のように設定にしてください(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のインストールフォルダに保存してください。
学習用画像データのタグ付けと学習用画像の配置
sd-scriptsと異なり、musubi-tunerではText Encoderについては学習しないので、トリガーワードは使われないようです(上のデータセット設定でも指定していないしそもそも指定できない)。なので、wd14-taggerでタグ付けする際には、キャラクタ名や三文字等のトリガーワードを追加せずタグ付けしてください。髪型や髪色や目の色などの特徴を示すタグは取っても取らなくても大丈夫です。取らない場合は生成時にタグを加えないと髪色が変わる場合があります。
学習用画像とタグの入ったtxtをgakushuフォルダに置いてください。
なお、キャラクタ学習の場合学習画像は10枚程度で十分再現できるようです。
LoRA学習
musubi-tunerの使い方に従い、latentのキャッシュ作成、Text Encoderのキャッシュ作成、本体の学習、ComfyUI対応モデルへの変換の順に作業していきます。
latentのキャッシュ作成
次のコマンドでlatentのキャッシュを作成します。
学習画像が10枚ぐらいならモデルのロード時間を含めて1分かからないはずです。cachedirフォルダに*_hv.safetensorsのようなファイルが学習画像の枚数分できます。
Text Encoderのキャッシュ作成
次のコマンドでText Encoderのキャッシュを作成します。なお、text_encoder1をllava_llama3、text_encoder2をCLIPにしないとエラーになるはずです。
こちらはモデルのロードにかなり時間がかかり、学習画像が10枚ぐらいでも全体で5分ぐらいかかりました。cachedirフォルダに*_hv_te.safetensorsのようなファイルが学習画像の枚数分できます。
本体の学習(2025/1/17変更)
LoRA名は--output_name
で指定します。変更したい場合は--output_name gakushu
のgakushu
の部分を変更してください。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行で入力してください。
こちらもモデルのロードにかなり時間がかかります。学習開始まで20分ぐらいかかります。学習画像10枚で解像度512ならトータルで1時間15分ぐらいで終わるはずです。
LoRAをComfyUIで使える形式に変換
生成されたLoRAはそのままではComfyUIでは使えないので変換します。変換後のファイル名は--output
で指定します。outputフォルダのgakushu_lora.safetensorsにしていますが、変更したい場合は--output output/gakushu_lora.safetensors
のgakushu_lora.safetensors
を変更してください。
変換は1分以内に終わるはずです。
ComfyUIでのLoRA使用
Loraファイルgakushu_lora.safetensorsをComfyUIのmodelsのlorasフォルダに移動する等をしてワークフローにLoRAを追加してください。