

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

# 拡散モデルを使用してイメージをバッチで生成する
<a name="tutorial-text-to-image-batch"></a>

このチュートリアルでは、拡散モデルを使用してプロンプトの JSONL ファイルで高スループットのバッチイメージ生成を実行する方法について説明します。[GitHub の text-to-image バッチジョブバンドル](https://github.com/aws-deadline/deadline-cloud-samples/tree/mainline/job_bundles/text_to_image_batch)を Deadline Cloud ファームの GPU フリートに送信します。デフォルトのモデルは[、Hugging Face の FLUX.2" 4B ](https://huggingface.co/black-forest-labs/FLUX.2-klein-4B)です。これは Apache 2.0 のライセンスを受けており、非推奨で、4 ステップに絞り込まれており、約 13 GB のビデオ RAM (VRAM) が必要です。

JSONL で選択した各行は生成タスクになります。スケジューラは使用可能な GPU ワーカーにタスクを分散し、各ワーカーは拡散パイプラインを 1 回ロードし、実行するすべてのタスクに再利用します。行に`caption`フィールドがある場合、または vLLM バッチ推論バンドルの出力から連鎖された`generated_text`フィールドがある場合、ジョブは生成されたイメージ上のテキストを簡潔なタイポグラフィとして複合します。字幕のない行は純粋な画像を生成するため、バンドルはプレーンtext-to-imageバッチジェネレーターと同様に機能します。

**推定時間:** ファームのセットアップを含めて 30～60 分。最初の実行では、ワーカーあたり約 13 GB のモデル重みもダウンロードされます。

このチュートリアルを実行すると、ジョブを処理する GPU ワーカーインスタンスに対して料金が発生します。

## 概要
<a name="tutorial-t2i-overview"></a>

このチュートリアルを完了するには、次の手順に従います。

1. ファームをセットアップします。

1. 入力ファイルを準備します。

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

1. ギャラリーをダウンロードして参照します。

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

## ファームをセットアップする
<a name="tutorial-t2i-setup"></a>

NVIDIA GPUs と 32 GB 以上の RAM を備えたサービスマネージドフリートと、 `CondaPackages` および `CondaChannels`ジョブパラメータを読み取る conda キュー環境がアタッチされたキューが必要です。FLUX.2" 4B は、CPU オフロードにより 16 GB 以上の GPUs (L4 や A10G など) に快適にフィットします。

互換性のあるファームを取得する最も簡単な方法は、vLLM バッチ推論バンドルが使用するのと同じテンプレートである [CUDA ファーム CloudFormation テンプレートを GitHub に](https://github.com/aws-deadline/deadline-cloud-samples/tree/mainline/cloudformation/farm_templates/cuda_farm)デプロイすることです。スタックが に達したら`CREATE_COMPLETE`、新しいファームを使用するように Deadline Cloud CLI を設定します。

```
deadline config set defaults.farm_id {{FarmId-from-stack-outputs}}
deadline config set defaults.queue_id {{CUDAQueueId-from-stack-outputs}}
```

**注記**  
バンドルには、すべてのセッションでキューの conda 環境の上に PyTorch と最新の拡散ライブラリを git からインストールし、字幕オーバーレイ用に 4 つの小さな Google フォントをダウンロードする`InstallDeps`ジョブ環境が含まれています。初回使用時にワーカーごとに 30～90 秒の追加セットアップ時間に加えて、初回実行時にモデルをダウンロードします。フリートがネットワーク制限付き VPC で実行されている場合は、依存関係をカスタム AMI または conda チャネルに事前にベイクするか、出力を開く必要があります。

## 入力ファイルを準備する
<a name="tutorial-t2i-input"></a>

入力は、行ごとに 1 つの JSON オブジェクトを持つ JSONL ファイルです。各行には、`prompt`フィールドまたは vLLM バッチ推論バンドルの出力から連鎖された`generated_text`フィールドが必要です。

```
{"prompt": "A golden hour photo of a sourdough loaf on a linen-covered table", "id": "loaf_01"}
{"prompt": "A bakery storefront at sunrise, photorealistic", "caption": "OPEN AT DAWN", "id": "shop_01"}
{"prompt": "Write a slogan for sourdough", "id": "001", "generated_text": "Real grain. Real fermentation. Real you.", "style": "rustic flat lay, warm tones"}
```

オプションの行ごとのフィールドには、ジョブレベルのスタイルサフィックス、、`font``width`、、`steps`および を上書き`style`する`caption`オーバーレイテキスト`height`が含まれます`seed`。バンドルには、vLLM バッチバンドルと同じゼロ依存プロンプトビルダーツールが含まれています。`tools/prompt_builder.html` を開いて入力ファイルを構築し、ドラッグアンドドロップで JSONL をインポートし、プロンプトごとのオーバーライドを追加します。

バンドルされた`sample_prompts.jsonl`ファイルは 10 イメージのベーカリーキャンペーンデモです。vLLM バッチ推論バンドルによって生成されたベーカリーのスローガンで、スタイルヒントが にレイヤー化され、エボカティブなビジュアルになります。

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

**GUI 送信者を使用して送信するには**

1. `text_to_image_batch` バンドルディレクトリから、送信者を開きます。

   ```
   deadline bundle gui-submit .
   ```

1. 入力 JSONL ファイルを選択します。ベーカリーキャンペーン`sample_prompts.jsonl`のデモをお試しください。

1. **プロンプト範囲** (最初の 10 `1-10`個のプロンプトなど) を設定し、出力ディレクトリを選択します。

1. 必要に応じて、**StyleSuffix**、**幅**、**高さ**を微調整します。JSONL に字幕やスローガン`true`がある場合は**、オーバーレイキャプ**ションを のままにするか、純粋なイメージ生成`false`のために に設定します。

1. [**Submit**] を選択してください。

または、CLI を使用して を送信します。

```
deadline bundle submit . \
  --parameter InputFile=$PWD/sample_prompts.jsonl \
  --parameter Prompts=1-10 \
  --parameter OutputDir=$PWD/output
```

`Prompts` および `ChunkSize`パラメータは、Deadline Cloud タスクチャンキング機能を使用して、vLLM バッチ推論バンドルと同じように機能します。詳細については、「[ジョブテンプレートのタスクチャンキング](build-job-bundle-chunking.md)」を参照してください。`ModelName` パラメータは、SDXL Turbo や Stable Diffusion 3.5 など、拡散ライブラリがロードできるすべてのものを受け入れます。完全なパラメータリストと他のモデルの設定については、[GitHub のサンプル README のパラメータ表](https://github.com/aws-deadline/deadline-cloud-samples/tree/mainline/job_bundles/text_to_image_batch#parameters)を参照してください。

## ギャラリーをダウンロードして参照する
<a name="tutorial-t2i-results"></a>

**結果をダウンロードして参照するには**

1. ジョブが完了したら、送信時に使用したのと同じディレクトリからダウンロードコマンドを実行し、`OutputDir`パスが同じ場所に解決されるようにします。

   ```
   deadline job download-output --job-id {{job-id}}
   ```

1. すべてのアーティファクトは、 として設定したパスの `output/` サブディレクトリに配置されます`OutputDir`。raw PNGs は にあり`output/images/`、結合メタデータは にあり`output/output.jsonl`、検索と CSV エクスポートを備えた静的ギャラリービューワー`output/gallery.html`です。

1. `gallery.html` 直接開くときにギャラリーのイメージがロードされない場合、`file://`URL に対するURLs。代わりに ディレクトリを提供します。

   ```
   cd {{OutputDir}}/output && python3 -m http.server 8080
   # open http://localhost:8080/gallery.html
   ```

## vLLM バッチ推論からのチェーン
<a name="tutorial-t2i-chaining"></a>

クラシックフローは、このバンドルを vLLM バッチ推論バンドルとペアリングします。

1. スローガン、字幕、シーンの説明、alt-text などの vLLM バッチ推論バンドルを使用してテキストを生成します。出力は 1 行あたり `generated_text`フィールド`output.jsonl`です。「[vLLM を使用してバッチ LLM 推論を実行する](tutorial-vllm-batch.md)」を参照してください。

1. (オプション) を開き`tools/prompt_builder.html`、 をドロップし`output.jsonl`、プロンプトごとのキャプション、スタイル、またはビジュアルの説明を追加または編集して、再エクスポートします。

1. JSONL を としてこのバンドルを送信します`InputFile`。タスクごとのスクリプトは、オーバーレイキャプション`generated_text`として を自動的に使用します。

行に`generated_text`スローガンと元の LLM の両方がある場合`prompt`、タスクスクリプトはサブジェクトをリクエストから引き出し、拡散モデルのビジュアルプロンプトとして使用しようとします。スローガンは抽象的すぎてモデルに具体的なサブジェクトを与えることができないことが多いためです。ワーカーはタスクごとにビジュアルプロンプトソースをログに記録するため、誤った抽出を見つけることができます。

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

継続的な課金を回避するには、このチュートリアル用に作成したリソースをクリーンアップします。

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

1. CUDA ファーム CloudFormation テンプレートをデプロイした場合は、 CloudFormation コンソールから CloudFormation スタックを削除します。

1. 既存のファームを使用し、このチュートリアル専用の GPU フリートを作成した場合は、そのフリートを停止または削除します。既存の共有フリートを使用した場合は、そのままにします。

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

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

以下のリソースは追加情報を提供します。
+ [GitHub のサンプルソースコード](https://github.com/aws-deadline/deadline-cloud-samples/tree/mainline/job_bundles/text_to_image_batch)
+ [vLLM を使用してバッチ LLM 推論を実行する](tutorial-vllm-batch.md)
+ [ジョブテンプレートのタスクチャンキング](build-job-bundle-chunking.md)
+ [FLUX.2" LoRA ファインチューニングとイメージ生成](flux2-klein-lora.md)
+ [Hugging Face ディフューザーのドキュメント](https://huggingface.co/docs/diffusers)