ComfyUI-MultiGPU 插件完全教程
1. 插件简介
插件地址: https://github.com/pollockjj/ComfyUI-MultiGPU
ComfyUI-MultiGPU 是一个超级实用的显存管理插件!它就像一个"智能资源调度员",能够帮你把AI模型分配到不同的显卡或内存上,让你的主显卡腾出更多空间来处理图像生成。
这个插件能给我们带来什么效果?
- 🎯 显存释放:把模型的不同部分放到不同设备上,释放主显卡显存
- 💾 虚拟显存:创造"虚拟显存",让你能运行比显卡显存更大的模型
- 🔄 多卡协作:如果你有多张显卡,可以让它们协同工作
- ⚡ 性能优化:避免反复加载卸载模型,提高运行效率
- 🧠 智能分配:自动计算最佳的资源分配方案
- 📊 DisTorch技术:革命性的层级分布技术,一个数字控制显存使用
简单来说,它就像给你的电脑装了一个"智能内存管家",能够合理分配各种硬件资源,让你能够运行更大的模型,生成更高质量的图片和视频!
2. 如何安装
方法一:通过 ComfyUI Manager 安装(推荐)
- 打开 ComfyUI Manager
- 搜索 "ComfyUI-MultiGPU"
- 点击安装即可
方法二:手动安装
- 打开终端/命令行
- 进入你的 ComfyUI 插件目录:
cd ComfyUI/custom_nodes - 运行命令:
git clone https://github.com/pollockjj/ComfyUI-MultiGPU.git - 重启 ComfyUI
注意: 这个插件会自动检测你已安装的其他插件,并为它们创建多GPU版本的节点。
3. 节点详细解析
3.1 DeviceSelectorMultiGPU 节点 - 设备选择器
这个节点就像一个"设备遥控器",让你可以选择要使用哪个设备(显卡或CPU)。
参数详解:
| 参数名 (UI显示) | 参数名 (代码里) | 参数值 | 建议值 | 通俗解释 (能干嘛的) | 专业解释 | 怎么用/举个例子 |
|---|---|---|---|---|---|---|
| device | device | 下拉选择 | cuda:0 | 选择要使用的设备,就像选择用哪个"工人" | 指定模型加载和运行的设备 | cuda:0是第一张显卡,cpu是处理器 |
3.2 HunyuanVideoEmbeddingsAdapter 节点 - 视频嵌入适配器
这个节点就像一个"翻译器",把HunyuanVideo的特殊格式转换成ComfyUI能理解的标准格式。
参数详解:
| 参数名 (UI显示) | 参数名 (代码里) | 参数值 | 建议值 | 通俗解释 (能干嘛的) | 专业解释 | 怎么用/举个例子 |
|---|---|---|---|---|---|---|
| hyvid_embeds | hyvid_embeds | HYVIDEMBEDS类型 | 来自视频编码器 | HunyuanVideo的"密码本",需要转换格式 | HunyuanVideo模型的嵌入向量数据 | 连接HunyuanVideo文本编码器的输出 |
3.3 MergeFluxLoRAsQuantizeAndLoad 节点 - LoRA合并量化加载器
这个节点就像一个"模型改装厂",能够把多个LoRA插件合并到基础模型上,然后压缩保存。
参数详解:
| 参数名 (UI显示) | 参数名 (代码里) | 参数值 | 建议值 | 通俗解释 (能干嘛的) | 专业解释 | 怎么用/举个例子 |
|---|---|---|---|---|---|---|
| unet_name | unet_name | 下拉选择 | 选择基础模型 | 要"改装"的基础模型,就像原版汽车 | 基础UNet扩散模型文件 | 选择flux-dev或其他基础模型 |
| switch_1 | switch_1 | On/Off | Off | 第一个LoRA的"开关",决定是否使用 | 控制第一个LoRA是否参与合并 | On表示使用这个LoRA |
| lora_name_1 | lora_name_1 | 下拉选择 | None | 第一个LoRA文件,就像"改装套件1" | 第一个LoRA适配器文件 | 选择你想要的风格LoRA |
| lora_weight_1 | lora_weight_1 | 浮点数 | 1.0 | 第一个LoRA的"影响强度",像调音量 | 第一个LoRA的权重系数 | 1.0是标准强度,0.5是一半强度 |
| switch_2 | switch_2 | On/Off | Off | 第二个LoRA的"开关" | 控制第二个LoRA是否参与合并 | 同switch_1 |
| lora_name_2 | lora_name_2 | 下拉选择 | None | 第二个LoRA文件,就像"改装套件2" | 第二个LoRA适配器文件 | 同lora_name_1 |
| lora_weight_2 | lora_weight_2 | 浮点数 | 1.0 | 第二个LoRA的"影响强度" | 第二个LoRA的权重系数 | 同lora_weight_1 |
| switch_3 | switch_3 | On/Off | Off | 第三个LoRA的"开关" | 控制第三个LoRA是否参与合并 | 同switch_1 |
| lora_name_3 | lora_name_3 | 下拉选择 | None | 第三个LoRA文件,就像"改装套件3" | 第三个LoRA适配器文件 | 同lora_name_1 |
| lora_weight_3 | lora_weight_3 | 浮点数 | 1.0 | 第三个LoRA的"影响强度" | 第三个LoRA的权重系数 | 同lora_weight_1 |
| switch_4 | switch_4 | On/Off | Off | 第四个LoRA的"开关" | 控制第四个LoRA是否参与合并 | 同switch_1 |
| lora_name_4 | lora_name_4 | 下拉选择 | None | 第四个LoRA文件,就像"改装套件4" | 第四个LoRA适配器文件 | 同lora_name_1 |
| lora_weight_4 | lora_weight_4 | 浮点数 | 1.0 | 第四个LoRA的"影响强度" | 第四个LoRA的权重系数 | 同lora_weight_1 |
| quantization | quantization | 下拉选择 | Q4_K_S | 压缩方式,就像选择"打包密度" | 模型量化压缩的方法 | Q4_K_S平衡质量和大小 |
| delete_final_gguf | delete_final_gguf | 布尔值 | False | 是否删除最终文件,像"用完就扔" | 处理完成后是否删除生成的GGUF文件 | True会节省磁盘空间 |
| new_model_name | new_model_name | 字符串 | merged_model | 新模型的名字,就像给"改装车"起名 | 合并后模型的文件名 | 输入有意义的名称如"my_style_model" |
3.4 标准加载器的MultiGPU版本
插件会自动为ComfyUI的标准加载器创建MultiGPU版本,每个都增加了设备选择功能:
3.4.1 CheckpointLoaderSimpleMultiGPU - 简易模型加载器
| 参数名 (UI显示) | 参数名 (代码里) | 参数值 | 建议值 | 通俗解释 (能干嘛的) | 专业解释 | 怎么用/举个例子 |
|---|---|---|---|---|---|---|
| ckpt_name | ckpt_name | 下拉选择 | 选择模型 | 要加载的模型文件,就像选择"画师" | Checkpoint模型文件名 | 选择SDXL或其他基础模型 |
| device | device | 下拉选择 | cuda:0 | 加载到哪个设备,就像选择"工作台" | 模型加载的目标设备 | cuda:0用主显卡,cpu用处理器 |
3.4.2 UNETLoaderMultiGPU - UNet加载器
| 参数名 (UI显示) | 参数名 (代码里) | 参数值 | 建议值 | 通俗解释 (能干嘛的) | 专业解释 | 怎么用/举个例子 |
|---|---|---|---|---|---|---|
| unet_name | unet_name | 下拉选择 | 选择UNet | UNet模型文件,就像"绘画引擎" | UNet扩散模型文件 | 选择flux-dev-unet等 |
| device | device | 下拉选择 | cuda:0 | 加载到哪个设备 | UNet模型的运行设备 | 建议用最强的显卡 |
3.4.3 VAELoaderMultiGPU - VAE加载器
| 参数名 (UI显示) | 参数名 (代码里) | 参数值 | 建议值 | 通俗解释 (能干嘛的) | 专业解释 | 怎么用/举个例子 |
|---|---|---|---|---|---|---|
| vae_name | vae_name | 下拉选择 | 选择VAE | VAE模型文件,就像"图像转换器" | 变分自编码器模型文件 | 选择ae.safetensors等 |
| device | device | 下拉选择 | cuda:1 | 加载到哪个设备 | VAE模型的运行设备 | 可以用副显卡或CPU |
3.4.4 CLIPLoaderMultiGPU - CLIP加载器
| 参数名 (UI显示) | 参数名 (代码里) | 参数值 | 建议值 | 通俗解释 (能干嘛的) | 专业解释 | 怎么用/举个例子 |
|---|---|---|---|---|---|---|
| clip_name | clip_name | 下拉选择 | 选择CLIP | CLIP模型文件,就像"文字理解器" | CLIP文本编码器模型 | 选择clip-vit等 |
| device | device | 下拉选择 | cpu | 加载到哪个设备 | CLIP模型的运行设备 | 建议用CPU节省显存 |
3.4.5 ControlNetLoaderMultiGPU - ControlNet加载器
| 参数名 (UI显示) | 参数名 (代码里) | 参数值 | 建议值 | 通俗解释 (能干嘛的) | 专业解释 | 怎么用/举个例子 |
|---|---|---|---|---|---|---|
| control_net_name | control_net_name | 下拉选择 | 选择ControlNet | ControlNet模型,就像"构图指导员" | ControlNet控制网络模型 | 选择canny、depth等 |
| device | device | 下拉选择 | cuda:0 | 加载到哪个设备 | ControlNet的运行设备 | 根据显存情况选择 |
3.5 GGUF量化模型的MultiGPU版本
3.5.1 UnetLoaderGGUFMultiGPU - GGUF UNet加载器
| 参数名 (UI显示) | 参数名 (代码里) | 参数值 | 建议值 | 通俗解释 (能干嘛的) | 专业解释 | 怎么用/举个例子 |
|---|---|---|---|---|---|---|
| unet_name | unet_name | 下拉选择 | 选择GGUF模型 | 压缩版的UNet模型,就像"精简画师" | GGUF格式的量化UNet模型 | 选择flux-dev-Q4_K_S.gguf等 |
| device | device | 下拉选择 | cuda:0 | 加载到哪个设备 | 模型的主要运行设备 | 选择主显卡 |
3.5.2 UnetLoaderGGUFDisTorchMultiGPU - DisTorch GGUF加载器
| 参数名 (UI显示) | 参数名 (代码里) | 参数值 | 建议值 | 通俗解释 (能干嘛的) | 专业解释 | 怎么用/举个例子 |
|---|---|---|---|---|---|---|
| unet_name | unet_name | 下拉选择 | 选择GGUF模型 | 要分布加载的GGUF模型 | 支持DisTorch分布式加载的GGUF模型 | 选择大型量化模型 |
| device | device | 下拉选择 | cuda:0 | 主要计算设备,就像"总指挥" | 模型的主要计算设备 | 选择最强的显卡 |
| virtual_vram_gb | virtual_vram_gb | 浮点数 | 4.0 | 虚拟显存大小,就像"借用空间" | 要从主设备转移到其他设备的显存量 | 4.0表示转移4GB到其他地方 |
| use_other_vram | use_other_vram | 布尔值 | False | 是否使用其他显卡的显存 | 是否将部分模型分配到其他GPU | True会使用多张显卡 |
| expert_mode_allocations | expert_mode_allocations | 字符串 | 空 | 专家模式分配字符串,就像"高级配方" | 手动指定的内存分配策略 | 高级用户可以精确控制分配 |
3.5.3 CLIPLoaderGGUFMultiGPU - GGUF CLIP加载器
| 参数名 (UI显示) | 参数名 (代码里) | 参数值 | 建议值 | 通俗解释 (能干嘛的) | 专业解释 | 怎么用/举个例子 |
|---|---|---|---|---|---|---|
| clip_name | clip_name | 下拉选择 | 选择GGUF CLIP | 压缩版的CLIP模型 | GGUF格式的量化CLIP模型 | 选择t5-xxl-Q4_K_S.gguf等 |
| type | type | 下拉选择 | stable_diffusion | CLIP类型,就像选择"语言方言" | CLIP模型的类型和用途 | flux选flux,sdxl选stable_diffusion |
| device | device | 下拉选择 | cpu | 加载到哪个设备 | CLIP模型的运行设备 | CPU可以节省显存 |
3.6 专业插件的MultiGPU版本
3.6.1 Florence2ModelLoaderMultiGPU - Florence2模型加载器
| 参数名 (UI显示) | 参数名 (代码里) | 参数值 | 建议值 | 通俗解释 (能干嘛的) | 专业解释 | 怎么用/举个例子 |
|---|---|---|---|---|---|---|
| model | model | 下拉选择 | 选择Florence2模型 | Florence2视觉理解模型,就像"图片解说员" | Florence2多模态视觉语言模型 | 用于图像描述和分析 |
| precision | precision | 下拉选择 | fp16 | 计算精度,就像"画质设置" | 模型运行的数值精度 | fp16节省显存,fp32更精确 |
| attention | attention | 下拉选择 | sdpa | 注意力机制类型 | 注意力计算的实现方式 | sdpa是标准选择 |
| device | device | 下拉选择 | cpu | 加载到哪个设备 | Florence2模型的运行设备 | CPU运行可以节省显存 |
3.6.2 LTXVLoaderMultiGPU - LTXV视频模型加载器
| 参数名 (UI显示) | 参数名 (代码里) | 参数值 | 建议值 | 通俗解释 (能干嘛的) | 专业解释 | 怎么用/举个例子 |
|---|---|---|---|---|---|---|
| ckpt_name | ckpt_name | 下拉选择 | 选择LTXV模型 | LTXV视频生成模型,就像"视频画师" | LTX Video扩散模型 | 用于生成高质量视频 |
| dtype | dtype | 下拉选择 | bfloat16 | 数据类型,就像"颜色深度" | 模型权重的数据类型 | bfloat16平衡质量和性能 |
| device | device | 下拉选择 | cuda:0 | 加载到哪个设备 | LTXV模型的运行设备 | 视频生成建议用强显卡 |
3.6.3 HyVideoModelLoaderMultiGPU - HunyuanVideo模型加载器
| 参数名 (UI显示) | 参数名 (代码里) | 参数值 | 建议值 | 通俗解释 (能干嘛的) | 专业解释 | 怎么用/举个例子 |
|---|---|---|---|---|---|---|
| model | model | 下拉选择 | 选择HunyuanVideo模型 | HunyuanVideo模型,就像"专业视频导演" | 混元视频生成扩散模型 | 用于高质量视频生成 |
| base_precision | base_precision | 下拉选择 | bf16 | 基础精度设置 | 模型的基础计算精度 | bf16适合大多数情况 |
| quantization | quantization | 下拉选择 | disabled | 量化方式,就像"压缩等级" | 模型量化压缩方法 | disabled不压缩,fp8压缩节省显存 |
| load_device | load_device | 下拉选择 | main_device | 加载设备 | 模型加载的目标设备 | main_device使用主设备 |
| device | device | 下拉选择 | cuda:0 | 运行设备 | 模型实际运行的设备 | 选择合适的显卡 |
4. 使用技巧和建议
4.1 设备分配策略
- 主显卡(cuda:0):放置最重要的UNet模型,负责主要计算
- 副显卡(cuda:1):放置VAE或次要模型
- CPU:放置CLIP文本编码器,节省显存
- 内存:通过DisTorch虚拟显存技术扩展容量
4.2 DisTorch虚拟显存使用技巧
- 起始设置:从4GB虚拟显存开始尝试
- 显存不足时:逐步增加虚拟显存数值
- 多卡用户:开启"use_other_vram"利用其他显卡
- 单卡用户:关闭"use_other_vram"只使用内存
4.3 模型组合建议
- FLUX.1-dev:UNet放主显卡,CLIP放CPU,VAE放副显卡
- SDXL:整个模型可以放一张显卡,或分离CLIP到CPU
- 视频模型:主模型放最强显卡,编码器可以分散
4.4 性能优化建议
- 量化模型优先:使用GGUF量化版本节省显存
- 精度选择:fp16节省显存,fp32质量更高
- 设备温度:监控设备温度,避免过热
- 内存充足:确保系统内存足够支持虚拟显存
4.5 工作流程设计
- 串联使用:用DeviceSelector统一管理设备选择
- 并行处理:不同模型放不同设备实现并行
- 资源监控:观察各设备的使用情况调整分配
5. 常见问题解答
Q1:虚拟显存设置多少合适?
A1:
- 从4GB开始尝试,根据需要逐步增加
- 不要超过系统内存的50%
- 观察生成速度,找到平衡点
- 大模型可以设置8-12GB
Q2:多张显卡如何分配?
A2:
- 最强显卡放UNet(主要计算)
- 次强显卡放VAE(图像处理)
- 最弱显卡或CPU放CLIP(文本处理)
- 使用DeviceSelector统一管理
Q3:CPU和显卡混合使用会很慢吗?
A3:
- CLIP放CPU影响不大,主要是预处理
- UNet必须放显卡,CPU太慢
- VAE可以放CPU,但会影响最终输出速度
- 合理分配可以提高整体效率
Q4:DisTorch分配失败怎么办?
A4:
- 检查虚拟显存设置是否过大
- 确保系统内存充足
- 尝试关闭其他占用内存的程序
- 使用专家模式手动分配
Q5:模型加载失败怎么办?
A5:
- 检查模型文件是否存在
- 确认设备名称正确(cuda:0, cpu等)
- 检查显存是否足够
- 尝试降低精度或使用量化版本
Q6:如何监控资源使用情况?
A6:
- 使用nvidia-smi监控显卡使用
- 任务管理器监控CPU和内存
- ComfyUI控制台查看加载信息
- 根据日志调整分配策略
6. 实际应用场景
6.1 单卡大模型运行
- 使用DisTorch虚拟显存技术
- 将部分模型层转移到内存
- 释放显存用于更大分辨率生成
6.2 多卡协同工作
- 主卡负责UNet计算
- 副卡处理VAE编解码
- CPU处理文本编码
6.3 视频生成优化
- 视频模型放最强显卡
- 文本编码器放CPU
- VAE可以放副显卡
6.4 批量处理优化
- 不同任务分配到不同设备
- 避免设备空闲浪费
- 提高整体处理效率
7. 高级应用技巧
7.1 专家模式分配
- 学习分配字符串格式
- 精确控制每个设备的负载
- 针对特定硬件优化
7.2 工作流程模板
- 创建不同场景的设备分配模板
- 保存常用的配置组合
- 快速切换不同的资源策略
7.3 性能测试
- 对比不同分配方案的性能
- 记录最佳配置参数
- 建立个人优化数据库
7.4 故障排除
- 建立设备状态检查流程
- 准备备用分配方案
- 掌握快速恢复方法
8. 总结
ComfyUI-MultiGPU 是一个革命性的资源管理插件,它将复杂的多设备协调变得简单易用。通过本教程,你应该已经掌握了:
- 插件的核心理念和DisTorch技术
- 40+个节点的详细用法和参数设置
- 实用的设备分配策略和优化技巧
- 常见问题的解决方案
使用要点总结:
- 合理分配:主显卡放UNet,CPU放CLIP,副显卡放VAE
- 虚拟显存:从4GB开始,根据需要调整
- 量化优先:使用GGUF版本节省显存
- 监控调优:观察资源使用情况持续优化
这个插件特别适合:
- 显存不足但想运行大模型的用户
- 拥有多张显卡想充分利用的用户
- 需要同时运行多个模型的专业用户
- 追求极致性能优化的高级用户
记住,资源管理是一门艺术,需要根据你的具体硬件配置和使用需求来调整。多尝试不同的配置组合,找到最适合你的设置。随着经验的积累,你将能够充分发挥硬件的潜力,创造出更加惊艳的AI作品!