Skip to content

FLUX.2 快速入门

本指南介绍如何在 FLUX.2 上训练 LoRA,这是 Black Forest Labs 最新的图像生成模型系列。

注意:默认模型版本为 klein-9b,但本指南以 dev(完整的 12B transformer 配合 24B Mistral-3 文本编码器)为重点,因为它的资源需求最高。Klein 模型更易于运行 - 请参阅下方的模型变体。

模型变体

FLUX.2 有三个变体:

变体 Transformer 文本编码器 总块数 默认
dev 12B 参数 Mistral-3 (24B) 56 (8+48)
klein-9b 9B 参数 Qwen3(内置) 32 (8+24) ✓
klein-4b 4B 参数 Qwen3(内置) 25 (5+20)

主要差异: - dev:使用独立的 Mistral-Small-3.1-24B 文本编码器,具有引导嵌入 - klein 模型:使用模型仓库内置的 Qwen3 文本编码器,无引导嵌入(引导训练选项将被忽略)

要选择变体,请在配置中设置 model_flavour:

{
  "model_flavour": "dev"
}

重要:对于 klein-4b 和 klein-9b,请将 qwen_text_encoder_model_name_or_path 留空以使用内置的 Qwen3 文本编码器。仅在需要用另一个兼容 Qwen 的来源替换内置 Qwen3 文本编码器时设置它。

模型概述

FLUX.2-dev 相比 FLUX.1 引入了重大架构变化:

  • 文本编码器:Mistral-Small-3.1-24B(dev)或 Qwen3(klein)
  • 架构:8 个 DoubleStreamBlock + 48 个 SingleStreamBlock(dev)
  • 潜在通道:32 个 VAE 通道 → 像素重排后为 128(FLUX.1 为 16)
  • VAE:自定义 VAE,带有批归一化和像素重排
  • 嵌入维度:dev 为 15,360(3×5,120),klein-9b 为 12,288(3×4,096),klein-4b 为 7,680(3×2,560)

硬件要求

硬件要求因模型变体而异。

Klein 模型(推荐大多数用户使用)

Klein 模型更易于访问:

变体 bf16 显存 int8 显存 系统内存
klein-4b ~12GB ~8GB 32GB+
klein-9b ~22GB ~14GB 64GB+

klein-9b 推荐:单张 24GB GPU(RTX 3090/4090、A5000) klein-4b 推荐:单张 16GB GPU(RTX 4080、A4000)

FLUX.2-dev(高级)

由于 Mistral-3 文本编码器的存在,FLUX.2-dev 对资源有较高要求:

显存要求

仅 24B 的 Mistral 文本编码器就需要大量显存:

组件 bf16 int8 int4
Mistral-3 (24B) ~48GB ~24GB ~12GB
FLUX.2 Transformer ~24GB ~12GB ~6GB
VAE + 开销 ~4GB ~4GB ~4GB
配置 大致总显存
全部使用 bf16 ~76GB+
int8 文本编码器 + bf16 transformer ~52GB
全部使用 int8 ~40GB
int4 文本编码器 + int8 transformer ~22GB

系统内存

  • 最低:96GB 系统内存(加载 24B 文本编码器需要大量内存)
  • 推荐:128GB+ 以确保流畅运行

推荐硬件

  • 最低配置:2 张 48GB GPU(A6000、L40S)配合 FSDP2 或 DeepSpeed
  • 推荐配置:4 张 H100 80GB 配合 fp8-torchao
  • 重度量化(int4):2 张 24GB GPU 可能可行,但属于实验性配置

由于 Mistral-3 文本编码器和 transformer 的总体大小,FLUX.2-dev 基本上需要多 GPU 分布式训练(FSDP2 或 DeepSpeed)。

前提条件

Python 版本

FLUX.2 需要 Python 3.10 或更高版本,以及较新版本的 transformers:

python --version  # 应为 3.10+
pip install transformers>=4.45.0

模型访问

FLUX.2 模型需要在 Hugging Face 上获得访问批准:

对于 dev: 1. 访问 black-forest-labs/FLUX.2-dev 2. 接受许可协议

