本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。
使用扩散模型批量生成图像
本教程将引导您使用扩散模型在 JSONL 提示文件上运行高吞吐量批量图像生成。您将文本到图像的批处理任务包提交到您的 Deadline Cl GitHub
JSONL 中的每个选定行都将成为生成任务。调度器将任务分配给可用的 GPU 工作线程,每个工作程序加载一次扩散管道,然后将其重复用于其运行的每项任务。当一条线包含一个caption字段或一个从 vLLM 批量推理包的输出中链接的generated_text字段时,作业会将文本合成在生成的图像上,形成清晰的排版。没有标题的线条会生成纯图像,因此该包同样可以很好地用作纯文本到图像的批处理生成器。
预计时间:30—60 分钟,包括农场设置。第一次运行还会为每位工作人员下载大约 13 GB 的模型权重。
运行本教程会产生处理任务的 GPU 工作实例的费用。
概述
要完成本教程,请按照以下步骤操作:
-
设置你的农场。
-
准备输入文件。
-
提交图像生成作业。
-
下载并浏览图库。
-
清理资源。
设置你的农场
您需要一个具有 NVIDIA GPU 和至少 32 GB RAM 的服务管理队列,以及一个附加了用于读取CondaPackages和CondaChannels作业参数的 conda 队列环境的队列。 FLUX.2 由于 CPU 卸载,Klein 4B 可轻松适用于 16 GB 及更大的 GPU(例如 L4 或 A10G)。
获得兼容农场的最快方法是在其上部署 CUDA 农场 CloudFormation 模板 GitHubCREATE_COMPLETE,将 Deadline Cloud CLI 配置为使用新农场:
deadline config set defaults.farm_idFarmId-from-stack-outputsdeadline config set defaults.queue_idCUDAQueueId-from-stack-outputs
注意
该捆绑包中包括一个可在每次会话中安装的InstallDeps作业环境 PyTorch 以及队列的 conda 环境之上来自 git 的最新扩散器库,此外还为字幕叠加层下载了四种小型 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"}
可选的每行字段包括叠加文本、captionstyle用于覆盖作业级别样式后缀、、font、width和height。steps seed该软件包包含与 vLLM 批处理包相同的零依赖提示生成器工具。打开tools/prompt_builder.html以生成输入文件,通过拖放导入 JSONL,并添加每个提示符的覆盖。
捆绑sample_prompts.jsonl文件是一个 10 张图片的面包店活动演示:由 vLLM 批量推理包生成的面包店口号,上面有风格提示,可提供令人回味的视觉效果。
提交图像生成作业
与 GUI 提交者一起提交
-
从
text_to_image_batchbundle 目录中,打开提交者:deadline bundle gui-submit . -
选择您的输入 JSONL 文件。试
sample_prompts.jsonl试面包店活动演示。 -
设置提示范围(
1-10例如,前 10 个提示音)并选择一个输出目录。 -
(可选)调整StyleSuffix、宽度和高度。
true如果您的 JSONL 有字幕或口号,请将叠加标题保留在,或者将其设置为纯图像生成。false -
选择提交。
或者,使用 CLI 提交:
deadline bundle submit . \ --parameter InputFile=$PWD/sample_prompts.jsonl \ --parameter Prompts=1-10 \ --parameter OutputDir=$PWD/output
使用截止日期云任务分块功能,Prompts和ChunkSize参数的工作方式与 vLLM 批量推理包中的工作方式相同。有关更多信息,请参阅 作业模板的任务分块。该ModelName参数接受扩散器库可以加载的任何内容,包括 SDXL Turbo 和 Stable Diffusion 3.5。有关完整的参数列表和其他模型的设置,请参阅示例 README 中的参数表。 GitHub
下载并浏览图库
下载和浏览结果
-
作业完成后,从您在提交时使用的相同目录运行下载命令,这样
OutputDir路径就会解析到相同的位置:deadline job download-output --job-idjob-id -
每个工件都位于您设置的路径的
output/子目录下。OutputDir原始的 PNG 已输入output/images/,组合的元数据已输入output/output.jsonl,并且output/gallery.html是一个具有搜索和 CSV 导出功能的静态图库查看器。 -
如果在您
gallery.html直接打开图库时无法加载图库的图片,则这是浏览器对file://网址的安全限制。改为提供目录:cdOutputDir/output && python3 -m http.server 8080 # open http://localhost:8080/gallery.html
来自 vLLM 批量推断的链
经典流程将此包与 vLLM 批量推理包配对:
-
使用 vLLM 批量推理包生成文本:口号、字幕、场景描述或替代文本。输出为每
output.jsonl行一个generated_text字段。请参阅使用 vLLM 运行批处理 LLM 推理。 -
(可选)打开
tools/prompt_builder.html、放入output.jsonl、添加或编辑每提示字幕、样式或视觉描述,然后重新导出。 -
以 JSONL 的身份提交此捆绑包。
InputFile每项任务的脚本自动用generated_text作叠加标题。
当一行既有generated_text口号又有原始 LLM 时prompt,任务脚本会尝试将该主题从请求中提取出来,并将其用作扩散模型的视觉提示,因为口号通常过于抽象,无法为模型提供具体的主题。工作人员会记录每个任务的可视提示源,这样你就可以发现错误解压的情况。
清理
为避免持续收费,请清理您为本教程创建的资源:
清理教程资源
-
如果您部署了 CUDA 农场 CloudFormation 模板,请从 CloudFormation 控制台中删除 CloudFormation 堆栈。
-
如果您使用现有农场并专门为本教程创建了 GPU 队列,请停止或删除该队列。如果您使用的是预先存在的共享队列,请将其保留在原处。
-
如果您不再需要本地输出文件,请将其删除。
相关资源
以下资源提供了其他信息: