Z-Image Turbo LoRA学習ガイド|AI Toolkitで自作LoRAを作る方法

Z-Image Turbo LoRA学習ガイド|AI Toolkitで自作LoRAを作る方法

LoRAの基本的な仕組みと使い方を理解したら、次は自分だけのLoRAを作ってみましょう。この記事では、Z-Image Turbo向けのLoRA学習をOstris AI Toolkitで実践する方法を、データセット準備から推論テストまで解説します。

この記事でわかること

  • Z-Image Turbo用LoRA学習に必要な環境と準備
  • AI Toolkitのセットアップ手順
  • データセットの準備方法とベストプラクティス
  • 学習パラメータの設定と実行
  • 学習済みLoRAのComfyUIでの使い方
  • Apple Silicon(MPS)環境での所要時間の実測値

前提知識

  • LoRAの基本を理解していること
  • ComfyUIの基本操作ができること
  • ターミナル(コマンドライン)の基本操作ができること

Z-Image TurboのLoRA学習で知っておくべきこと

Training Adapterが必要な理由

Z-Image Turboは蒸留モデルです。通常のモデルが20〜50ステップかけて画像を生成するのに対し、Z-Image Turboはわずか8ステップで生成できるよう最適化されています。

この蒸留(Distillation)は効率的ですが、LoRA学習には問題があります。蒸留モデルに直接LoRA学習をかけると、蒸留で獲得した高速生成能力が壊れてしまうのです。これを「Turbo Drift」と呼びます。

この問題を解決するのがTraining Adapterです。学習中のみ蒸留の効果を一時的に解除し、推論時にはAdapterを外してLoRAだけで動作させます。

学習アプローチの選択肢

方式推論速度難易度備考
Turbo + Training Adapter v28ステップ(最速)初心者向け。最もポピュラー
De-Turboモデルで学習20〜30ステップAdapter不要。長時間のfine-tuneに向く
Baseモデルで学習高品質だがやや遅い類似度(likeness)が最も優れる報告あり

この記事では最も一般的なTurbo + Training Adapter v2の方式で進めます。

環境構築

必要なもの

項目最小要件推奨
GPU(NVIDIA)12GB VRAM24GB VRAM
GPU(Apple Silicon)32GB統合メモリ64GB統合メモリ
Python3.10以上3.10〜3.11
PyTorch2.0以上2.8以上(MPS対応)
ディスク50GB100GB以上

必要なモデル

モデルサイズ用途
Z-Image Turbo BF16~12GBベースモデル
Training Adapter v2~324MB蒸留解除アダプタ
Qwen 3 4B含むテキストエンコーダ
VAE (ae.safetensors)含む画像エンコード/デコード

AI Toolkitのセットアップ

AI Toolkitインストール
git clone https://github.com/ostris/ai-toolkit.git cd ai-toolkit git submodule update --init --recursive pip install -r requirements.txt

Training Adapter v2のダウンロード:

Training Adapter v2ダウンロード
# HuggingFaceから直接ダウンロード # ostris/zimage_turbo_training_adapter リポジトリ # zimage_turbo_training_adapter_v2.safetensors (324MB)

セットアップの所要時間(実測)

手順所要時間
AI Toolkitクローン~10秒
pip install~20秒(依存関係による)
Training Adapter v2ダウンロード~5秒(回線速度による)
合計約35秒

データセット準備

画像の準備

LoRA学習の成否はデータセットの品質で決まります。

目的推奨枚数ポイント
最小限のテスト5〜15枚動作確認向け
スタイル学習30〜120枚45枚程度が良いバランス
高品質キャラクター70〜80枚肌テクスチャまで再現

データセットのルール:

  • 解像度: 1024px以上を推奨(512pxでも動作するが品質は落ちる)
  • 多様性: 異なるポーズ、角度、表情、背景を含める
  • 一貫性: 学習させたい要素(被写体のアイデンティティ等)は統一する
  • 背景: キャラクターLoRAなら背景はバラけさせる
  • 避けるべき画像: ピンボケ、低解像度、ウォーターマーク入り、複数被写体

構図の配分(キャラクターLoRAの場合)

構図割合理由
クローズアップ(顔中心)40〜50%表情・顔の特徴を重点学習
ミドルショット(上半身)30〜40%体型・服装の学習
フルボディ10〜20%全身のプロポーション

キャプションの作成

各画像に対応するテキストファイル(.txt)を同名で作成します。

datasets/
└── my_dataset/
    ├── image1.jpg
    ├── image1.txt  ← "sks dog, a photo of a cute shiba inu dog"
    ├── image2.jpg
    ├── image2.txt
    └── ...

トリガーワード(例: sks)は既存の単語と衝突しない一意な文字列を選びます。全キャプションにトリガーワードを含めることで、推論時にトリガーワードでLoRAの効果を発動できます。

学習設定

YAMLコンフィグ

AI Toolkitの学習はYAMLファイルで設定を管理します。Z-Image Turbo用のテンプレート:

Z-Image Turbo LoRA学習設定(24GB GPU向け)
--- job: extension config: name: "my_zimage_lora_v1" process: - type: 'sd_trainer' training_folder: "output" device: cuda:0 trigger_word: "sks" network: type: "lora" linear: 16 linear_alpha: 16 save: dtype: float16 save_every: 250 max_step_saves_to_keep: 4 datasets: - folder_path: "/path/to/your/dataset" caption_ext: "txt" caption_dropout_rate: 0.05 cache_latents_to_disk: true resolution: [ 512, 768, 1024 ] train: batch_size: 1 steps: 3000 gradient_accumulation_steps: 1 train_unet: true train_text_encoder: false gradient_checkpointing: true noise_scheduler: "flowmatch" optimizer: "adamw8bit" lr: 1e-4 ema_config: use_ema: true ema_decay: 0.99 dtype: bf16 model: name_or_path: "Tongyi-MAI/Z-Image-Turbo" arch: "zimage" assistant_lora_path: "ostris/zimage_turbo_training_adapter/zimage_turbo_training_adapter_v2.safetensors" quantize: true sample: sampler: "flowmatch" sample_every: 250 width: 1024 height: 1024 prompts: - "sks, portrait photo, natural lighting" seed: 42 guidance_scale: 1 sample_steps: 8

