

翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。

# FLUX.2" LoRA ファインチューニングとイメージ生成
<a name="flux2-klein-lora"></a>

この例では、LoRA (Low-Rank Adaptation) を使用して FLUX.2" イメージ生成モデルを微調整し、Deadline Cloud で大規模にイメージを生成する方法を示します。ワークフローは、小さな画像データセットから軽量アダプターをトレーニングします。次に、そのアダプターを使用してテキストプロンプトから新しいイメージを生成し、すべて GPU フリートの Deadline Cloud ジョブとしてオーケストレーションされます。

この例のソースコードは、GitHub の [deadline-cloud-samples](https://github.com/aws-deadline/deadline-cloud-samples/tree/mainline/job_bundles/flux2_klein_lora) リポジトリにあります。

次の動画は、Deadline Cloud での FLUX.2" LoRA ワークフローを示しています。

[![AWS Videos](http://img.youtube.com/vi/3ziQqB19RSw/0.jpg)](http://www.youtube.com/watch?v=3ziQqB19RSw)


**推定時間:** 30～60 分 (トレーニングには 15～45 分を含む）。

## 概要
<a name="examples-flux2-overview"></a>

この例では、2 つのジョブバンドルで構成されています。

1. **lora\_training** – [LoRA](https://huggingface.co/docs/peft/conceptual_guides/adapter#low-rank-adaptation-lora) を使用してイメージデータセットの [FLUX.2"](https://huggingface.co/black-forest-labs/FLUX.2-klein-base-4B) をファインチューニングし、`.safetensors`アダプターファイルを生成します。

1. **image\_generation** – トレーニング済みのアダプターを使用してベースモデルをロードし、テキストプロンプトから画像を生成します。複数のイメージを生成する場合、作業はワーカー間で並列化されます。

LoRA は、モデル全体の重みを変更する代わりに小さなアダプターをトレーニングする、パラメータ効率の高い微調整手法です。このアプローチにより、トレーニングが高速になり (1 つの GPU で 15～45 分）、結果として得られるアダプターは移植可能でバージョン管理が容易になります。

ジョブバンドルは、トレーニングと推論に[拡散ライブラリ](https://github.com/huggingface/diffusers)と [peft](https://github.com/huggingface/peft) ライブラリを使用します。

この例を完了するには、次の手順に従います。

1. 「前提条件」を完了します。

1. トレーニングデータを準備します。

1. トレーニングジョブを送信します。

1. イメージ生成ジョブを送信します。

1. リソースをクリーンアップします。

## 前提条件
<a name="examples-flux2-prerequisites"></a>

作業を開始する前に、以下の準備が整っていることを確認します。
+ GPU フリートを備えた Deadline Cloud ファーム (Linux、NVIDIA A10G GPU、13 GB 以上の VRAM、64 GiB 以上のシステムメモリを推奨）。
+ GPU フリートに関連付けられたキュー。
+ ワークステーションにインストールされている [Deadline Cloud CLI](https://github.com/aws-deadline/deadline-cloud)。
+ 20～50 個の被写体のトレーニングイメージ (`.jpg`、`.png`、`.jpeg`、または `.webp`)。

## ジョブバンドル構造
<a name="examples-flux2-structure"></a>

```
flux2_klein_lora/
├── lora_training/
│   ├── template.yaml       # OpenJD job template
│   └── train_lora.py       # Training script
└── image_generation/
    ├── template.yaml       # OpenJD job template
    └── generate_image.py   # Inference script
```

## トレーニングデータを準備する
<a name="examples-flux2-training-data"></a>

**トレーニングデータを準備するには**

1. サブジェクトのイメージを含むディレクトリを作成します。最良の結果を得るには、さまざまなポーズ、照明、背景を持つ 20～50 個の画像を使用します。

1. オプションで、より微妙なトレーニングのために、各イメージと一緒に`.txt`字幕ファイルを指定します。

   ```
   training_images/
   ├── IMG_001.jpeg
   ├── IMG_001.txt    # "a photo of ohwx dog sitting on grass"
   ├── IMG_002.jpeg
   ├── IMG_002.txt    # "a photo of ohwx dog running on beach"
   ```

   キャプションファイルが存在しない場合、トレーニングスクリプトはインスタンスプロンプトパラメータを使用してキャプションファイルを自動的に生成します。カスタムキャプションは、トリガーワードと視覚的特徴の間のより具体的な関連付けをモデルに教えるため、より高品質の結果を生成します。

1. 一意のトリガーワード ( など`ohwx`) を選択します。これにより、学習した概念は、既存のモデル知識と競合しないトークンにバインドされます。

## トレーニングジョブを送信する
<a name="examples-flux2-submit-training"></a>

**トレーニングジョブを送信するには**

1. クローンされた`deadline-cloud-samples`リポジトリの `flux2_klein_lora` ディレクトリに移動します。

1. GUI を使用してトレーニングジョブを送信するには、次のコマンドを実行します。

   ```
   deadline bundle gui-submit ./lora_training
   ```

   または、 CLI を使用してトレーニングジョブを直接送信するには、次のコマンドを実行します。

   ```
   deadline bundle submit ./lora_training \
     --queue-id {{gpu-queue-id}} \
     --parameter DatasetPath=~/training_images \
     --parameter InstancePrompt="a photo of ohwx dog" \
     --parameter OutputDir=/tmp/lora_output \
     --parameter MaxTrainSteps=1500 \
     --parameter Resolution=512
   ```

1. Deadline Cloud コンソールで、または `deadline job get` コマンドを使用してジョブのステータスをモニタリングします。

### トレーニングパラメータ
<a name="examples-flux2-training-params"></a>


**トレーニングパラメータ**  

| パラメータ | 説明 | デフォルト | 
| --- | --- | --- | 
| モデルのバージョン | flux.2-klein-base-4b、または flux.2-klein-4b | flux.2-klein-base-4b | 
| データセットパス | トレーニングイメージを含むディレクトリ | — | 
| インスタンスプロンプト | 件名を説明するテキスト | — | 
| 解像度 | トレーニングイメージのピクセル単位の解像度 | 512 | 
| Network Dim | LoRA ランク (高 = 容量の増加) | 16 | 
| ネットワークアルファ | LoRA アルファスケーリング係数 | 16 | 
| 最大トレーニングステップ | トレーニングの反復回数 | 1500 | 
| 出力ディレクトリ | トレーニングされた重みを保存する場所 | — | 

### トレーニング出力
<a name="examples-flux2-training-output"></a>

トレーニングジョブは、次のアーティファクトを生成します。
+ `flux2_klein_lora.safetensors` – メタデータが埋め込まれたトレーニング済み LoRA アダプター。
+ チェックポイントは 300 ステップごとに保存されます。

トレーニングの完了後に出力をダウンロードするには、次のコマンドを実行します。

```
deadline job download-output \
  --job-id {{training-job-id}} \
  --queue-id {{gpu-queue-id}}
```

## イメージ生成ジョブを送信する
<a name="examples-flux2-submit-generation"></a>

**イメージ生成ジョブを送信するには**

1. クローンされた`deadline-cloud-samples`リポジトリの `flux2_klein_lora` ディレクトリに移動します。

1. GUI を使用してイメージ生成ジョブを送信するには、次のコマンドを実行します。

   ```
   deadline bundle gui-submit ./image_generation
   ```

   または、CLI を使用してイメージ生成ジョブを直接送信するには、次のコマンドを実行します。

   ```
   deadline bundle submit ./image_generation \
     --queue-id {{gpu-queue-id}} \
     --parameter LoRAPath=/tmp/lora_output/flux2_klein_lora.safetensors \
     --parameter Prompt="a photo of ohwx dog wearing a tuxedo" \
     --parameter OutputDir=/tmp/generated_images \
     --parameter NumImages=4
   ```

1. Deadline Cloud コンソールで、または `deadline job get` コマンドを使用してジョブのステータスをモニタリングします。

`NumImages` が 1 より大きい場合、Deadline Cloud は作業を複数のワーカーに分散して生成を高速化します。

### 生成パラメータ
<a name="examples-flux2-generation-params"></a>


**生成パラメータ**  

| パラメータ | 説明 | デフォルト | 
| --- | --- | --- | 
| LoRA パス | トレーニング済み.safetensorsファイルへのパス | — | 
| Prompt | テキストの説明 (トリガーワードを含む) | — | 
| イメージの数 | 生成するイメージの合計 | 1 | 
| Width | ピクセル単位の出力幅 | 1024 | 
| Height | ピクセル単位の出力高さ | 1024 | 
| 推論ステップ | ノイズ除去ステップの数 | 50 | 
| ガイダンススケール | 分類子のないガイダンススケール | 4.0 | 

### 生成出力
<a name="examples-flux2-generation-output"></a>

イメージは `image_0001.png`、 `image_0002.png`などとして保存されます。これらをダウンロードするには、次のコマンドを実行します。

```
deadline job download-output \
  --job-id {{generation-job-id}} \
  --queue-id {{gpu-queue-id}}
```

## モデルバリアント
<a name="examples-flux2-model-variants"></a>


**FLUX.2" モデルバリアント**  

| モデル | パラメータ | 次の用途に適しています | 
| --- | --- | --- | 
| flux.2-klein-base-4b | 4B | ファインチューニング、商用使用 | 
| flux.2-klein-4b | 4B | 高速推論 (4 つのノイズ除去ステップ) | 

## トレーニングの推奨事項
<a name="examples-flux2-recommendations"></a>

最良の結果を得るには、次の推奨事項が役立ちます。
+ **データセットサイズ** – 20～50 個の高品質の画像は、ほとんどの被写体に適しています。
+ **解決策** – 24 GB VRAM GPUs には 512 を使用します。解像度が高いほど、より多くのメモリが必要になります。
+ **トレーニングステップ** – 1500 から開始します。出力がサブジェクトに似ていない場合は、 を増やします。
+ **Network dim** – 16 が良いデフォルトです。複雑な概念や抽象的な概念には 32 を使用します。
+ **学習レート** – デフォルトの 1e-4 は、ほとんどの場合に適しています。

## クリーンアップ
<a name="examples-flux2-cleanup"></a>

継続的な料金を回避するには、この例で作成したリソースをクリーンアップします。

**サンプルリソースをクリーンアップするには**

1. Deadline Cloud コンソールで、この例で使用した GPU フリートを停止または削除します。

1. 不要になったジョブアタッチメントによって作成された Amazon Simple Storage Service (Amazon S3) オブジェクトを削除します。

1. 不要になったローカル出力ファイルを削除します。

   ```
   rm -rf /tmp/lora_output /tmp/generated_images
   ```

## 関連リソース
<a name="examples-flux2-related"></a>

以下のリソースは追加情報を提供します。
+ [GitHub のソースコードの例](https://github.com/aws-deadline/deadline-cloud-samples/tree/mainline/job_bundles/flux2_klein_lora)
+ [Hugging Face の FLUX.2"](https://huggingface.co/black-forest-labs/FLUX.2-klein-base-4B)
+ [オープンジョブの説明の仕様](https://github.com/OpenJobDescription/openjd-specifications)
+ [Diffusers ドキュメント](https://huggingface.co/docs/diffusers)
+ [Deadline クラウドアーキテクチャガイダンス](https://docs.aws.amazon.com/deadline-cloud/latest/developerguide/architecture-guidance.html)