对于 klein 模型: 1. 访问 black-forest-labs/FLUX.2-klein-base-9B 或 black-forest-labs/FLUX.2-klein-base-4B 2. 接受许可协议

确保已登录 Hugging Face CLI:huggingface-cli login

安装

pip install 'simpletuner[cuda]'

# CUDA 13 / Blackwell users (NVIDIA B-series GPUs)
pip install 'simpletuner[cuda13]' --extra-index-url https://download.pytorch.org/whl/cu130

如需开发环境设置:

git clone https://github.com/bghira/SimpleTuner
cd SimpleTuner
pip install -e ".[cuda]"

配置

网页界面方式

simpletuner server

访问 http://localhost:8001 并选择 FLUX.2 作为模型系列。

手动配置

创建 config/config.json:

查看示例配置
{
  "model_type": "lora",
  "model_family": "flux2",
  "model_flavour": "dev",
  "pretrained_model_name_or_path": "black-forest-labs/FLUX.2-dev",
  "output_dir": "/path/to/output",
  "train_batch_size": 1,
  "gradient_accumulation_steps": 1,
  "gradient_checkpointing": true,
  "mixed_precision": "bf16",
  "learning_rate": 1e-4,
  "lr_scheduler": "constant",
  "max_train_steps": 10000,
  "validation_resolution": "1024x1024",
  "validation_num_inference_steps": 20,
  "flux_guidance_mode": "constant",
  "flux_guidance_value": 1.0,
  "lora_rank": 16
}

关键配置选项

引导配置

注意:Klein 模型(klein-4b、klein-9b)没有引导嵌入。以下引导选项仅适用于 dev。

FLUX.2-dev 使用与 FLUX.1 类似的引导嵌入:

查看示例配置
{
  "flux_guidance_mode": "constant",
  "flux_guidance_value": 1.0
}

或者在训练时使用随机引导:

查看示例配置
{
  "flux_guidance_mode": "random-range",
  "flux_guidance_min": 1.0,
  "flux_guidance_max": 5.0
}

量化(内存优化)

如需减少显存使用:

查看示例配置
{
  "base_model_precision": "int8-quanto",
  "text_encoder_1_precision": "int8-quanto",
  "base_model_default_dtype": "bf16"
}

TREAD(训练加速)

FLUX.2 支持 TREAD 以加速训练:

查看示例配置
{
  "tread_config": {
    "routes": [
      {"selection_ratio": 0.5, "start_layer_idx": 2, "end_layer_idx": -2}
    ]
  }
}

高级实验性功能

显示高级实验性详情 SimpleTuner 包含可以显著改善训练稳定性和性能的实验性功能。 * **[计划采样(Rollout)](../experimental/SCHEDULED_SAMPLING.md):** 通过让模型在训练期间生成自己的输入,减少暴露偏差并提高输出质量。 > ⚠️ 这些功能会增加训练的计算开销。

数据集配置

创建 config/multidatabackend.json:

查看示例配置
[
  {
    "id": "my-dataset",
    "type": "local",
    "crop": true,
    "crop_aspect": "square",
    "crop_style": "center",
    "resolution": 1024,
    "minimum_image_size": 1024,
    "maximum_image_size": 1024,
    "resolution_type": "pixel_area",
    "cache_dir_vae": "cache/vae/flux2/my-dataset",
    "instance_data_dir": "datasets/my-dataset",
    "caption_strategy": "textfile",
    "metadata_backend": "discovery",
    "repeats": 10
  },
  {
    "id": "text-embeds",
    "type": "local",
    "dataset_type": "text_embeds",
    "default": true,
    "cache_dir": "cache/text/flux2",
    "write_batch_size": 64
  }
]

请参阅 DATALOADER.md 中的 caption_strategy 选项和要求。

可选的编辑/参考条件

FLUX.2 可以训练纯文生图(无条件)或使用配对的参考/编辑图像。要添加条件,使用 conditioning_data 将主数据集与一个或多个 conditioning 数据集配对,并选择 conditioning_type:

