ComfyUI训练提效全指南
一 训练前的数据与分辨率策略
- 优先使用低分辨率起步 + 高清修复(Hires.fix)的两阶段策略:先生成如512×512或768×768,再放大到目标分辨率,通常可节省50%+算力且质量不降。
- 数据集规模与质量并重:风格/主体一致性训练建议准备20–50张风格参考图,并配套自动Captioning生成描述,便于模型快速收敛。
- 训练前做数据增强(如随机裁剪、颜色抖动),提升泛化与稳定性。
- 分辨率与步数基准:基础任务控制在20–30步;复杂任务不超过40步;分辨率尽量与显存匹配(如8GB显存→512×512,12GB→768×768)。
二 计算精度与注意力优化
- 启用混合精度训练(FP16/BF16):在不损失精度的前提下,显存占用可接近减半,吞吐通常提升明显;Ampere及以后架构优先用FP16,高端卡可尝试BF16。
- 开启TF32(RTX 30系及以上):在不改模型代码的情况下,矩阵乘效率通常提升约10%–15%。
- 使用xFormers/memory_efficient_attention优化注意力:在1024×1024任务中常见节省3–5GB显存,训练更稳更快。
- 在支持的硬件上开启FP16累加等加速特性,进一步压缩显存并提升速度。
三 多卡与分布式训练
- 单机多卡/多机多卡:通过DistributedDataParallel(DDP)与NCCL通信实现多GPU协同。关键步骤包括:
- 进程组初始化:
dist.init_process_group(backend='nccl', init_method='env://'); - 数据按rank分片:
image_files = image_files[rank::world_size]; - 模型包装:
model = DDP(model, device_ids=[local_rank], output_device=local_rank); - 启动命令示例:
- 服务器1:
CUDA_VISIBLE_DEVICES=0,1 RANK=0 WORLD_SIZE=4 MASTER_ADDR=server1_ip MASTER_PORT=29500 python main.py --distributed - 服务器2:
CUDA_VISIBLE_DEVICES=0,1 RANK=2 WORLD_SIZE=4 MASTER_ADDR=server1_ip MASTER_PORT=29500 python main.py --distributed - 通信优化:优先NVLink互联,必要时启用梯度压缩;设置合理批次大小平衡计算/通信;通过NCCL_TIMEOUT避免超时(如
export NCCL_TIMEOUT=1800)。 - 无分布式环境时,可用多实例部署做“伪多卡”:
- GPU 0:
CUDA_VISIBLE_DEVICES=0 python main.py --port 8188 - GPU 1:
CUDA_VISIBLE_DEVICES=1 python main.py --port 8189 - 通过API或任务队列将不同工作流分发到不同实例。
四 启动参数与资源监控
- 常用启动参数(按硬件与稳定性取舍):
- 低显存/极限环境:
--lowvram / --novram,必要时配合--reserve-vram 1~2(为系统预留显存,避免OOM); - 高显存卡:
--highvram减少模型换入换出; - 加速库:优先启用
--xformers;AMD可用--use-pytorch-cross-attention。 - 资源监控与日志:
- 观察启动日志中的显存状态(如“Set vram state to: NORMAL_VRAM/LOW_VRAM”);
- 外部监控:
watch -n 1 nvidia-smi --query-gpu=memory.used --format=csv; - 代码级监控:利用
comfy/model_management.py中的get_free_memory()、module_size()等接口定位内存瓶颈。
五 训练流程与批量策略
- 批处理与缓存:在推理/验证阶段使用Batch Generate与Checkpoint Cache,减少模型重复加载与I/O开销;批量推理时,单卡RTX 3090处理1000张产品图约2.5小时,启用4卡并行可缩短至约45分钟。
- 工作流精简:移除未使用的ControlNet/LoRA与冗余节点,避免每个附加模型带来1–3GB显存开销。
- 训练参数基线:以LoRA微调为例,常用配置为learning_rate=1e-5、batch_size=4、epochs=10;训练后在生成流程中通过LoRA Injection加载权重,按需求调节LoRA Strength(0.7–1.2)控制风格强度。