View a markdown version of this page

使用擴散模型批次產生映像 - 截止日期雲端

本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。

使用擴散模型批次產生映像

本教學課程會逐步引導您使用擴散模型,在提示的 JSONL 檔案上執行高輸送量批次映像產生。您可以將 GitHub text-to-image批次任務套件提交至截止日期雲端陣列上的 GPU 機群。預設模型是 Hugging Face 上的 FLUX.2 Klein 4B,這是 Apache 2.0 授權、無門控、已分段至 4 個步驟,且需要約 13 GB 的視訊 RAM (VRAM)。

JSONL 中每個選取的行都會成為產生任務。排程器會將任務分配到可用的 GPU 工作者,每個工作者會載入擴散管道一次,並針對其執行的每個任務重複使用。當行攜帶caption欄位,或從 vLLM 批次推論套件輸出鏈結generated_text的欄位時,任務會將產生影像上的文字複合為清晰的排版。沒有字幕的行會產生純影像,因此套件的運作方式與純text-to-image批次產生器相同。

預估時間:30-60 分鐘,包括陣列設定。第一次執行也會下載每個工作者約 13 GB 的模型權重。

執行本教學課程會產生處理任務的 GPU 工作者執行個體費用。

概觀

若要完成本教學課程,請遵循下列步驟:

  1. 設定您的陣列。

  2. 準備輸入檔案。

  3. 提交映像產生任務。

  4. 下載並瀏覽圖庫。

  5. 清除資源。

設定您的陣列

您需要具有 NVIDIA GPUs 和至少 32 GB RAM 的服務受管機群,以及連接讀取CondaPackagesCondaChannels任務參數之 conda 佇列環境的佇列。由於 CPU 卸載,FLUX.2 Klein 4B 可輕鬆地安裝在 16 GB 和更大的 GPUs 上 (例如 L4 或 A10G)。

取得相容陣列的最快方法是在 GitHub 上部署 CUDA 陣列 CloudFormation 範本,這是 vLLM 批次推論套件使用的相同範本。堆疊到達 後CREATE_COMPLETE,設定截止日期雲端 CLI 以使用新的陣列:

deadline config set defaults.farm_id FarmId-from-stack-outputs deadline config set defaults.queue_id CUDAQueueId-from-stack-outputs
注意

套件包含一個InstallDeps任務環境,可將 PyTorch 和最新的擴散器程式庫從 git 安裝在每個工作階段的佇列 conda 環境之上,並下載四個小型 Google 字型作為字幕浮水印。第一次使用時,每個工作者預計會有 30–90 秒的額外設定時間,以及在第一次執行時下載模型。如果您的機群在網路限制的 VPC 中執行,您需要將相依性預先封裝到自訂 AMI 或 conda 頻道,或開啟輸出。

準備輸入檔案

輸入是 JSONL 檔案,每行一個 JSON 物件。每一行都必須有一個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"}

選用的每行欄位包含caption浮水印文字,style以覆寫任務層級樣式尾碼、 fontwidthheightstepsseed。套件包含與 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. 設定提示範圍 (例如,1-10前 10 個提示) 並挑選輸出目錄。

  4. 選擇性地調整 StyleSuffix寬度高度true 如果您的 JSONL 有字幕或標語,請將重疊字幕保留在 ,或將其設定為 false 以產生純影像。

  5. 選擇提交

或者,使用 CLI 提交:

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

PromptsChunkSize 參數的運作方式與 vLLM 批次推論套件相同,使用截止日期雲端任務區塊功能。如需詳細資訊,請參閱任務範本的任務區塊ModelName 參數接受擴散器程式庫可以載入的任何內容,包括 SDXL Turbo 和穩定擴散 3.5。如需完整參數清單和其他模型的設定,請參閱 GitHub 上 README 範例中的參數表

下載並瀏覽圖庫

下載並瀏覽結果
  1. 任務完成後,從您在提交時使用的相同目錄執行下載命令,因此OutputDir路徑會解析為相同的位置:

    deadline job download-output --job-id job-id
  2. 每個成品都會落在您設定為 之路徑的output/子目錄中OutputDir。原始 PNGs 位於 中output/images/,合併的中繼資料位於 中output/output.jsonloutput/gallery.html並且是具有搜尋和 CSV 匯出的靜態圖庫檢視器。

  3. 如果您gallery.html直接開啟時未載入圖庫的影像,則這是 file:// URLs的瀏覽器安全限制。請改為提供 目錄:

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

來自 vLLM 批次推論的鏈結

傳統流程會將此套件與 vLLM 批次推論套件配對:

  1. 使用 vLLM 批次推論套件產生文字:標語、字幕、場景描述或 alt-text。輸出是每行output.jsonl一個generated_text欄位。請參閱 使用 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. 如果您不再需要本機輸出檔案,請將其移除。

下列資源提供其他資訊: