RTX 5090 で Musubi-Tuner をインストールし、Wan 2.2 の LoRA の作成方法

1. はじめに

Wan 2.2 は静止画でも動画でも他モデルを上回る仕上がりを見せます。これまで flux 系のモデルを多く作ってきましたが、人物の一貫性を保つため、今回は Wan 2.2 を試してみました。

環境は メモリ 64GB/GPU:RTX 5090(VRAM 32GB)。学習にかかった時間は以下の画像のとおりです。

先に結論:高ノイズ/低ノイズの特性が異なるため、モデルは高ノイズ用と低ノイズ用をそれぞれ学習します(= 従来と違い 2 回学習)。 1 回あたり約 1 時間半、合計約 3 時間で 1 組の LoRA が得られます。低ノイズモデル単体でも画像生成は可能ですが、比較したところ高ノイズを加えると構図がより豊かになりました。

2. Musubi-Tuner のインストール

2.1 依存関係のインストール

# cmd を開き、ローカルにクローン
git clone https://github.com/kohya-ss/musubi-tuner.git

# ディレクトリへ移動
cd musubi-tuner

# Wan 2.2 対応のコミットへチェックアウト
git checkout d0a193061a23a51c90664282205d753605a641c1

# 仮想環境の作成と有効化
python -m venv venv
venv\Scripts\activate
python -m pip install --upgrade pip

# PyTorch など依存関係のインストール
pip install torch==2.7.0 torchvision==0.22.0 --index-url https://download.pytorch.org/whl/cu128
python -m pip install --upgrade pip wheel setuptools
pip install -U "triton-windows<3.4"

# ここから requirements_5090.txt をダウンロードして本フォルダに置き、実行
python -m pip install -r requirements_5090.txt

pip install xformers==0.0.30 --index-url https://download.pytorch.org/whl/cu128
pip install -e .

2.2 メモリ節約:Flash Attention(任意)

# こちらからダウンロード:
# https://github.com/sunsetcoder/flash-attention-windows/blob/main/flash_attn-2.7.0.post2-cp310-cp310-win_amd64.whl
# ダウンロードした .whl を Musubi-Tuner フォルダへ移動し、仮想環境を有効化した状態でインストール
pip install flash_attn-2.7.0.post2-cp310-cp310-win_amd64.whl

うまくいかない場合はビルドが必要です(30 分以上かかることがあります)。無理ならスキップ可。

pip install psutil
pip install flash-attn==2.7.0.post2 --find-links https://github.com/Dao-AILab/flash-attention/releases/expanded_assets/v2.7.0.post2

2.3 GPU 加速:Sage Attention(必須)

# こちらからダウンロード:
# https://github.com/sdbds/SageAttention-for-windows/releases/download/2.11_torch270%2Bcu128/sageattention-2.1.1+cu128torch2.7.0-cp310-cp310-win_amd64.whl
# ダウンロードした .whl を Musubi-Tuner フォルダへ移動し、仮想環境を有効化した状態でインストール
pip install sageattention-2.1.1+cu128torch2.7.0-cp310-cp310-win_amd64.whl

2.4 検証

python -c "import torch; print('PyTorch version:', torch.__version__); print('CUDA available:', torch.cuda.is_available())"
python -c "import xformers; import xformers.ops; print('xformers OK')"
python -c "import bitsandbytes as bnb; print(bnb.__version__); print(bnb.functional)"

上記の結果が問題なければ、ほぼ準備完了です。·

3. Wan 2.2 の学習用モデルをダウンロード

大容量ファイルを取得します。時間とディスクに余裕を用意してください。

Hugging Face CLI のインストール:

pip install huggingface_hub

モデルのダウンロード(順に実行):

  1. テキストエンコーダhuggingface-cli download Wan-AI/Wan2.1-I2V-14B-720P models_t5_umt5-xxl-enc-bf16.pth –local-dir models/text_encoders
  2. VAEhuggingface-cli download Comfy-Org/Wan_2.1_ComfyUI_repackaged split_files/vae/wan_2.1_vae.safetensors –local-dir models/vae
  3. 拡散モデル(高ノイズ)huggingface-cli download Comfy-Org/Wan_2.2_ComfyUI_Repackaged split_files/diffusion_models/wan2.2_t2v_high_noise_14B_fp16.safetensors –local-dir models/diffusion_models
  4. 拡散モデル(低ノイズ)huggingface-cli download Comfy-Org/Wan_2.2_ComfyUI_Repackaged split_files/diffusion_models/wan2.2_t2v_low_noise_14B_fp16.safetensors –local-dir models/diffusion_models

注意点

4. Musubi-Tuner で Wan 2.2 の LoRA を学習

4.1 データ準備

画像でも動画でも可。ここでは人物の一貫性を重視した画像を例にします。

例(書式):

minimalist, hand-drawn, line art, black and white, 1girl, ponytail, apron, kitchen, diligent, A young woman with a ponytail diligently mopping a shiny kitchen floor, rendered in a minimalist, hand-drawn style with clean black and white lines, her apron slightly askew as she focuses on her task.

D:/lora/musubi-tuner/dataset/ に以下の dataset.toml を作成:

