com um clique
flow-factory-optimization
Flow-Factory 训练优化审计
Instalar com Codex ou Claude Copie este prompt, cole no Codex, Claude ou outro assistente e deixe que ele revise a página da skill e instale para você.
Menu
Flow-Factory 训练优化审计
Instalar com Codex ou Claude Copie este prompt, cole no Codex, Claude ou outro assistente e deixe que ele revise a página da skill e instale para você.
Baseado na classificação ocupacional SOC
DeepSpeed ZeRO 显存优化与训练加速
Flash Attention 版本选型与最佳配置
提交代码到远程仓库
NVIDIA Nsight Systems 系统级 GPU Profiling
Nsight Systems 自动检测、安装与升级
PyTorch Profiler 性能分析,提供算子级瓶颈定位
| name | flow-factory-optimization |
| description | Flow-Factory 训练优化审计 |
| user-invocable | false |
针对基于 Flow-Factory(X-GenGroup/Flow-Factory)框架的视觉生成模型 RL 训练项目,快速识别已采用和未采用的优化手段,提供针对性的显存优化与性能加速建议。Flow-Factory 是专注于 Diffusion/Flow-Matching 模型 RL 微调的统一框架,支持 GRPO、DPO、NFT 等 8 种 RL 算法和 20+ 模型变体(Wan、Flux、SD3.5、LTX-2 等)。
当识别到用户项目满足以下任一条件时自动触发:
flow_factory(如 from flow_factory、import flow_factory)ff-train 或 flow-factory-traintrainer_type(值为 grpo/nft/awm/dpo/dgpo/crd/diffusion-opd)、model_type(值为 wan2_t2v/flux1/sd3-5 等)、dynamics_type(值为 Flow-SDE/Dance-SDE/CPS/ODE)rewards: 列表且包含 reward_model: 条目flow-factory 或 flow_factorysrc/flow_factory/ 目录,或 config/accelerate_configs/、config/deepspeed/ 目录Flow-Factory你是 Flow-Factory 视觉生成模型 RL 训练优化专家。被调用时,请按照以下清单对目标项目进行全面审计。对每个检查项,判定其状态:已启用 / 未启用 / 建议启用 / 不适用,并给出具体的配置修改建议。
扫描项目的 YAML 配置文件和启动脚本,确定:
trainer_type):grpo / nft / awm / dpo / dgpo / crd / diffusion-opd / grpo-guardmodel.model_type):wan2_t2v / wan2_i2v / flux1 / flux1-kontext / flux2 / flux2-klein / sd3-5 / ltx2_t2av / bagel / qwen-image / z-image 等model.finetune_type):full(全参)/ loramodel.model_path 推断(如 Wan2.1-T2V-1.3B/14B、Flux.1-dev 13B、LTX-2 19B 等)/system-resources 结果)config_file 推断(FSDP2/FSDP/DeepSpeed ZeRO-1/2/3)train.resolution 和 train.num_frames| 检查项 | 配置参数 | 审计要点 |
|---|---|---|
| BF16 混合精度 | mixed_precision: "bf16" | Ampere+(A100/H100/H20) 首选。数值稳定,loss scale 免调 |
| FP16 混合精度 | mixed_precision: "fp16" | V100/T4 使用。注意溢出风险 |
| Master Weight Dtype | model.master_weight_dtype: "bfloat16"/"fp32" | 可训练参数的存储精度。BF16 可节省一半参数显存 |
| Latent 存储精度 | train.latent_storage_dtype: "fp16" | 轨迹 latent 存储精度。FP16 比 FP32 省 50% 显存 |
| 推理 Dtype | model.infer_dtype: "bfloat16" | 模型推理时的精度(采样阶段) |
建议:
mixed_precision: "bf16"mixed_precision: "fp16"latent_storage_dtype: "fp16" 以减少轨迹存储显存master_weight_dtype: "bfloat16"(牺牲少量精度换显存)| 检查项 | 配置参数 | 审计要点 |
|---|---|---|
| 梯度检查点 | train.enable_gradient_checkpointing: true | 以 ~30% 计算换 ~60% 激活显存。视频模型必开 |
| CPU Sample Offload | train.offload_samples_to_cpu: true | 将 sample tensors 在 sample() 和 optimize() 之间卸载到 CPU。视频模型必须启用 |
| EMA 设备 | train.ema_device: "cpu" | 将 EMA 参数存放 CPU 节省 GPU 显存。大模型推荐 |
| 参考模型设备 | train.ref_param_device: "cpu" | 将参考模型参数放 CPU。DPO/CRD 等需要参考模型的算法适用 |
| 梯度累积 | train.gradient_accumulation_steps / train.gradient_step_per_epoch | "auto" 根据 epoch 设置自动推导。大 batch 减少通信频率 |
建议:
enable_gradient_checkpointing: true 和 offload_samples_to_cpu: trueema_device: "cpu" 节省显存(EMA 参数等同模型大小)ref_param_device: "cpu"| 检查项 | 配置参数 | 审计要点 |
|---|---|---|
| LoRA 微调 | model.finetune_type: "lora" | 显存大幅降低。RL 微调推荐 LoRA |
| LoRA Rank | model.lora_rank: 8(默认)示例中常用 32~128 | Rank 越大效果越好但显存越多。RL 微调建议 32~128 |
| LoRA Alpha | model.lora_alpha(默认 2 * rank) | 通常设为 2 * rank 或等于 rank |
| Target Modules | model.target_modules: "all"/"default"/[list] | all 覆盖全部线性层;default 使用模型预设 |
| Target Components | model.target_components: "transformer" 或 ["transformer", "transformer_2"] | Wan2.2 双 transformer 模型需指定两个组件 |
建议:
finetune_type: "lora")lora_rank: 64~128(比 SFT 需更大 rank 以保证探索能力)target_components 包含所有需训练的 transformer| 检查项 | 配置参数 | 审计要点 |
|---|---|---|
| FSDP2 | config_file: config/accelerate_configs/fsdp2.yaml | 推荐方案。PyTorch 原生,性能好,多节点友好 |
| FSDP Full Shard | config_file: config/accelerate_configs/fsdp_full_shard.yaml | FSDP v1,可同时 shard 两个 transformer |
| DeepSpeed ZeRO-2 | config_file: config/deepspeed/deepspeed_zero2.yaml | LoRA 多卡默认选择。梯度+优化器分片 |
| DeepSpeed ZeRO-3 | config_file: config/deepspeed/deepspeed_zero3.yaml | 全参微调大模型。参数+梯度+优化器全分片 |
| ZeRO-2 + CPU Offload | config_file: config/deepspeed/deepspeed_zero2_offparam.yaml | 参数卸载到 CPU,极低显存场景 |
| DeepSpeed ZeRO-1 | config_file: config/deepspeed/deepspeed_zero1.yaml | 仅优化器分片 |
| 多节点 | multinode_examples/ 启动脚本环境变量 MASTER_ADDR、WORLD_SIZE | 多机多卡训练 |
| GPU 数量 | num_processes: N | 参与训练的 GPU 数 |
建议:
| 检查项 | 配置参数 | 审计要点 |
|---|---|---|
| Flash Attention 2 | model.attn_backend: "flash" 或 "flash_hub" | 高优先级。通过 kernels 包安装,避免编译 flash-attn |
| Flash Attention 3 | model.attn_backend: "_flash_3" 或 "_flash_3_hub" | Hopper GPU(H100/H200)专用。性能更佳 |
| Flash Varlen | model.attn_backend: "flash_varlen_hub" / "_flash_3_varlen_hub" | 变长序列场景 |
| SageAttention | model.attn_backend: "sage" | SageAttention 包。8-bit 注意力 |
| xformers | model.attn_backend: "xformers" | xformers 包。兼容性好 |
| SDPA(默认) | model.attn_backend: null(默认) | PyTorch 原生 SDPA。不设置 attn_backend 时使用 |
建议:
attn_backend: "flash_hub"(推荐通过 pip install kernels 安装)attn_backend: "_flash_3_hub" 获得最佳性能| 检查项 | 配置参数 | 审计要点 |
|---|---|---|
| 学习率 | train.learning_rate: 1e-5(默认) | RL 微调建议 1e-6 ~ 1e-5 |
| Adam 参数 | train.adam_betas: [0.9, 0.999]train.adam_weight_decay: 1e-4train.adam_epsilon: 1e-8 | 标准配置。weight_decay 过大可能影响 RL 探索 |
| 梯度裁剪 | train.max_grad_norm: 1.0(默认) | RL 训练梯度波动大,建议保留 |
| Epochs | train.num_epochs: 500 | RL 训练的 epoch 数(每 epoch = 一次 sample + optimize) |
| Sample Group Size | train.sample_group_size | GRPO 等算法每 prompt 生成的样本数 |
| LR Scheduler | Flow-Factory 无内置 LR 调度器 | 仅支持常量学习率。这是一个优化缺口 |
建议:
max_grad_norm: 1.0(RL 训练梯度不稳定时可降至 0.5)sample_group_size: 4~8(更多样本 = 更稳定的 advantage 估计 = 更多显存)| 检查项 | 配置参数 | 审计要点 |
|---|---|---|
| DataLoader Workers | train.dataloader_num_workers: 16(默认) | 数据加载并行度。根据 CPU 核数调整 |
| 预处理 Batch Size | train.preprocessing_batch_size: 8(默认) | 预处理时的 batch 大小 |
| 采样器策略 | train.sampler: "auto"(默认) | auto 优先 group_contiguous(同 rank 内聚合),减少跨 rank 通信 |
| 数据缓存 | data.cache_dir: "~/.cache/flow_factory/datasets" | 预处理结果缓存。避免重复 tokenize/编码 |
| 强制重新处理 | data.force_reprocess: false(默认) | 数据变更后需设为 true |
| 预处理并行模式 | data.preprocess_parallelism: "global"/"local" | local 无需共享文件系统。多节点推荐 local |
| 多源数据集 | data.datasets: [...] + weight | 多数据源加权混合 |
建议:
dataloader_num_workers 与 CPU 核数匹配(建议 8~16)preprocessing_batch_sizepreprocess_parallelism: "local"force_reprocess: false)| 检查项 | 配置参数 | 审计要点 |
|---|---|---|
| 异步奖励 | rewards[*].async_reward: truerewards[*].num_workers: 4 | API-based 奖励模型(如 VLM-as-judge)使用异步计算 |
| 奖励 Batch Size | rewards[*].batch_size | 减小奖励计算的 batch size 可避免 OOM |
| 奖励设备 | rewards[*].device: "cuda"/"cpu" | 大奖励模型可放 CPU(牺牲速度换显存) |
| 奖励 Dtype | rewards[*].dtype: "bfloat16" | BF16 计算奖励节省显存 |
| 多源路由 | rewards[*].applicable_datasets | 不同数据集使用不同奖励模型 |
| Advantage 处理 | train.advantage_type: "sum"/"gdpo" | gdpo 使用 GDPO 风格的 advantage 计算 |
建议:
async_reward: true + num_workers: 4~8batch_size 或设 device: "cpu"dtype: "bfloat16")| 检查项 | 配置参数 | 审计要点 |
|---|---|---|
| EMA 衰减 | train.ema_decay: 0.995(默认) | 0 = 禁用。RL 训练推荐启用 EMA |
| EMA 更新间隔 | train.ema_update_interval: 10(默认) | 每 N epoch 更新一次 EMA |
| EMA 设备 | train.ema_device: "cpu"/"cuda" | CPU 节省显存但增加通信开销 |
| EMA 衰减调度 | train.ema_decay_schedule: "power"/"constant"/"cosine"/"warmup_cosine" | power 是默认,warmup_cosine 适合长训练 |
| Dynamics 类型 | scheduler.dynamics_type: "Flow-SDE"/"Dance-SDE"/"CPS"/"ODE" | 控制 RL 轨迹采样的动力学类型 |
| Flow Shift | scheduler.flow_shift: 3.0 | Wan 模型特有。480P 用 3.0,720P 用 5.0 |
| SDE Steps | scheduler.sde_steps: [1, 2, 3]scheduler.num_sde_steps: 1 | 哪些步骤注入 SDE 噪声、每次 rollout 的 SDE 步数 |
建议:
ema_decay: 0.995),用于评估和保存最终模型ema_device: "cpu"flow_shift: 5.0(默认 3.0 适合 480P)以下是 Flow-Factory 当前未内置但可通过代码修改实现的高收益优化:
| 检查项 | 当前状态 | 优化方式 | 预期收益 |
|---|---|---|---|
| torch.compile | 未集成 | 在 fork 中对 transformer 模型添加 torch.compile(model, mode="reduce-overhead") | 算子融合,吞吐 +10~30% |
| FusedAdam | 仅标准 AdamW | 替换为 torch.optim.AdamW(fused=True) 或 DeepSpeed FusedAdam | Kernel 调用减少,速度 +5~10% |
| 8-bit Adam | 未支持 | 使用 bitsandbytes.optim.AdamW8bit | 优化器显存 -75% |
| Liger Kernel | 未集成 | 针对模型中的 RMSNorm/SwiGLU 等层应用 Liger Kernel | 吞吐 +20%,显存 -60% |
| QLoRA | 未支持 | 使用 bitsandbytes 4-bit 量化基座模型 + LoRA | 模型显存 -75% |
| LR Scheduler | 仅常量 LR | 在 fork 中添加 cosine/warmup scheduler | 训练稳定性和收敛质量提升 |
| Gradient Accumulation 优化 | 基础支持 | 结合 torch.no_sync() 延迟 allreduce | 多卡通信开销降低 |
| DataLoader 优化 | 基础配置 | 添加 pin_memory=True、prefetch_factor=2、persistent_workers=True | 数据加载速度提升 |
| NCCL 环境变量 | 未调优 | 添加 NCCL_IB_DISABLE=0、NCCL_BUFFSIZE=16777216 等 | 多机通信速度 +20~40% |
| ZeRO++ 量化通信 | 未启用 | DeepSpeed 配置 zero_quantized_gradients / zero_quantized_weights | 跨节点通信量 -50~75% |
建议:
attn_backend: "flash_hub"、mixed_precision: "bf16"、offload_samples_to_cpu: true、enable_gradient_checkpointing: truetorch.optim.AdamW(fused=True)、DataLoader 优化、NCCL 调优launcher: "accelerate"
config_file: config/accelerate_configs/fsdp2.yaml
num_processes: 8
mixed_precision: "bf16"
model:
model_path: Wan-AI/Wan2.1-T2V-1.3B
model_type: "wan2_t2v"
finetune_type: "lora"
lora_rank: 64
target_modules: "all"
attn_backend: "flash_hub" # 必须启用
master_weight_dtype: "bfloat16"
train:
trainer_type: "grpo"
num_epochs: 500
learning_rate: 1e-5
resolution: [384, 720]
num_frames: 17
enable_gradient_checkpointing: true # 必须启用
offload_samples_to_cpu: true # 视频模型必须
latent_storage_dtype: "fp16"
sample_group_size: 4
max_grad_norm: 1.0
ema_decay: 0.995
ema_device: "cpu" # 节省显存
dataloader_num_workers: 8
scheduler:
dynamics_type: "Flow-SDE"
flow_shift: 3.0 # 480P 用 3.0
launcher: "accelerate"
config_file: config/deepspeed/deepspeed_zero2.yaml
num_processes: 8
mixed_precision: "bf16"
model:
model_path: Wan-AI/Wan2.1-T2V-14B
model_type: "wan2_t2v"
finetune_type: "lora"
lora_rank: 128
target_modules: "all"
attn_backend: "_flash_3_hub" # H100 用 FA3
master_weight_dtype: "bfloat16"
train:
trainer_type: "grpo"
num_epochs: 300
learning_rate: 5e-6
resolution: [384, 720]
num_frames: 33
enable_gradient_checkpointing: true
offload_samples_to_cpu: true
latent_storage_dtype: "fp16"
sample_group_size: 4
max_grad_norm: 1.0
ema_decay: 0.995
ema_device: "cpu"
ref_param_device: "cpu"
dataloader_num_workers: 8
launcher: "accelerate"
config_file: config/accelerate_configs/fsdp2.yaml
num_processes: 4
mixed_precision: "bf16"
model:
model_path: black-forest-labs/FLUX.1-dev
model_type: "flux1"
finetune_type: "lora"
lora_rank: 64
target_modules: "all"
attn_backend: "flash_hub"
train:
trainer_type: "grpo"
num_epochs: 500
learning_rate: 1e-5
resolution: 512
enable_gradient_checkpointing: true
offload_samples_to_cpu: true
sample_group_size: 4
ema_decay: 0.995
ema_device: "cpu"
launcher: "accelerate"
config_file: config/deepspeed/deepspeed_zero3.yaml
num_processes: 8
mixed_precision: "bf16"
model:
model_path: Wan-AI/Wan2.1-T2V-14B
model_type: "wan2_t2v"
finetune_type: "full"
target_modules: "all"
attn_backend: "flash_hub"
master_weight_dtype: "bfloat16"
train:
trainer_type: "grpo"
num_epochs: 200
learning_rate: 1e-6
resolution: [384, 720]
num_frames: 17
enable_gradient_checkpointing: true
offload_samples_to_cpu: true
latent_storage_dtype: "fp16"
max_grad_norm: 0.5
ema_decay: 0.995
ema_device: "cpu"
gradient_accumulation_steps: 4
launcher: "accelerate"
config_file: config/accelerate_configs/fsdp2.yaml
num_processes: 8
mixed_precision: "bf16"
model:
model_path: Lightricks/LTX-Video-0.9.7-dev
model_type: "ltx2_t2av"
finetune_type: "lora"
lora_rank: 64
target_modules: "all"
attn_backend: "_flash_3_hub"
train:
trainer_type: "nft"
num_epochs: 300
learning_rate: 1e-5
resolution: 512
num_frames: 33
enable_gradient_checkpointing: true
offload_samples_to_cpu: true
ema_decay: 0.995
ema_device: "cpu"
按以下格式输出审计结果:
# Flow-Factory 训练优化审计报告
## 基本信息
- 模型:{model_path}({参数量})
- 模型类型:{model_type}
- RL 算法:{trainer_type}
- 微调方式:{finetune_type}
- 硬件:{GPU型号} x {数量}({显存}GB)
- 分辨率/帧数:{resolution} / {num_frames}
- 分布式后端:{FSDP2/DeepSpeed ZeRO-N}
## 审计结果总览
| 类别 | 得分 | 已启用 | 建议启用 |
|------|------|--------|----------|
| A. 混合精度与数据类型 | x/5 | ... | ... |
| B. 梯度检查点与显存管理 | x/5 | ... | ... |
| C. LoRA 配置 | x/5 | ... | ... |
| D. 分布式训练 | x/6 | ... | ... |
| E. 注意力后端 | x/4 | ... | ... |
| F. 优化器与训练策略 | x/5 | ... | ... |
| G. 数据管道 | x/5 | ... | ... |
| H. 奖励系统优化 | x/4 | ... | ... |
| I. EMA 与调度器 | x/4 | ... | ... |
| J. 深度优化机会 | x/6 | ... | ... |
| **总计** | **x/49** | | |
## 优先优化建议(按影响排序)
### P0 - 立即执行(显著收益,零风险)
1. ...
### P1 - 强烈推荐(明显收益,低风险)
1. ...
### P2 - 建议尝试(中等收益,需测试)
1. ...
## 推荐配置修改
(给出具体的 YAML 配置修改 diff 或代码修改)
开始
├── 显存不足(OOM)?
│ ├── 是 → 当前用全参训练?
│ │ ├── 是 → 切换为 LoRA(finetune_type: "lora")
│ │ └── 否(已用 LoRA)
│ │ ├── enable_gradient_checkpointing: true
│ │ ├── offload_samples_to_cpu: true
│ │ ├── ema_device: "cpu"
│ │ ├── ref_param_device: "cpu"(如有参考模型)
│ │ ├── 降低 lora_rank(128→64→32)
│ │ ├── 减小 resolution 或 num_frames
│ │ ├── 减小 sample_group_size
│ │ └── 仍然 OOM? → DeepSpeed ZeRO-2 + CPU Offload
│ └── 否 → 继续性能优化
├── 训练速度慢?
│ ├── attn_backend 已设置?
│ │ ├── 否 → 设置 attn_backend: "flash_hub"
│ │ └── 是 → 继续
│ ├── mixed_precision 已启用?
│ │ ├── 否 → 设置 mixed_precision: "bf16"
│ │ └── 是 → 继续
│ ├── 多卡训练? → 检查 FSDP/DeepSpeed 配置
│ │ ├── LoRA → DeepSpeed ZeRO-2
│ │ └── 全参 → FSDP2 或 ZeRO-3
│ ├── 检查 dataloader_num_workers(建议 8~16)
│ └── 代码级优化:torch.compile、FusedAdam
├── RL 训练不稳定(reward 不升 / loss 震荡)?
│ ├── 降低 learning_rate(1e-5 → 5e-6 → 1e-6)
│ ├── 降低 max_grad_norm(1.0 → 0.5)
│ ├── 增大 sample_group_size(更稳定的 advantage)
│ ├── 启用 EMA(ema_decay: 0.995)
│ └── 检查 reward 模型是否正常工作
└── 奖励计算慢?
├── 大 VLM 奖励模型 → async_reward: true + num_workers: 4~8
├── 奖励模型 OOM → 减小 batch_size 或 device: "cpu"
└── 多奖励模型 → 确保 dtype: "bfloat16"
| 模型 | 方法 | 精度 | 分辨率×帧数 | 预估显存/GPU |
|---|---|---|---|---|
| Wan2.1-T2V-1.3B | LoRA r=64 | BF16 | 384×720, 17帧 | ~30GB |
| Wan2.1-T2V-14B | LoRA r=64 | BF16 | 384×720, 17帧 | ~60GB |
| Wan2.1-T2V-14B | Full | BF16+ZeRO-3 | 384×720, 17帧 | ~70GB |
| Flux.1-dev 13B | LoRA r=64 | BF16 | 512 | ~40GB |
| LTX-2 19B | LoRA r=64 | BF16 | 512, 33帧 | ~60GB |
以上为 GRPO + sample_group_size=4 + gradient_checkpointing + CPU offload 的估算值,实际显存取决于配置。
用于识别 Flow-Factory 项目的关键词和文件模式:
| 类别 | 关键词/模式 |
|---|---|
| CLI | ff-train、flow-factory-train |
| 配置 | trainer_type(grpo/nft/awm/dpo/dgpo/crd/diffusion-opd)、model_type(wan2_t2v/flux1/sd3-5/ltx2_t2av 等)、dynamics_type(Flow-SDE/Dance-SDE/CPS/ODE)、finetune_type、sample_group_size、offload_samples_to_cpu |
| import | from flow_factory、import flow_factory |
| 依赖 | flow-factory、flow_factory |
| 项目结构 | src/flow_factory/、config/accelerate_configs/、config/deepspeed/ |
| YAML 结构 | 顶层含 data:、model:、train:、eval:、scheduler:、rewards: 嵌套块 |
| 奖励系统 | rewards: 列表、reward_model:、async_reward、advantage_type |
| RL 特有 | sample_group_size、ema_decay、ref_param_device、latent_storage_dtype |