Skip to content

Kwai Kolors クイックスタート

この例では、SimpleTuner ツールキットを使用して Kwai Kolors モデルをトレーニングし、lora モデルタイプを使用します。

Kolors は SDXL とほぼ同じサイズのため、full トレーニングも試せますが、その変更点はこのクイックスタートでは説明しません。

前提条件

Python がインストールされていることを確認してください。SimpleTuner は 3.10 から 3.12 でうまく動作します。

以下を実行して確認できます:

python --version

Ubuntu に Python 3.12 がインストールされていない場合は、以下を試してください:

apt -y install python3.13 python3.13-venv

コンテナイメージの依存関係

Vast、RunPod、TensorDock(など)の場合、CUDA 12.2-12.8 イメージで CUDA 拡張のコンパイルを有効にするには以下が機能します:

apt -y install nvidia-cuda-toolkit

インストール

pip で SimpleTuner をインストールします:

pip install 'simpletuner[cuda]'

# CUDA 13 / Blackwell users (NVIDIA B-series GPUs)
pip install 'simpletuner[cuda13]' --extra-index-url https://download.pytorch.org/whl/cu130

手動インストールまたは開発セットアップについては、インストールドキュメントを参照してください。

環境のセットアップ

SimpleTuner を実行するには、設定ファイル、データセットとモデルのディレクトリ、およびデータローダー設定ファイルをセットアップする必要があります。

設定ファイル

実験的なスクリプト configure.py を使用すると、インタラクティブなステップバイステップの設定でこのセクションを完全にスキップできる可能性があります。一般的な落とし穴を避けるための安全機能が含まれています。

注意: これはデータローダーを設定しません。後で手動で設定する必要があります。

実行するには:

simpletuner configure

⚠️ Hugging Face Hub にアクセスしにくい国にいるユーザーは、システムが使用する $SHELL に応じて ~/.bashrc または ~/.zshrc に HF_ENDPOINT=https://hf-mirror.com を追加してください。

手動で設定したい場合:

config/config.json.example を config/config.json にコピーします:

cp config/config.json.example config/config.json

AMD ROCm フォローアップ手順

AMD MI300X を使用可能にするには、以下を実行する必要があります:

apt install amd-smi-lib
pushd /opt/rocm/share/amd_smi
python3 -m pip install --upgrade pip
python3 -m pip install .
popd

そこで、以下の変数を変更する必要があります:

設定例を表示
{
  "model_type": "lora",
  "model_family": "kolors",
  "pretrained_model_name_or_path": "Kwai-Kolors/Kolors-diffusers",
  "output_dir": "/home/user/output/models",
  "validation_resolution": "1024x1024,1280x768",
  "validation_guidance": 3.4,
  "use_gradient_checkpointing": true,
  "learning_rate": 1e-4
}
  • pretrained_model_name_or_path - Kwai-Kolors/Kolors-diffusers に設定します。
  • MODEL_TYPE - lora に設定します。
  • USE_DORA - DoRA をトレーニングしたい場合は true に設定します。
  • MODEL_FAMILY - kolors に設定します。
  • OUTPUT_DIR - チェックポイントと検証画像を保存するディレクトリに設定します。フルパスの使用を推奨します。
  • VALIDATION_RESOLUTION - この例では 1024x1024 に設定します。
  • Kolors はマルチアスペクトバケットでファインチューニングされているため、カンマ区切りで他の解像度を指定できます: 1024x1024,1280x768
  • VALIDATION_GUIDANCE - 推論時に慣れている値を使用します。4.2〜6.4 の範囲に設定します。
  • USE_GRADIENT_CHECKPOINTING - 大量の VRAM があり速度のために一部を犠牲にしたい場合を除き、true が推奨です。
  • LEARNING_RATE - 1e-4 は低ランクネットワークで一般的ですが、「焼き付き」や早期の過学習に気づいた場合は 1e-5 がより保守的です。

Mac M-series を使用している場合の追加設定:

  • mixed_precision を no に設定します。
  • attention_mechanism は diffusers に設定します。xformers などは動作しない可能性があります。

量子化モデルトレーニング

Apple および NVIDIA システムでテスト済みで、Hugging Face Optimum-Quanto により特に ChatGLM 6B(テキストエンコーダ)の精度と VRAM 要件を削減できます。

config.json の場合:

設定例を表示
{
  "base_model_precision": "int8-quanto",
  "text_encoder_1_precision": "no_change",
  "optimizer": "adamw_bf16"
}

config.env ユーザー向け(非推奨):

# choices: int8-quanto, int4-quanto, int2-quanto, fp8-quanto
# int8-quanto was tested with a single subject dreambooth LoRA.
# fp8-quanto does not work on Apple systems. you must use int levels.
# int2-quanto is pretty extreme and gets the whole rank-1 LoRA down to about 13.9GB VRAM.
# may the gods have mercy on your soul, should you push things Too Far.
export TRAINER_EXTRA_ARGS="--base_model_precision=int8-quanto"

# Maybe you want the text encoders to remain full precision so your text embeds are cake.
# We unload the text encoders before training, so, that's not an issue during training time - only during pre-caching.
# Alternatively, you can go ham on quantisation here and run them in int4 or int8 mode, because no one can stop you.
export TRAINER_EXTRA_ARGS="${TRAINER_EXTRA_ARGS} --text_encoder_1_precision=no_change"

# When you're quantising the model, --base_model_default_dtype is set to bf16 by default. This setup requires adamw_bf16, but saves the most memory.
# adamw_bf16 only supports bf16 training, but any other optimiser will support both bf16 or fp32 training precision.
export OPTIMIZER="adamw_bf16"

高度な実験的機能

高度な実験的詳細を表示 SimpleTuner には、トレーニングの安定性とパフォーマンスを大幅に向上させる実験的機能が含まれています。 * **[Scheduled Sampling (Rollout)](../experimental/SCHEDULED_SAMPLING.md):** トレーニング中にモデルが自身の入力を生成することで露出バイアスを減らし、出力品質を向上させます。 * **[Diff2Flow](../experimental/DIFF2FLOW.md):** Flow Matching 目的で Kolors をトレーニングし、生成の直線性と品質を改善する可能性があります。 > ⚠️ これらの機能はトレーニングの計算オーバーヘッドを増加させます。

データセットの考慮事項

モデルをトレーニングするには十分なデータセットが不可欠です。データセットサイズには制限があり、モデルを効果的にトレーニングできる十分な大きさのデータセットであることを確認する必要があります。最小限のデータセットサイズは TRAIN_BATCH_SIZE * GRADIENT_ACCUMULATION_STEPS であり、データセットが小さすぎるとトレーナーに検出されません。

手元のデータセットに応じて、データセットディレクトリとデータローダー設定ファイルを異なる方法でセットアップする必要があります。この例では pseudo-camera-10k を使用します。

OUTPUT_DIR ディレクトリに multidatabackend.json を作成します:

設定例を表示
[
  {
    "id": "pseudo-camera-10k-kolors",
    "type": "local",
    "crop": true,
    "crop_aspect": "square",
    "crop_style": "random",
    "resolution": 1.0,
    "minimum_image_size": 0.25,
    "maximum_image_size": 1.0,
    "target_downsample_size": 1.0,
    "resolution_type": "area",
    "cache_dir_vae": "cache/vae/kolors/pseudo-camera-10k",
    "instance_data_dir": "/home/user/simpletuner/datasets/pseudo-camera-10k",
    "disabled": false,
    "skip_file_discovery": "",
    "caption_strategy": "filename",
    "metadata_backend": "discovery"
  },
  {
    "id": "text-embeds",
    "type": "local",
    "dataset_type": "text_embeds",
    "default": true,
    "cache_dir": "cache/text/kolors/pseudo-camera-10k",
    "disabled": false,
    "write_batch_size": 128
  }
]

caption_strategy のオプションと要件については DATALOADER.md を参照してください。

次に datasets ディレクトリを作成します:

mkdir -p datasets
huggingface-cli download --repo-type=dataset bghira/pseudo-camera-10k --local-dir=datasets/pseudo-camera-10k

これにより、約 10k の写真サンプルが datasets/pseudo-camera-10k ディレクトリにダウンロードされ、自動的に作成されます。

WandB と Huggingface Hub へのログイン

特に push_to_hub: true と --report_to=wandb を使う場合は、トレーニング開始前に WandB と HF Hub にログインしておく必要があります。

Git LFS リポジトリに手動でアイテムをプッシュする場合は、git config --global credential.helper store も実行してください。

以下のコマンドを実行します:

wandb login

および

huggingface-cli login

指示に従って両方のサービスにログインしてください。

トレーニングの実行

SimpleTuner ディレクトリから、以下を実行するだけです:

bash train.sh

これにより、テキスト埋め込みと VAE 出力のディスクへのキャッシングが開始されます。

詳細については、データローダー と チュートリアル のドキュメントを参照してください。

CLIP スコアトラッキング

モデルのパフォーマンスをスコアリングするための評価を有効にしたい場合は、CLIP スコアの設定と解釈に関する情報について このドキュメント を参照してください。

安定した評価損失

モデルのパフォーマンスをスコアリングするために安定した MSE 損失を使用したい場合は、評価損失の設定と解釈に関する情報について このドキュメント を参照してください。

検証プレビュー

SimpleTuner は Tiny AutoEncoder モデルを使用して生成中の中間検証プレビューのストリーミングをサポートしています。これにより、webhook コールバックを介してリアルタイムで検証画像が生成されるのを段階的に確認できます。

有効にするには:

設定例を表示
{
  "validation_preview": true,
  "validation_preview_steps": 1
}

要件: - Webhook 設定 - 検証が有効

Tiny AutoEncoder のオーバーヘッドを削減するには、validation_preview_steps をより高い値(例: 3 または 5)に設定してください。validation_num_inference_steps=20 と validation_preview_steps=5 の場合、ステップ 5、10、15、20 でプレビュー画像を受け取ります。