pollockjj/ComfyUI-MultiGPU

GitHub: pollockjj/ComfyUI-MultiGPU

ComfyUI-MultiGPU 是一个ComfyUI插件,通过虚拟显存和多GPU管理解决AI生成中显存不足问题,允许用户运行更大模型。

Stars: 890 | Forks: 68

# ComfyUI-MultiGPU v2:通用 .safetensors 与 GGUF 多GPU分发,搭载DisTorch


Free almost all of your GPU for what matters: Maximum latent space processing

## ComfyUI-MultiGPU v2 的核心: [^1]: 这**增强了内存管理,**而非并行处理。工作流步骤仍然顺序执行,但组件(全部或部分)会分布在你指定的设备上。*性能提升*来源于在显存受限时避免模型反复加载/卸载。*能力提升*来源于尽可能多地将模型(VAE/CLIP/UNet)从你的主**计算**设备卸载——从而为实际计算最大化潜空间。 1. **通用 .safetensors 支持**:所有 `.safetensors` 模型均支持原生 DisTorch2 分发。 2. **GGUF 推理比 DisTorch1 最多快 10%**:新的 DisTorch2 逻辑相比 DisTorch V1 方法,为 GGUF 模型提供潜在的加速。 3. **定制 WanVideoWrapper 集成**:通过八个定制的 MultiGPU 节点,与 WanVideoWrapper 紧密集成,提供稳定支持。 4. **新的模型驱动分配选项**:两种新的直观、模型驱动的专家模式,便于在所有可用设备上进行精确放置——'bytes' 和 'ratio'。


DisTorch 2.0 in Action

什么是 DisTorch?代表“分布式 torch”,此自定义节点中的 DisTorch 节点提供了一种方法,可将主图像生成模型(即 `UNet`)的静态部分从主计算卡转移到更慢但不会占用空间的设备上,这些空间本可用于更长的视频或更多并发图像。通过选择一个或多个“捐赠”设备——主 CPU DRAM 或另一个 CUDA/XPS 设备的 VRAM——你可以选择模型中有多大比例加载到该设备上,而非你的主 `计算`卡。只需设置你想释放多少显存,DisTorch 会处理其余部分。 - **两种模式**: - **标准模式**:标准的 `virtual_vram_gb` 滑块继续让你选择一个捐赠设备(如系统 RAM)进行卸载。你添加的虚拟显存越多,被推送到捐赠设备的模型部分就越多。简单有效。 - **专家模式**:面向性能追求者,提供两种专家模式 `byte` 和 `ratio`,允许你精确指定*模型本身*如何在所有可用设备上进行分割,以及传统 `fraction` 方法,为*你的设备*分配精确额度。所有这些模式都通过一个灵活的文本字符串实现: - **Bytes(推荐)**:分割模型最直接的方式。受 Huggingface 的 `device_map` 启发,你可以为每个设备指定确切的千兆字节或兆字节数。通配符 `*` 将模型剩余部分分配给某个设备,便于卸载。(如果未指定通配符,CPU 将作为默认通配符。) - **示例**:`cuda:0,2.5gb;cpu,*` 会将模型的前 2.50GB 加载到 `cuda:0`,其余部分加载到 `cpu`。 - **示例**:`cuda:0,500mb;cuda:1,3.0g;cpu,5gb*` 会将 0.50GB 放在 `cuda:0`,3.00GB 放在 `cuda:1`,5.00GB(或剩余部分)放在 `cpu`。 - **Ratio**:喜欢 `llama.cpp` 的 `tensor_split` 的简洁性?此模式适合你。指定一个比例来在设备间分发模型。 - **示例**:`cuda:0,25%;cpu,75%` 将按 1:3 的比例分割模型,将 25% 加载到 `cuda:0`,75% 加载到 `cpu`。 - **示例**:`cuda:0,8%;cuda:1,8%;cpu,4%` 使用 8:8:4 的比例,将 40% 的模型放在 `cuda:0`,40% 放在 `cuda:1`,20% 放在 `cpu`。 - **Fraction**:原始的 DisTorch 专家模式。此模式根据每个设备*总显存*的使用比例来分割模型。 - **示例**:`cuda:0,0.1;cpu,0.5` 将使用 `cuda:0` 显存的 10% 和 `cpu` 内存的 50% 来容纳模型。 - **示例**:`cuda:0,0.0207;cuda:1,0.1273;cpu,0.0808` 将使用 `cuda:0` 显存的 2.1%、`cuda:1` 显存的 12.7% 和 `cpu` 内存的 8.1% 来容纳模型。 ## 🎯 主要优势 - 无需复杂设置即可即时释放 GPU 显存 - 通过将层卸载到其他系统内存来运行更大的模型 - 将主 GPU 的所有显存用于实际 `计算` / 潜空间处理,或根据你的需求适当填充,并用快速访问的模型块填补剩余空间 - 如果可用,可无缝地在多个 GPU 之间分发 .safetensors 和 GGUF 层 - 允许**你**仅通过一个简单的数字更改,轻松地从 ___设备内速度___ 切换到 ___开放设备潜空间能力___


