FLUX.1 モデル・ファミリーをトレーニングするには、AI Toolkit by Ostris を利用するのが簡単です。
基礎知識として、その AI Toolkit の README を翻訳しておきます。
FLUX.1 : AI Toolkit by Ostris による FLUX.1 トレーニング (1) 基礎知識 / RunPod
作成 : クラスキャット・セールスインフォメーション
作成日時 : 08/23/2024
* 本記事は github ostris/ai-toolkit の以下のページを翻訳したものです :
* サンプルコードの動作確認はしておりますが、必要な場合には適宜、追加改変しています。
* ご自由にリンクを張って頂いてかまいませんが、sales-info@classcat.com までご一報いただけると嬉しいです。
◆ お問合せ : 本件に関するお問合せは下記までお願いします。
- クラスキャット セールス・インフォメーション
- sales-info@classcat.com
- ClassCatJP
FLUX.1 : AI Toolkit by Ostris による FLUX.1 トレーニング (1) 基礎知識 / RunPod
FLUX.1 モデル・ファミリーをトレーニングするには、AI Toolkit by Ostris を利用するのが簡単です。
基礎知識として、その AI Toolkit の README を翻訳しておきます。
インストール
要件 :
- python >3.10
- Nvidia GPU with enough ram to do what you need
- python venv
- git
Linux:
git clone https://github.com/ostris/ai-toolkit.git
cd ai-toolkit
git submodule update --init --recursive
python3 -m venv venv
source venv/bin/activate
# .\venv\Scripts\activate on windows
# install torch first
pip3 install torch
pip3 install -r requirements.txt
Windows:
git clone https://github.com/ostris/ai-toolkit.git
cd ai-toolkit
git submodule update --init --recursive
python -m venv venv
.\venv\Scripts\activate
pip install torch torchvision --index-url https://download.pytorch.org/whl/cu121
pip install -r requirements.txt
FLUX.1 トレーニング
チュートリアル
素早く始めるには、24GB VRAM 装備の 3090 上で Flux Dev を微調整する という @araminta_k のチュートリアルを調べてください。
要件
現在、FLUX.1 をトレーニングするには 少なくとも 24GB の VRAM を備える GPU が必要です。モニターを制御するためにそれを GPU として使用している場合は多分、config ファイルの “model:” 下のフラグ “low_vram:” を true に設定する必要があります。これは CPU 上のモデルを量子化してモニターがアタッチされた状態でトレーニングすることが可能になるはずです。ユーザは WSL で Windows 上で動作させていますが、windows ネイティブで実行する場合、幾つかのバグレポートがあります。今のところ linux 上でのみテストしています。これはまだ極めて実験的であり、24GB に収めるために多くの量子化やトリックが必要でした。
FLUX.1-dev
FLUX.1-dev は非商用ライセンスです。これはトレーニングしたものはすべて非商用ライセンスを継承することを意味しています。それはまたゲート付きモデル (gated model) ですので、使用する前に HF 上でライセンスに同意する必要があります。そうでないと、これは失敗します。ライセンスをセットアップするために必要な手順は以下です :
- HF にサインインしてここの black-forest-labs/FLUX.1-dev でモデルアクセスを承認します。
- このフォルダーのルートに .env という名前のファイルを作成します。
- huggingface から READ キーを取得 して、それを “HF_TOKEN=your_key_here” のように .env ファイルに追加します。
FLUX.1-schnell
FLUX.1-schnell は Apache 2.0 です。それでトレーニングしたものはあなたが望むようにライセンスできます、そしてトレーニングするために HF_TOKEN を必要としません。ただし、それでトレーニングするには特別なアダプター ostris/FLUX.1-schnell-training-adapter が必要です。それはまた非常に実験的です。ベストな全体的な品質のためには、FLUX.1-dev でのトレーニングがおすすめです。
それを使用するには、次のように config ファイルの model セクションに assistant を追加する必要があるだけです :
model:
name_or_path: "black-forest-labs/FLUX.1-schnell"
assistant_lora_path: "ostris/FLUX.1-schnell-training-adapter"
is_flux: true
quantize: true
schnell はそれほど多くの sample ステップを必要としないので調整する必要もあります :
sample:
guidance_scale: 1 # schnell does not do guidance
sample_steps: 4 # 1 - 4 works well
トレーニング
- config/examples/train_lora_flux_24gb.yaml (config/examples/train_lora_flux_schnell_24gb.yaml for schnell) にあるサンプルの config ファイルを config フォルダーにコピーして、それを whatever_you_want.yml に名前変更します。
- ファイルのコメントに従ってファイルを編集します。
- “python run.py config/whatever_you_want.yml” のようにファイルを実行します。
開始すると、config ファイルからの名前のフォルダーとトレーニング・フォルダーが作成されます。その中にすべてのチェックポイントと画像が含まれます。ctrl+c でいつでもトレーニングを停止できて、再開すると、最新のチェックポイントから選択されます。
IMPORTANT If you press crtl+c while it is saving, it will likely corrupt that checkpoint. So wait until it is done saving
Need help?
Please do not open a bug report unless it is a bug in the code. You are welcome to Join my Discord and ask for help there. However, please refrain from PMing me directly with general question or support. Ask in the discord and I will answer when I can.
RunPod クラウドでのトレーニング
サンプル RunPod テンプレート: runpod/pytorch:2.2.0-py3.10-cuda12.1.1-devel-ubuntu22.04
※ 最低 24GB VRAM が必要です、好みの GPU を選択してください。
サンプル config ($0.5/hr) :
- 1x A40 (48 GB VRAM)
- 19 vCPU 100 GB RAM
カスタムオーバーライド (FLUX.1 の複製、データセットの保存、訓練済みモデルとサンプルの保存のために何某かのストレージが必要です) :
- ~120 GB Disk
- ~120 GB Pod Volume
- Start Jupyter Notebook
1. セットアップ
git clone https://github.com/ostris/ai-toolkit.git
cd ai-toolkit
git submodule update --init --recursive
python -m venv venv
source venv/bin/activate
pip install torch
pip install -r requirements.txt
pip install --upgrade accelerate transformers diffusers huggingface_hub #Optional, run it if you run into issues
2. データセットのアップロード
- ルートに新しいフォルダを作成し、”dataset” または好きな名前をつけます。
- 新たに作成したデータセット・フォルダの中に .jpg と .txt ファイルをドラッグ&ドロップします。
3. アクセストークンで Hugging Face にログインする
トレーニング
- config/examples にあるサンプル config ファイルを config フォルダにコピーして whatever_you_want.yml に名前変更します。
- ファイルのコメントに従って config を編集します。
- folder_path: “/path/to/images/folder” を folder_path: “/workspace/ai-toolkit/your-dataset” のように貴方のデータセットに変更します。
- ファイルを実行します: “python run.py config/whatever_you_want.yml”
RunPod のスクリーンショット
データセットの準備
データセットは通常は画像と関連するテキストファイルを含むフォルダである必要があります。現在、サポートされる形式は jpg, jpeg と png だけです。webp は現在、問題があります。テキストファイルは画像と同じ名前にする必要がありますが、.txt 拡張子を伴います。例えば image2.jpg と image2.txt です。テキストファイルはキャプションのみを含む必要があります。キャプションファイルに単語 [trigger] を追加することができて、config に trigger_word がある場合、それは自動的に置き換えられます。
画像は決してアップスケールされませんが、ダウンスケールされてバッチ処理用にバケットに配置されます。画像をクロップ/リサイズする必要はありません。ローダが自動的にリサイズして様々なアスペクト比を処理できます。
以上