CogVideo/finetune/README_ja.md
2025-01-02 03:07:34 +00:00

6.2 KiB
Raw Blame History

CogVideoX Diffusers ファインチューニングガイド

中国語で読む

Read in English

SATバージョンのファインチューニング手順については、こちらをご確認ください。このバージョンのデータセットフォーマットは、こちらのバージョンとは異なります。

依存関係のインストール

関連するコードがまだ diffusers の公式リリースに統合されていないため、diffusers ブランチを基にファインチューニングを行う必要があります。以下の手順に従って依存関係をインストールしてください:

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 形式の参照画像ファイルI2Vタスクの場合のみ
  • images.txt: 参照画像ファイルリストI2Vタスクの場合のみ

サンプルデータセットT2Vとして、ディズニー スチームボート・ウィリーをダウンロードできます。

動画の最初のフレームを画像として抽出するスクリプトはこちらで提供しています。I2Vタスクの場合、このスクリプトを使用して参照画像を生成できます。

トレーニング中に検証データセットを使用する場合は、トレーニングデータセットと同じフォーマットで検証データセットを提供する必要があります。

スクリプトを実行してファインチューニングを開始

トレーニングを開始する前に、以下の解像度設定に関する要件に注意してください:

  1. フレーム数は8の倍数でなければなりません。
  2. 推奨される動画の解像度は次の通りです:
    • CogVideoX: 480x720高さ x 幅)
    • CogVideoX1.5: 768x1360高さ x 幅)
  3. 解像度が要求される基準に合わないサンプル(動画や画像)については、コード内で自動的にリサイズされます。この処理により、アスペクト比が歪む可能性があり、トレーニング結果に影響を与える可能性があります。解像度については、トレーニング前にサンプルを前処理(例えば、アスペクト比を維持するためにクロップとリサイズを使用)しておくことをお勧めします。

重要な注意:トレーニング効率を向上させるために、動画はトレーニング前に自動的にエンコードされ、結果がディスクにキャッシュされます。トレーニング後にデータを変更した場合は、videos/ フォルダ内の latent フォルダを削除して、最新のデータが使用されるようにしてください。

テキストから動画生成T2Vのファインチューニング

# accelerate_train_t2v.sh の設定パラメータを変更します
# 主に変更が必要なパラメータ:
# --output_dir: 出力先ディレクトリ
# --data_root: データセットのルートディレクトリ
# --caption_column: プロンプトファイルのパス
# --video_column: 動画リストファイルのパス
# --train_resolution: トレーニング解像度(フレーム数 x 高さ x 幅)
# その他の重要なパラメータについては、起動スクリプトを参照してください

bash accelerate_train_t2v.sh

画像から動画生成I2Vのファインチューニング

# accelerate_train_i2v.sh の設定パラメータを変更します
# T2Vと同様に変更が必要なパラメータに加えて、以下のパラメータも設定する必要があります
# --image_column: 参照画像リストファイルのパス
# その他の重要なパラメータについては、起動スクリプトを参照してください

bash accelerate_train_i2v.sh

ファインチューニングしたモデルの読み込み

  • ファインチューニングしたモデルを読み込む方法については、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以上に設定することをお勧めします。