mirror of
https://github.com/THUDM/CogVideo.git
synced 2025-06-28 13:25:21 +08:00
Add a table in README files showing hardware requirements for training different CogVideoX models, including: - Memory requirements for each model variant - Supported training types (LoRA) - Training resolutions - Mixed precision settings Updated in all language versions (EN/ZH/JA).
100 lines
6.8 KiB
Markdown
100 lines
6.8 KiB
Markdown
# CogVideoX Diffusers ファインチューニングガイド
|
||
|
||
[中文阅读](./README_zh.md)
|
||
|
||
[Read in English](./README.md)
|
||
|
||
SATバージョンのファインチューニング手順については、[こちら](../sat/README_zh.md)をご確認ください。このバージョンのデータセットフォーマットは、こちらのバージョンとは異なります。
|
||
|
||
## ハードウェア要件
|
||
|
||
| モデル | トレーニングタイプ | 混合精度学習 | トレーニング解像度(フレーム数x高さx幅) | ハードウェア要件 |
|
||
|----------------------|-----------------|------------|----------------------------------|----------------|
|
||
| cogvideox-t2v-2b | lora (rank128) | fp16 | 49x480x720 | 16GB VRAM (NVIDIA 4080) |
|
||
| cogvideox-t2v-5b | lora (rank128) | bf16 | 49x480x720 | 24GB VRAM (NVIDIA 4090) |
|
||
| cogvideox-i2v-5b | lora (rank128) | bf16 | 49x480x720 | 24GB VRAM (NVIDIA 4090) |
|
||
| cogvideox1.5-t2v-5b | lora (rank128) | bf16 | 81x768x1360 | 35GB VRAM (NVIDIA A100) |
|
||
| cogvideox1.5-i2v-5b | lora (rank128) | bf16 | 81x768x1360 | 35GB VRAM (NVIDIA A100) |
|
||
|
||
|
||
## 依存関係のインストール
|
||
|
||
関連するコードがまだ `diffusers` の公式リリースに統合されていないため、`diffusers` ブランチを基にファインチューニングを行う必要があります。以下の手順に従って依存関係をインストールしてください:
|
||
|
||
```shell
|
||
git clone https://github.com/huggingface/diffusers.git
|
||
cd diffusers # 現在は Main ブランチ
|
||
pip install -e .
|
||
```
|
||
|
||
## データセットの準備
|
||
|
||
まず、データセットを準備する必要があります。タスクの種類(T2V または I2V)によって、データセットのフォーマットが少し異なります:
|
||
|
||
```
|
||
.
|
||
├── prompts.txt
|
||
├── videos
|
||
├── videos.txt
|
||
├── images # (オプション) I2Vの場合。提供されない場合、動画の最初のフレームが参照画像として使用されます
|
||
└── images.txt # (オプション) I2Vの場合。提供されない場合、動画の最初のフレームが参照画像として使用されます
|
||
```
|
||
|
||
各ファイルの役割は以下の通りです:
|
||
- `prompts.txt`: プロンプトを格納
|
||
- `videos/`: .mp4 動画ファイルを格納
|
||
- `videos.txt`: `videos/` フォルダ内の動画ファイルリストを格納
|
||
- `images/`: (オプション) .png 形式の参照画像ファイル
|
||
- `images.txt`: (オプション) 参照画像ファイルリスト
|
||
|
||
トレーニング中に検証データセットを使用する場合は、トレーニングデータセットと同じフォーマットで検証データセットを提供する必要があります。
|
||
|
||
## スクリプトを実行してファインチューニングを開始
|
||
|
||
トレーニングを開始する前に、以下の解像度設定に関する要件に注意してください:
|
||
|
||
1. フレーム数は8の倍数 **+1** (つまり8N+1)でなければなりません。例えば49、81など。
|
||
2. 推奨される動画の解像度は次の通りです:
|
||
- CogVideoX: 480x720(高さ x 幅)
|
||
- CogVideoX1.5: 768x1360(高さ x 幅)
|
||
3. 解像度が要求される基準に合わないサンプル(動画や画像)については、コード内で自動的にリサイズされます。この処理により、アスペクト比が歪む可能性があり、トレーニング結果に影響を与える可能性があります。解像度については、トレーニング前にサンプルを前処理(例えば、アスペクト比を維持するためにクロップとリサイズを使用)しておくことをお勧めします。
|
||
|
||
> **重要な注意**:トレーニング効率を向上させるために、動画はトレーニング前に自動的にエンコードされ、結果がディスクにキャッシュされます。トレーニング後にデータを変更した場合は、`videos/` フォルダ内の `latent` フォルダを削除して、最新のデータが使用されるようにしてください。
|
||
|
||
### テキストから動画生成(T2V)のファインチューニング
|
||
|
||
```bash
|
||
# accelerate_train_t2v.sh の設定パラメータを変更します
|
||
# 主に変更が必要なパラメータ:
|
||
# --output_dir: 出力先ディレクトリ
|
||
# --data_root: データセットのルートディレクトリ
|
||
# --caption_column: プロンプトファイルのパス
|
||
# --video_column: 動画リストファイルのパス
|
||
# --train_resolution: トレーニング解像度(フレーム数 x 高さ x 幅)
|
||
# その他の重要なパラメータについては、起動スクリプトを参照してください
|
||
|
||
bash accelerate_train_t2v.sh
|
||
```
|
||
|
||
### 画像から動画生成(I2V)のファインチューニング
|
||
|
||
```bash
|
||
# accelerate_train_i2v.sh の設定パラメータを変更します
|
||
# T2Vと同様に変更が必要なパラメータに加えて、以下のパラメータも設定する必要があります:
|
||
# --image_column: 参照画像リストファイルのパス(オプション)
|
||
# その他の重要なパラメータについては、起動スクリプトを参照してください
|
||
|
||
bash accelerate_train_i2v.sh
|
||
```
|
||
|
||
## ファインチューニングしたモデルの読み込み
|
||
|
||
+ ファインチューニングしたモデルを読み込む方法については、[cli_demo.py](../inference/cli_demo.py)を参照してください。
|
||
|
||
## ベストプラクティス
|
||
|
||
+ 解像度が `200 x 480 x 720`(フレーム数 x 高さ x 幅)の70本のトレーニング動画を使用しました。データ前処理でフレームスキップを行い、49フレームおよび16フレームの2つの小さなデータセットを作成して実験速度を向上させました。CogVideoXチームの推奨最大フレーム数制限は49フレームです。これらの70本の動画は、10、25、50本の3つのグループに分け、概念的に類似した性質のものです。
|
||
+ 25本以上の動画を使用することで、新しい概念やスタイルのトレーニングが最適です。
|
||
+ `--id_token` で指定できる識別子トークンを使用すると、トレーニング効果がより良くなります。これはDreamboothトレーニングに似ていますが、このトークンを使用しない通常のファインチューニングでも問題なく動作します。
|
||
+ 元のリポジトリでは `lora_alpha` が1に設定されていますが、この値は多くの実行で効果が悪かったため、モデルのバックエンドやトレーニング設定の違いが影響している可能性があります。私たちの推奨は、`lora_alpha` を rank と同じか、`rank // 2` に設定することです。
|
||
+ rank は64以上に設定することをお勧めします。 |