View a markdown version of this page

FLUX.2 Klein LoRa 微调和图像生成 - 截止日期云

本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。

FLUX.2 Klein LoRa 微调和图像生成

此示例演示如何使用 LoRa(Low-Rank 自适应)微调 FLUX.2 克莱因图像生成模型,以及如何在 Deadline Cloud 上大规模生成图像。该工作流程根据小型图像数据集训练轻量级适配器。然后,它使用该适配器根据文本提示生成新图像,所有图像均作为 GPU 队列上的 Deadline Cloud 任务进行编排。

此示例的源代码可在上的 d eadline-cloud-samples 存储库中找到。 GitHub

以下视频演示了 Deadline Cloud 上的 FLUX.2 Klein LoRa 工作流程。

预计时间:30—60 分钟(包括 15—45 分钟的训练时间)。

概述

该示例由两个任务包组成:

  1. lora_training — Fine-tunes FLUX.2 Klein 使用 LoRa 在你的图像数据集上生成适配器文件。.safetensors

  2. image_gen eration — 使用经过训练的适配器加载基础模型,并根据文本提示生成图像。生成多个图像时,工作将在工作人员之间并行处理。

LoRa 是一种高效参数的微调技术,可以训练小型适配器,而不是修改完整的模型权重。这种方法可以快速训练(在单个 GPU 上进行 15—45 分钟),由此产生的适配器便于携带,易于版本化。

任务包使用扩散器 peft 库进行训练和推理。

要完成此示例,请执行以下步骤:

  1. 完成先决条件。

  2. 准备训练数据。

  3. 提交训练作业。

  4. 提交图像生成任务。

  5. 清理资源。

先决条件

开始之前,请确保您拥有:

  • 具有 GPU 机群(建议使用 NVIDIA A10G GPU Linux、13 GB+ VRAM、64 GB+ 系统内存)的 Deadline Cloud 农场。

  • 与 GPU 队列相关的队列。

  • 在您的工作站上安装了 Deadl ine Cloud CLI。

  • 20—50 张拍摄对象的训练图像(.jpg.png.jpeg、或.webp)。

任务包结构

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

准备训练数据

准备训练数据
  1. 创建一个包含主题图像的目录。为获得最佳效果,请使用 20—50 张具有不同姿势、光照和背景的图像。

  2. 或者,在每张.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"

    如果不存在字幕文件,则训练脚本使用实例提示参数自动生成字幕文件。自定义字幕可以产生更高质量的结果,因为它们可以向模型传授触发词和视觉特征之间更具体的关联。

  3. 选择一个独特的触发词(例如ohwx)。这会将所学概念与与现有模型知识不冲突的代币绑定在一起。

提交训练作业

提交训练作业
  1. 导航到克隆deadline-cloud-samples存储库中的flux2_klein_lora目录。

  2. 要使用 GUI 提交训练作业,请运行以下命令:

    deadline bundle gui-submit ./lora_training

    或者,要直接使用 CLI 提交训练作业,请运行以下命令:

    deadline bundle submit ./lora_training \ --queue-id gpu-queue-id \ --parameter DatasetPath="$HOME/training_images" \ --parameter InstancePrompt="a photo of ohwx dog" \ --parameter OutputDir=/tmp/lora_output \ --parameter MaxTrainSteps=1500 \ --parameter Resolution=512
  3. 在 Deadline Cloud 控制台中或使用deadline job get命令监控任务状态。

训练参数

训练参数
参数 说明 默认
模型版本 flux.2-klein-base-4bflux.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-id training-job-id \ --queue-id gpu-queue-id

提交图像生成任务

提交图像生成作业
  1. 导航到克隆deadline-cloud-samples存储库中的flux2_klein_lora目录。

  2. 要使用 GUI 提交图像生成作业,请运行以下命令:

    deadline bundle gui-submit ./image_generation

    或者,要直接使用 CLI 提交映像生成作业,请运行以下命令:

    deadline bundle submit ./image_generation \ --queue-id gpu-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
  3. 在 Deadline Cloud 控制台中或使用deadline job get命令监控任务状态。

当大NumImages于 1 时,Deadline Cloud 会将工作分配给多个工作人员,以加快生成速度。

生成参数

生成参数
参数 说明 默认
LoRa 路径 训练.safetensors文件路径
提示 文字描述(包括您的触发词)
图像数量 要生成的图像总数 1
宽度 以像素为单位的输出宽度 1024
高度 以像素为单位的输出高度 1024
推理步骤 降噪步骤数 50
指导量表 Classifier-free 指导量表 4.0

生成输出

图像另存为image_0001.pngimage_0002.png、等。要下载它们,请运行以下命令:

deadline job download-output \ --job-id generation-job-id \ --queue-id gpu-queue-id

模型变体

FLUX.2 克莱因模型变体
模型 参数 适用于
flux.2-klein-base-4b 4B Fine-tuning,商业用途
flux.2-klein-4b 4B 快速推断(4 个降噪步骤)

培训建议

以下建议可以帮助您获得最佳结果:

  • 数据集大小 — 20—50 张高质量图像适合大多数拍摄对象。

  • 分辨率 — 对于具有 24 GB VRAM 的 GPU,使用 512。更高的分辨率需要更多的内存。

  • 训练步骤 — 从 1500 开始。如果输出与拍摄对象不相似,则增加。

  • 网络暗度 — 16 是一个很好的默认值。对于复杂或抽象的概念,使用 32。

  • 学习率 — 默认值 1e-4 适用于大多数情况。

清理

为避免持续收费,请清理您为此示例创建的资源:

清理示例资源
  1. 在 Deadline Cloud 控制台中,停止或删除您在本示例中使用的 GPU 队列。

  2. 如果不再需要任何由任务附件创建的亚马逊简单存储服务 (Amazon S3) 对象,则将其删除。

  3. 如果不再需要本地输出文件,请将其删除:

    rm -rf /tmp/lora_output /tmp/generated_images

以下资源提供了其他信息: