本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。
FLUX.2 Klein LoRa 微调和图像生成
此示例演示如何使用 LoRa(Low-Rank 自适应)微调 FLUX.2 Klein 图像生成模型,并在 Deadline Cloud 上大规模生成图像。该工作流程训练来自小型图像数据集的轻量级适配器。然后,它使用该适配器根据文本提示生成新图像,所有这些图像都作为 GPU 队列上的 Deadline Cloud 作业编排。
此示例的源代码可在上的 de adline-cloud-samples 存储库
以下视频演示了 Deadline Cloud 上的 FLUX.2 Klein LoRa 工作流程。
预计时间:30—60 分钟(包括 15—45 分钟的训练时间)。
概述
该示例由两个任务捆绑包组成:
-
lora_tra Fine-tunes FLUX.2 ining — 使用 LoRa
对你的图像数据集进行 Klein ,生成适配器文件。 .safetensors -
image_g eneration — 使用经过训练的适配器加载基础模型,并根据文本提示生成图像。生成多张图像时,工作将在各个工作人员之间并行进行。
LoRa 是一种参数高效的微调技术,它可以训练小型适配器,而不是修改整个模型的权重。这种方法使训练速度更快(在单个 GPU 上使用 15-45 分钟),并且生成的适配器便于携带且易于版本控制。
要完成此示例,请执行以下步骤:
-
完成先决条件。
-
准备训练数据。
-
提交训练作业。
-
提交图像生成作业。
-
清理资源。
先决条件
开始之前,请确保您拥有:
-
拥有 GPU 队列的 Deadline Cloud Farm(Linux,NVIDIA A10G GPU,13 GB+ VRAM,推荐 64 GiB以上的系统内存)。
-
与 GPU 队列关联的队列。
-
您的工作站上安装了 De adline Cloud CLI
。 -
20—50 张拍摄对象的训练图像(
.jpg、.png.jpeg、或.webp)。
Job 捆绑包结构
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
准备训练数据
准备您的训练数据
-
创建一个包含拍摄对象图像的目录。为获得最佳效果,请使用 20-50 张姿势、光线和背景各不相同的图像。
-
或者,在每张
.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"如果不存在字幕文件,则训练脚本会使用实例提示参数自动生成字幕文件。自定义字幕可以产生更高质量的结果,因为它们可以教会模型在触发词和视觉特征之间更具体的关联。
-
选择一个唯一的触发词(例如
ohwx)。这会将学到的概念绑定到一个与现有模型知识不冲突的代币上。
提交训练作业
提交培训作业
-
导航到克隆
deadline-cloud-samples存储库中的flux2_klein_lora目录。 -
要使用 GUI 提交训练作业,请运行以下命令:
deadline bundle gui-submit ./lora_training或者,要直接使用 CLI 提交训练作业,请运行以下命令:
deadline bundle submit ./lora_training \ --queue-idgpu-queue-id\ --parameter DatasetPath=~/training_images \ --parameter InstancePrompt="a photo of ohwx dog" \ --parameter OutputDir=/tmp/lora_output \ --parameter MaxTrainSteps=1500 \ --parameter Resolution=512 -
在 Deadline Cloud 控制台中或使用
deadline job get命令监控任务状态。
训练参数
| 参数 | 说明 | 默认 |
|---|---|---|
| 模型版本 | flux.2-klein-base-4b 或 flux.2-klein-4b |
flux.2-klein-base-4b |
| 数据集路径 | 包含训练图像的目录 | — |
| 实例提示 | 描述您的主题的文字 | — |
| 解决方案 | 训练图像分辨率(以像素为单位) | 512 |
| 网络调光 | LoRa 等级(越高 = 容量越大) | 16 |
| 网络 Alpha | LoRa α缩放系数 | 16 |
| 最大训练步数 | 训练迭代次数 | 1500 |
| 输出目录 | 在哪里保存训练过的重量 | — |
训练输出
训练作业会生成以下构件:
-
flux2_klein_lora.safetensors— 经过训练的 LoRa 适配器,带有嵌入式元数据。 -
每 300 步保存一次检查点。
要在训练完成后下载输出,请运行以下命令:
deadline job download-output \ --job-idtraining-job-id\ --queue-idgpu-queue-id
提交图像生成作业
提交图像生成作业
-
导航到克隆
deadline-cloud-samples存储库中的flux2_klein_lora目录。 -
要使用 GUI 提交图像生成作业,请运行以下命令:
deadline bundle gui-submit ./image_generation或者,要直接通过 CLI 提交图像生成作业,请运行以下命令:
deadline bundle submit ./image_generation \ --queue-idgpu-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 -
在 Deadline Cloud 控制台中或使用
deadline job get命令监控任务状态。
当大NumImages于 1 时,Deadline Cloud 会将工作分配给多个工作人员,以加快生成速度。
生成参数
| 参数 | 说明 | 默认 |
|---|---|---|
| LoRa Path | 经过训练的.safetensors文件的路径 |
— |
| 提示 | 文字描述(包括你的触发词) | — |
| 图像数量 | 要生成的图像总数 | 1 |
| 宽度 | 以像素为单位的输出宽度 | 1024 |
| 高度 | 以像素为单位的输出高度 | 1024 |
| 推理步骤 | 降噪步骤数 | 50 |
| 指导量表 | Classifier-free 指导量表 | 4.0 |
发电输出
图像另存为image_0001.pngimage_0002.png、等。要下载它们,请运行以下命令:
deadline job download-output \ --job-idgeneration-job-id\ --queue-idgpu-queue-id
型号变体
| 模型 | 参数 | 适用于 |
|---|---|---|
flux.2-klein-base-4b |
4B | Fine-tuning,商业用途 |
flux.2-klein-4b |
4B | 快速推理(4 个降噪步骤) |
培训建议
以下建议可以帮助您获得最佳结果:
-
数据集大小 — 20—50 张高质量图像适用于大多数拍摄对象。
-
分辨率 — 对于具有 24 GB 显存的 GPU,请使用 512。更高的分辨率需要更多的内存。
-
训练步骤 — 从 1500 开始。如果输出与拍摄对象不相似,则增加。
-
网络暗淡 — 16 是一个不错的默认设置。对于复杂或抽象的概念,使用 32。
-
学习率 — 默认值 1e-4 适用于大多数情况。
清理
为避免持续收费,请清理您为此示例创建的资源:
清理示例资源
-
在 Deadline Cloud 控制台中,停止或删除您在本示例中使用的 GPU 队列。
-
如果不再需要任务附件创建的任何 Amazon Simple Storage Service 对象,请将其删除。
-
如果不再需要本地输出文件,请将其删除:
rm -rf /tmp/lora_output /tmp/generated_images
相关资源
以下资源提供了更多信息: