View a markdown version of this page

拡散モデルを使用してイメージをバッチで生成する - Deadline クラウド

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

拡散モデルを使用してイメージをバッチで生成する

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

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

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

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

概要

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

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

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

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

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

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

ファームをセットアップする

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

互換性のあるファームを取得する最も簡単な方法は、vLLM バッチ推論バンドルが使用するのと同じテンプレートである CUDA ファーム CloudFormation テンプレートを GitHub にデプロイすることです。スタックが に達したら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 チャネルに事前にベイクするか、出力を開く必要があります。

入力ファイルを準備する

入力は、行ごとに 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"}

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

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

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

GUI 送信者を使用して送信するには
  1. text_to_image_batch バンドルディレクトリから、送信者を開きます。

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

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

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

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

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

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

Prompts および ChunkSizeパラメータは、Deadline Cloud タスクチャンキング機能を使用して、vLLM バッチ推論バンドルと同じように機能します。詳細については、「ジョブテンプレートのタスクチャンキング」を参照してください。ModelName パラメータは、SDXL Turbo や Stable Diffusion 3.5 など、拡散ライブラリがロードできるすべてのものを受け入れます。完全なパラメータリストと他のモデルの設定については、GitHub のサンプル README のパラメータ表を参照してください。

ギャラリーをダウンロードして参照する

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

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

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

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

vLLM バッチ推論からのチェーン

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

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

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

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

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

クリーンアップ

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

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

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

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

以下のリソースは追加情報を提供します。