toml复制编辑# resolution, caption_extension, batch_size, num_repeats, enable_bucket, bucket_no_upscale は
# general または datasets のいずれかで設定(未設定はデフォルト値)

[general]
resolution = [1024 , 1024]
caption_extension = ".txt"
batch_size = 1
enable_bucket = true
bucket_no_upscale = false

[[datasets]]
image_directory = "D:/lora/musubi-tuner/dataset"
cache_directory = "D:/lora/musubi-tuner/dataset/cache"
num_repeats = 1 # 省略可。デフォルト 1。複数データセットのバランス調整に使用
# ここに他のデータセットも追加可。各データセットで個別設定が可能

4.2 事前キャッシュ生成

潜在キャッシュ(データセット/キャプションを変更するたびに再実行):

python src/musubi_tuner/wan_cache_latents.py --dataset_config "D:\lora\musubi-tuner\dataset\dataset.toml" --vae "D:\lora\musubi-tuner\models\vae\split_files\vae\wan_2.1_vae.safetensors"

テキストエンコーダ出力キャッシュ(同上、変更時は再実行):

python src/musubi_tuner/wan_cache_text_encoder_outputs.py --dataset_config "D:\lora\musubi-tuner\dataset\dataset.toml" --t5 "D:\lora\musubi-tuner\models\text_encoders\models_t5_umt5-xxl-enc-bf16.pth"

学習前に一度 accelerate の設定 を行ってください。

4.3 コマンド

高ノイズ用:
accelerate launch --num_cpu_threads_per_process 1 src/musubi_tuner/wan_train_network.py --task t2v-A14B --dit "D:\lora\musubi-tuner\models\diffusion_models\split_files\diffusion_models\wan2.2_t2v_high_noise_14B_fp16.safetensors" --vae "D:\lora\musubi-tuner\models\vae\split_files\vae\wan_2.1_vae.safetensors" --t5 "D:\lora\musubi-tuner\models\text_encoders\models_t5_umt5-xxl-enc-bf16.pth" --dataset_config "D:\lora\musubi-tuner\dataset\dataset.toml" --xformers --mixed_precision fp16 --fp8_base --optimizer_type adamw --learning_rate 3e-4 --gradient_checkpointing --gradient_accumulation_steps 1 --max_data_loader_n_workers 2 --network_module networks.lora_wan --network_dim 16 --network_alpha 16 --timestep_sampling shift --discrete_flow_shift 1.0 --max_train_epochs 100 --save_every_n_epochs 100 --seed 5 --optimizer_args weight_decay=0.1 --max_grad_norm 0 --lr_scheduler polynomial --lr_scheduler_power 8 --lr_scheduler_min_lr_ratio="5e-5" --output_dir "D:\lora\musubi-tuner\output" --output_name WAN2.2-HighNoise_linesun --metadata_title WAN2.2-HighNoise_linesun --metadata_author linesun --preserve_distribution_shape --min_timestep 875 --max_timestep 1000
低ノイズ用:
accelerate launch --num_cpu_threads_per_process 1 src/musubi_tuner/wan_train_network.py --task t2v-A14B --dit "D:\lora\musubi-tuner\models\diffusion_models\split_files\diffusion_models\wan2.2_t2v_low_noise_14B_fp16.safetensors" --vae "D:\lora\musubi-tuner\models\vae\split_files\vae\wan_2.1_vae.safetensors" --t5 "D:\lora\musubi-tuner\models\text_encoders\models_t5_umt5-xxl-enc-bf16.pth" --dataset_config "D:\lora\musubi-tuner\dataset\dataset.toml" --xformers --mixed_precision fp16 --fp8_base --optimizer_type adamw --learning_rate 3e-4 --gradient_checkpointing --gradient_accumulation_steps 1 --max_data_loader_n_workers 2 --network_module networks.lora_wan --network_dim 16 --network_alpha 16 --timestep_sampling shift --discrete_flow_shift 1.0 --max_train_epochs 100 --save_every_n_epochs 100 --seed 5 --optimizer_args weight_decay=0.1 --max_grad_norm 0 --lr_scheduler polynomial --lr_scheduler_power 8 --lr_scheduler_min_lr_ratio="5e-5" --output_dir "D:\lora\musubi-tuner\output" --output_name WAN2.2-LowNoise_linesun --metadata_title WAN2.2-LowNoise_linesun --metadata_author linesun --preserve_distribution_shape --min_timestep 0 --max_timestep 875

両者の違いは使用する拡散モデルタイムステップ範囲のみで、他は同一です。 この設定で問題なく動作し、Wan 2.1 より明らかに良い結果が得られました。

なお、学習コマンドでは当初ガイドの dim=32 / alpha=4 から変更し、dim=16 / alpha=16、学習率スケジューラの power=8** にしています。これにより精度が良く、モデルサイズも約半分になります。

5. 再学習と運用

cd D:\lora\musubi-tuner
venv\Scripts\activate

作業ディレクトリへ移動し、仮想環境を有効化。前回のデータセットを削除して新しいデータセットに置き換えます。 /dataset/cache 内のファイルを削除し、コマンド中の --output_name(例の linesun 部分)を自分の LoRA 名に変更すれば OK です。

コメントを残す

必須項目 *