DisTorch Nodes with one simple number to tune its Vitual VRAM to your needs

## 安装说明 推荐通过 [ComfyUI-Manager](https://github.com/ltdrdata/ComfyUI-Manager) 安装。只需在节点列表中搜索 `ComfyUI-MultiGPU` 并遵循安装说明。 ## 手动安装 将[此仓库](https://github.com/pollockjj/ComfyUI-MultiGPU)克隆到 `ComfyUI/custom_nodes/` 目录内。 ## 节点 该扩展自动创建加载器节点的 MultiGPU 版本。每个 MultiGPU 节点都具有与其原始对应节点相同的功能,但增加了一个 `device` 参数,允许你指定要使用的 GPU。 当前支持的节点(如果可用则自动检测): - 标准 [ComfyUI](https://github.com/comfyanonymous/ComfyUI) 模型加载器: - [CheckpointLoaderAdvancedMultiGPU](web/docs/CheckpointLoaderAdvancedMultiGPU.md) / [CheckpointLoaderAdvancedDisTorch2MultiGPU](web/docs/CheckpointLoaderAdvancedDisTorch2MultiGPU.md) - [CheckpointLoaderSimpleMultiGPU](web/docs/CheckpointLoaderSimpleMultiGPU.md) / [CheckpointLoaderSimpleDisTorch2MultiGPU](web/docs/CheckpointLoaderSimpleDisTorch2MultiGPU.md) - [UNETLoaderMultiGPU](web/docs/UNETLoaderMultiGPU.md) / [UNETLoaderDisTorch2MultiGPU](web/docs/UNETLoaderDisTorch2MultiGPU.md) - [UNetLoaderLP](web/docs/UNetLoaderLP.md) - [VAELoaderMultiGPU](web/docs/VAELoaderMultiGPU.md) / [VAELoaderDisTorch2MultiGPU](web/docs/VAELoaderDisTorch2MultiGPU.md) - [CLIPLoaderMultiGPU](web/docs/CLIPLoaderMultiGPU.md) / [CLIPLoaderDisTorch2MultiGPU](web/docs/CLIPLoaderDisTorch2MultiGPU.md) - [DualCLIPLoaderMultiGPU](web/docs/DualCLIPLoaderMultiGPU.md) / [DualCLIPLoaderDisTorch2MultiGPU](web/docs/DualCLIPLoaderDisTorch2MultiGPU.md) - [TripleCLIPLoaderMultiGPU](web/docs/TripleCLIPLoaderMultiGPU.md) / [TripleCLIPLoaderDisTorch2MultiGPU](web/docs/TripleCLIPLoaderDisTorch2MultiGPU.md) - [QuadrupleCLIPLoaderMultiGPU](web/docs/QuadrupleCLIPLoaderMultiGPU.md) / [QuadrupleCLIPLoaderDisTorch2MultiGPU](web/docs/QuadrupleCLIPLoaderDisTorch2MultiGPU.md) - [CLIPVisionLoaderMultiGPU](web/docs/CLIPVisionLoaderMultiGPU.md) / [CLIPVisionLoaderDisTorch2MultiGPU](web/docs/CLIPVisionLoaderDisTorch2MultiGPU.md) - [ControlNetLoaderMultiGPU](web/docs/ControlNetLoaderMultiGPU.md) / [ControlNetLoaderDisTorch2MultiGPU](web/docs/ControlNetLoaderDisTorch2MultiGPU.md) - [DiffusersLoaderMultiGPU](web/docs/DiffusersLoaderMultiGPU.md) / [DiffusersLoaderDisTorch2MultiGPU](web/docs/DiffusersLoaderDisTorch2MultiGPU.md) - [DiffControlNetLoaderMultiGPU](web/docs/DiffControlNetLoaderMultiGPU.md) / [DiffControlNetLoaderDisTorch2MultiGPU](web/docs/DiffControlNetLoaderDisTorch2MultiGPU.md) - WanVideoWrapper(需要 [ComfyUI-WanVideoWrapper](https://github.com/kijai/ComfyUI-WanVideoWrapper)): - [WanVideoModelLoaderMultiGPU](web/docs/WanVideoModelLoaderMultiGPU.md) - [WanVideoVAELoaderMultiGPU](web/docs/WanVideoVAELoaderMultiGPU.md) - [WanVideoTinyVAELoaderMultiGPU](web/docs/WanVideoTinyVAELoaderMultiGPU.md) - [WanVideoBlockSwapMultiGPU](web/docs/WanVideoBlockSwapMultiGPU.md) - [WanVideoImageToVideoEncodeMultiGPU](web/docs/WanVideoImageToVideoEncodeMultiGPU.md) - [WanVideoEncodeMultiGPU](web/docs/WanVideoEncodeMultiGPU.md) - [WanVideoDecodeMultiGPU](web/docs/WanVideoDecodeMultiGPU.md) - [WanVideoSamplerMultiGPU](web/docs/WanVideoSamplerMultiGPU.md) - [WanVideoVACEEncodeMultiGPU](web/docs/WanVideoVACEEncodeMultiGPU.md) - [WanVideoClipVisionEncodeMultiGPU](web/docs/WanVideoClipVisionEncodeMultiGPU.md) - [WanVideoControlnetLoaderMultiGPU](web/docs/WanVideoControlnetLoaderMultiGPU.md) - [WanVideoUni3C_ControlnetLoaderMultiGPU](web/docs/WanVideoUni3C_ControlnetLoaderMultiGPU.md) - [WanVideoTextEncodeMultiGPU](web/docs/WanVideoTextEncodeMultiGPU.md) - [WanVideoTextEncodeCachedMultiGPU](web/docs/WanVideoTextEncodeCachedMultiGPU.md) - [WanVideoTextEncodeSingleMultiGPU](web/docs/WanVideoTextEncodeSingleMultiGPU.md) - [LoadWanVideoT5TextEncoderMultiGPU](web/docs/LoadWanVideoT5TextEncoderMultiGPU.md) - [LoadWanVideoClipTextEncoderMultiGPU](web/docs/LoadWanVideoClipTextEncoderMultiGPU.md) - [FantasyTalkingModelLoaderMultiGPU](web/docs/FantasyTalkingModelLoaderMultiGPU.md) - [Wav2VecModelLoaderMultiGPU](web/docs/Wav2VecModelLoaderMultiGPU.md) / [DownloadAndLoadWav2VecModelMultiGPU](web/docs/DownloadAndLoadWav2VecModelMultiGPU.md) - GGUF 加载器(需要 [ComfyUI-GGUF](https://github.com/city96/ComfyUI-GGUF)): - UNet 系列:[UnetLoaderGGUFMultiGPU](web/docs/UnetLoaderGGUFMultiGPU.md) / [UnetLoaderGGUFDisTorch2MultiGPU](web/docs/UnetLoaderGGUFDisTorch2MultiGPU.md) - UNet 高级包:[UnetLoaderGGUFAdvancedMultiGPU](web/docs/UnetLoaderGGUFAdvancedMultiGPU.md) / [UnetLoaderGGUFAdvancedDisTorch2MultiGPU](web/docs/UnetLoaderGGUFAdvancedDisTorch2MultiGPU.md) - CLIP 系列:[CLIPLoaderGGUFMultiGPU](web/docs/CLIPLoaderGGUFMultiGPU.md) / [CLIPLoaderGGUFDisTorch2MultiGPU](web/docs/CLIPLoaderGGUFDisTorch2MultiGPU.md) - 双 CLIP:[DualCLIPLoaderGGUFMultiGPU](web/docs/DualCLIPLoaderGGUFMultiGPU.md) / [DualCLIPLoaderGGUFDisTorch2MultiGPU](web/docs/DualCLIPLoaderGGUFDisTorch2MultiGPU.md) - 三 CLIP:[TripleCLIPLoaderGGUFMultiGPU](web/docs/TripleCLIPLoaderGGUFMultiGPU.md) / [TripleCLIPLoaderGGUFDisTorch2MultiGPU](web/docs/TripleCLIPLoaderGGUFDisTorch2MultiGPU.md) - 四 CLIP:[QuadrupleCLIPLoaderGGUFMultiGPU](web/docs/QuadrupleCLIPLoaderGGUFMultiGPU.md) / [QuadrupleCLIPLoaderGGUFDisTorch2MultiGPU](web/docs/QuadrupleCLIPLoaderGGUFDisTorch2MultiGPU.md) - XLabAI FLUX ControlNet(需要 [x-flux-comfy](https://github.com/XLabAI/x-flux-comfyui)): - [LoadFluxControlNetMultiGPU](web/docs/LoadFluxControlNetMultiGPU.md) - Florence2(需要 [ComfyUI-Florence2](https://github.com/kijai/ComfyUI-Florence2)): - [Florence2ModelLoaderMultiGPU](web/docs/Florence2ModelLoaderMultiGPU.md) - [DownloadAndLoadFlorence2ModelMultiGPU](web/docs/DownloadAndLoadFlorence2ModelMultiGPU.md) - LTX Video 自定义检查点加载器(需要 [ComfyUI-LTXVideo](https://github.com/Lightricks/ComfyUI-LTXVideo)): - [LTXVLoaderMultiGPU](web/docs/LTXVLoaderMultiGPU.md) - NF4 检查点格式加载器(需要 [ComfyUI_bitsandbytes_NF4](https://github.com/comfyanonymous/ComfyUI_bitsandbytes_NF4)): - [CheckpointLoaderNF4MultiGPU](web/docs/CheckpointLoaderNF4MultiGPU.md) - MMAudio(需要 [ComfyUI-MMAudio](https://github.com/comfyanonymous/ComfyUI-MMAudio)): - [MMAudioModelLoaderMultiGPU](web/docs/MMAudioModelLoaderMultiGPU.md) - [MMAudioFeatureUtilsLoaderMultiGPU](web/docs/MMAudioFeatureUtilsLoaderMultiGPU.md) - [MMAudioSamplerMultiGPU](web/docs/MMAudioSamplerMultiGPU.md) - Pulid(需要 [PuLID_ComfyUI](https://github.com/cubiq/PuLID_ComfyUI)): - [PulidModelLoaderMultiGPU](web/docs/PulidModelLoaderMultiGPU.md) - [PulidInsightFaceLoaderMultiGPU](web/docs/PulidInsightFaceLoaderMultiGPU.md) - [PulidEvaClipLoaderMultiGPU](web/docs/PulidEvaClipLoaderMultiGPU.md) 所有可用于你安装的 MultiGPU 节点都可以在节点菜单的 "multigpu" 类别中找到。 ## 节点文档 所有**自动检测的核心 MultiGPU 和 DisTorch2 节点**均有详细的技术文档,涵盖 70 多个记录在案的节点,包含全面的参数细节、输出规范以及适用的 DisTorch2 分配指南。 - **访问文档**:在 ComfyUI 中点击任何核心 MultiGPU 或 DisTorch2 节点,并从弹出的菜单中选择“帮助”(圆圈内的问号)。 - **覆盖范围**:所有标准 ComfyUI 加载器节点(UNet、VAE、Checkpoints、CLIP、ControlNet、Diffusers)以及流行的 GGUF 加载器变体。 - **内容**:带数据类型和描述的输入参数、输出规范、使用示例,以及关于 DisTorch2 分布式加载的解释、分配模式和策略。 - **注意**:文档仅涵盖核心的 ComfyUI-MultiGPU 功能。第三方自定义节点集成(WanVideoWrapper、Florence2 等)有其单独的文档。 ## 示例工作流 所有工作流均已在 2x 3090 + 1060ti Linux 环境、4070 Windows 11 环境和 3090/1070ti Linux 环境上测试过。 ### DisTorch2
LTX Video + CheckpointLoaderSimple (DisTorch2)
LTX Video + CheckpointLoaderSimple (DisTorch2)
Mochi + CheckpointLoaderAdvanced (DisTorch2)
Mochi + CheckpointLoaderAdvanced (DisTorch2)
Qwen Image UNet + CLIP (DisTorch2)
Qwen Image UNet + CLIP (DisTorch2)
Qwen Image Edit UNet + CLIP (DisTorch2)
Qwen Image Edit UNet + CLIP (DisTorch2)
WanVideo 2.2 Double UNet, No CPU (DisTorch2)
WanVideo 2.2 Double UNet, No CPU (DisTorch2)
WanVideo 2.2 T2I LightX2V LoRA (DisTorch2)
WanVideo 2.2 T2I LightX2V LoRA (DisTorch2)
WanVideo 2.2 T2V LightX2V LoRA (DisTorch2)
WanVideo 2.2 T2V LightX2V LoRA (DisTorch2)
### WanVideoWrapper
WanVideoWrapper T2V
WanVideoWrapper T2V
WanVideoWrapper 1.3B Control LoRA
WanVideoWrapper 1.3B Control LoRA
WanVideoWrapper 2.2 I2V A14B GGUF
WanVideoWrapper 2.2 I2V A14B GGUF
### 多GPU
FLUX UNet + Dual CLIP + VAE Loaders (MultiGPU)
FLUX UNet + Dual CLIP + VAE Loaders (MultiGPU)
SD15 CheckpointLoaderSimple (MultiGPU)
SD15 CheckpointLoaderSimple (MultiGPU)
SDXL CheckpointLoaderAdvanced (MultiGPU)
SDXL CheckpointLoaderAdvanced (MultiGPU)
### GGUF
FLUX UNet + Dual CLIP GGUF
FLUX UNet + Dual CLIP GGUF
Qwen Image UNet DisTorch2 GGUF
Qwen Image UNet DisTorch2 GGUF
### HunyuanVideoWrapper / Florence2
HunyuanVideoWrapper DisTorch (Legacy, Deprecated)
HunyuanVideoWrapper DisTorch (Legacy, Deprecated)
Florence2 Detailed Caption to FLUX Pipeline
Florence2 Detailed Caption to FLUX Pipeline
## 支持 如果遇到问题,请[提交 issue](https://github.com/pollockjj/ComfyUI-MultiGPU/issues/new)。如果可能,请附上工作流。 ## 鸣谢 目前由 [pollockjj](https://github.com/pollockjj) 维护。 由 [Alexander Dzhoganov](https://github.com/AlexanderDzhoganov) 最初创建。 向 [City96](https://v100s.net/) 致以最深的谢意。
标签:CLIP模型, ComfyUI插件, DisTorch, GGUF支持, PyTorch, Stable Diffusion, UNet模型, VAE模型, 人工智能, 内存优化, 凭据扫描, 图像生成, 块交换, 多GPU, 性能提升, 显存管理, 模型分发, 模型卸载, 深度学习, 潜在空间优化, 用户模式Hook绕过, 虚拟显存, 设备分配, 逆向工具