如何在Kaggle中用双GPU运行ComfyUI+Flux 1 dev且不超内存?
在Kaggle Notebook中用双GPU加速ComfyUI的Flux 1 dev推理
不要并行启动两个ComfyUI实例,这种方式会重复加载模型,直接触发内存不足。正确的做法是让单个ComfyUI实例利用双GPU做模型并行或阶段拆分,以下是具体实现方案:
1. 启用ComfyUI原生多GPU模型并行
ComfyUI内置了多GPU支持,只需在启动时添加对应参数即可自动拆分模型到两块GPU:
- 启动命令添加参数:
--multi-gpu --gpu-device-id 0,1--multi-gpu:开启自动模型层拆分逻辑,将Flux的不同网络层分配到可用GPU上--gpu-device-id 0,1:明确指定使用两块GPU(Kaggle的GPU设备ID通常为0和1)
- 如果默认拆分效果不理想,可修改ComfyUI根目录下的
config.py,调整multi_gpu相关配置,比如手动指定某些层的GPU分配优先级
2. 配合内存优化提升效率
为了避免内存溢出,同时最大化双GPU利用率,可搭配以下设置:
- 启用模型量化:在ComfyUI的Flux模型加载节点中,勾选
fp8或bf16量化选项(Flux 1 dev支持低精度推理),大幅降低单GPU的显存占用 - 清理后台冗余进程:执行
!ps aux | grep python查看Kaggle Notebook中的后台进程,杀掉无关的Python进程释放内存 - 调整推理批次:单GPU时若用批次1,双GPU可尝试批次2(需监控显存,若出现OOM则回落至批次1)
3. 手动阶段拆分(模型并行的替代方案)
如果自动模型并行效果不佳,可手动将工作流的不同阶段分配到不同GPU:
- 在CLIP模型加载节点中,设置
device为cuda:0,让文本编码阶段跑在第一块GPU - 在Flux UNet模型加载节点中,设置
device为cuda:1,让图像生成的核心计算跑在第二块GPU - 这种方式让两块GPU同时处理工作流的不同环节,避免单GPU瓶颈
4. 验证双GPU是否生效
- 执行
!nvidia-smi命令,查看两块GPU的显存占用和GPU使用率,若两者均有稳定负载,说明双GPU已被利用 - 对比单GPU与双GPU的单图生成耗时,通常能实现1.5-2倍的速度提升(具体取决于GPU规格和工作流复杂度)
内容的提问来源于stack exchange,提问作者Bram Fran