主要パラメータの解説

パラメータ推奨値説明
linear (Rank)8〜16LoRAのランク。高いほど表現力が上がるがファイルサイズも増加
lr1e-4〜5e-5学習率。高すぎると過学習、低すぎると学習不足
steps3,000〜5,600総ステップ数。データセットサイズに応じて調整
batch_size1〜2小データセットでは1推奨
optimizeradamw8bitメモリ効率的。Apple Siliconの場合はadamw
resolution[512, 768, 1024]マルチ解像度バケッティングで多様なサイズに対応
cache_latents_to_disktrueVAEのエンコード結果をキャッシュして高速化
gradient_checkpointingtrueVRAM節約のため必須(24GB以下の場合)

Apple Silicon(MPS)での注意点

Apple SiliconのMPSでAI Toolkitを動かす場合、以下の設定変更が必要です:

  • device: mps:0 に変更
  • optimizer: adamw(adamw8bitはCUDA専用)
  • quantize: false(MPS非対応のため。64GB統合メモリなら量子化なしで動作)
  • num_workers: 0(データセット設定に追加。MPSテンソルのマルチプロセス共有非対応のため)

学習の実行

学習実行コマンド
cd ai-toolkit python run.py config/your_config.yaml

学習が開始すると、以下の処理が順に実行されます:

  1. モデルロード: Transformer、テキストエンコーダ、VAEの読み込み
  2. Training Adapterマージ: 蒸留解除アダプタの統合
  3. LoRAネットワーク作成: 指定Rankでの学習用ネットワーク構築
  4. レイテンシキャッシュ: データセット画像のVAEエンコード結果をディスクに保存
  5. 学習ループ: 指定ステップ数の学習を実行

学習の監視

ログでloss値の推移を確認します。正常な学習ではloss値が徐々に低下していきます。

実測: 100ステップ・5枚データセットの場合

実際にApple Silicon M4 Pro(64GB)で100ステップの学習を実行し、以下の検証を行った。

loss推移: 前半20ステップの平均loss 0.383、後半20ステップの平均loss 0.383。100ステップでは有意なloss低下は確認できなかった。ステップごとの振れ幅は0.21〜0.60と大きい。

LoRA重みの変化: LoRA B行列(初期値0)のnormがmean 0.16に移動しており、勾配による重み更新は行われている。

推論への影響: 同一プロンプト・同一seedでLoRAあり/なしの画像を比較したところ、98%のピクセルに差分が存在した。ただし平均差分は3.4/255と小さく、構図や被写体は同一で、テクスチャや色調に微細な変化が見られる程度だった。

結論: 5枚・100ステップではパイプラインの動作確認は取れるが、被写体のアイデンティティ学習(学習データの柴犬への寄せ)は確認できない。実用的なLoRAを作るには最低でも15枚以上・1,000ステップ以上を推奨する。

過学習の兆候:

  • loss値が極端に低くなる
  • サンプル画像が学習データとほぼ同一になる
  • プロンプトの変更に反応しなくなる

対策: ステップ数を減らす、学習率を下げる、データセットを増やす。

学習速度の実測値(Apple Silicon M4 Pro, 64GB)

処理所要時間
モデルロード~20秒
Training Adapterマージ~2秒
テキストエンコーダロード~1秒
レイテンシキャッシュ(5枚×3解像度)~15秒
1ステップあたり~25秒(512〜1024px混合)
100ステップ~42分
500ステップ~3.5時間
3,000ステップ~21時間

NVIDIA RTX 4090の場合、1ステップあたり約10〜15秒で、3,000ステップを約8〜12時間で完了できます。

学習済みLoRAの使い方

ComfyUIでの推論

学習完了後、出力ディレクトリにある.safetensorsファイルをComfyUIのmodels/loras/に配置します。

ComfyUIのワークフロー構成:

UNETLoader(Z-Image Turbo)
  ↓ MODEL
LoRA Loader(学習済みLoRA)
  ↓ MODEL              ↓ CLIP
  KSampler ← CLIPTextEncode(トリガーワード含むプロンプト)
  ↓ LATENT
VAEDecode → SaveImage

強度の調整

  • LoRA強度: 0.5〜0.8から始めて調整
  • 強すぎると画像が崩れる場合は0.5程度に下げる
  • 弱すぎると効果が見えない場合は0.9〜1.0に上げる

既存LoRAとのスタッキング

複数のLoRAを組み合わせることが可能です。

スタイルLoRA (0.6) + キャラクターLoRA (0.3) = 合計0.9

合計重みは1.0未満に保つことを推奨します。

トラブルシューティング

よくある問題

問題原因対策
学習画像と同じ画像しか出ない過学習ステップ数を減らす。LR下げる。データ増やす
LoRAの効果が見えない学習不足ステップ数を増やす。LR上げる
サンプルが真っ黒/ノイズ設定ミスcfg=1、steps=8を確認
MPS環境でDataLoaderエラーマルチプロセス非対応num_workers: 0を設定
Out of Memoryモデルが大きすぎquantize: true、解像度を下げる

参考になるリソース

関連記事