查看示例配置
[
  {
    "id": "flux2-edits",
    "type": "local",
    "instance_data_dir": "/datasets/flux2/edits",
    "caption_strategy": "textfile",
    "resolution": 1024,
    "conditioning_data": ["flux2-references"],
    "cache_dir_vae": "cache/vae/flux2/edits"
  },
  {
    "id": "flux2-references",
    "type": "local",
    "dataset_type": "conditioning",
    "instance_data_dir": "/datasets/flux2/references",
    "conditioning_type": "reference_strict",
    "resolution": 1024,
    "cache_dir_vae": "cache/vae/flux2/references"
  }
]
  • 当您需要裁剪与编辑图像 1:1 对齐时,使用 conditioning_type=reference_strict。reference_loose 允许不匹配的宽高比。
  • 编辑数据集和参考数据集之间的文件名必须匹配;每个编辑图像都应有相应的参考文件。
  • 当提供多个条件数据集时,根据需要设置 conditioning_multidataset_sampling(combined 或 random);详见 OPTIONS。
  • 如果没有 conditioning_data,FLUX.2 将回退到标准文生图训练。

LoRA 目标

可用的 LoRA 目标预设:

  • all(默认):所有注意力层和 MLP 层
  • attention:仅注意力层(qkv、proj)
  • mlp:仅 MLP/前馈层
  • tiny:最小化训练(仅 qkv 层)
查看示例配置
{
  "--flux_lora_target": "all"
}

训练

登录服务

huggingface-cli login
wandb login  # 可选

开始训练

simpletuner train

或通过脚本:

./train.sh

验证提示词

创建 config/user_prompt_library.json:

查看示例配置
{
  "portrait_subject": "a professional portrait photograph of <subject>, studio lighting, high detail",
  "artistic_subject": "an artistic interpretation of <subject> in the style of renaissance painting",
  "cinematic_subject": "a cinematic shot of <subject>, dramatic lighting, film grain"
}

推理

使用训练好的 LoRA

FLUX.2 LoRA 可以使用 SimpleTuner 推理管道或兼容的工具加载(待社区支持开发完成后)。

引导值

  • 使用 flux_guidance_value=1.0 进行训练适用于大多数用例
  • 在推理时,使用正常的引导值(3.0-5.0)

与 FLUX.1 的区别

方面 FLUX.1 FLUX.2-dev FLUX.2-klein-9b FLUX.2-klein-4b
文本编码器 CLIP-L/14 + T5-XXL Mistral-3 (24B) Qwen3(内置) Qwen3(内置)
嵌入维度 CLIP: 768, T5: 4096 15,360 12,288 7,680
潜在通道 16 32 (→128) 32 (→128) 32 (→128)
VAE AutoencoderKL 自定义(BatchNorm) 自定义(BatchNorm) 自定义(BatchNorm)
Transformer 块 19 个联合 + 38 个单独 8 个双流 + 48 个单流 8 个双流 + 24 个单流 5 个双流 + 20 个单流
引导嵌入 是 是 否 否

故障排除

启动时内存不足

  • 启用 --offload_during_startup=true
  • 使用 --quantize_via=cpu 进行文本编码器量化
  • 减少 --vae_batch_size

文本嵌入速度慢

Mistral-3 体积很大;可以考虑: - 在训练前预缓存所有文本嵌入 - 使用文本编码器量化 - 使用更大的 write_batch_size 进行批处理

训练不稳定

  • 降低学习率(尝试 5e-5)
  • 增加梯度累积步数
  • 启用梯度检查点
  • 使用 --max_grad_norm=1.0

CUDA 内存不足

  • 启用量化(int8-quanto 或 int4-quanto)
  • 启用梯度检查点
  • 减少批次大小
  • 使用 TREAD 进行令牌路由效率优化

高级:TREAD 配置

TREAD(Token Routing for Efficient Architecture-agnostic Diffusion)通过选择性处理令牌来加速训练:

查看示例配置
{
  "tread_config": {
    "routes": [
      {
        "selection_ratio": 0.5,
        "start_layer_idx": 4,
        "end_layer_idx": -4
      }
    ]
  }
}
  • selection_ratio:要保留的令牌比例(0.5 = 50%)
  • start_layer_idx:开始应用路由的第一层
  • end_layer_idx:最后一层(负数表示从末尾计算)

预期加速:根据配置不同,可达 20-40%。

另请参阅