Close #123, Merge pull request #126 from pollockjj/ew

This commit is contained in:
John Pollock
2025-10-13 03:16:17 -05:00
committed by GitHub
87 changed files with 9146 additions and 14650 deletions
+185 -52
View File
@@ -75,40 +75,63 @@ The extension automatically creates MultiGPU versions of loader nodes. Each Mult
Currently supported nodes (automatically detected if available):
- Standard [ComfyUI](https://github.com/comfyanonymous/ComfyUI) model loaders:
- CheckpointLoaderSimpleMultiGPU/CheckpointLoaderSimpleDistorch2MultiGPU
- CLIPLoaderMultiGPU
- ControlNetLoaderMultiGPU
- DualCLIPLoaderMultiGPU
- TripleCLIPLoaderMultiGPU
- UNETLoaderMultiGPU/UNETLoaderDisTorch2MultiGPU, and
- VAELoaderMultiGPU
- [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 (requires [ComfyUI-WanVideoWrapper](https://github.com/kijai/ComfyUI-WanVideoWrapper)):
- WanVideoModelLoaderMultiGPU & WanVideoModelLoaderMultiGPU_2
- WanVideoVAELoaderMultiGPU
- LoadWanVideoT5TextEncoderMultiGPU
- LoadWanVideoClipTextEncoderMultiGPU
- WanVideoTextEncodeMultiGPU
- WanVideoBlockSwapMultiGPU
- WanVideoSamplerMultiGPU
- [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 loaders (requires [ComfyUI-GGUF](https://github.com/city96/ComfyUI-GGUF)):
- UnetLoaderGGUFMultiGPU/UnetLoaderGGUFDisTorch2MultiGPU
- UnetLoaderGGUFAdvancedMultiGPU
- CLIPLoaderGGUFMultiGPU
- DualCLIPLoaderGGUFMultiGPU
- TripleCLIPLoaderGGUFMultiGPU
- UNet family: [UnetLoaderGGUFMultiGPU](web/docs/UnetLoaderGGUFMultiGPU.md) / [UnetLoaderGGUFDisTorch2MultiGPU](web/docs/UnetLoaderGGUFDisTorch2MultiGPU.md)
- UNet Advanced bundles: [UnetLoaderGGUFAdvancedMultiGPU](web/docs/UnetLoaderGGUFAdvancedMultiGPU.md) / [UnetLoaderGGUFAdvancedDisTorch2MultiGPU](web/docs/UnetLoaderGGUFAdvancedDisTorch2MultiGPU.md)
- CLIP family: [CLIPLoaderGGUFMultiGPU](web/docs/CLIPLoaderGGUFMultiGPU.md) / [CLIPLoaderGGUFDisTorch2MultiGPU](web/docs/CLIPLoaderGGUFDisTorch2MultiGPU.md)
- Dual CLIP: [DualCLIPLoaderGGUFMultiGPU](web/docs/DualCLIPLoaderGGUFMultiGPU.md) / [DualCLIPLoaderGGUFDisTorch2MultiGPU](web/docs/DualCLIPLoaderGGUFDisTorch2MultiGPU.md)
- Triple CLIP: [TripleCLIPLoaderGGUFMultiGPU](web/docs/TripleCLIPLoaderGGUFMultiGPU.md) / [TripleCLIPLoaderGGUFDisTorch2MultiGPU](web/docs/TripleCLIPLoaderGGUFDisTorch2MultiGPU.md)
- Quadruple CLIP: [QuadrupleCLIPLoaderGGUFMultiGPU](web/docs/QuadrupleCLIPLoaderGGUFMultiGPU.md) / [QuadrupleCLIPLoaderGGUFDisTorch2MultiGPU](web/docs/QuadrupleCLIPLoaderGGUFDisTorch2MultiGPU.md)
- XLabAI FLUX ControlNet (requires [x-flux-comfy](https://github.com/XLabAI/x-flux-comfyui)):
- LoadFluxControlNetMultiGPU
- [LoadFluxControlNetMultiGPU](web/docs/LoadFluxControlNetMultiGPU.md)
- Florence2 (requires [ComfyUI-Florence2](https://github.com/kijai/ComfyUI-Florence2)):
- Florence2ModelLoaderMultiGPU
- DownloadAndLoadFlorence2ModelMultiGPU
- [Florence2ModelLoaderMultiGPU](web/docs/Florence2ModelLoaderMultiGPU.md)
- [DownloadAndLoadFlorence2ModelMultiGPU](web/docs/DownloadAndLoadFlorence2ModelMultiGPU.md)
- LTX Video Custom Checkpoint Loader (requires [ComfyUI-LTXVideo](https://github.com/Lightricks/ComfyUI-LTXVideo)):
- LTXVLoaderMultiGPU
- NF4 Checkpoint Format Loader(requires [ComfyUI_bitsandbytes_NF4](https://github.com/comfyanonymous/ComfyUI_bitsandbytes_NF4)):
- CheckpointLoaderNF4MultiGPU
- HunyuanVideoWrapper (requires [ComfyUI-HunyuanVideoWrapper](https://github.com/kijai/ComfyUI-HunyuanVideoWrapper)):
- HyVideoModelLoaderMultiGPU
- HyVideoVAELoaderMultiGPU
- DownloadAndLoadHyVideoTextEncoderMultiGPU
- [LTXVLoaderMultiGPU](web/docs/LTXVLoaderMultiGPU.md)
- NF4 Checkpoint Format Loader (requires [ComfyUI_bitsandbytes_NF4](https://github.com/comfyanonymous/ComfyUI_bitsandbytes_NF4)):
- [CheckpointLoaderNF4MultiGPU](web/docs/CheckpointLoaderNF4MultiGPU.md)
- MMAudio (requires [ComfyUI-MMAudio](https://github.com/comfyanonymous/ComfyUI-MMAudio)):
- [MMAudioModelLoaderMultiGPU](web/docs/MMAudioModelLoaderMultiGPU.md)
- [MMAudioFeatureUtilsLoaderMultiGPU](web/docs/MMAudioFeatureUtilsLoaderMultiGPU.md)
- [MMAudioSamplerMultiGPU](web/docs/MMAudioSamplerMultiGPU.md)
- Pulid (requires [PuLID_ComfyUI](https://github.com/cubiq/PuLID_ComfyUI)):
- [PulidModelLoaderMultiGPU](web/docs/PulidModelLoaderMultiGPU.md)
- [PulidInsightFaceLoaderMultiGPU](web/docs/PulidInsightFaceLoaderMultiGPU.md)
- [PulidEvaClipLoaderMultiGPU](web/docs/PulidEvaClipLoaderMultiGPU.md)
All MultiGPU nodes available for your install can be found in the "multigpu" category in the node menu.
@@ -127,44 +150,154 @@ All workflows have been tested on a 2x 3090 + 1060ti linux setup, a 4070 win 11
### DisTorch2
- [Default DisTorch2 Workflow](https://github.com/pollockjj/ComfyUI-MultiGPU/blob/main/examples/distorch2/default_DisTorch2.json)
- [FLUX.1-dev Example](https://github.com/pollockjj/ComfyUI-MultiGPU/blob/main/examples/distorch2/flux_dev_example_DisTorch2.json)
- [Hunyuan GGUF Example](https://github.com/pollockjj/ComfyUI-MultiGPU/blob/main/examples/distorch2/hunyuan_gguf_DisTorch2.json)
- [LTX Video Text-to-Video](https://github.com/pollockjj/ComfyUI-MultiGPU/blob/main/examples/distorch2/ltxv_text_to_video_MultiGPU.json)
- [Qwen Image Basic Example](https://github.com/pollockjj/ComfyUI-MultiGPU/blob/main/examples/distorch2/qwen_image_basic_example_DisTorch2.json)
- [WanVideo 2.2 Example](https://github.com/pollockjj/ComfyUI-MultiGPU/blob/main/examples/distorch2/wan2_2_DisTorch2.json)
<table>
<tr>
<td align="center">
<a href="example_workflows/ltxvideo%20checkpointloadersimple%20distorch2.json">
<img src="example_workflows/ltxvideo%20checkpointloadersimple%20distorch2.jpg" alt="LTX Video + CheckpointLoaderSimple (DisTorch2)" style="max-width:160px; max-height:160px;">
<div>LTX Video + CheckpointLoaderSimple (DisTorch2)</div>
</a>
</td>
<td align="center">
<a href="example_workflows/mochi%20checkpointloaderadvanced%20distorch2.json">
<img src="example_workflows/mochi%20checkpointloaderadvanced%20distorch2.jpg" alt="Mochi + CheckpointLoaderAdvanced (DisTorch2)" style="max-width:160px; max-height:160px;">
<div>Mochi + CheckpointLoaderAdvanced (DisTorch2)</div>
</a>
</td>
<td align="center">
<a href="example_workflows/qwen_image%20unet%20clip%20distorch2.json">
<img src="example_workflows/qwen_image%20unet%20clip%20distorch2.jpg" alt="Qwen Image UNet + CLIP (DisTorch2)" style="max-width:160px; max-height:160px;">
<div>Qwen Image UNet + CLIP (DisTorch2)</div>
</a>
</td>
</tr>
<tr>
<td align="center">
<a href="example_workflows/qwen_image_edit_2509%20unet%20clip%20distorch2.json">
<img src="example_workflows/qwen_image_edit_2509%20unet%20clip%20distorch2.jpg" alt="Qwen Image Edit UNet + CLIP (DisTorch2)" style="max-width:160px; max-height:160px;">
<div>Qwen Image Edit UNet + CLIP (DisTorch2)</div>
</a>
</td>
<td align="center">
<a href="example_workflows/wan2_2%20distorch2%20double_unet%20no_cpu.json">
<img src="example_workflows/wan2_2%20distorch2%20double_unet%20no_cpu.jpg" alt="WanVideo 2.2 Double UNet, No CPU (DisTorch2)" style="max-width:160px; max-height:160px;">
<div>WanVideo 2.2 Double UNet, No CPU (DisTorch2)</div>
</a>
</td>
<td align="center">
<a href="example_workflows/wan2_2%20t2i%20lightx2v%20lora%20distorch2.json">
<img src="example_workflows/wan2_2%20t2i%20lightx2v%20lora%20distorch2.jpg" alt="WanVideo 2.2 T2I LightX2V LoRA (DisTorch2)" style="max-width:160px; max-height:160px;">
<div>WanVideo 2.2 T2I LightX2V LoRA (DisTorch2)</div>
</a>
</td>
</tr>
<tr>
<td align="center">
<a href="example_workflows/wan2_2%20t2v%20lightx2v%20lora%20distorch2.json">
<img src="example_workflows/wan2_2%20t2v%20lightx2v%20lora%20distorch2.jpg" alt="WanVideo 2.2 T2V LightX2V LoRA (DisTorch2)" style="max-width:160px; max-height:160px;">
<div>WanVideo 2.2 T2V LightX2V LoRA (DisTorch2)</div>
</a>
</td>
<td></td>
<td></td>
</tr>
</table>
### WanVideoWrapper
- [WanVideo T2V Example](https://github.com/pollockjj/ComfyUI-MultiGPU/blob/main/examples/wannvideowrapper/wanvideo_T2V_example_MultiGPU.json)
- [WanVideo 2.2 I2V Example](https://github.com/pollockjj/ComfyUI-MultiGPU/blob/main/examples/wannvideowrapper/wanvideo2_2_I2V_A14B_example_WIP_Multigpu.json)
<table>
<tr>
<td align="center">
<a href="example_workflows/ComfyUI-WanVideoWrapper%20wanvideo_T2V.json">
<img src="example_workflows/ComfyUI-WanVideoWrapper%20wanvideo_T2V.jpg" alt="WanVideoWrapper T2V" style="max-width:160px; max-height:160px;">
<div>WanVideoWrapper T2V</div>
</a>
</td>
<td align="center">
<a href="example_workflows/ComfyUI-WanVideoWrapper%20wanvideo_1_3B%20control_lora.json">
<img src="example_workflows/ComfyUI-WanVideoWrapper%20wanvideo_1_3B%20control_lora.jpg" alt="WanVideoWrapper 1.3B Control LoRA" style="max-width:160px; max-height:160px;">
<div>WanVideoWrapper 1.3B Control LoRA</div>
</a>
</td>
<td align="center">
<a href="example_workflows/ComfyUI-WanVideoWrapper%20wanvideo2_2%20I2V%20A14B%20GGUF.json">
<img src="example_workflows/ComfyUI-WanVideoWrapper%20wanvideo2_2%20I2V%20A14B%20GGUF.jpg" alt="WanVideoWrapper 2.2 I2V A14B GGUF" style="max-width:160px; max-height:160px;">
<div>WanVideoWrapper 2.2 I2V A14B GGUF</div>
</a>
</td>
</tr>
</table>
### MultiGPU
- [FLUX.1-dev Example](https://github.com/pollockjj/ComfyUI-MultiGPU/blob/main/examples/multiGPU/flux_dev_example_MultiGPU.json)
- [SDXL 2-GPU](https://github.com/pollockjj/ComfyUI-MultiGPU/blob/main/examples/multiGPU/sdxl_2gpu.json)
<table>
<tr>
<td align="center">
<a href="example_workflows/flux%20unet%20dual_clip%20vae%20loaders.json">
<img src="example_workflows/flux%20unet%20dual_clip%20vae%20loaders.jpg" alt="FLUX UNet + Dual CLIP + VAE Loaders (MultiGPU)" style="max-width:160px; max-height:160px;">
<div>FLUX UNet + Dual CLIP + VAE Loaders (MultiGPU)</div>
</a>
</td>
<td align="center">
<a href="example_workflows/sd15%20checkpoint%20loader%20simple.json">
<img src="example_workflows/sd15%20checkpoint%20loader%20simple.jpg" alt="SD15 CheckpointLoaderSimple (MultiGPU)" style="max-width:160px; max-height:160px;">
<div>SD15 CheckpointLoaderSimple (MultiGPU)</div>
</a>
</td>
<td align="center">
<a href="example_workflows/sdxl%20checkpoint%20loader%20advanced.json">
<img src="example_workflows/sdxl%20checkpoint%20loader%20advanced.jpg" alt="SDXL CheckpointLoaderAdvanced (MultiGPU)" style="max-width:160px; max-height:160px;">
<div>SDXL CheckpointLoaderAdvanced (MultiGPU)</div>
</a>
</td>
</tr>
</table>
### Florence2
- [Florence2, FLUX.1-dev, LTX Video Pipeline](https://github.com/pollockjj/ComfyUI-MultiGPU/blob/main/examples/florence2/florence2_flux1dev_ltxv_cpu_2gpu.json)
<table>
<tr>
<td align="center">
<a href="example_workflows/ComfyUI-Florence2%20detailed_caption%20to%20flux.json">
<img src="example_workflows/ComfyUI-Florence2%20detailed_caption%20to%20flux.jpg" alt="Florence2 Detailed Caption to FLUX Pipeline" style="max-width:160px; max-height:160px;">
<div>Florence2 Detailed Caption to FLUX Pipeline</div>
</a>
</td>
</tr>
</table>
### GGUF
- [FLUX.1-dev 2-GPU GGUF](https://github.com/pollockjj/ComfyUI-MultiGPU/blob/main/examples/gguf/flux1dev_2gpu_gguf.json)
- [Hunyuan 2-GPU GGUF](https://github.com/pollockjj/ComfyUI-MultiGPU/blob/main/examples/gguf/hunyuan_2gpu_gguf.json)
- [Hunyuan CPU+GPU GGUF](https://github.com/pollockjj/ComfyUI-MultiGPU/blob/main/examples/gguf/hunyuan_cpu_1gpu_gguf.json)
- [Hunyuan GGUF DisTorch](https://github.com/pollockjj/ComfyUI-MultiGPU/blob/main/examples/gguf/hunyuan_gguf_distorch.json)
- [Hunyuan GGUF MultiGPU](https://github.com/pollockjj/ComfyUI-MultiGPU/blob/main/examples/gguf/hunyuan_gguf_MultiGPU.json)
<table>
<tr>
<td align="center">
<a href="example_workflows/ComfyUI-GGUF%20flux%20unet%20dual_clip%20loaders.json">
<img src="example_workflows/ComfyUI-GGUF%20flux%20unet%20dual_clip%20loaders.jpg" alt="FLUX UNet + Dual CLIP GGUF" style="max-width:160px; max-height:160px;">
<div>FLUX UNet + Dual CLIP GGUF</div>
</a>
</td>
<td align="center">
<a href="example_workflows/ComfyUI-GGUF%20qwen_image%20unet%20distorch2%20cliploader.json">
<img src="example_workflows/ComfyUI-GGUF%20qwen_image%20unet%20distorch2%20cliploader.jpg" alt="Qwen Image UNet DisTorch2 GGUF" style="max-width:160px; max-height:160px;">
<div>Qwen Image UNet DisTorch2 GGUF</div>
</a>
</td>
<td></td>
</tr>
</table>
### HunyuanVideoWrapper
- [HunyuanVideoWrapper Native VAE](https://github.com/pollockjj/ComfyUI-MultiGPU/blob/main/examples/hunyuanvideowrapper/hunyuanvideowrapper_native_vae.json)
- [HunyuanVideoWrapper Select Device](https://github.com/pollockjj/ComfyUI-MultiGPU/blob/main/examples/hunyuanvideowrapper/hunyuanvideowrapper_select_device.json)
### DisTorch (Legacy GGUF)
- [FLUX.1-dev GGUF DisTorch](https://github.com/pollockjj/ComfyUI-MultiGPU/blob/main/examples/distorch/flux1dev_gguf_distorch.json)
- [Hunyuan IP2V GGUF DisTorch](https://github.com/pollockjj/ComfyUI-MultiGPU/blob/main/examples/distorch/hunyuan_ip2v_distorch_gguf.json)
<table>
<tr>
<td align="center">
<a href="example_workflows/hunyuanvideo%20distorch%20DEPRECATED.json">
<img src="example_workflows/hunyuanvideo%20distorch%20DEPRECATED.jpg" alt="HunyuanVideoWrapper DisTorch (Legacy, Deprecated)" style="max-width:160px; max-height:160px;">
<div>HunyuanVideoWrapper DisTorch (Legacy, Deprecated)</div>
</a>
</td>
</tr>
</table>
## Support
+26 -4
View File
@@ -23,7 +23,7 @@ from .model_management_mgpu import (
)
WEB_DIRECTORY = "./web"
MGPU_MM_LOG = True
MGPU_MM_LOG = False
DEBUG_LOG = False
logger = logging.getLogger("MultiGPU")
@@ -148,6 +148,7 @@ def check_module_exists(module_path):
current_device = mm.get_torch_device()
current_text_encoder_device = mm.text_encoder_device()
current_unet_offload_device = mm.unet_offload_device()
def set_current_device(device):
"""Set the current device context for MultiGPU operations."""
@@ -161,6 +162,12 @@ def set_current_text_encoder_device(device):
current_text_encoder_device = device
logger.debug(f"[MultiGPU Initialization] current_text_encoder_device set to: {device}")
def set_current_unet_offload_device(device):
"""Set the current UNet offload device context."""
global current_unet_offload_device
current_unet_offload_device = device
logger.debug(f"[MultiGPU Initialization] current_unet_offload_device set to: {device}")
def get_torch_device_patched():
"""Return MultiGPU-aware device selection for patched mm.get_torch_device."""
device = None
@@ -183,11 +190,25 @@ def text_encoder_device_patched():
logger.info(f"[MultiGPU Core Patching] text_encoder_device_patched returning device: {device} (current_text_encoder_device={current_text_encoder_device})")
return device
logger.info(f"[MultiGPU Core Patching] Patching mm.get_torch_device and mm.text_encoder_device")
def unet_offload_device_patched():
"""Return MultiGPU-aware UNet offload device for patched mm.unet_offload_device."""
device = None
if (not is_accelerator_available() or mm.cpu_state == mm.CPUState.CPU or "cpu" in str(current_unet_offload_device).lower()):
device = torch.device("cpu")
else:
devs = set(get_device_list())
device = torch.device(current_unet_offload_device) if str(current_unet_offload_device) in devs else torch.device("cpu")
logger.debug(f"[MultiGPU Core Patching] unet_offload_device_patched returning device: {device} (current_unet_offload_device={current_unet_offload_device})")
return device
logger.info(f"[MultiGPU Core Patching] Patching mm.get_torch_device, mm.text_encoder_device, mm.unet_offload_device")
logger.info(f"[MultiGPU DEBUG] Initial current_device: {current_device}")
logger.info(f"[MultiGPU DEBUG] Initial current_text_encoder_device: {current_text_encoder_device}")
logger.info(f"[MultiGPU DEBUG] Initial current_unet_offload_device: {current_unet_offload_device}")
mm.get_torch_device = get_torch_device_patched
mm.text_encoder_device = text_encoder_device_patched
mm.unet_offload_device = unet_offload_device_patched
from .nodes import (
UnetLoaderGGUF,
@@ -235,6 +256,7 @@ from .wanvideo import (
from .wrappers import (
override_class,
override_class_offload,
override_class_clip,
override_class_clip_no_device,
override_class_with_distorch_gguf,
@@ -319,8 +341,8 @@ ltx_nodes = {"LTXVLoaderMultiGPU": override_class(LTXVLoader)}
register_and_count(["ComfyUI-LTXVideo", "comfyui-ltxvideo"], ltx_nodes)
florence_nodes = {
"Florence2ModelLoaderMultiGPU": override_class(Florence2ModelLoader),
"DownloadAndLoadFlorence2ModelMultiGPU": override_class(DownloadAndLoadFlorence2Model)
"Florence2ModelLoaderMultiGPU": override_class_offload(Florence2ModelLoader),
"DownloadAndLoadFlorence2ModelMultiGPU": override_class_offload(DownloadAndLoadFlorence2Model)
}
register_and_count(["ComfyUI-Florence2", "comfyui-florence2"], florence_nodes)
Binary file not shown.

After

Width:  |  Height:  |  Size: 256 KiB

File diff suppressed because it is too large Load Diff
Binary file not shown.

After

Width:  |  Height:  |  Size: 231 KiB

@@ -1,22 +1,97 @@
{
"id": "3c55bda9-d06f-4dc1-a571-cb6ea8f647e8",
"id": "4d231a10-da3b-4b12-8698-449accd4b87a",
"revision": 0,
"last_node_id": 136,
"last_link_id": 295,
"last_node_id": 45,
"last_link_id": 121,
"nodes": [
{
"id": 16,
"type": "KSamplerSelect",
"pos": [
480,
912
],
"size": [
315,
58
],
"flags": {},
"order": 0,
"mode": 0,
"inputs": [],
"outputs": [
{
"name": "SAMPLER",
"type": "SAMPLER",
"links": [
19
]
}
],
"properties": {
"cnr_id": "comfy-core",
"ver": "0.3.64",
"Node name for S&R": "KSamplerSelect"
},
"widgets_values": [
"euler"
]
},
{
"id": 26,
"type": "FluxGuidance",
"pos": [
480,
144
],
"size": [
317.4000244140625,
58
],
"flags": {},
"order": 12,
"mode": 0,
"inputs": [
{
"name": "conditioning",
"type": "CONDITIONING",
"link": 41
}
],
"outputs": [
{
"name": "CONDITIONING",
"type": "CONDITIONING",
"slot_index": 0,
"links": [
42
]
}
],
"properties": {
"cnr_id": "comfy-core",
"ver": "0.3.64",
"Node name for S&R": "FluxGuidance"
},
"widgets_values": [
3.5
],
"color": "#233",
"bgcolor": "#355"
},
{
"id": 22,
"type": "BasicGuider",
"pos": [
852.2776489257812,
-113.5096435546875
576,
48
],
"size": [
222.3482666015625,
46
],
"flags": {},
"order": 10,
"order": 13,
"mode": 0,
"inputs": [
{
@@ -41,6 +116,8 @@
}
],
"properties": {
"cnr_id": "comfy-core",
"ver": "0.3.64",
"Node name for S&R": "BasicGuider"
},
"widgets_values": []
@@ -49,15 +126,15 @@
"id": 13,
"type": "SamplerCustomAdvanced",
"pos": [
1162.46533203125,
79.54632568359375
864,
192
],
"size": [
566.427001953125,
688.7268676757812
272.3617858886719,
326
],
"flags": {},
"order": 11,
"order": 14,
"mode": 0,
"inputs": [
{
@@ -83,7 +160,7 @@
{
"name": "latent_image",
"type": "LATENT",
"link": 178
"link": 116
}
],
"outputs": [
@@ -102,6 +179,8 @@
}
],
"properties": {
"cnr_id": "comfy-core",
"ver": "0.3.64",
"Node name for S&R": "SamplerCustomAdvanced"
},
"widgets_values": []
@@ -110,15 +189,15 @@
"id": 25,
"type": "RandomNoise",
"pos": [
470.26251220703125,
444.5785827636719
480,
768
],
"size": [
412.7810363769531,
315,
82
],
"flags": {},
"order": 0,
"order": 1,
"mode": 0,
"inputs": [],
"outputs": [
@@ -131,55 +210,86 @@
}
],
"properties": {
"cnr_id": "comfy-core",
"ver": "0.3.64",
"Node name for S&R": "RandomNoise"
},
"widgets_values": [
36218255195780,
411099137945992,
"randomize"
],
"color": "#2a363b",
"bgcolor": "#3f5159"
},
{
"id": 16,
"type": "KSamplerSelect",
"id": 30,
"type": "ModelSamplingFlux",
"pos": [
484.6856689453125,
587.7680053710938
480,
1152
],
"size": [
394.4875793457031,
58.668025970458984
315,
130
],
"flags": {},
"order": 1,
"order": 9,
"mode": 0,
"inputs": [],
"inputs": [
{
"name": "model",
"type": "MODEL",
"link": 120
},
{
"name": "width",
"type": "INT",
"widget": {
"name": "width"
},
"link": 115
},
{
"name": "height",
"type": "INT",
"widget": {
"name": "height"
},
"link": 114
}
],
"outputs": [
{
"name": "SAMPLER",
"type": "SAMPLER",
"name": "MODEL",
"type": "MODEL",
"slot_index": 0,
"links": [
19
54,
55
]
}
],
"properties": {
"Node name for S&R": "KSamplerSelect"
"cnr_id": "comfy-core",
"ver": "0.3.64",
"Node name for S&R": "ModelSamplingFlux"
},
"widgets_values": [
"euler"
1.15,
0.5,
1024,
1024
]
},
{
"id": 17,
"type": "BasicScheduler",
"id": 27,
"type": "EmptySD3LatentImage",
"pos": [
509.7876892089844,
702.4910888671875
480,
624
],
"size": [
398.4141845703125,
315,
106
],
"flags": {},
@@ -187,71 +297,136 @@
"mode": 0,
"inputs": [
{
"name": "model",
"type": "MODEL",
"link": 295
"name": "width",
"type": "INT",
"widget": {
"name": "width"
},
"link": 112
},
{
"name": "height",
"type": "INT",
"widget": {
"name": "height"
},
"link": 113
}
],
"outputs": [
{
"name": "SIGMAS",
"type": "SIGMAS",
"name": "LATENT",
"type": "LATENT",
"slot_index": 0,
"links": [
20
116
]
}
],
"properties": {
"Node name for S&R": "BasicScheduler"
"cnr_id": "comfy-core",
"ver": "0.3.64",
"Node name for S&R": "EmptySD3LatentImage"
},
"widgets_values": [
"normal",
28,
1024,
1024,
1
]
},
{
"id": 9,
"type": "SaveImage",
"id": 34,
"type": "PrimitiveNode",
"pos": [
1812.6654052734375,
-154.47837829589844
432,
480
],
"size": [
1308.1181640625,
1063.59521484375
210,
82
],
"flags": {},
"order": 13,
"order": 2,
"mode": 0,
"inputs": [
"inputs": [],
"outputs": [
{
"name": "images",
"type": "IMAGE",
"link": 9
"name": "INT",
"type": "INT",
"widget": {
"name": "width"
},
"slot_index": 0,
"links": [
112,
115
]
}
],
"outputs": [],
"title": "width",
"properties": {
"Node name for S&R": "SaveImage"
"Run widget replace on values": false
},
"widgets_values": [
"ComfyUI"
]
1024,
"fixed"
],
"color": "#323",
"bgcolor": "#535"
},
{
"id": 35,
"type": "PrimitiveNode",
"pos": [
672,
480
],
"size": [
210,
82
],
"flags": {},
"order": 3,
"mode": 0,
"inputs": [],
"outputs": [
{
"name": "INT",
"type": "INT",
"widget": {
"name": "height"
},
"slot_index": 0,
"links": [
113,
114
]
}
],
"title": "height",
"properties": {
"Run widget replace on values": false
},
"widgets_values": [
1024,
"fixed"
],
"color": "#323",
"bgcolor": "#535"
},
{
"id": 8,
"type": "VAEDecode",
"pos": [
1500.7164306640625,
-139.140380859375
883.333251953125,
602.3333129882812
],
"size": [
233.40155029296875,
210,
46
],
"flags": {},
"order": 12,
"order": 15,
"mode": 0,
"inputs": [
{
@@ -262,7 +437,7 @@
{
"name": "vae",
"type": "VAE",
"link": 279
"link": 119
}
],
"outputs": [
@@ -276,105 +451,182 @@
}
],
"properties": {
"cnr_id": "comfy-core",
"ver": "0.3.64",
"Node name for S&R": "VAEDecode"
},
"widgets_values": []
},
{
"id": 71,
"type": "EmptySD3LatentImage",
"id": 40,
"type": "VAELoaderMultiGPU",
"pos": [
781.7842407226562,
174.56484985351562
38.24152755737305,
451.91839599609375
],
"size": [
210,
106
250.19544982910156,
83.10191345214844
],
"flags": {},
"order": 2,
"order": 4,
"mode": 0,
"inputs": [],
"outputs": [
{
"name": "LATENT",
"type": "LATENT",
"slot_index": 0,
"name": "VAE",
"type": "VAE",
"links": [
178
119
]
}
],
"properties": {
"Node name for S&R": "EmptySD3LatentImage"
"cnr_id": "comfyui-multigpu",
"ver": "0d6dfc7524472943ba912a6ec3088757edba15c3",
"Node name for S&R": "VAELoaderMultiGPU"
},
"widgets_values": [
1024,
1024,
1
"ae.safetensors",
"cuda:1"
],
"color": "#222",
"bgcolor": "#000"
"color": "#008181",
"bgcolor": "rgba(24,24,27,.9)"
},
{
"id": 26,
"type": "FluxGuidance",
"id": 17,
"type": "BasicScheduler",
"pos": [
346.12701416015625,
-30.19463348388672
478.0481262207031,
1008.0003662109375
],
"size": [
317.4000244140625,
58
315,
106
],
"flags": {},
"order": 9,
"order": 11,
"mode": 0,
"inputs": [
{
"name": "conditioning",
"type": "CONDITIONING",
"link": 41
"name": "model",
"type": "MODEL",
"link": 55
}
],
"outputs": [
{
"name": "CONDITIONING",
"type": "CONDITIONING",
"slot_index": 0,
"name": "SIGMAS",
"type": "SIGMAS",
"links": [
42
20
]
}
],
"properties": {
"Node name for S&R": "FluxGuidance"
"cnr_id": "comfy-core",
"ver": "0.3.64",
"Node name for S&R": "BasicScheduler"
},
"widgets_values": [
3.5
"simple",
20,
1
]
},
{
"id": 44,
"type": "UnetLoaderGGUFMultiGPU",
"pos": [
31.3530216217041,
157.298828125
],
"color": "#233",
"bgcolor": "#355"
"size": [
273.4029235839844,
82
],
"flags": {},
"order": 5,
"mode": 0,
"inputs": [],
"outputs": [
{
"name": "MODEL",
"type": "MODEL",
"links": [
120
]
}
],
"properties": {
"cnr_id": "comfyui-multigpu",
"ver": "0d6dfc7524472943ba912a6ec3088757edba15c3",
"Node name for S&R": "UnetLoaderGGUFMultiGPU"
},
"widgets_values": [
"flux1-dev-Q4_K_S.gguf",
"cuda:0"
],
"color": "#008181",
"bgcolor": "rgba(24,24,27,.9)"
},
{
"id": 45,
"type": "DualCLIPLoaderGGUFMultiGPU",
"pos": [
22.15631866455078,
274.3656311035156
],
"size": [
303.7476501464844,
130
],
"flags": {},
"order": 6,
"mode": 0,
"inputs": [],
"outputs": [
{
"name": "CLIP",
"type": "CLIP",
"links": [
121
]
}
],
"properties": {
"cnr_id": "comfyui-multigpu",
"ver": "0d6dfc7524472943ba912a6ec3088757edba15c3",
"Node name for S&R": "DualCLIPLoaderGGUFMultiGPU"
},
"widgets_values": [
"t5-v1_1-xxl-encoder-Q4_K_S.gguf",
"clip_l.safetensors",
"flux",
"cpu"
],
"color": "#008181",
"bgcolor": "rgba(24,24,27,.9)"
},
{
"id": 6,
"type": "CLIPTextEncode",
"pos": [
-81.70205688476562,
-33.01286315917969
384,
240
],
"size": [
391.4284973144531,
176.46835327148438
422.84503173828125,
164.31304931640625
],
"flags": {},
"order": 6,
"order": 10,
"mode": 0,
"inputs": [
{
"name": "clip",
"type": "CLIP",
"link": 293
"link": 121
}
],
"outputs": [
@@ -389,164 +641,70 @@
],
"title": "CLIP Text Encode (Positive Prompt)",
"properties": {
"cnr_id": "comfy-core",
"ver": "0.3.64",
"Node name for S&R": "CLIPTextEncode"
},
"widgets_values": [
"A towering technological monolith in a cyberpunk cityscape at night, with \"DisTorch 2\" emblazoned across its surface in massive neon blue-green mixed with purple letters that illuminate the surrounding buildings. The text occupies the central third of the frame, crafted from glowing plasma tubes and crackling energy. The model file suffix \"now with .safetensors!\" in same stying but smaller font directly underneath. Rain-slicked streets below reflect the brilliant signage, while holographic advertisements and flying vehicles populate the background. Moody atmospheric lighting, heavy contrast, photorealistic textures, cinematic color grading. "
"A towering technological monolith in a cyberpunk cityscape at night, with \"GGUF\" emblazoned across its surface in massive neon blue-green mixed with purple letters that illuminate the surrounding buildings. The text occupies the central third of the frame, crafted from glowing plasma tubes and crackling energy. Rain-slicked streets below reflect the brilliant signage, while holographic advertisements and flying vehicles populate the background. Moody atmospheric lighting, heavy contrast, photorealistic textures, cinematic color grading. "
],
"color": "#232",
"bgcolor": "#353"
},
{
"id": 136,
"type": "DualCLIPLoaderMultiGPU",
"id": 9,
"type": "SaveImage",
"pos": [
-558.3677978515625,
-36.014400482177734
1155,
196
],
"size": [
420.4273376464844,
130
528.3246459960938,
705.4493408203125
],
"flags": {},
"order": 3,
"order": 16,
"mode": 0,
"inputs": [],
"outputs": [
"inputs": [
{
"name": "CLIP",
"type": "CLIP",
"links": [
293
]
"name": "images",
"type": "IMAGE",
"link": 9
}
],
"outputs": [],
"properties": {
"Node name for S&R": "DualCLIPLoaderMultiGPU"
"cnr_id": "comfy-core",
"ver": "0.3.64",
"Node name for S&R": "SaveImage"
},
"widgets_values": [
"t5xxl_fp8_e4m3fn.safetensors",
"clip_l.safetensors",
"flux",
"cuda:1"
],
"color": "#233",
"bgcolor": "#355"
"MultiGPU"
]
},
{
"id": 133,
"type": "UNETLoaderDisTorch2MultiGPU",
"id": 42,
"type": "MarkdownNote",
"pos": [
-559.6673583984375,
-315.3926086425781
-569.0946655273438,
139.91355895996094
],
"size": [
381.215576171875,
178
],
"flags": {},
"order": 4,
"mode": 0,
"inputs": [],
"outputs": [
{
"name": "MODEL",
"type": "MODEL",
"links": [
294,
295
]
}
],
"properties": {
"Node name for S&R": "UNETLoaderDisTorch2MultiGPU"
},
"widgets_values": [
"flux1-dev-fp8.safetensors",
"default",
"cuda:0",
4,
"cpu",
""
],
"color": "#233",
"bgcolor": "#355"
},
{
"id": 30,
"type": "ModelSamplingFlux",
"pos": [
363.7016906738281,
-309.4155578613281
],
"size": [
382.2674560546875,
170
581.2379150390625,
676.9735717773438
],
"flags": {},
"order": 7,
"mode": 0,
"inputs": [
{
"name": "model",
"type": "MODEL",
"link": 294
}
],
"outputs": [
{
"name": "MODEL",
"type": "MODEL",
"slot_index": 0,
"links": [
54
]
}
],
"properties": {
"Node name for S&R": "ModelSamplingFlux"
},
"widgets_values": [
1.15,
0.5,
1024,
1024
]
},
{
"id": 60,
"type": "VAELoaderMultiGPU",
"pos": [
-543.2852783203125,
204.7698516845703
],
"size": [
230.01893615722656,
85.27015686035156
],
"flags": {},
"order": 5,
"mode": 0,
"inputs": [],
"outputs": [
{
"name": "VAE",
"type": "VAE",
"slot_index": 0,
"links": [
279
]
}
],
"properties": {
"Node name for S&R": "VAELoaderMultiGPU"
},
"outputs": [],
"title": "ComfyUI-MultiGPU Note - ComfyUI-GGUF UNETLoader, DualClipLoader Workflow",
"properties": {},
"widgets_values": [
"ae.safetensors",
"cuda:1"
"A standard FLUX.dev workflow with GGUF UNet and CLIP to test ComfyUI-GGUF integration. In this case we are using standard MultiGPU-wrapped nodes to move model components to their own device.\n## Custom Node\n- [ComfyUI-GGUF](https://github.com/city96/ComfyUI-GGUF)\n- [ComfyUI-MultiGPU](https://github.com/pollockjj/ComfyUI-MultiGPU)\n```\n📂 ComfyUI/\n├── 📂 custom_nodes/\n│ ├── 📂 ComfyUI-GGUF/\n│ ├── 📂 ComfyUI-MultiGPU/\n```\n## Model links\n\n**Diffusion model**\n- [flux1-dev-Q4_K_S.gguf](https://huggingface.co/city96/FLUX.1-dev-gguf/resolve/main/flux1-dev-Q4_K_S.gguf)\n\n**CLIP**\n- [t5-v1_1-xxl-encoder-Q4_K_S.gguf](https://huggingface.co/city96/t5-v1_1-xxl-encoder-gguf/resolve/main/t5-v1_1-xxl-encoder-Q4_K_S.gguf)\n- [clip_l.safetensors](https://huggingface.co/comfyanonymous/flux_text_encoders/resolve/main/clip_l.safetensors)\n\n**VAE**\n- [ae.safetensors](https://huggingface.co/black-forest-labs/FLUX.1-dev/resolve/main/ae.safetensors)\n\nModel Storage Location\n\n```\n📂 ComfyUI/\n├── 📂 models/\n│ ├── 📂 clip/\n│ │ └── t5-v1_1-xxl-encoder-Q4_K_S.gguf\n│ │ └── clip_l.safetensors\n│ ├── 📂 unet/\n│ │ ├── flux1-dev-Q4_K_S.gguf\n│ ├── 📂 vae/\n│ │ └── ae.safetensors]\n```\n## Device Mapping (Example: Two GPUs, 1 CPU)\n```\n🖥️ system \n├── 🟢 cuda:0\n│ └── flux1-dev-Q4_K_S.gguf\n├── 🟣 cuda:1\n│ └── ae.safetensors\n├── ⚙️ cpu\n └── t5-v1_1-xxl-encoder-Q4_K_S.gguf\n └── clip_l.safetensors\n```"
],
"color": "#233",
"bgcolor": "#355"
"color": "#008181",
"bgcolor": "rgba(24,24,27,.9)"
}
],
"links": [
@@ -623,68 +781,92 @@
"MODEL"
],
[
178,
71,
55,
30,
0,
17,
0,
"MODEL"
],
[
112,
34,
0,
27,
0,
"INT"
],
[
113,
35,
0,
27,
1,
"INT"
],
[
114,
35,
0,
30,
2,
"INT"
],
[
115,
34,
0,
30,
1,
"INT"
],
[
116,
27,
0,
13,
4,
"LATENT"
],
[
279,
60,
119,
40,
0,
8,
1,
"VAE"
],
[
293,
136,
0,
6,
0,
"CLIP"
],
[
294,
133,
120,
44,
0,
30,
0,
"MODEL"
],
[
295,
133,
121,
45,
0,
17,
6,
0,
"MODEL"
"CLIP"
]
],
"groups": [],
"config": {},
"extra": {
"ds": {
"scale": 0.6115909044841529,
"scale": 0.9090909090909091,
"offset": [
1204.2248231557692,
953.8392783594873
753.354087714039,
-35.46859036092216
]
},
"frontendVersion": "1.24.4",
"frontendVersion": "1.27.10",
"groupNodes": {},
"node_versions": {
"comfy-core": "0.3.27",
"comfyui-kjnodes": "86b5453a5ca9ecb883eedc9d0a96bf942b9ca73e",
"ComfyUI-MultiGPU": "1bf9333fc7f1d230282a6bc9946cfeabb9801969",
"comfyui-art-venture": "50abaace756b96f5f5dc2c9d72826ef371afd45e",
"Comfy-WaveSpeed": "3db162bb7ad56b84a452a4778527da63793c0e87"
},
"VHS_latentpreview": false,
"VHS_latentpreviewrate": 0,
"ue_links": [],
"VHS_MetadataImage": true,
"VHS_KeepIntermediate": true
},
Binary file not shown.

After

Width:  |  Height:  |  Size: 246 KiB

@@ -1,153 +1,9 @@
{
"id": "91f6bbe2-ed41-4fd6-bac7-71d5b5864ecb",
"revision": 0,
"last_node_id": 74,
"last_link_id": 134,
"last_node_id": 77,
"last_link_id": 137,
"nodes": [
{
"id": 8,
"type": "VAEDecode",
"pos": [
1210,
190
],
"size": [
210,
46
],
"flags": {},
"order": 10,
"mode": 0,
"inputs": [
{
"name": "samples",
"type": "LATENT",
"link": 128
},
{
"name": "vae",
"type": "VAE",
"link": 130
}
],
"outputs": [
{
"name": "IMAGE",
"type": "IMAGE",
"slot_index": 0,
"links": [
110
]
}
],
"properties": {
"Node name for S&R": "VAEDecode"
},
"widgets_values": []
},
{
"id": 60,
"type": "SaveImage",
"pos": [
1478.3486328125,
190.30274963378906
],
"size": [
821.0496215820312,
871.7067260742188
],
"flags": {},
"order": 11,
"mode": 0,
"inputs": [
{
"name": "images",
"type": "IMAGE",
"link": 110
}
],
"outputs": [],
"properties": {
"Node name for S&R": "SaveImage"
},
"widgets_values": [
"ComfyUI"
]
},
{
"id": 58,
"type": "EmptySD3LatentImage",
"pos": [
410.6574401855469,
620.5468139648438
],
"size": [
270,
106
],
"flags": {},
"order": 0,
"mode": 0,
"inputs": [],
"outputs": [
{
"name": "LATENT",
"type": "LATENT",
"links": [
107
]
}
],
"properties": {
"Node name for S&R": "EmptySD3LatentImage"
},
"widgets_values": [
1328,
1328,
1
]
},
{
"id": 7,
"type": "CLIPTextEncode",
"pos": [
413,
389
],
"size": [
425.27801513671875,
180.6060791015625
],
"flags": {},
"order": 7,
"mode": 0,
"inputs": [
{
"name": "clip",
"type": "CLIP",
"link": 75
}
],
"outputs": [
{
"name": "CONDITIONING",
"type": "CONDITIONING",
"slot_index": 0,
"links": [
52
]
}
],
"title": "CLIP Text Encode (Negative Prompt)",
"properties": {
"Node name for S&R": "CLIPTextEncode"
},
"widgets_values": [
" "
],
"color": "#322",
"bgcolor": "#533"
},
{
"id": 3,
"type": "KSampler",
@@ -160,7 +16,7 @@
474
],
"flags": {},
"order": 9,
"order": 8,
"mode": 0,
"inputs": [
{
@@ -195,10 +51,12 @@
}
],
"properties": {
"cnr_id": "comfy-core",
"ver": "0.3.64",
"Node name for S&R": "KSampler"
},
"widgets_values": [
460967899514521,
174815108394042,
"randomize",
20,
2.5,
@@ -208,87 +66,117 @@
]
},
{
"id": 38,
"type": "CLIPLoader",
"id": 66,
"type": "ModelSamplingAuraFlow",
"pos": [
-38.50741195678711,
203.00167846679688
459.40179443359375,
-35.1873779296875
],
"size": [
380,
270,
58
],
"flags": {},
"order": 7,
"mode": 0,
"inputs": [
{
"name": "model",
"type": "MODEL",
"link": 137
}
],
"outputs": [
{
"name": "MODEL",
"type": "MODEL",
"links": [
125
]
}
],
"properties": {
"cnr_id": "comfy-core",
"ver": "0.3.64",
"Node name for S&R": "ModelSamplingAuraFlow"
},
"widgets_values": [
3.1000000000000005
]
},
{
"id": 76,
"type": "CLIPLoaderGGUFMultiGPU",
"pos": [
-28.469432830810547,
225.77920532226562
],
"size": [
360.6989440917969,
106
],
"flags": {},
"order": 0,
"mode": 0,
"inputs": [],
"outputs": [
{
"name": "CLIP",
"type": "CLIP",
"links": [
135,
136
]
}
],
"properties": {
"cnr_id": "comfyui-multigpu",
"ver": "0d6dfc7524472943ba912a6ec3088757edba15c3",
"Node name for S&R": "CLIPLoaderGGUFMultiGPU"
},
"widgets_values": [
"Qwen2.5-VL-7B-Instruct-Q4_K_S.gguf",
"qwen_image",
"cuda:1"
],
"color": "#008181",
"bgcolor": "rgba(24,24,27,.9)"
},
{
"id": 70,
"type": "VAELoaderMultiGPU",
"pos": [
-30.621204376220703,
408.86016845703125
],
"size": [
367.14569091796875,
82
],
"flags": {},
"order": 1,
"mode": 0,
"inputs": [],
"outputs": [
{
"name": "CLIP",
"type": "CLIP",
"slot_index": 0,
"name": "VAE",
"type": "VAE",
"links": [
74,
75
130
]
}
],
"properties": {
"Node name for S&R": "CLIPLoader"
"cnr_id": "comfyui-multigpu",
"ver": "0d6dfc7524472943ba912a6ec3088757edba15c3",
"Node name for S&R": "VAELoaderMultiGPU"
},
"widgets_values": [
"qwen_2.5_vl_7b_fp8_scaled.safetensors",
"qwen_image",
"cpu"
"qwen_image_vae.safetensors",
"cuda:1"
],
"color": "#223",
"bgcolor": "#335"
},
{
"id": 68,
"type": "Note",
"pos": [
913.0664672851562,
-0.3729564845561981
],
"size": [
261.87744140625,
102.99000549316406
],
"flags": {},
"order": 2,
"mode": 0,
"inputs": [],
"outputs": [],
"properties": {},
"widgets_values": [
"Increase the shift if you get too many blury/dark/bad images. Decrease if you want to try increasing detail."
],
"color": "#432",
"bgcolor": "#653"
},
{
"id": 67,
"type": "Note",
"pos": [
874.5732421875,
755.3063354492188
],
"size": [
307.4002380371094,
127.38092803955078
],
"flags": {},
"order": 3,
"mode": 0,
"inputs": [],
"outputs": [],
"properties": {},
"widgets_values": [
"Set cfg to 1.0 for a speed boost at the cost of consistency. Samplers like res_multistep work pretty well at cfg 1.0\n\nThe official number of steps is 50 but I think that's too much. Even just 10 steps seems to work."
],
"color": "#432",
"bgcolor": "#653"
"color": "#008181",
"bgcolor": "rgba(24,24,27,.9)"
},
{
"id": 6,
@@ -308,7 +196,7 @@
{
"name": "clip",
"type": "CLIP",
"link": 74
"link": 136
}
],
"outputs": [
@@ -323,122 +211,233 @@
],
"title": "CLIP Text Encode (Positive Prompt)",
"properties": {
"cnr_id": "comfy-core",
"ver": "0.3.64",
"Node name for S&R": "CLIPTextEncode"
},
"widgets_values": [
"A towering technological monolith in a cyberpunk cityscape at night, with \"DisTorch 2\" emblazoned across its surface in massive neon blue-green mixed with purple letters that illuminate the surrounding buildings. The text occupies the central third of the frame, crafted from glowing plasma tubes and crackling energy. \"now with .safetensors!\" in same styling but smaller, italic version of the font splashed in the lower right-hand corner of the image. Rain-slicked streets below reflect the brilliant signage, while holographic advertisements and flying vehicles populate the background. Moody atmospheric lighting, heavy contrast, photorealistic textures, cinematic color grading. "
"A towering technological monolith in a cyberpunk cityscape at night, with \"GGUF DisTorch 2\" emblazoned across its surface in massive neon blue-green mixed with purple letters that illuminate the surrounding buildings. The text occupies the central third of the frame, crafted from glowing plasma tubes and crackling energy. Rain-slicked streets below reflect the brilliant signage, while holographic advertisements and flying vehicles populate the background. Moody atmospheric lighting, heavy contrast, photorealistic textures, cinematic color grading. "
],
"color": "#232",
"bgcolor": "#353"
},
{
"id": 70,
"type": "VAELoaderMultiGPU",
"id": 8,
"type": "VAEDecode",
"pos": [
-30.621204376220703,
408.86016845703125
932.9422607421875,
11.704089164733887
],
"size": [
337.2979431152344,
82
210,
46
],
"flags": {},
"order": 9,
"mode": 0,
"inputs": [
{
"name": "samples",
"type": "LATENT",
"link": 128
},
{
"name": "vae",
"type": "VAE",
"link": 130
}
],
"outputs": [
{
"name": "IMAGE",
"type": "IMAGE",
"slot_index": 0,
"links": [
110
]
}
],
"properties": {
"cnr_id": "comfy-core",
"ver": "0.3.64",
"Node name for S&R": "VAEDecode"
},
"widgets_values": []
},
{
"id": 7,
"type": "CLIPTextEncode",
"pos": [
422.6140441894531,
397.7400207519531
],
"size": [
425.27801513671875,
182.3540496826172
],
"flags": {
"collapsed": true
},
"order": 5,
"mode": 0,
"inputs": [
{
"name": "clip",
"type": "CLIP",
"link": 135
}
],
"outputs": [
{
"name": "CONDITIONING",
"type": "CONDITIONING",
"slot_index": 0,
"links": [
52
]
}
],
"title": "CLIP Text Encode (Negative Prompt)",
"properties": {
"cnr_id": "comfy-core",
"ver": "0.3.64",
"Node name for S&R": "CLIPTextEncode"
},
"widgets_values": [
" "
],
"color": "#322",
"bgcolor": "#533"
},
{
"id": 58,
"type": "EmptySD3LatentImage",
"pos": [
448.2394104003906,
480.706787109375
],
"size": [
270,
106
],
"flags": {},
"order": 2,
"mode": 0,
"inputs": [],
"outputs": [
{
"name": "LATENT",
"type": "LATENT",
"links": [
107
]
}
],
"properties": {
"cnr_id": "comfy-core",
"ver": "0.3.64",
"Node name for S&R": "EmptySD3LatentImage"
},
"widgets_values": [
1328,
1328,
1
]
},
{
"id": 77,
"type": "UnetLoaderGGUFDisTorch2MultiGPU",
"pos": [
-30.83705711364746,
-24.04859733581543
],
"size": [
363.6120910644531,
185.86599731445312
],
"flags": {},
"order": 3,
"mode": 0,
"inputs": [],
"outputs": [
{
"name": "MODEL",
"type": "MODEL",
"links": [
137
]
}
],
"properties": {
"cnr_id": "comfyui-multigpu",
"ver": "0d6dfc7524472943ba912a6ec3088757edba15c3",
"Node name for S&R": "UnetLoaderGGUFDisTorch2MultiGPU"
},
"widgets_values": [
"qwen-image-Q3_K_S.gguf",
"cuda:0",
4.2,
"cpu",
"",
true
],
"color": "#008181",
"bgcolor": "rgba(24,24,27,.9)"
},
{
"id": 75,
"type": "MarkdownNote",
"pos": [
-713.5603637695312,
-38.757911682128906
],
"size": [
648.826904296875,
649.345947265625
],
"flags": {},
"order": 4,
"mode": 0,
"inputs": [],
"outputs": [
{
"name": "VAE",
"type": "VAE",
"links": [
130
]
}
],
"properties": {
"Node name for S&R": "VAELoaderMultiGPU"
},
"outputs": [],
"title": "ComfyUI-MultiGPU Note - ComfyUI-GGUF UNETDisTorch2Loader, DualClipLoader Workflow",
"properties": {},
"widgets_values": [
"qwen_image_vae.safetensors",
"cuda:1"
"A DisTorch2 FLUX.dev workflow with GGUF UNet DisTorch2 and CLIP to test ComfyUI-GGUF integration. In this case we are using the DisTorch2 node to statically allocate approximately half of the main UNet model to the cpu.\n\n## Custom Node\n- [ComfyUI-GGUF](https://github.com/city96/ComfyUI-GGUF)\n- [ComfyUI-MultiGPU](https://github.com/pollockjj/ComfyUI-MultiGPU)\n```\n📂 ComfyUI/\n├── 📂 custom_nodes/\n│ ├── 📂 ComfyUI-GGUF/\n│ ├── 📂 ComfyUI-MultiGPU/\n```\n## Model links\n\n**Diffusion model**\n- [qwen-image-Q3_K_S.gguf](https://huggingface.co/city96/Qwen-Image-gguf/resolve/main/qwen-image-Q3_K_S.gguf)\n\n**CLIP**\n- [Qwen2.5-VL-7B-Instruct-Q4_K_S.gguf](https://huggingface.co/unsloth/Qwen2.5-VL-7B-Instruct-GGUF/resolve/main/Qwen2.5-VL-7B-Instruct-Q4_K_S.gguf)\n\n**VAE**\n- [qwen_image_vae.safetensors](https://huggingface.co/Comfy-Org/Qwen-Image_ComfyUI/blob/main/split_files/vae/qwen_image_vae.safetensors)\n\nModel Storage Location\n\n```\n📂 ComfyUI/\n├── 📂 models/\n│ ├── 📂 clip/\n│ │ └── Qwen2.5-VL-7B-Instruct-Q4_K_S.gguf\n│ ├── 📂 unet/\n│ │ ├── qwen-image-Q3_K_S.gguf [🟩🟩🟩🟩🟩⚙️⚙️⚙️⚙️⚙️]\n│ ├── 📂 vae/\n│ │ └── qwen_image_vae.safetensors\n```\n\n```\n🖥️ Device Mapping\n├── 🟢 cuda:0\n│ └── qwen-image-Q3_K_S.gguf [🟩🟩🟩🟩🟩]\n├── 🟣 cuda:1\n│ └── Qwen2.5-VL-7B-Instruct-Q4_K_S.gguf\n│ └── qwen_image_vae.safetensors\n├── ⚙️ cpu\n│ └── qwen-image-Q3_K_S.gguf [⚙️⚙️⚙️⚙️⚙️]\n\n```"
],
"color": "#233",
"bgcolor": "#355"
"color": "#008181",
"bgcolor": "rgba(24,24,27,.9)"
},
{
"id": 66,
"type": "ModelSamplingAuraFlow",
"id": 60,
"type": "SaveImage",
"pos": [
459.40179443359375,
-35.1873779296875
1275.1832275390625,
-41.704383850097656
],
"size": [
270,
58
821.0496215820312,
871.7067260742188
],
"flags": {},
"order": 8,
"order": 10,
"mode": 0,
"inputs": [
{
"name": "model",
"type": "MODEL",
"link": 134
}
],
"outputs": [
{
"name": "MODEL",
"type": "MODEL",
"links": [
125
]
"name": "images",
"type": "IMAGE",
"link": 110
}
],
"outputs": [],
"properties": {
"Node name for S&R": "ModelSamplingAuraFlow"
"cnr_id": "comfy-core",
"ver": "0.3.64",
"Node name for S&R": "SaveImage"
},
"widgets_values": [
3.1000000000000005
"MultiGPU"
]
},
{
"id": 71,
"type": "UNETLoaderDisTorch2MultiGPU",
"pos": [
-18.269481658935547,
-40.56364059448242
],
"size": [
351.41351318359375,
179.5890655517578
],
"flags": {},
"order": 5,
"mode": 0,
"inputs": [],
"outputs": [
{
"name": "MODEL",
"type": "MODEL",
"links": [
134
]
}
],
"properties": {
"Node name for S&R": "UNETLoaderDisTorch2MultiGPU"
},
"widgets_values": [
"qwen_image_fp8_e4m3fn.safetensors",
"fp8_e4m3fn",
"cuda:0",
4,
"cpu",
""
],
"color": "#233",
"bgcolor": "#355"
}
],
"links": [
@@ -458,22 +457,6 @@
2,
"CONDITIONING"
],
[
74,
38,
0,
6,
0,
"CLIP"
],
[
75,
38,
0,
7,
0,
"CLIP"
],
[
107,
58,
@@ -515,8 +498,24 @@
"VAE"
],
[
134,
71,
135,
76,
0,
7,
0,
"CLIP"
],
[
136,
76,
0,
6,
0,
"CLIP"
],
[
137,
77,
0,
66,
0,
@@ -527,13 +526,13 @@
"config": {},
"extra": {
"ds": {
"scale": 0.9229599817706498,
"scale": 0.7627768444385551,
"offset": [
81.82659533721916,
197.28454065770217
811.7802596892885,
398.7650738399946
]
},
"frontendVersion": "1.24.4",
"frontendVersion": "1.27.10",
"VHS_latentpreview": false,
"VHS_latentpreviewrate": 0,
"VHS_MetadataImage": true,
Binary file not shown.

After

Width:  |  Height:  |  Size: 70 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 101 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 80 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 245 KiB

@@ -1,7 +1,7 @@
{
"id": "4d231a10-da3b-4b12-8698-449accd4b87a",
"revision": 0,
"last_node_id": 40,
"last_node_id": 43,
"last_link_id": 119,
"nodes": [
{
@@ -16,7 +16,7 @@
106
],
"flags": {},
"order": 12,
"order": 11,
"mode": 0,
"inputs": [
{
@@ -35,6 +35,8 @@
}
],
"properties": {
"cnr_id": "comfy-core",
"ver": "0.3.64",
"Node name for S&R": "BasicScheduler"
},
"widgets_values": [
@@ -68,6 +70,8 @@
}
],
"properties": {
"cnr_id": "comfy-core",
"ver": "0.3.64",
"Node name for S&R": "KSamplerSelect"
},
"widgets_values": [
@@ -86,7 +90,7 @@
58
],
"flags": {},
"order": 11,
"order": 12,
"mode": 0,
"inputs": [
{
@@ -106,6 +110,8 @@
}
],
"properties": {
"cnr_id": "comfy-core",
"ver": "0.3.64",
"Node name for S&R": "FluxGuidance"
},
"widgets_values": [
@@ -151,6 +157,8 @@
}
],
"properties": {
"cnr_id": "comfy-core",
"ver": "0.3.64",
"Node name for S&R": "BasicGuider"
},
"widgets_values": []
@@ -212,6 +220,8 @@
}
],
"properties": {
"cnr_id": "comfy-core",
"ver": "0.3.64",
"Node name for S&R": "SamplerCustomAdvanced"
},
"widgets_values": []
@@ -241,56 +251,17 @@
}
],
"properties": {
"cnr_id": "comfy-core",
"ver": "0.3.64",
"Node name for S&R": "RandomNoise"
},
"widgets_values": [
826914720443214,
653376826227025,
"randomize"
],
"color": "#2a363b",
"bgcolor": "#3f5159"
},
{
"id": 8,
"type": "VAEDecode",
"pos": [
866,
367
],
"size": [
210,
46
],
"flags": {},
"order": 15,
"mode": 0,
"inputs": [
{
"name": "samples",
"type": "LATENT",
"link": 24
},
{
"name": "vae",
"type": "VAE",
"link": 119
}
],
"outputs": [
{
"name": "IMAGE",
"type": "IMAGE",
"slot_index": 0,
"links": [
9
]
}
],
"properties": {
"Node name for S&R": "VAEDecode"
},
"widgets_values": []
},
{
"id": 30,
"type": "ModelSamplingFlux",
@@ -303,7 +274,7 @@
130
],
"flags": {},
"order": 10,
"order": 9,
"mode": 0,
"inputs": [
{
@@ -340,6 +311,8 @@
}
],
"properties": {
"cnr_id": "comfy-core",
"ver": "0.3.64",
"Node name for S&R": "ModelSamplingFlux"
},
"widgets_values": [
@@ -392,6 +365,8 @@
}
],
"properties": {
"cnr_id": "comfy-core",
"ver": "0.3.64",
"Node name for S&R": "EmptySD3LatentImage"
},
"widgets_values": [
@@ -480,60 +455,6 @@
"color": "#323",
"bgcolor": "#535"
},
{
"id": 9,
"type": "SaveImage",
"pos": [
1155,
196
],
"size": [
985.3012084960938,
1060.3828125
],
"flags": {},
"order": 16,
"mode": 0,
"inputs": [
{
"name": "images",
"type": "IMAGE",
"link": 9
}
],
"outputs": [],
"properties": {
"Node name for S&R": "SaveImage"
},
"widgets_values": [
"ComfyUI"
]
},
{
"id": 37,
"type": "Note",
"pos": [
480,
1344
],
"size": [
314.99755859375,
117.98363494873047
],
"flags": {},
"order": 4,
"mode": 0,
"inputs": [],
"outputs": [],
"properties": {
"text": ""
},
"widgets_values": [
"The reference sampling implementation auto adjusts the shift value based on the resolution, if you don't want this you can just bypass (CTRL-B) this ModelSamplingFlux node.\n"
],
"color": "#432",
"bgcolor": "#653"
},
{
"id": 6,
"type": "CLIPTextEncode",
@@ -546,7 +467,7 @@
164.31304931640625
],
"flags": {},
"order": 9,
"order": 10,
"mode": 0,
"inputs": [
{
@@ -567,23 +488,105 @@
],
"title": "CLIP Text Encode (Positive Prompt)",
"properties": {
"cnr_id": "comfy-core",
"ver": "0.3.64",
"Node name for S&R": "CLIPTextEncode"
},
"widgets_values": [
"A towering technological monolith in a cyberpunk cityscape at night, with \"DisTorch 2\" emblazoned across its surface in massive neon blue-green mixed with purple letters that illuminate the surrounding buildings. The text occupies the central third of the frame, crafted from glowing plasma tubes and crackling energy. The model file suffix \"now with .safetensors!\" in same stying but smaller font directly underneath. Rain-slicked streets below reflect the brilliant signage, while holographic advertisements and flying vehicles populate the background. Moody atmospheric lighting, heavy contrast, photorealistic textures, cinematic color grading. "
"A towering technological monolith in a cyberpunk cityscape at night, with \"MultiGPU\" emblazoned across its surface in massive neon blue-green mixed with purple letters that illuminate the surrounding buildings. The text occupies the central third of the frame, crafted from glowing plasma tubes and crackling energy. Rain-slicked streets below reflect the brilliant signage, while holographic advertisements and flying vehicles populate the background. Moody atmospheric lighting, heavy contrast, photorealistic textures, cinematic color grading. "
],
"color": "#232",
"bgcolor": "#353"
},
{
"id": 8,
"type": "VAEDecode",
"pos": [
883.333251953125,
602.3333129882812
],
"size": [
210,
46
],
"flags": {},
"order": 15,
"mode": 0,
"inputs": [
{
"name": "samples",
"type": "LATENT",
"link": 24
},
{
"name": "vae",
"type": "VAE",
"link": 119
}
],
"outputs": [
{
"name": "IMAGE",
"type": "IMAGE",
"slot_index": 0,
"links": [
9
]
}
],
"properties": {
"cnr_id": "comfy-core",
"ver": "0.3.64",
"Node name for S&R": "VAEDecode"
},
"widgets_values": []
},
{
"id": 38,
"type": "UNETLoaderMultiGPU",
"pos": [
32.4267692565918,
128.16644287109375
],
"size": [
252.71832275390625,
106
],
"flags": {},
"order": 4,
"mode": 0,
"inputs": [],
"outputs": [
{
"name": "MODEL",
"type": "MODEL",
"links": [
117
]
}
],
"properties": {
"cnr_id": "comfyui-multigpu",
"ver": "0d6dfc7524472943ba912a6ec3088757edba15c3",
"Node name for S&R": "UNETLoaderMultiGPU"
},
"widgets_values": [
"flux1-dev-fp8.safetensors",
"default",
"cuda:0"
],
"color": "#008181",
"bgcolor": "rgba(24,24,27,.9)"
},
{
"id": 39,
"type": "DualCLIPLoaderMultiGPU",
"pos": [
52.45843505859375,
284.6034851074219
35.378475189208984,
276.3390197753906
],
"size": [
270,
252.36911010742188,
130
],
"flags": {},
@@ -600,30 +603,56 @@
}
],
"properties": {
"cnr_id": "comfyui-multigpu",
"ver": "0d6dfc7524472943ba912a6ec3088757edba15c3",
"Node name for S&R": "DualCLIPLoaderMultiGPU"
},
"widgets_values": [
"t5xxl_fp16.safetensors",
"t5xxl_fp8_e4m3fn_scaled.safetensors",
"clip_l.safetensors",
"flux",
"cuda:1"
"cpu"
],
"color": "#233",
"bgcolor": "#355"
"color": "#008181",
"bgcolor": "rgba(24,24,27,.9)"
},
{
"id": 42,
"type": "MarkdownNote",
"pos": [
-543.3901977539062,
124.58646392822266
],
"size": [
536.8795166015625,
540.175537109375
],
"flags": {},
"order": 6,
"mode": 0,
"inputs": [],
"outputs": [],
"title": "ComfyUI-MultiGPU Note - UNETLoader, DualClipLoader, and VAELoader nodes",
"properties": {},
"widgets_values": [
"A standard FLUX.dev .fp8 UNet to test ComfyUI-MultiGPU Comfy Core Loader basic functionality. In this case we are using standard MultiGPU-wrapped nodes to move model components to their own device.\n\n## Model links\n\n**Diffusion model**\n- [flux1-dev-fp8.safetensors](https://huggingface.co/Comfy-Org/flux1-dev/resolve/main/flux1-dev-fp8.safetensors)\n\n**CLIP**\n- [t5xxl_fp8_e4m3fn_scaled.safetensors](https://huggingface.co/comfyanonymous/flux_text_encoders/resolve/main/t5xxl_fp8_e4m3fn_scaled.safetensors)\n- [clip_l.safetensors](https://huggingface.co/comfyanonymous/flux_text_encoders/resolve/main/clip_l.safetensors)\n\n**VAE**\n- [ae.safetensors](https://huggingface.co/black-forest-labs/FLUX.1-dev/resolve/main/ae.safetensors)\n\nModel Storage Location\n\n```\n📂 ComfyUI/\n├── 📂 models/\n│ ├── 📂 diffusion_models/\n│ │ ├── flux1-dev-fp8.safetensors\n│ ├── 📂 clip/\n│ │ └── t5xxl_fp8_e4m3fn_scaled.safetensors\n│ │ └── clip_l.safetensors\n│ ├── 📂 vae/\n│ │ └── ae.safetensors\n```\n## Device Mapping (Example: Two GPUs, 1 CPU)\n```\n🖥️ system \n├── 🟢 cuda:0\n│ └── flux1-dev-fp8.safetensors\n├── 🟣 cuda:1\n│ └── ae.safetensors\n├── ⚙️ cpu\n └── t5xxl_fp8_e4m3fn_scaled.safetensors\n └── clip_l.safetensors\n```"
],
"color": "#008181",
"bgcolor": "rgba(24,24,27,.9)"
},
{
"id": 40,
"type": "VAELoaderMultiGPU",
"pos": [
55.872314453125,
462.9376220703125
62.4415397644043,
462.18499755859375
],
"size": [
268.9281921386719,
82
250.19544982910156,
83.10191345214844
],
"flags": {},
"order": 6,
"order": 7,
"mode": 0,
"inputs": [],
"outputs": [
@@ -636,49 +665,47 @@
}
],
"properties": {
"cnr_id": "comfyui-multigpu",
"ver": "0d6dfc7524472943ba912a6ec3088757edba15c3",
"Node name for S&R": "VAELoaderMultiGPU"
},
"widgets_values": [
"ae.safetensors",
"cuda:0"
"cuda:1"
],
"color": "#233",
"bgcolor": "#355"
"color": "#008181",
"bgcolor": "rgba(24,24,27,.9)"
},
{
"id": 38,
"type": "UNETLoaderMultiGPU",
"id": 9,
"type": "SaveImage",
"pos": [
62.178836822509766,
116.59618377685547
1155,
196
],
"size": [
252.71832275390625,
106
771.1677856445312,
714.9827880859375
],
"flags": {},
"order": 7,
"order": 16,
"mode": 0,
"inputs": [],
"outputs": [
"inputs": [
{
"name": "MODEL",
"type": "MODEL",
"links": [
117
]
"name": "images",
"type": "IMAGE",
"link": 9
}
],
"outputs": [],
"properties": {
"Node name for S&R": "UNETLoaderMultiGPU"
"cnr_id": "comfy-core",
"ver": "0.3.64",
"Node name for S&R": "SaveImage"
},
"widgets_values": [
"flux1-dev-fp8.safetensors",
"default",
"cuda:0"
],
"color": "#233",
"bgcolor": "#355"
"MultiGPU"
]
}
],
"links": [
@@ -831,14 +858,14 @@
"config": {},
"extra": {
"ds": {
"scale": 0.6830134553650705,
"scale": 0.9090909090909091,
"offset": [
1096.2188760488327,
245.01396417277823
549.7571867235707,
-6.513564853156251
]
},
"frontendVersion": "1.27.10",
"groupNodes": {},
"frontendVersion": "1.24.4",
"VHS_latentpreview": false,
"VHS_latentpreviewrate": 0,
"VHS_MetadataImage": true,
Binary file not shown.

After

Width:  |  Height:  |  Size: 129 KiB

@@ -1,8 +1,8 @@
{
"id": "476d2791-c10e-4a18-a548-2fbc6aa0f024",
"id": "93280d39-664d-49f5-9bd5-62d80b169b01",
"revision": 0,
"last_node_id": 121,
"last_link_id": 158,
"last_node_id": 123,
"last_link_id": 160,
"nodes": [
{
"id": 72,
@@ -36,6 +36,8 @@
}
],
"properties": {
"cnr_id": "comfy-core",
"ver": "0.3.64",
"Node name for S&R": "FluxGuidance"
},
"widgets_values": [
@@ -56,13 +58,13 @@
58
],
"flags": {},
"order": 7,
"order": 8,
"mode": 0,
"inputs": [
{
"name": "model",
"type": "MODEL",
"link": 157
"link": 159
}
],
"outputs": [
@@ -76,6 +78,8 @@
}
],
"properties": {
"cnr_id": "comfy-core",
"ver": "0.3.64",
"Node name for S&R": "ModelSamplingSD3"
},
"widgets_values": [
@@ -119,6 +123,8 @@
}
],
"properties": {
"cnr_id": "comfy-core",
"ver": "0.3.64",
"Node name for S&R": "VAEDecodeTiled"
},
"widgets_values": [
@@ -128,45 +134,6 @@
8
]
},
{
"id": 66,
"type": "BasicScheduler",
"pos": [
3250.771484375,
41.81864929199219
],
"size": [
210,
109.8011474609375
],
"flags": {},
"order": 8,
"mode": 0,
"inputs": [
{
"name": "model",
"type": "MODEL",
"link": 158
}
],
"outputs": [
{
"name": "SIGMAS",
"type": "SIGMAS",
"links": [
90
]
}
],
"properties": {
"Node name for S&R": "BasicScheduler"
},
"widgets_values": [
"simple",
20,
1
]
},
{
"id": 69,
"type": "KSamplerSelect",
@@ -192,6 +159,8 @@
}
],
"properties": {
"cnr_id": "comfy-core",
"ver": "0.3.64",
"Node name for S&R": "KSamplerSelect"
},
"widgets_values": [
@@ -226,6 +195,8 @@
}
],
"properties": {
"cnr_id": "comfy-core",
"ver": "0.3.64",
"Node name for S&R": "EmptyHunyuanLatentVideo"
},
"widgets_values": [
@@ -235,30 +206,6 @@
1
]
},
{
"id": 78,
"type": "Note",
"pos": [
2631.16015625,
-399.4529113769531
],
"size": [
353.56494140625,
190.77996826171875
],
"flags": {},
"order": 2,
"mode": 0,
"inputs": [],
"outputs": [],
"title": "This workflow requires ComfyUI-GGUF",
"properties": {},
"widgets_values": [
"**⚠️ Dependency Alert! ⚠️**\n\nThis workflow relies on nodes from the [ComfyUI-GGUF](https://github.com/city96/ComfyUI-GGUF) custom node repository to function correctly. \n\nSpecifically:\n\n*\"CLIPLoaderGGUFMultiGPU\" \n\nwill not work without this dependency installed. Please install ComfyUI-GGUF before attempting to run this workflow."
],
"color": "#332922",
"bgcolor": "#593930"
},
{
"id": 68,
"type": "RandomNoise",
@@ -271,7 +218,7 @@
82
],
"flags": {},
"order": 3,
"order": 2,
"mode": 0,
"inputs": [],
"outputs": [
@@ -284,6 +231,8 @@
}
],
"properties": {
"cnr_id": "comfy-core",
"ver": "0.3.64",
"Node name for S&R": "RandomNoise"
},
"widgets_values": [
@@ -293,82 +242,6 @@
"color": "#2a363b",
"bgcolor": "#3f5159"
},
{
"id": 70,
"type": "VHS_VideoCombine",
"pos": [
3809.87548828125,
-522.964111328125
],
"size": [
338.94024658203125,
902.6787109375
],
"flags": {},
"order": 14,
"mode": 0,
"inputs": [
{
"name": "images",
"type": "IMAGE",
"link": 82
},
{
"name": "audio",
"shape": 7,
"type": "AUDIO",
"link": null
},
{
"name": "meta_batch",
"shape": 7,
"type": "VHS_BatchManager",
"link": null
},
{
"name": "vae",
"shape": 7,
"type": "VAE",
"link": null
}
],
"outputs": [
{
"name": "Filenames",
"type": "VHS_FILENAMES",
"links": null
}
],
"properties": {
"Node name for S&R": "VHS_VideoCombine"
},
"widgets_values": {
"frame_rate": 24,
"loop_count": 0,
"filename_prefix": "HunyuanVideo",
"format": "video/h264-mp4",
"pix_fmt": "yuv420p",
"crf": 19,
"save_metadata": true,
"trim_to_audio": false,
"pingpong": false,
"save_output": true,
"videopreview": {
"hidden": false,
"paused": false,
"params": {
"filename": "HunyuanVideo_00002.mp4",
"subfolder": "",
"type": "output",
"format": "video/h264-mp4",
"frame_rate": 24,
"workflow": "HunyuanVideo_00002.png",
"fullpath": "/home/johnj/ComfyUI/output/HunyuanVideo_00002.mp4"
},
"muted": false
}
}
},
{
"id": 64,
"type": "BasicGuider",
@@ -408,92 +281,18 @@
}
],
"properties": {
"cnr_id": "comfy-core",
"ver": "0.3.64",
"Node name for S&R": "BasicGuider"
},
"widgets_values": []
},
{
"id": 67,
"type": "CLIPTextEncode",
"pos": [
3032.827392578125,
-153.691650390625
],
"size": [
422.84503173828125,
164.31304931640625
],
"flags": {},
"order": 9,
"mode": 0,
"inputs": [
{
"name": "clip",
"type": "CLIP",
"link": 156
}
],
"outputs": [
{
"name": "CONDITIONING",
"type": "CONDITIONING",
"slot_index": 0,
"links": [
83
]
}
],
"title": "CLIP Text Encode (Positive Prompt)",
"properties": {
"Node name for S&R": "CLIPTextEncode"
},
"widgets_values": [
"A light green frog with brown spots stares forward with its left eye moving subtly. The frog's skin is textured with small bumps, and its spots appear in irregular patterns across its head and face. The eye is round and black with a subtle shine. The head is slightly tilted to its left, and the body is barely visible. The background is a flat, solid bright yellow color, extending beyond the frog in all directions, with the lower part having a slight gradient into a lighter green. The camera zooms in slowly on the frog's eye and the frog looks directly at the viewer. The overall lighting is bright and diffused, creating a soft appearance."
],
"color": "#232",
"bgcolor": "#353"
},
{
"id": 76,
"type": "VAELoaderMultiGPU",
"pos": [
2632.252685546875,
327.2115783691406
],
"size": [
341.07464599609375,
87.14057922363281
],
"flags": {},
"order": 4,
"mode": 0,
"inputs": [],
"outputs": [
{
"name": "VAE",
"type": "VAE",
"slot_index": 0,
"links": [
99
]
}
],
"properties": {
"Node name for S&R": "VAELoaderMultiGPU"
},
"widgets_values": [
"hunyuan_video_vae_bf16.safetensors",
"cuda:1"
],
"color": "#233",
"bgcolor": "#355"
},
{
"id": 75,
"type": "SamplerCustomAdvanced",
"pos": [
3517.626953125,
-117.69574737548828
3559.78662109375,
-157.08978271484375
],
"size": [
292.4319763183594,
@@ -547,61 +346,25 @@
}
],
"properties": {
"cnr_id": "comfy-core",
"ver": "0.3.64",
"Node name for S&R": "SamplerCustomAdvanced"
},
"widgets_values": []
},
{
"id": 121,
"type": "UnetLoaderGGUFDisTorch2MultiGPU",
"pos": [
2627.078125,
-58.38229751586914
],
"size": [
335.6441345214844,
154
],
"flags": {},
"order": 5,
"mode": 0,
"inputs": [],
"outputs": [
{
"name": "MODEL",
"type": "MODEL",
"links": [
157,
158
]
}
],
"properties": {
"Node name for S&R": "UnetLoaderGGUFDisTorch2MultiGPU"
},
"widgets_values": [
"hunyuan-video-t2v-720p-Q8_0.gguf",
"cuda:0",
8,
"cpu",
""
],
"color": "#233",
"bgcolor": "#355"
},
{
"id": 120,
"type": "DualCLIPLoaderGGUFMultiGPU",
"pos": [
2629.646484375,
143.52830505371094
2600.616455078125,
79.9447250366211
],
"size": [
348.16229248046875,
130
],
"flags": {},
"order": 6,
"order": 3,
"mode": 0,
"inputs": [],
"outputs": [
@@ -615,6 +378,8 @@
}
],
"properties": {
"cnr_id": "comfyui-multigpu",
"ver": "0d6dfc7524472943ba912a6ec3088757edba15c3",
"Node name for S&R": "DualCLIPLoaderGGUFMultiGPU"
},
"widgets_values": [
@@ -623,8 +388,271 @@
"hunyuan_video",
"cpu"
],
"color": "#233",
"bgcolor": "#355"
"color": "#008181",
"bgcolor": "rgba(24,24,27,.9)"
},
{
"id": 76,
"type": "VAELoaderMultiGPU",
"pos": [
2582.493408203125,
273.3041076660156
],
"size": [
341.07464599609375,
87.14057922363281
],
"flags": {},
"order": 4,
"mode": 0,
"inputs": [],
"outputs": [
{
"name": "VAE",
"type": "VAE",
"slot_index": 0,
"links": [
99
]
}
],
"properties": {
"cnr_id": "comfyui-multigpu",
"ver": "0d6dfc7524472943ba912a6ec3088757edba15c3",
"Node name for S&R": "VAELoaderMultiGPU"
},
"widgets_values": [
"hunyuan_video_vae_bf16.safetensors",
"cuda:1"
],
"color": "#008181",
"bgcolor": "rgba(24,24,27,.9)"
},
{
"id": 66,
"type": "BasicScheduler",
"pos": [
3250.771484375,
41.81864929199219
],
"size": [
210,
109.8011474609375
],
"flags": {},
"order": 9,
"mode": 0,
"inputs": [
{
"name": "model",
"type": "MODEL",
"link": 160
}
],
"outputs": [
{
"name": "SIGMAS",
"type": "SIGMAS",
"links": [
90
]
}
],
"properties": {
"cnr_id": "comfy-core",
"ver": "0.3.64",
"Node name for S&R": "BasicScheduler"
},
"widgets_values": [
"simple",
8,
1
]
},
{
"id": 123,
"type": "UnetLoaderGGUFDisTorchMultiGPU",
"pos": [
2600.939453125,
-143.72315979003906
],
"size": [
327.8580017089844,
154
],
"flags": {},
"order": 5,
"mode": 0,
"inputs": [],
"outputs": [
{
"name": "MODEL",
"type": "MODEL",
"links": [
159,
160
]
}
],
"properties": {
"cnr_id": "comfyui-multigpu",
"ver": "0d6dfc7524472943ba912a6ec3088757edba15c3",
"Node name for S&R": "UnetLoaderGGUFDisTorchMultiGPU"
},
"widgets_values": [
"fast-hunyuan-video-t2v-720p-Q4_K_M.gguf",
"cuda:0",
4,
true,
""
],
"color": "#008181",
"bgcolor": "rgba(24,24,27,.9)"
},
{
"id": 122,
"type": "MarkdownNote",
"pos": [
1895.963134765625,
-237.00189208984375
],
"size": [
648.826904296875,
649.345947265625
],
"flags": {},
"order": 6,
"mode": 0,
"inputs": [],
"outputs": [],
"title": "ComfyUI-MultiGPU Note - THIS WORKFLOW IS DEPRECATED. USE DISTORCH2 NODES",
"properties": {},
"widgets_values": [
"###THIS WORKFLOW IS DEPRECATED. USE DISTORCH2 NODES\n\nA DisTorch Hunyuan Video workflow with GGUF UNet DisTorch to test Hunyuan Video integration. In this case we are using the DisTorch2 node to statically allocate approximately half of the main UNet model to the cpu.\n\n## Custom Node\n- [ComfyUI-GGUF](https://github.com/city96/ComfyUI-GGUF)\n- [ComfyUI-MultiGPU](https://github.com/pollockjj/ComfyUI-MultiGPU)\n```\n📂 ComfyUI/\n├── 📂 custom_nodes/\n│ ├── 📂 ComfyUI-GGUF/\n│ ├── 📂 ComfyUI-MultiGPU/\n```\n## Model links\n\n**Diffusion model**\n- [fast-hunyuan-video-t2v-720p-Q4_K_M.gguf](https://huggingface.co/city96/FastHunyuan-gguf/resolve/main/fast-hunyuan-video-t2v-720p-Q4_K_M.gguf)\n\n**CLIP**\n- [llava-llama-3-8B-v1_1-Q4_K_M.gguf](https://huggingface.co/city96/llava-llama-3-8b-v1_1-imat-gguf/resolve/main/llava-llama-3-8B-v1_1-Q4_K_M.gguf)\n\n**VAE**\n- [hunyuan_video_vae_bf16.safetensors](https://huggingface.co/Kijai/HunyuanVideo_comfy/resolve/main/hunyuan_video_vae_bf16.safetensors)\n\nModel Storage Location\n\n```\n📂 ComfyUI/\n├── 📂 models/\n│ ├── 📂 clip/\n│ │ └── llava-llama-3-8B-v1_1-Q4_K_M.gguf\n│ │ └── clip_l.safetensors\n│ ├── 📂 unet/\n│ │ ├── fast-hunyuan-video-t2v-720p-Q4_K_M.gguf [🟩🟩🟩🟩🟪🟪🟪🟪🟪🟪]\n│ ├── 📂 vae/\n│ │ └── hunyuan_video_vae_bf16.safetensors\n```\n\n```\n🖥️ Device Mapping\n├── 🟢 cuda:0\n│ └── fast-hunyuan-video-t2v-720p-Q4_K_M.gguf [🟩🟩🟩🟩]\n├── 🟣 cuda:1\n│ └── fast-hunyuan-video-t2v-720p-Q4_K_M.gguf [🟪🟪🟪🟪🟪🟪]\n│ └── qwen_image_vae.safetensors\n├── ⚙️ cpu\n └── llava-llama-3-8B-v1_1-Q4_K_M.gguf\n └── clip_l.safetensors\n```"
],
"color": "#008181",
"bgcolor": "rgba(24,24,27,.9)"
},
{
"id": 67,
"type": "CLIPTextEncode",
"pos": [
2989.010986328125,
-159.98072814941406
],
"size": [
462.5758972167969,
155.9339599609375
],
"flags": {},
"order": 7,
"mode": 0,
"inputs": [
{
"name": "clip",
"type": "CLIP",
"link": 156
}
],
"outputs": [
{
"name": "CONDITIONING",
"type": "CONDITIONING",
"slot_index": 0,
"links": [
83
]
}
],
"title": "CLIP Text Encode (Positive Prompt)",
"properties": {
"cnr_id": "comfy-core",
"ver": "0.3.64",
"Node name for S&R": "CLIPTextEncode"
},
"widgets_values": [
"A neon blue-green frog with vibrant neon purple spots stares forward with its left eye moving subtly. The frog's skin is textured with small bumps, and its spots appear in irregular patterns across its head and face. The eye is round and black with a subtle shine. The head is slightly tilted to its left, and the body is barely visible. The background is a flat, solid deep blue color, extending beyond the frog in all directions. The overall lighting is bright and diffused, creating a soft appearance."
],
"color": "#232",
"bgcolor": "#353"
},
{
"id": 70,
"type": "VHS_VideoCombine",
"pos": [
3878.080810546875,
-565.3644409179688
],
"size": [
338.94024658203125,
902.6787109375
],
"flags": {},
"order": 14,
"mode": 0,
"inputs": [
{
"name": "images",
"type": "IMAGE",
"link": 82
},
{
"name": "audio",
"shape": 7,
"type": "AUDIO",
"link": null
},
{
"name": "meta_batch",
"shape": 7,
"type": "VHS_BatchManager",
"link": null
},
{
"name": "vae",
"shape": 7,
"type": "VAE",
"link": null
}
],
"outputs": [
{
"name": "Filenames",
"type": "VHS_FILENAMES",
"links": null
}
],
"properties": {
"cnr_id": "comfyui-videohelpersuite",
"ver": "08e8df15db24da292d4b7f943c460dc2ab442b24",
"Node name for S&R": "VHS_VideoCombine"
},
"widgets_values": {
"frame_rate": 24,
"loop_count": 0,
"filename_prefix": "DisTorch",
"format": "video/h264-mp4",
"pix_fmt": "yuv420p",
"crf": 19,
"save_metadata": true,
"trim_to_audio": false,
"pingpong": false,
"save_output": true,
"videopreview": {
"hidden": false,
"paused": false,
"params": {
"filename": "DisTorch2_00003.mp4",
"subfolder": "",
"type": "output",
"format": "video/h264-mp4",
"frame_rate": 24,
"workflow": "DisTorch2_00003.png",
"fullpath": "/home/johnj/ComfyUI/output/DisTorch2_00003.mp4"
},
"muted": false
}
}
}
],
"links": [
@@ -725,52 +753,38 @@
"CLIP"
],
[
157,
121,
159,
123,
0,
73,
0,
"MODEL"
],
[
158,
121,
160,
123,
0,
66,
0,
"MODEL"
]
],
"groups": [
{
"id": 1,
"title": "GGUFDisTorchMultiGPU",
"bounding": [
2620.569091796875,
-121.6815185546875,
360.4816589355469,
537.903076171875
],
"color": "#8AA",
"font_size": 24,
"flags": {}
}
],
"groups": [],
"config": {},
"extra": {
"ds": {
"scale": 1.167184107045179,
"scale": 0.8769226950001346,
"offset": [
-2141.8625685908787,
473.0554876075415
-2364.1344798750674,
831.4510265639095
]
},
"frontendVersion": "1.27.10",
"ue_links": [],
"VHS_latentpreview": false,
"VHS_latentpreviewrate": 0,
"VHS_MetadataImage": true,
"VHS_KeepIntermediate": true,
"frontendVersion": "1.24.4"
"VHS_KeepIntermediate": true
},
"version": 0.4
}
Binary file not shown.

After

Width:  |  Height:  |  Size: 216 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 93 KiB

@@ -1,8 +1,8 @@
{
"id": "d21a2457-c2bf-4733-b2e9-42352b1dd20d",
"id": "c76df118-f3eb-4efa-93d1-18626df4f016",
"revision": 0,
"last_node_id": 11,
"last_link_id": 17,
"last_node_id": 44,
"last_link_id": 87,
"nodes": [
{
"id": 7,
@@ -16,13 +16,13 @@
180.6060791015625
],
"flags": {},
"order": 3,
"order": 4,
"mode": 0,
"inputs": [
{
"name": "clip",
"type": "CLIP",
"link": 16
"link": 87
}
],
"outputs": [
@@ -31,15 +31,17 @@
"type": "CONDITIONING",
"slot_index": 0,
"links": [
6
52
]
}
],
"properties": {
"cnr_id": "comfy-core",
"ver": "0.3.64",
"Node name for S&R": "CLIPTextEncode"
},
"widgets_values": [
"text, watermark"
""
]
},
{
@@ -47,35 +49,35 @@
"type": "KSampler",
"pos": [
863,
186
187
],
"size": [
315,
474
],
"flags": {},
"order": 4,
"order": 5,
"mode": 0,
"inputs": [
{
"name": "model",
"type": "MODEL",
"link": 14
"link": 86
},
{
"name": "positive",
"type": "CONDITIONING",
"link": 4
"link": 46
},
{
"name": "negative",
"type": "CONDITIONING",
"link": 6
"link": 52
},
{
"name": "latent_image",
"type": "LATENT",
"link": 2
"link": 38
}
],
"outputs": [
@@ -84,124 +86,22 @@
"type": "LATENT",
"slot_index": 0,
"links": [
7
35
]
}
],
"properties": {
"cnr_id": "comfy-core",
"ver": "0.3.64",
"Node name for S&R": "KSampler"
},
"widgets_values": [
262971817904402,
363535877769015,
"randomize",
20,
8,
30,
4.5,
"euler",
"normal",
1
]
},
{
"id": 8,
"type": "VAEDecode",
"pos": [
1209,
188
],
"size": [
210,
46
],
"flags": {},
"order": 5,
"mode": 0,
"inputs": [
{
"name": "samples",
"type": "LATENT",
"link": 7
},
{
"name": "vae",
"type": "VAE",
"link": 17
}
],
"outputs": [
{
"name": "IMAGE",
"type": "IMAGE",
"slot_index": 0,
"links": [
9
]
}
],
"properties": {
"Node name for S&R": "VAEDecode"
},
"widgets_values": []
},
{
"id": 9,
"type": "SaveImage",
"pos": [
1451,
189
],
"size": [
797.607666015625,
781.645263671875
],
"flags": {},
"order": 6,
"mode": 0,
"inputs": [
{
"name": "images",
"type": "IMAGE",
"link": 9
}
],
"outputs": [],
"properties": {
"Node name for S&R": "SaveImage"
},
"widgets_values": [
"ComfyUI"
]
},
{
"id": 5,
"type": "EmptyLatentImage",
"pos": [
473,
609
],
"size": [
315,
106
],
"flags": {},
"order": 0,
"mode": 0,
"inputs": [],
"outputs": [
{
"name": "LATENT",
"type": "LATENT",
"slot_index": 0,
"links": [
2
]
}
],
"properties": {
"Node name for S&R": "EmptyLatentImage"
},
"widgets_values": [
1024,
1024,
"simple",
1
]
},
@@ -217,13 +117,13 @@
164.31304931640625
],
"flags": {},
"order": 2,
"order": 3,
"mode": 0,
"inputs": [
{
"name": "clip",
"type": "CLIP",
"link": 15
"link": 84
}
],
"outputs": [
@@ -232,23 +132,105 @@
"type": "CONDITIONING",
"slot_index": 0,
"links": [
4
46
]
}
],
"properties": {
"cnr_id": "comfy-core",
"ver": "0.3.64",
"Node name for S&R": "CLIPTextEncode"
},
"widgets_values": [
"A towering technological monolith in a cyberpunk cityscape at night, with \"DisTorch 2\" emblazoned across its surface in massive neon blue-green mixed with purple letters that illuminate the surrounding buildings. The text occupies the central third of the frame, crafted from glowing plasma tubes and crackling energy. Rain-slicked streets below reflect the brilliant signage, while holographic advertisements and flying vehicles populate the background. Moody atmospheric lighting, heavy contrast, photorealistic textures, cinematic color grading. \"Now for .safetensors!\" in same stying but smaller font as a splash overlay in the right-hand corner of the image "
"A neon blue-green frog with vibrant neon purple spots stares forward with its left eye moving subtly. The frog's skin is textured with small bumps, and its spots appear in irregular patterns across its head and face. The eye is round and black with a subtle shine. The head is slightly tilted to its left, and the body is barely visible. The background is a flat, solid deep blue color, extending beyond the frog in all directions. The camera zooms in slowly on the frog's eye and the frog looks directly at the viewer. The overall lighting is bright and diffused, creating a soft appearance."
]
},
{
"id": 11,
"id": 21,
"type": "EmptyMochiLatentVideo",
"pos": [
478.55859375,
635.787353515625
],
"size": [
315,
130
],
"flags": {},
"order": 0,
"mode": 0,
"inputs": [],
"outputs": [
{
"name": "LATENT",
"type": "LATENT",
"slot_index": 0,
"links": [
38
]
}
],
"properties": {
"cnr_id": "comfy-core",
"ver": "0.3.64",
"Node name for S&R": "EmptyMochiLatentVideo"
},
"widgets_values": [
848,
480,
25,
1
]
},
{
"id": 8,
"type": "VAEDecode",
"pos": [
898.748046875,
704.1561279296875
],
"size": [
210,
46
],
"flags": {},
"order": 6,
"mode": 0,
"inputs": [
{
"name": "samples",
"type": "LATENT",
"link": 35
},
{
"name": "vae",
"type": "VAE",
"link": 85
}
],
"outputs": [
{
"name": "IMAGE",
"type": "IMAGE",
"slot_index": 0,
"links": [
56
]
}
],
"properties": {
"cnr_id": "comfy-core",
"ver": "0.3.64",
"Node name for S&R": "VAEDecode"
},
"widgets_values": []
},
{
"id": 44,
"type": "CheckpointLoaderAdvancedDisTorch2MultiGPU",
"pos": [
-135.86851501464844,
203.48403930664062
-1.363607406616211,
200.74766540527344
],
"size": [
397.9400329589844,
@@ -263,32 +245,34 @@
"name": "MODEL",
"type": "MODEL",
"links": [
14
86
]
},
{
"name": "CLIP",
"type": "CLIP",
"links": [
15,
16
84,
87
]
},
{
"name": "VAE",
"type": "VAE",
"links": [
17
85
]
}
],
"properties": {
"cnr_id": "comfyui-multigpu",
"ver": "0d6dfc7524472943ba912a6ec3088757edba15c3",
"Node name for S&R": "CheckpointLoaderAdvancedDisTorch2MultiGPU"
},
"widgets_values": [
"Juggernaut-XL_v9_RunDiffusionPhoto_v2.safetensors",
"mochi_preview_fp8_scaled.safetensors",
"cuda:0",
1.1,
5,
"cpu",
"cuda:1",
2,
@@ -298,21 +282,88 @@
"",
true
],
"color": "#233",
"bgcolor": "#355"
"color": "#008181",
"bgcolor": "rgba(24,24,27,.9)"
},
{
"id": 41,
"type": "MarkdownNote",
"pos": [
-570.2321166992188,
151.1495361328125
],
"size": [
542.65576171875,
531.9367065429688
],
"flags": {},
"order": 2,
"mode": 0,
"inputs": [],
"outputs": [],
"title": "ComfyUI-MultiGPU - CheckpointLoaderAdvancedDisTorch2MultiGPU",
"properties": {},
"widgets_values": [
"A mochi all-in-one checkpoint to test ComfyUI-MultiGPU CheckpointLoaderAdvancedDisTorch2 functionality. In this case we are offloading 45% of the UNet, 55% of the CLIP, and assigning the VAE device independently\n## Custom Node\n\n- [ComfyUI-MultiGPU](https://github.com/pollockjj/ComfyUI-MultiGPU)\n```\n📂 ComfyUI/\n├── 📂 custom_nodes/\n│ ├── 📂 ComfyUI-MultiGPU/\n```\n## Model links\n\n**checkpoints**\n\n - [mochi_preview_fp8_scaled.safetensors](https://huggingface.co/Comfy-Org/mochi_preview_repackaged/blob/main/all_in_one/mochi_preview_fp8_scaled.safetensors) \n\n```\n📂 ComfyUI/\n├─ 📂 models/\n│ ├─ 📂 checkpoints/\n│ │ └── mochi_preview_fp8_scaled.safetensors [🟩🟩🟩🟪🟪⚙️⚙️⚙️⚙️⚙️]\n```\n## Device Mapping (Example: Two GPUs, 1 CPU)\n```\n🖥️ system \n├── 🟢 cuda:0\n│ └── mochi_preview_fp8_scaled.safetensors - UNet [ 🟩🟩🟩]\n├── 🟣 cuda:1\n│ └── mochi_preview_fp8_scaled.safetensors - CLIP [🟪🟪]\n│ └── mochi_preview_fp8_scaled.safetensors - VAE\n├── ⚙️ cpu\n └── mochi_preview_fp8_scaled.safetensors - UNET [⚙️⚙️⚙️]\n └── mochi_preview_fp8_scaled.safetensors - CLIP [⚙️⚙️]\n```"
],
"color": "#008181",
"bgcolor": "rgba(24,24,27,.9)"
},
{
"id": 28,
"type": "SaveAnimatedWEBP",
"pos": [
1216.383056640625,
160.4508056640625
],
"size": [
847.3048706054688,
625.6065673828125
],
"flags": {},
"order": 7,
"mode": 0,
"inputs": [
{
"name": "images",
"type": "IMAGE",
"link": 56
}
],
"outputs": [],
"properties": {
"cnr_id": "comfy-core",
"ver": "0.3.64",
"Node name for S&R": "SaveAnimatedWEBP"
},
"widgets_values": [
"MultiGPU",
24,
false,
90,
"default"
]
}
],
"links": [
[
2,
5,
35,
3,
0,
8,
0,
"LATENT"
],
[
38,
21,
0,
3,
3,
"LATENT"
],
[
4,
46,
6,
0,
3,
@@ -320,7 +371,7 @@
"CONDITIONING"
],
[
6,
52,
7,
0,
3,
@@ -328,65 +379,57 @@
"CONDITIONING"
],
[
7,
3,
0,
56,
8,
0,
"LATENT"
],
[
9,
8,
0,
9,
28,
0,
"IMAGE"
],
[
14,
11,
84,
44,
1,
6,
0,
"CLIP"
],
[
85,
44,
2,
8,
1,
"VAE"
],
[
86,
44,
0,
3,
0,
"MODEL"
],
[
15,
11,
1,
6,
0,
"CLIP"
],
[
16,
11,
87,
44,
1,
7,
0,
"CLIP"
],
[
17,
11,
2,
8,
1,
"VAE"
]
],
"groups": [],
"config": {},
"extra": {
"ds": {
"scale": 0.6593771753936349,
"scale": 0.8390545288824313,
"offset": [
1007.5875606954307,
245.85267454738732
575.1578342200211,
87.97767931514372
]
},
"frontendVersion": "1.25.11",
"frontendVersion": "1.27.10",
"VHS_latentpreview": false,
"VHS_latentpreviewrate": 0,
"VHS_MetadataImage": true,
Binary file not shown.

After

Width:  |  Height:  |  Size: 261 KiB

+547
View File
@@ -0,0 +1,547 @@
{
"id": "c69a80ce-b881-4188-8e81-13ec32dd4c91",
"revision": 0,
"last_node_id": 79,
"last_link_id": 140,
"nodes": [
{
"id": 66,
"type": "ModelSamplingAuraFlow",
"pos": [
459.40179443359375,
-35.1873779296875
],
"size": [
270,
58
],
"flags": {},
"order": 5,
"mode": 0,
"inputs": [
{
"name": "model",
"type": "MODEL",
"link": 138
}
],
"outputs": [
{
"name": "MODEL",
"type": "MODEL",
"links": [
125
]
}
],
"properties": {
"cnr_id": "comfy-core",
"ver": "0.3.64",
"Node name for S&R": "ModelSamplingAuraFlow"
},
"widgets_values": [
3.1000000000000005
]
},
{
"id": 70,
"type": "VAELoaderMultiGPU",
"pos": [
-30.621204376220703,
408.86016845703125
],
"size": [
367.14569091796875,
82
],
"flags": {},
"order": 0,
"mode": 0,
"inputs": [],
"outputs": [
{
"name": "VAE",
"type": "VAE",
"links": [
130
]
}
],
"properties": {
"cnr_id": "comfyui-multigpu",
"ver": "0d6dfc7524472943ba912a6ec3088757edba15c3",
"Node name for S&R": "VAELoaderMultiGPU"
},
"widgets_values": [
"qwen_image_vae.safetensors",
"cuda:1"
],
"color": "#008181",
"bgcolor": "rgba(24,24,27,.9)"
},
{
"id": 7,
"type": "CLIPTextEncode",
"pos": [
422.6140441894531,
397.7400207519531
],
"size": [
425.27801513671875,
182.3540496826172
],
"flags": {
"collapsed": true
},
"order": 7,
"mode": 0,
"inputs": [
{
"name": "clip",
"type": "CLIP",
"link": 140
}
],
"outputs": [
{
"name": "CONDITIONING",
"type": "CONDITIONING",
"slot_index": 0,
"links": [
52
]
}
],
"title": "CLIP Text Encode (Negative Prompt)",
"properties": {
"cnr_id": "comfy-core",
"ver": "0.3.64",
"Node name for S&R": "CLIPTextEncode"
},
"widgets_values": [
" "
],
"color": "#322",
"bgcolor": "#533"
},
{
"id": 58,
"type": "EmptySD3LatentImage",
"pos": [
448.2394104003906,
480.706787109375
],
"size": [
270,
106
],
"flags": {},
"order": 1,
"mode": 0,
"inputs": [],
"outputs": [
{
"name": "LATENT",
"type": "LATENT",
"links": [
107
]
}
],
"properties": {
"cnr_id": "comfy-core",
"ver": "0.3.64",
"Node name for S&R": "EmptySD3LatentImage"
},
"widgets_values": [
1328,
1328,
1
]
},
{
"id": 6,
"type": "CLIPTextEncode",
"pos": [
415,
186
],
"size": [
422.84503173828125,
164.31304931640625
],
"flags": {},
"order": 6,
"mode": 0,
"inputs": [
{
"name": "clip",
"type": "CLIP",
"link": 139
}
],
"outputs": [
{
"name": "CONDITIONING",
"type": "CONDITIONING",
"slot_index": 0,
"links": [
46
]
}
],
"title": "CLIP Text Encode (Positive Prompt)",
"properties": {
"cnr_id": "comfy-core",
"ver": "0.3.64",
"Node name for S&R": "CLIPTextEncode"
},
"widgets_values": [
"A towering technological monolith in a cyberpunk cityscape at night, with \"QWEN Image DisTorch 2\" emblazoned across its surface in massive neon blue-green mixed with purple letters that illuminate the surrounding buildings. The text occupies the central third of the frame, crafted from glowing plasma tubes and crackling energy. Rain-slicked streets below reflect the brilliant signage, while holographic advertisements and flying vehicles populate the background. Moody atmospheric lighting, heavy contrast, photorealistic textures, cinematic color grading. "
],
"color": "#232",
"bgcolor": "#353"
},
{
"id": 78,
"type": "UNETLoaderDisTorch2MultiGPU",
"pos": [
-22.603160858154297,
-167.50906372070312
],
"size": [
342.4831237792969,
202
],
"flags": {},
"order": 2,
"mode": 0,
"inputs": [],
"outputs": [
{
"name": "MODEL",
"type": "MODEL",
"links": [
138
]
}
],
"properties": {
"cnr_id": "comfyui-multigpu",
"ver": "0d6dfc7524472943ba912a6ec3088757edba15c3",
"Node name for S&R": "UNETLoaderDisTorch2MultiGPU"
},
"widgets_values": [
"qwen_image_fp8_e4m3fn.safetensors",
"default",
"cuda:0",
14,
"cpu",
"",
true
],
"color": "#008181",
"bgcolor": "rgba(24,24,27,.9)"
},
{
"id": 79,
"type": "CLIPLoaderDisTorch2MultiGPU",
"pos": [
-23.14051055908203,
105.53752899169922
],
"size": [
355.2030334472656,
217.1029052734375
],
"flags": {},
"order": 3,
"mode": 0,
"inputs": [],
"outputs": [
{
"name": "CLIP",
"type": "CLIP",
"links": [
139,
140
]
}
],
"properties": {
"cnr_id": "comfyui-multigpu",
"ver": "0d6dfc7524472943ba912a6ec3088757edba15c3",
"Node name for S&R": "CLIPLoaderDisTorch2MultiGPU"
},
"widgets_values": [
"qwen_2.5_vl_7b_fp8_scaled.safetensors",
"qwen_image",
"cuda:1",
3.9,
"cpu",
"",
false
],
"color": "#008181",
"bgcolor": "rgba(24,24,27,.9)"
},
{
"id": 60,
"type": "SaveImage",
"pos": [
1304.51025390625,
-224.49746704101562
],
"size": [
821.0496215820312,
871.7067260742188
],
"flags": {},
"order": 10,
"mode": 0,
"inputs": [
{
"name": "images",
"type": "IMAGE",
"link": 110
}
],
"outputs": [],
"properties": {
"cnr_id": "comfy-core",
"ver": "0.3.64",
"Node name for S&R": "SaveImage"
},
"widgets_values": [
"MultiGPU"
]
},
{
"id": 75,
"type": "MarkdownNote",
"pos": [
-599.9403076171875,
-190.50645446777344
],
"size": [
546.3931274414062,
702.6599731445312
],
"flags": {},
"order": 4,
"mode": 0,
"inputs": [],
"outputs": [],
"title": "ComfyUI-MultiGPU Note - UNET, DualClipLoader DisTorch2 Workflow",
"properties": {},
"widgets_values": [
"A DisTorch2 QWEN Image workflow with UNet and CLIP DisTorch2. In this case we are using the DisTorch2 node to statically allocate approximately 70% of the UNet model (14.0G) to the cpu and 50% of the CLIP model (3.9G) to cpu. With `eject_models` being `True`, all other models on the `compute` card (`cuda:0`) will be unloaded, regardless of size, ensuring a clean compute card prior to inference.\n\n## Custom Node\n- [ComfyUI-MultiGPU](https://github.com/pollockjj/ComfyUI-MultiGPU)\n```\n📂 ComfyUI/\n├── 📂 custom_nodes/\n│ ├── 📂 ComfyUI-MultiGPU/\n```\n## Model links\n\n**Diffusion model**\n- [qwen_image_fp8_e4m3fn.safetensors](https://huggingface.co/Comfy-Org/Qwen-Image_ComfyUI/blob/main/split_files/diffusion_models/qwen_image_fp8_e4m3fn.safetensors)\n\n**CLIP**\n- [qwen_2.5_vl_7b_fp8_scaled.safetensors](https://huggingface.co/Comfy-Org/Qwen-Image_ComfyUI/blob/main/split_files/text_encoders/qwen_2.5_vl_7b_fp8_scaled.safetensors)\n\n**VAE**\n- [qwen_image_vae.safetensors](https://huggingface.co/Comfy-Org/Qwen-Image_ComfyUI/blob/main/split_files/vae/qwen_image_vae.safetensors)\n\nModel Storage Location\n\n```\n📂 ComfyUI/\n├── 📂 models/\n│ ├── 📂 clip/\n│ │ └── qwen_2.5_vl_7b_fp8_scaled.safetensors [🟪🟪🟪🟪🟪⚙️⚙️⚙️⚙️⚙️]\n│ ├── 📂 unet/\n│ │ ├── qwen_image_fp8_e4m3fn.safetensors [🟩🟩🟩⚙️⚙️⚙️⚙️⚙️⚙️⚙️]\n│ ├── 📂 vae/\n│ │ └── qwen_image_vae.safetensors \n```\n## Device Mapping (Example: Two GPUs, 1 CPU)\n```\n🖥️ system \n├── 🟢 cuda:0\n│ └── qwen_image_fp8_e4m3fn.safetensors [🟩🟩🟩]\n├── 🟣 cuda:1\n│ └── qwen_2.5_vl_7b_fp8_scaled.safetensors[🟪🟪🟪🟪🟪]\n│ └── qwen_image_vae.safetensors\n├── ⚙️ cpu\n └── qwen_image_fp8_e4m3fn.safetensors [⚙️⚙️⚙️⚙️⚙️⚙️⚙️]\n └── qwen_2.5_vl_7b_fp8_scaled.safetensors [⚙️⚙️⚙️⚙️⚙️]\n```"
],
"color": "#008181",
"bgcolor": "rgba(24,24,27,.9)"
},
{
"id": 3,
"type": "KSampler",
"pos": [
922.4367065429688,
125.62214660644531
],
"size": [
315,
474
],
"flags": {},
"order": 8,
"mode": 0,
"inputs": [
{
"name": "model",
"type": "MODEL",
"link": 125
},
{
"name": "positive",
"type": "CONDITIONING",
"link": 46
},
{
"name": "negative",
"type": "CONDITIONING",
"link": 52
},
{
"name": "latent_image",
"type": "LATENT",
"link": 107
}
],
"outputs": [
{
"name": "LATENT",
"type": "LATENT",
"slot_index": 0,
"links": [
128
]
}
],
"properties": {
"cnr_id": "comfy-core",
"ver": "0.3.64",
"Node name for S&R": "KSampler"
},
"widgets_values": [
133236841455355,
"randomize",
20,
2.5,
"euler",
"simple",
1
]
},
{
"id": 8,
"type": "VAEDecode",
"pos": [
986.2562866210938,
-31.995906829833984
],
"size": [
210,
46
],
"flags": {},
"order": 9,
"mode": 0,
"inputs": [
{
"name": "samples",
"type": "LATENT",
"link": 128
},
{
"name": "vae",
"type": "VAE",
"link": 130
}
],
"outputs": [
{
"name": "IMAGE",
"type": "IMAGE",
"slot_index": 0,
"links": [
110
]
}
],
"properties": {
"cnr_id": "comfy-core",
"ver": "0.3.64",
"Node name for S&R": "VAEDecode"
},
"widgets_values": []
}
],
"links": [
[
46,
6,
0,
3,
1,
"CONDITIONING"
],
[
52,
7,
0,
3,
2,
"CONDITIONING"
],
[
107,
58,
0,
3,
3,
"LATENT"
],
[
110,
8,
0,
60,
0,
"IMAGE"
],
[
125,
66,
0,
3,
0,
"MODEL"
],
[
128,
3,
0,
8,
0,
"LATENT"
],
[
130,
70,
0,
8,
1,
"VAE"
],
[
138,
78,
0,
66,
0,
"MODEL"
],
[
139,
79,
0,
6,
0,
"CLIP"
],
[
140,
79,
0,
7,
0,
"CLIP"
]
],
"groups": [],
"config": {},
"extra": {
"ds": {
"scale": 0.762776844438556,
"offset": [
794.0740721421819,
403.6876353762771
]
},
"frontendVersion": "1.27.10",
"VHS_latentpreview": false,
"VHS_latentpreviewrate": 0,
"VHS_MetadataImage": true,
"VHS_KeepIntermediate": true
},
"version": 0.4
}
Binary file not shown.

After

Width:  |  Height:  |  Size: 132 KiB

@@ -0,0 +1,711 @@
{
"id": "ad18abd3-bdee-4f80-8fae-d15d4f845b9d",
"revision": 0,
"last_node_id": 73,
"last_link_id": 191,
"nodes": [
{
"id": 67,
"type": "ModelSamplingAuraFlow",
"pos": [
115.86839294433594,
-103.43475341796875
],
"size": [
270,
58
],
"flags": {},
"order": 6,
"mode": 0,
"inputs": [
{
"name": "model",
"type": "MODEL",
"link": 191
}
],
"outputs": [
{
"name": "MODEL",
"type": "MODEL",
"links": [
177
]
}
],
"properties": {
"cnr_id": "comfy-core",
"ver": "0.3.64",
"Node name for S&R": "ModelSamplingAuraFlow"
},
"widgets_values": [
3.1
]
},
{
"id": 8,
"type": "VAEDecode",
"pos": [
1020,
-10
],
"size": [
210,
46
],
"flags": {},
"order": 11,
"mode": 0,
"inputs": [
{
"name": "samples",
"type": "LATENT",
"link": 175
},
{
"name": "vae",
"type": "VAE",
"link": 188
}
],
"outputs": [
{
"name": "IMAGE",
"type": "IMAGE",
"slot_index": 0,
"links": [
9
]
}
],
"properties": {
"cnr_id": "comfy-core",
"ver": "0.3.64",
"Node name for S&R": "VAEDecode"
},
"widgets_values": []
},
{
"id": 9,
"type": "SaveImage",
"pos": [
1250,
-10
],
"size": [
985.3012084960938,
1060.3828125
],
"flags": {},
"order": 12,
"mode": 0,
"inputs": [
{
"name": "images",
"type": "IMAGE",
"link": 9
}
],
"outputs": [],
"properties": {
"cnr_id": "comfy-core",
"ver": "0.3.64",
"Node name for S&R": "SaveImage"
},
"widgets_values": [
"ComfyUI"
]
},
{
"id": 69,
"type": "TextEncodeQwenImageEditPlus",
"pos": [
120,
300
],
"size": [
420,
220
],
"flags": {},
"order": 8,
"mode": 0,
"inputs": [
{
"name": "clip",
"type": "CLIP",
"link": 189
},
{
"name": "vae",
"shape": 7,
"type": "VAE",
"link": 186
},
{
"name": "image1",
"shape": 7,
"type": "IMAGE",
"link": 183
},
{
"name": "image2",
"shape": 7,
"type": "IMAGE",
"link": null
},
{
"name": "image3",
"shape": 7,
"type": "IMAGE",
"link": null
}
],
"outputs": [
{
"name": "CONDITIONING",
"type": "CONDITIONING",
"links": [
179
]
}
],
"properties": {
"cnr_id": "comfy-core",
"ver": "0.3.64",
"Node name for S&R": "TextEncodeQwenImageEditPlus"
},
"widgets_values": [
""
],
"color": "#322",
"bgcolor": "#533"
},
{
"id": 65,
"type": "KSampler",
"pos": [
730,
-10
],
"size": [
270,
474
],
"flags": {},
"order": 10,
"mode": 0,
"inputs": [
{
"name": "model",
"type": "MODEL",
"link": 171
},
{
"name": "positive",
"type": "CONDITIONING",
"link": 180
},
{
"name": "negative",
"type": "CONDITIONING",
"link": 179
},
{
"name": "latent_image",
"type": "LATENT",
"link": 174
}
],
"outputs": [
{
"name": "LATENT",
"type": "LATENT",
"links": [
175
]
}
],
"properties": {
"cnr_id": "comfy-core",
"ver": "0.3.64",
"Node name for S&R": "KSampler"
},
"widgets_values": [
335077606572951,
"randomize",
20,
4,
"euler",
"simple",
1
]
},
{
"id": 64,
"type": "CFGNorm",
"pos": [
410,
-100
],
"size": [
270,
58
],
"flags": {},
"order": 9,
"mode": 4,
"inputs": [
{
"name": "model",
"type": "MODEL",
"link": 177
}
],
"outputs": [
{
"name": "patched_model",
"type": "MODEL",
"links": [
171
]
}
],
"properties": {
"cnr_id": "comfy-core",
"ver": "0.3.64",
"Node name for S&R": "CFGNorm"
},
"widgets_values": [
1
]
},
{
"id": 72,
"type": "CLIPLoaderDisTorch2MultiGPU",
"pos": [
-356.6231994628906,
150.83067321777344
],
"size": [
355.2030334472656,
217.1029052734375
],
"flags": {},
"order": 0,
"mode": 0,
"inputs": [],
"outputs": [
{
"name": "CLIP",
"type": "CLIP",
"links": [
189,
190
]
}
],
"properties": {
"cnr_id": "comfyui-multigpu",
"ver": "0d6dfc7524472943ba912a6ec3088757edba15c3",
"Node name for S&R": "CLIPLoaderDisTorch2MultiGPU"
},
"widgets_values": [
"qwen_2.5_vl_7b_fp8_scaled.safetensors",
"qwen_image",
"cuda:1",
3.9,
"cpu",
"",
false
],
"color": "#008181",
"bgcolor": "rgba(24,24,27,.9)"
},
{
"id": 71,
"type": "VAELoaderMultiGPU",
"pos": [
-357.5040283203125,
434.3533020019531
],
"size": [
367.14569091796875,
82
],
"flags": {},
"order": 1,
"mode": 0,
"inputs": [],
"outputs": [
{
"name": "VAE",
"type": "VAE",
"links": [
186,
187,
188
]
}
],
"properties": {
"cnr_id": "comfyui-multigpu",
"ver": "0d6dfc7524472943ba912a6ec3088757edba15c3",
"Node name for S&R": "VAELoaderMultiGPU"
},
"widgets_values": [
"qwen_image_vae.safetensors",
"cuda:1"
],
"color": "#008181",
"bgcolor": "rgba(24,24,27,.9)"
},
{
"id": 73,
"type": "UNETLoaderDisTorch2MultiGPU",
"pos": [
-364.1524353027344,
-123.68254852294922
],
"size": [
342.4831237792969,
202
],
"flags": {},
"order": 2,
"mode": 0,
"inputs": [],
"outputs": [
{
"name": "MODEL",
"type": "MODEL",
"links": [
191
]
}
],
"properties": {
"cnr_id": "comfyui-multigpu",
"ver": "0d6dfc7524472943ba912a6ec3088757edba15c3",
"Node name for S&R": "UNETLoaderDisTorch2MultiGPU"
},
"widgets_values": [
"qwen_image_edit_2509_fp8_e4m3fn.safetensors",
"default",
"cuda:0",
7,
"cpu",
"",
true
],
"color": "#008181",
"bgcolor": "rgba(24,24,27,.9)"
},
{
"id": 66,
"type": "EmptySD3LatentImage",
"pos": [
219.75479125976562,
566.0596923828125
],
"size": [
270,
106
],
"flags": {},
"order": 3,
"mode": 0,
"inputs": [],
"outputs": [
{
"name": "LATENT",
"type": "LATENT",
"links": [
174
]
}
],
"properties": {
"cnr_id": "comfy-core",
"ver": "0.3.64",
"Node name for S&R": "EmptySD3LatentImage"
},
"widgets_values": [
720,
1280,
1
]
},
{
"id": 68,
"type": "TextEncodeQwenImageEditPlus",
"pos": [
114.59521484375,
-1.1091564893722534
],
"size": [
426.63751220703125,
265.5693054199219
],
"flags": {},
"order": 7,
"mode": 0,
"inputs": [
{
"name": "clip",
"type": "CLIP",
"link": 190
},
{
"name": "vae",
"shape": 7,
"type": "VAE",
"link": 187
},
{
"name": "image1",
"shape": 7,
"type": "IMAGE",
"link": 182
},
{
"name": "image2",
"shape": 7,
"type": "IMAGE",
"link": null
},
{
"name": "image3",
"shape": 7,
"type": "IMAGE",
"link": null
}
],
"outputs": [
{
"name": "CONDITIONING",
"type": "CONDITIONING",
"links": [
180
]
}
],
"title": "TextEncodeQwenImageEditPlus (Positive)",
"properties": {
"cnr_id": "comfy-core",
"ver": "0.3.64",
"Node name for S&R": "TextEncodeQwenImageEditPlus"
},
"widgets_values": [
"Replace \"HunyuanVideo\" with \"QWEN Image Edit\" made out of the glowy-pink-purple frog spots "
],
"color": "#232",
"bgcolor": "#353"
},
{
"id": 41,
"type": "LoadImage",
"pos": [
-688.2255249023438,
-140.61032104492188
],
"size": [
274.080078125,
314
],
"flags": {},
"order": 4,
"mode": 0,
"inputs": [],
"outputs": [
{
"name": "IMAGE",
"type": "IMAGE",
"links": [
182,
183
]
},
{
"name": "MASK",
"type": "MASK",
"links": null
}
],
"properties": {
"cnr_id": "comfy-core",
"ver": "0.3.64",
"Node name for S&R": "LoadImage"
},
"widgets_values": [
"hunyuanvideo distorch DEPRECATED (1).jpg",
"image"
]
},
{
"id": 70,
"type": "MarkdownNote",
"pos": [
-1267.5081787109375,
-165.8821258544922
],
"size": [
546.3931274414062,
702.6599731445312
],
"flags": {},
"order": 5,
"mode": 0,
"inputs": [],
"outputs": [],
"title": "ComfyUI-MultiGPU Note - qwen_image_edit_2509 UNET, DualClipLoader DisTorch2 Workflow",
"properties": {},
"widgets_values": [
"A DisTorch2 QWEN Image Edit 2509 workflow with UNet and CLIP DisTorch2. In this case we are using the DisTorch2 node to statically allocate approximately 70% of the UNet model (14.0G) to the cpu and 50% of the CLIP model (3.9G) to cpu. With `eject_models` being `True`, all other models on the `compute` card (`cuda:0`) will be unloaded, regardless of size, ensuring a clean compute card prior to inference.\n\n## Custom Node\n- [ComfyUI-MultiGPU](https://github.com/pollockjj/ComfyUI-MultiGPU)\n```\n📂 ComfyUI/\n├── 📂 custom_nodes/\n│ ├── 📂 ComfyUI-MultiGPU/\n```\n## Model links\n\n**Diffusion model**\n- [qwen_image_edit_2509_fp8_e4m3fn.safetensors](https://huggingface.co/Comfy-Org/Qwen-Image-Edit_ComfyUI/blob/main/split_files/diffusion_models/qwen_image_edit_2509_fp8_e4m3fn.safetensors)\n\n**CLIP**\n- [qwen_2.5_vl_7b_fp8_scaled.safetensors](https://huggingface.co/Comfy-Org/Qwen-Image_ComfyUI/blob/main/split_files/text_encoders/qwen_2.5_vl_7b_fp8_scaled.safetensors)\n\n**VAE**\n- [qwen_image_vae.safetensors](https://huggingface.co/Comfy-Org/Qwen-Image_ComfyUI/blob/main/split_files/vae/qwen_image_vae.safetensors)\n\nModel Storage Location\n\n```\n📂 ComfyUI/\n├── 📂 models/\n│ ├── 📂 clip/\n│ │ └── qwen_2.5_vl_7b_fp8_scaled.safetensors [🟪🟪🟪🟪🟪⚙️⚙️⚙️⚙️⚙️]\n│ ├── 📂 unet/\n│ │ ├── qwen_image_edit_2509_fp8_e4m3fn.safetensors [🟩🟩🟩⚙️⚙️⚙️⚙️⚙️⚙️⚙️]\n│ ├── 📂 vae/\n│ │ └── qwen_image_vae.safetensors \n```\n## Device Mapping (Example: Two GPUs, 1 CPU)\n```\n🖥️ system \n├── 🟢 cuda:0\n│ └── qwen_image_edit_2509_fp8_e4m3fn.safetensors [🟩🟩🟩]\n├── 🟣 cuda:1\n│ └── qwen_2.5_vl_7b_fp8_scaled.safetensors[🟪🟪🟪🟪🟪]\n│ └── qwen_image_vae.safetensors\n├── ⚙️ cpu\n └── qwen_image_edit_2509_fp8_e4m3fn.safetensors [⚙️⚙️⚙️⚙️⚙️⚙️⚙️]\n └── qwen_2.5_vl_7b_fp8_scaled.safetensors [⚙️⚙️⚙️⚙️⚙️]\n```"
],
"color": "#008181",
"bgcolor": "rgba(24,24,27,.9)"
}
],
"links": [
[
9,
8,
0,
9,
0,
"IMAGE"
],
[
171,
64,
0,
65,
0,
"MODEL"
],
[
174,
66,
0,
65,
3,
"LATENT"
],
[
175,
65,
0,
8,
0,
"LATENT"
],
[
177,
67,
0,
64,
0,
"MODEL"
],
[
179,
69,
0,
65,
2,
"CONDITIONING"
],
[
180,
68,
0,
65,
1,
"CONDITIONING"
],
[
182,
41,
0,
68,
2,
"IMAGE"
],
[
183,
41,
0,
69,
2,
"IMAGE"
],
[
186,
71,
0,
69,
1,
"VAE"
],
[
187,
71,
0,
68,
1,
"VAE"
],
[
188,
71,
0,
8,
1,
"VAE"
],
[
189,
72,
0,
69,
0,
"CLIP"
],
[
190,
72,
0,
68,
0,
"CLIP"
],
[
191,
73,
0,
67,
0,
"MODEL"
]
],
"groups": [],
"config": {},
"extra": {
"ds": {
"scale": 0.6209213230591553,
"offset": [
1393.7068112217967,
552.6271256574463
]
},
"frontendVersion": "1.27.10",
"groupNodes": {},
"VHS_latentpreview": false,
"VHS_latentpreviewrate": 0,
"VHS_MetadataImage": true,
"VHS_KeepIntermediate": true
},
"version": 0.4
}
Binary file not shown.

After

Width:  |  Height:  |  Size: 197 KiB

@@ -1,185 +1,18 @@
{
"id": "d21a2457-c2bf-4733-b2e9-42352b1dd20d",
"id": "a6ee03c8-e601-4b33-87dc-64e9ed484de8",
"revision": 0,
"last_node_id": 10,
"last_link_id": 13,
"last_node_id": 28,
"last_link_id": 64,
"nodes": [
{
"id": 7,
"type": "CLIPTextEncode",
"pos": [
413,
389
],
"size": [
425.27801513671875,
180.6060791015625
],
"flags": {},
"order": 3,
"mode": 0,
"inputs": [
{
"name": "clip",
"type": "CLIP",
"link": 12
}
],
"outputs": [
{
"name": "CONDITIONING",
"type": "CONDITIONING",
"slot_index": 0,
"links": [
6
]
}
],
"properties": {
"Node name for S&R": "CLIPTextEncode"
},
"widgets_values": [
"text, watermark"
]
},
{
"id": 3,
"type": "KSampler",
"pos": [
863,
186
],
"size": [
315,
474
],
"flags": {},
"order": 4,
"mode": 0,
"inputs": [
{
"name": "model",
"type": "MODEL",
"link": 10
},
{
"name": "positive",
"type": "CONDITIONING",
"link": 4
},
{
"name": "negative",
"type": "CONDITIONING",
"link": 6
},
{
"name": "latent_image",
"type": "LATENT",
"link": 2
}
],
"outputs": [
{
"name": "LATENT",
"type": "LATENT",
"slot_index": 0,
"links": [
7
]
}
],
"properties": {
"Node name for S&R": "KSampler"
},
"widgets_values": [
324107397495942,
"randomize",
20,
8,
"euler",
"normal",
1
]
},
{
"id": 8,
"type": "VAEDecode",
"type": "EmptyLatentImage",
"pos": [
1209,
188
991.2929077148438,
-435.2230224609375
],
"size": [
210,
46
],
"flags": {},
"order": 5,
"mode": 0,
"inputs": [
{
"name": "samples",
"type": "LATENT",
"link": 7
},
{
"name": "vae",
"type": "VAE",
"link": 13
}
],
"outputs": [
{
"name": "IMAGE",
"type": "IMAGE",
"slot_index": 0,
"links": [
9
]
}
],
"properties": {
"Node name for S&R": "VAEDecode"
},
"widgets_values": []
},
{
"id": 9,
"type": "SaveImage",
"pos": [
1451,
189
],
"size": [
797.607666015625,
781.645263671875
],
"flags": {},
"order": 6,
"mode": 0,
"inputs": [
{
"name": "images",
"type": "IMAGE",
"link": 9
}
],
"outputs": [],
"properties": {
"Node name for S&R": "SaveImage"
},
"widgets_values": [
"ComfyUI"
]
},
{
"id": 5,
"type": "EmptyLatentImage",
"pos": [
473,
609
],
"size": [
315,
106
],
"flags": {},
@@ -190,13 +23,14 @@
{
"name": "LATENT",
"type": "LATENT",
"slot_index": 0,
"links": [
2
9
]
}
],
"properties": {
"cnr_id": "comfy-core",
"ver": "0.3.64",
"Node name for S&R": "EmptyLatentImage"
},
"widgets_values": [
@@ -206,24 +40,71 @@
]
},
{
"id": 6,
"type": "CLIPTextEncode",
"id": 5,
"type": "VAEDecode",
"pos": [
415,
186
1592.0411376953125,
-260.3390808105469
],
"size": [
422.84503173828125,
164.31304931640625
140,
46
],
"flags": {},
"order": 2,
"flags": {
"collapsed": false
},
"order": 6,
"mode": 0,
"inputs": [
{
"name": "samples",
"type": "LATENT",
"link": 6
},
{
"name": "vae",
"type": "VAE",
"link": 36
}
],
"outputs": [
{
"name": "IMAGE",
"type": "IMAGE",
"slot_index": 0,
"links": [
64
]
}
],
"properties": {
"cnr_id": "comfy-core",
"ver": "0.3.64",
"Node name for S&R": "VAEDecode"
},
"widgets_values": []
},
{
"id": 25,
"type": "CLIPTextEncode",
"pos": [
935.94091796875,
9.248990058898926
],
"size": [
285.6000061035156,
88
],
"flags": {
"collapsed": false
},
"order": 4,
"mode": 0,
"inputs": [
{
"name": "clip",
"type": "CLIP",
"link": 11
"link": 58
}
],
"outputs": [
@@ -232,27 +113,167 @@
"type": "CONDITIONING",
"slot_index": 0,
"links": [
4
59
]
}
],
"title": "CLIP Text Encode (Negative Prompt)",
"properties": {
"cnr_id": "comfy-core",
"ver": "0.3.64",
"Node name for S&R": "CLIPTextEncode"
},
"widgets_values": [
""
],
"color": "#322",
"bgcolor": "#533"
},
{
"id": 21,
"type": "CLIPTextEncode",
"pos": [
937.1891479492188,
-240.19276428222656
],
"size": [
293.767822265625,
206.74732971191406
],
"flags": {},
"order": 3,
"mode": 0,
"inputs": [
{
"name": "clip",
"type": "CLIP",
"link": 54
}
],
"outputs": [
{
"name": "CONDITIONING",
"type": "CONDITIONING",
"slot_index": 0,
"links": [
46
]
}
],
"title": "CLIP Text Encode (Positive Prompt)",
"properties": {
"cnr_id": "comfy-core",
"ver": "0.3.64",
"Node name for S&R": "CLIPTextEncode"
},
"widgets_values": [
"A towering technological monolith in a cyberpunk cityscape at night, neon blue-green mixed with purple illuminate the surrounding buildings. Rain-slicked streets below reflect the brilliant signage, while holographic advertisements and flying vehicles populate the background. Moody atmospheric lighting, heavy contrast, photorealistic textures, cinematic color grading. "
],
"color": "#232",
"bgcolor": "#353"
},
{
"id": 2,
"type": "KSampler",
"pos": [
1235.140380859375,
-287.8480529785156
],
"size": [
295.7660217285156,
474
],
"flags": {},
"order": 5,
"mode": 0,
"inputs": [
{
"name": "model",
"type": "MODEL",
"link": 35
},
{
"name": "positive",
"type": "CONDITIONING",
"link": 46
},
{
"name": "negative",
"type": "CONDITIONING",
"link": 59
},
{
"name": "latent_image",
"type": "LATENT",
"link": 9
}
],
"outputs": [
{
"name": "LATENT",
"type": "LATENT",
"slot_index": 0,
"links": [
6
]
}
],
"properties": {
"Node name for S&R": "CLIPTextEncode"
"cnr_id": "comfy-core",
"ver": "0.3.64",
"Node name for S&R": "KSampler"
},
"widgets_values": [
"A towering technological monolith in a cyberpunk cityscape at night, with \"DisTorch 2\" emblazoned across its surface in massive neon blue-green mixed with purple letters that illuminate the surrounding buildings. The text occupies the central third of the frame, crafted from glowing plasma tubes and crackling energy. Rain-slicked streets below reflect the brilliant signage, while holographic advertisements and flying vehicles populate the background. Moody atmospheric lighting, heavy contrast, photorealistic textures, cinematic color grading. \"Now for .safetensors!\" in same stying but smaller font as a splash overlay in the right-hand corner of the image "
768019607311046,
"randomize",
20,
8,
"dpmpp_2m_sde_gpu",
"karras",
1
]
},
{
"id": 10,
"type": "CheckpointLoaderSimpleDisTorch2MultiGPU",
"id": 28,
"type": "SaveImage",
"pos": [
-54.288394927978516,
172.42547607421875
1763.842041015625,
-255.2287139892578
],
"size": [
378.4644470214844,
194
408.8526306152344,
449.6918029785156
],
"flags": {},
"order": 7,
"mode": 0,
"inputs": [
{
"name": "images",
"type": "IMAGE",
"link": 64
}
],
"outputs": [],
"properties": {
"cnr_id": "comfy-core",
"ver": "0.3.64",
"Node name for S&R": "SaveImage"
},
"widgets_values": [
"MultiGPU"
]
},
{
"id": 19,
"type": "CheckpointLoaderSimpleMultiGPU",
"pos": [
446.83160400390625,
-309.51922607421875
],
"size": [
377.1637268066406,
122
],
"flags": {},
"order": 1,
@@ -262,125 +283,152 @@
{
"name": "MODEL",
"type": "MODEL",
"slot_index": 0,
"links": [
10
35
]
},
{
"name": "CLIP",
"type": "CLIP",
"slot_index": 1,
"links": [
11,
12
54,
58
]
},
{
"name": "VAE",
"type": "VAE",
"slot_index": 2,
"links": [
13
36
]
}
],
"properties": {
"Node name for S&R": "CheckpointLoaderSimpleDisTorch2MultiGPU"
"cnr_id": "comfyui-multigpu",
"ver": "0d6dfc7524472943ba912a6ec3088757edba15c3",
"Node name for S&R": "CheckpointLoaderSimpleMultiGPU"
},
"widgets_values": [
"safetensor_testing/realDream_15SD15.safetensors",
"cuda:0",
1,
"cpu",
""
"sd1.5-real-dream-16.safetensors",
"cuda:1"
],
"color": "#233",
"bgcolor": "#355"
"color": "#008181",
"bgcolor": "rgba(24,24,27,.9)"
},
{
"id": 27,
"type": "MarkdownNote",
"pos": [
39.4303092956543,
-313.1197509765625
],
"size": [
387.6714782714844,
472.19256591796875
],
"flags": {},
"order": 2,
"mode": 0,
"inputs": [],
"outputs": [],
"title": "ComfyUI-MultiGPU - CheckpointLoaderSimpleMultiGPU",
"properties": {},
"widgets_values": [
"A mature SD1.5 Checkpoint to test ComfyUI-MultiGPU basic functionality. In this case we are doing the simplest action of changing device where all models are loaded before inference.\n## Custom Node\n\n[ComfyUI-MultiGPU](https://github.com/pollockjj/ComfyUI-MultiGPU)\n```\n📂 ComfyUI/\n├── 📂 custom_nodes/\n│ ├── 📂 ComfyUI-MultiGPU/\n```\n## Model links\n\n**checkpoints**\n\n - [sd1.5-real-dream-16.safetensors](https://huggingface.co/sinatra-rd/sd-1.5-real-dream/resolve/main/sd1.5-real-dream-16.safetensors)\n\n```\n📂 ComfyUI/\n├─ 📂 models/\n│ ├─ 📂 checkpoints/\n│ │ └── sd1.5-real-dream-16.safetensors\n```\n## Device Mapping (Example: Two GPUs, 1 CPU)\n```\n🖥️ system \n├── 🟢 cuda:0\n│ └── EMPTY\n├── 🟣 cuda:1\n│ └── sd1.5-real-dream-16.safetensors\n├── ⚙️ cpu\n └── EMPTY\n```"
],
"color": "#008181",
"bgcolor": "rgba(24,24,27,.9)"
}
],
"links": [
[
6,
2,
0,
5,
0,
3,
3,
"LATENT"
],
[
4,
6,
9,
8,
0,
3,
1,
"CONDITIONING"
],
[
6,
7,
0,
3,
2,
"CONDITIONING"
],
[
7,
3,
0,
8,
0,
"LATENT"
],
[
9,
8,
35,
19,
0,
9,
0,
"IMAGE"
],
[
10,
10,
0,
3,
2,
0,
"MODEL"
],
[
11,
10,
1,
6,
0,
"CLIP"
],
[
12,
10,
1,
7,
0,
"CLIP"
],
[
13,
10,
36,
19,
2,
8,
5,
1,
"VAE"
],
[
46,
21,
0,
2,
1,
"CONDITIONING"
],
[
54,
19,
1,
21,
0,
"CLIP"
],
[
58,
19,
1,
25,
0,
"CLIP"
],
[
59,
25,
0,
2,
2,
"CONDITIONING"
],
[
64,
5,
0,
28,
0,
"IMAGE"
]
],
"groups": [],
"config": {},
"extra": {
"ds": {
"scale": 0.7253148929329982,
"scale": 0.876922695000118,
"offset": [
524.2321827393398,
523.3571913872648
164.74639645547714,
599.3047746961622
]
},
"frontendVersion": "1.24.4",
"frontendVersion": "1.27.10",
"ue_links": [],
"VHS_latentpreview": false,
"VHS_latentpreviewrate": 0,
"VHS_MetadataImage": true,
Binary file not shown.

After

Width:  |  Height:  |  Size: 280 KiB

+437
View File
@@ -0,0 +1,437 @@
{
"id": "8af0a104-fd94-4d52-a3fe-1b223b3cfe74",
"revision": 0,
"last_node_id": 27,
"last_link_id": 65,
"nodes": [
{
"id": 5,
"type": "VAEDecode",
"pos": [
1581.3973388671875,
-280.86529541015625
],
"size": [
140,
46
],
"flags": {
"collapsed": false
},
"order": 6,
"mode": 0,
"inputs": [
{
"name": "samples",
"type": "LATENT",
"link": 6
},
{
"name": "vae",
"type": "VAE",
"link": 64
}
],
"outputs": [
{
"name": "IMAGE",
"type": "IMAGE",
"slot_index": 0,
"links": [
60
]
}
],
"properties": {
"cnr_id": "comfy-core",
"ver": "0.3.64",
"Node name for S&R": "VAEDecode"
},
"widgets_values": []
},
{
"id": 21,
"type": "CLIPTextEncode",
"pos": [
937.1891479492188,
-240.19276428222656
],
"size": [
306.88653564453125,
192.15206909179688
],
"flags": {},
"order": 3,
"mode": 0,
"inputs": [
{
"name": "clip",
"type": "CLIP",
"link": 62
}
],
"outputs": [
{
"name": "CONDITIONING",
"type": "CONDITIONING",
"slot_index": 0,
"links": [
46
]
}
],
"title": "CLIP Text Encode (Positive Prompt)",
"properties": {
"cnr_id": "comfy-core",
"ver": "0.3.64",
"Node name for S&R": "CLIPTextEncode"
},
"widgets_values": [
"A towering technological monolith in a cyberpunk cityscape at night, neon blue-green mixed with purple illuminate the surrounding buildings. Rain-slicked streets below reflect the brilliant signage, while holographic advertisements and flying vehicles populate the background. Moody atmospheric lighting, heavy contrast, photorealistic textures, cinematic color grading. "
],
"color": "#232",
"bgcolor": "#353"
},
{
"id": 25,
"type": "CLIPTextEncode",
"pos": [
948.5381469726562,
5.491794109344482
],
"size": [
285.6000061035156,
88
],
"flags": {
"collapsed": false
},
"order": 4,
"mode": 0,
"inputs": [
{
"name": "clip",
"type": "CLIP",
"link": 65
}
],
"outputs": [
{
"name": "CONDITIONING",
"type": "CONDITIONING",
"slot_index": 0,
"links": [
59
]
}
],
"title": "CLIP Text Encode (Negative Prompt)",
"properties": {
"cnr_id": "comfy-core",
"ver": "0.3.64",
"Node name for S&R": "CLIPTextEncode"
},
"widgets_values": [
""
],
"color": "#322",
"bgcolor": "#533"
},
{
"id": 8,
"type": "EmptyLatentImage",
"pos": [
658.3106079101562,
-1.8894624710083008
],
"size": [
210,
106
],
"flags": {},
"order": 0,
"mode": 0,
"inputs": [],
"outputs": [
{
"name": "LATENT",
"type": "LATENT",
"links": [
9
]
}
],
"properties": {
"cnr_id": "comfy-core",
"ver": "0.3.64",
"Node name for S&R": "EmptyLatentImage"
},
"widgets_values": [
1024,
1024,
1
]
},
{
"id": 2,
"type": "KSampler",
"pos": [
1261.748779296875,
-272.6434020996094
],
"size": [
295.7660217285156,
474
],
"flags": {},
"order": 5,
"mode": 0,
"inputs": [
{
"name": "model",
"type": "MODEL",
"link": 63
},
{
"name": "positive",
"type": "CONDITIONING",
"link": 46
},
{
"name": "negative",
"type": "CONDITIONING",
"link": 59
},
{
"name": "latent_image",
"type": "LATENT",
"link": 9
}
],
"outputs": [
{
"name": "LATENT",
"type": "LATENT",
"slot_index": 0,
"links": [
6
]
}
],
"properties": {
"cnr_id": "comfy-core",
"ver": "0.3.64",
"Node name for S&R": "KSampler"
},
"widgets_values": [
1018829187018126,
"randomize",
20,
8,
"dpmpp_2m_sde_gpu",
"karras",
1
]
},
{
"id": 23,
"type": "SaveImage",
"pos": [
1757.25439453125,
-274.5552673339844
],
"size": [
473.8890686035156,
484.4914245605469
],
"flags": {},
"order": 7,
"mode": 0,
"inputs": [
{
"name": "images",
"type": "IMAGE",
"link": 60
}
],
"outputs": [],
"properties": {
"cnr_id": "comfy-core",
"ver": "0.3.64",
"Node name for S&R": "SaveImage"
},
"widgets_values": [
"MultiGPU"
]
},
{
"id": 27,
"type": "CheckpointLoaderAdvancedMultiGPU",
"pos": [
580.2694702148438,
-237.61167907714844
],
"size": [
360.78656005859375,
170
],
"flags": {},
"order": 1,
"mode": 0,
"inputs": [],
"outputs": [
{
"name": "MODEL",
"type": "MODEL",
"links": [
63
]
},
{
"name": "CLIP",
"type": "CLIP",
"links": [
62,
65
]
},
{
"name": "VAE",
"type": "VAE",
"links": [
64
]
}
],
"properties": {
"cnr_id": "comfyui-multigpu",
"ver": "0d6dfc7524472943ba912a6ec3088757edba15c3",
"Node name for S&R": "CheckpointLoaderAdvancedMultiGPU"
},
"widgets_values": [
"Juggernaut-XL_v9_RunDiffusionPhoto_v2.safetensors",
"cuda:0",
"cpu",
"cuda:1"
],
"color": "#008181",
"bgcolor": "rgba(24,24,27,.9)"
},
{
"id": 26,
"type": "MarkdownNote",
"pos": [
91.9892349243164,
-246.16168212890625
],
"size": [
480.3141784667969,
487.08673095703125
],
"flags": {},
"order": 2,
"mode": 0,
"inputs": [],
"outputs": [],
"title": "ComfyUI-MultiGPU - CheckpointLoaderAdvancedMultiGPU",
"properties": {},
"widgets_values": [
"A mature SDXL Checkpoint to test ComfyUI-MultiGPU CheckpointLoaderAdvanced functionality. In this case we are changing the UNet, CLIP, and VAE devices independentlly\n## Custom Node\n\n- [ComfyUI-MultiGPU](https://github.com/pollockjj/ComfyUI-MultiGPU)\n```\n📂 ComfyUI/\n├── 📂 custom_nodes/\n│ ├── 📂 ComfyUI-MultiGPU/\n```\n## Model links\n\n**checkpoints**\n\n - [Juggernaut-XL_v9_RunDiffusionPhoto_v2.safetensors](https://huggingface.co/RunDiffusion/Juggernaut-XL-v9/resolve/main/Juggernaut-XL_v9_RunDiffusionPhoto_v2.safetensors) \n\n```\n📂 ComfyUI/\n├─ 📂 models/\n│ ├─ 📂 checkpoints/\n│ │ └── Juggernaut-XL_v9_RunDiffusionPhoto_v2.safetensors\n```\n## Device Mapping (Example: Two GPUs, 1 CPU)\n```\n🖥️ system \n├── 🟢 cuda:0\n│ └── Juggernaut-XL_v9_RunDiffusionPhoto_v2 - UNet\n├── 🟣 cuda:1\n│ └── Juggernaut-XL_v9_RunDiffusionPhoto_v2 - VAE\n├── ⚙️ cpu\n └── Juggernaut-XL_v9_RunDiffusionPhoto_v2 - CLIP\n```"
],
"color": "#008181",
"bgcolor": "rgba(24,24,27,.9)"
}
],
"links": [
[
6,
2,
0,
5,
0,
"LATENT"
],
[
9,
8,
0,
2,
3,
"LATENT"
],
[
46,
21,
0,
2,
1,
"CONDITIONING"
],
[
59,
25,
0,
2,
2,
"CONDITIONING"
],
[
60,
5,
0,
23,
0,
"IMAGE"
],
[
62,
27,
1,
21,
0,
"CLIP"
],
[
63,
27,
0,
2,
0,
"MODEL"
],
[
64,
27,
2,
5,
1,
"VAE"
],
[
65,
27,
1,
25,
0,
"CLIP"
]
],
"groups": [],
"config": {},
"extra": {
"ds": {
"scale": 0.9646149645001288,
"offset": [
93.03404840681384,
585.605321716019
]
},
"frontendVersion": "1.27.10",
"ue_links": [],
"VHS_latentpreview": false,
"VHS_latentpreviewrate": 0,
"VHS_MetadataImage": true,
"VHS_KeepIntermediate": true
},
"version": 0.4
}
Binary file not shown.

After

Width:  |  Height:  |  Size: 158 KiB

@@ -1,8 +1,8 @@
{
"id": "ec7da562-7e21-4dac-a0d2-f4441e1efd3b",
"revision": 0,
"last_node_id": 70,
"last_link_id": 151,
"last_node_id": 74,
"last_link_id": 157,
"nodes": [
{
"id": 58,
@@ -16,7 +16,7 @@
546
],
"flags": {},
"order": 10,
"order": 11,
"mode": 0,
"inputs": [
{
@@ -50,6 +50,8 @@
}
],
"properties": {
"cnr_id": "comfy-core",
"ver": "0.3.64",
"Node name for S&R": "KSamplerAdvanced"
},
"widgets_values": [
@@ -77,7 +79,7 @@
46
],
"flags": {},
"order": 11,
"order": 12,
"mode": 0,
"inputs": [
{
@@ -103,75 +105,12 @@
}
],
"properties": {
"cnr_id": "comfy-core",
"ver": "0.3.64",
"Node name for S&R": "VAEDecode"
},
"widgets_values": []
},
{
"id": 28,
"type": "SaveAnimatedWEBP",
"pos": [
1820,
-20
],
"size": [
674.6224975585938,
820.6224975585938
],
"flags": {},
"order": 12,
"mode": 0,
"inputs": [
{
"name": "images",
"type": "IMAGE",
"link": 56
}
],
"outputs": [],
"properties": {
"Node name for S&R": "SaveAnimatedWEBP"
},
"widgets_values": [
"ComfyUI",
16,
false,
80,
"default"
]
},
{
"id": 47,
"type": "SaveWEBM",
"pos": [
2530,
-20
],
"size": [
763.67041015625,
885.67041015625
],
"flags": {},
"order": 13,
"mode": 0,
"inputs": [
{
"name": "images",
"type": "IMAGE",
"link": 93
}
],
"outputs": [],
"properties": {
"Node name for S&R": "SaveWEBM"
},
"widgets_values": [
"ComfyUI",
"vp9",
16.000000000000004,
13.3333740234375
]
},
{
"id": 7,
"type": "CLIPTextEncode",
@@ -184,7 +123,7 @@
180.6060791015625
],
"flags": {},
"order": 6,
"order": 7,
"mode": 0,
"inputs": [
{
@@ -206,6 +145,8 @@
],
"title": "CLIP Text Encode (Negative Prompt)",
"properties": {
"cnr_id": "comfy-core",
"ver": "0.3.64",
"Node name for S&R": "CLIPTextEncode"
},
"widgets_values": [
@@ -239,6 +180,8 @@
}
],
"properties": {
"cnr_id": "comfy-core",
"ver": "0.3.64",
"Node name for S&R": "EmptyHunyuanLatentVideo"
},
"widgets_values": [
@@ -260,7 +203,7 @@
546
],
"flags": {},
"order": 9,
"order": 10,
"mode": 0,
"inputs": [
{
@@ -294,6 +237,8 @@
}
],
"properties": {
"cnr_id": "comfy-core",
"ver": "0.3.64",
"Node name for S&R": "KSamplerAdvanced"
},
"widgets_values": [
@@ -309,6 +254,46 @@
"enable"
]
},
{
"id": 55,
"type": "ModelSamplingSD3",
"pos": [
479.226318359375,
87.29454040527344
],
"size": [
315,
58
],
"flags": {},
"order": 9,
"mode": 0,
"inputs": [
{
"name": "model",
"type": "MODEL",
"link": 157
}
],
"outputs": [
{
"name": "MODEL",
"type": "MODEL",
"slot_index": 0,
"links": [
123
]
}
],
"properties": {
"cnr_id": "comfy-core",
"ver": "0.3.64",
"Node name for S&R": "ModelSamplingSD3"
},
"widgets_values": [
8
]
},
{
"id": 67,
"type": "VAELoaderMultiGPU",
@@ -334,97 +319,23 @@
}
],
"properties": {
"cnr_id": "comfyui-multigpu",
"ver": "0d6dfc7524472943ba912a6ec3088757edba15c3",
"Node name for S&R": "VAELoaderMultiGPU"
},
"widgets_values": [
"wan_2.1_vae.safetensors",
"cuda:1"
],
"color": "#233",
"bgcolor": "#355"
},
{
"id": 55,
"type": "ModelSamplingSD3",
"pos": [
479.226318359375,
87.29454040527344
],
"size": [
315,
58
],
"flags": {},
"order": 8,
"mode": 0,
"inputs": [
{
"name": "model",
"type": "MODEL",
"link": 151
}
],
"outputs": [
{
"name": "MODEL",
"type": "MODEL",
"slot_index": 0,
"links": [
123
]
}
],
"properties": {
"Node name for S&R": "ModelSamplingSD3"
},
"widgets_values": [
8
]
},
{
"id": 54,
"type": "ModelSamplingSD3",
"pos": [
486.4836120605469,
-69.28914642333984
],
"size": [
315,
58
],
"flags": {},
"order": 7,
"mode": 0,
"inputs": [
{
"name": "model",
"type": "MODEL",
"link": 150
}
],
"outputs": [
{
"name": "MODEL",
"type": "MODEL",
"slot_index": 0,
"links": [
125
]
}
],
"properties": {
"Node name for S&R": "ModelSamplingSD3"
},
"widgets_values": [
8.000000000000002
]
"color": "#008181",
"bgcolor": "rgba(24,24,27,.9)"
},
{
"id": 68,
"type": "CLIPLoaderMultiGPU",
"pos": [
-6.305742263793945,
188.62916564941406
13.91906452178955,
234.1349334716797
],
"size": [
383.4211730957031,
@@ -445,15 +356,17 @@
}
],
"properties": {
"cnr_id": "comfyui-multigpu",
"ver": "0d6dfc7524472943ba912a6ec3088757edba15c3",
"Node name for S&R": "CLIPLoaderMultiGPU"
},
"widgets_values": [
"umt5_xxl_fp8_e4m3fn_scaled.safetensors",
"wan",
"cpu"
"cuda:1"
],
"color": "#233",
"bgcolor": "#355"
"color": "#008181",
"bgcolor": "rgba(24,24,27,.9)"
},
{
"id": 6,
@@ -467,7 +380,7 @@
164.31304931640625
],
"flags": {},
"order": 5,
"order": 6,
"mode": 0,
"inputs": [
{
@@ -489,14 +402,85 @@
],
"title": "CLIP Text Encode (Positive Prompt)",
"properties": {
"cnr_id": "comfy-core",
"ver": "0.3.64",
"Node name for S&R": "CLIPTextEncode"
},
"widgets_values": [
"A towering technological monolith in a cyberpunk cityscape at night, with \"DisTorch 2\" emblazoned across its surface in massive neon blue-green mixed with purple letters that illuminate the surrounding buildings. The text occupies the central third of the frame, crafted from glowing plasma tubes and crackling energy. The model file suffix \"now with .safetensors!\" in same stying but smaller font directly underneath. Rain-slicked streets below reflect the brilliant signage, while holographic advertisements and flying vehicles populate the background. Moody atmospheric lighting, heavy contrast, photorealistic textures, cinematic color grading. "
"A towering technological monolith in a cyberpunk cityscape at night, with \"Wan 2.2 DisTorch 2\" emblazoned across its surface in massive neon blue-green mixed with purple letters that illuminate the surrounding buildings. The text occupies the center of the frame, crafted from glowing plasma tubes and crackling energy. Rain-slicked streets below reflect the brilliant signage, while holographic advertisements and flying vehicles populate the background. Moody atmospheric lighting, heavy contrast, photorealistic textures, cinematic color grading. "
],
"color": "#232",
"bgcolor": "#353"
},
{
"id": 47,
"type": "SaveWEBM",
"pos": [
2530,
-20
],
"size": [
763.67041015625,
885.67041015625
],
"flags": {},
"order": 14,
"mode": 0,
"inputs": [
{
"name": "images",
"type": "IMAGE",
"link": 93
}
],
"outputs": [],
"properties": {
"cnr_id": "comfy-core",
"ver": "0.3.64",
"Node name for S&R": "SaveWEBM"
},
"widgets_values": [
"MultiGPU",
"vp9",
16.000000000000004,
13.3333740234375
]
},
{
"id": 28,
"type": "SaveAnimatedWEBP",
"pos": [
1820,
-20
],
"size": [
674.6224975585938,
820.6224975585938
],
"flags": {},
"order": 13,
"mode": 0,
"inputs": [
{
"name": "images",
"type": "IMAGE",
"link": 56
}
],
"outputs": [],
"properties": {
"cnr_id": "comfy-core",
"ver": "0.3.64",
"Node name for S&R": "SaveAnimatedWEBP"
},
"widgets_values": [
"MultiGPU",
16,
false,
80,
"default"
]
},
{
"id": 62,
"type": "UNETLoaderDisTorch2MultiGPU",
@@ -506,7 +490,7 @@
],
"size": [
351.41351318359375,
179.5890655517578
202
],
"flags": {},
"order": 3,
@@ -517,34 +501,37 @@
"name": "MODEL",
"type": "MODEL",
"links": [
150
156
]
}
],
"properties": {
"cnr_id": "comfyui-multigpu",
"ver": "0d6dfc7524472943ba912a6ec3088757edba15c3",
"Node name for S&R": "UNETLoaderDisTorch2MultiGPU"
},
"widgets_values": [
"wan2.2_t2v_high_noise_14B_fp8_scaled.safetensors",
"default",
"cuda:0",
4,
"cpu",
""
9,
"cuda:1",
"",
true
],
"color": "#233",
"bgcolor": "#355"
"color": "#008181",
"bgcolor": "rgba(24,24,27,.9)"
},
{
"id": 70,
"type": "UNETLoaderDisTorch2MultiGPU",
"pos": [
43.62093734741211,
-88.78330993652344
33.50856018066406,
-66.39156341552734
],
"size": [
351.41351318359375,
179.5890655517578
202
],
"flags": {},
"order": 4,
@@ -555,23 +542,90 @@
"name": "MODEL",
"type": "MODEL",
"links": [
151
157
]
}
],
"properties": {
"cnr_id": "comfyui-multigpu",
"ver": "0d6dfc7524472943ba912a6ec3088757edba15c3",
"Node name for S&R": "UNETLoaderDisTorch2MultiGPU"
},
"widgets_values": [
"wan2.2_t2v_low_noise_14B_fp8_scaled.safetensors",
"default",
"cuda:0",
9,
"cuda:1",
4,
"cpu",
""
"",
true
],
"color": "#233",
"bgcolor": "#355"
"color": "#008181",
"bgcolor": "rgba(24,24,27,.9)"
},
{
"id": 54,
"type": "ModelSamplingSD3",
"pos": [
503.1690979003906,
-198.79998779296875
],
"size": [
315,
58
],
"flags": {},
"order": 8,
"mode": 0,
"inputs": [
{
"name": "model",
"type": "MODEL",
"link": 156
}
],
"outputs": [
{
"name": "MODEL",
"type": "MODEL",
"slot_index": 0,
"links": [
125
]
}
],
"properties": {
"cnr_id": "comfy-core",
"ver": "0.3.64",
"Node name for S&R": "ModelSamplingSD3"
},
"widgets_values": [
8.000000000000002
]
},
{
"id": 74,
"type": "MarkdownNote",
"pos": [
-658.3707275390625,
-320.4559326171875
],
"size": [
634.0631103515625,
720.5999755859375
],
"flags": {},
"order": 5,
"mode": 0,
"inputs": [],
"outputs": [],
"title": "ComfyUI-MultiGPU Note - wan2_2 Double UNet DisTorch2",
"properties": {},
"widgets_values": [
"A DisTorch2 Wan 2.2 workflow where we ignore CPU offloading completely and load both UNets placing blocks on the CPU and CLIP DisTorch2. In this case we are using the DisTorch2 node to statically allocate approximately 70% of the UNet model (13.3G) to the cpu. With `eject_models` being `True`, all other models on the `compute` card (`cuda:0`) will be unloaded, regardless of size, ensuring a clean compute card prior to inference.\n\n## Custom Node\n- [ComfyUI-MultiGPU](https://github.com/pollockjj/ComfyUI-MultiGPU)\n```\n📂 ComfyUI/\n├── 📂 custom_nodes/\n│ ├── 📂 ComfyUI-MultiGPU/\n```\n## Model links\n\n**Diffusion model**\n- [wan2.2_t2v_high_noise_14B_fp8_scaled.safetensors](https://huggingface.co/Comfy-Org/Wan_2.2_ComfyUI_Repackaged/blob/main/split_files/diffusion_models/wan2.2_t2v_high_noise_14B_fp8_scaled.safetensors)\n- [wan2.2_t2v_low_noise_14B_fp8_scaled.safetensors](https://huggingface.co/Comfy-Org/Wan_2.2_ComfyUI_Repackaged/blob/main/split_files/diffusion_models/wan2.2_t2v_low_noise_14B_fp8_scaled.safetensors)\n\n**CLIP**\n- [umt5_xxl_fp8_e4m3fn_scaled.safetensors](https://huggingface.co/Comfy-Org/Wan_2.2_ComfyUI_Repackaged/resolve/main/split_files/text_encoders/umt5_xxl_fp8_e4m3fn_scaled.safetensors)\n\n**VAE**\n- [wan_2.1_vae.safetensors](https://huggingface.co/Comfy-Org/Wan_2.2_ComfyUI_Repackaged/blob/main/split_files/vae/wan_2.1_vae.safetensors)\n\nModel Storage Location\n\n```\n📂 ComfyUI/\n├── 📂 models/\n│ ├── 📂 clip/\n│ │ └── umt5_xxl_fp8_e4m3fn_scaled.safetensors\n│ ├── 📂 unet/\n│ │ ├── wan2.2_t2v_high_noise_14B_fp8_scaled.safetensors [🟩🟩🟩🟪🟪🟪🟪🟪🟪🟪]\n│ │ ├── wan2.2_t2v_low_noise_14B_fp8_scaled.safetensors [🟩🟩🟩🟪🟪🟪🟪🟪🟪🟪]\n│ ├── 📂 vae/\n│ │ └── qwen_image_vae.safetensors \n```\n## Device Mapping (Example: Two GPUs, 1 CPU)\n```\n🖥️ system \n├── 🟢 cuda:0\n│ └── wan2.2_t2v_high_noise_14B_fp8_scaled.safetensors [🟩🟩🟩]\n│ └── wan2.2_t2v_low_noise_14B_fp8_scaled.safetensors [🟩🟩🟩]\n├── 🟣 cuda:1\n│ └── wan2.2_t2v_high_noise_14B_fp8_scaled.safetensors [🟪🟪🟪🟪🟪🟪🟪]\n│ └── wan2.2_t2v_high_noise_14B_fp8_scaled.safetensors [🟪🟪🟪🟪🟪🟪🟪]\n│ └── umt5_xxl_fp8_e4m3fn_scaled.safetensors\n│ └── wan_2.1_vae.safetensors\n├── ⚙️ cpu\n```"
],
"color": "#008181",
"bgcolor": "rgba(24,24,27,.9)"
}
],
"links": [
@@ -688,7 +742,7 @@
"CLIP"
],
[
150,
156,
62,
0,
54,
@@ -696,7 +750,7 @@
"MODEL"
],
[
151,
157,
70,
0,
55,
@@ -708,13 +762,13 @@
"config": {},
"extra": {
"ds": {
"scale": 0.9229599817706872,
"scale": 0.7627768444385852,
"offset": [
262.23932192507675,
541.1903997726705
923.7572852838339,
611.8769299301177
]
},
"frontendVersion": "1.24.4",
"frontendVersion": "1.27.10",
"VHS_latentpreview": false,
"VHS_latentpreviewrate": 0,
"VHS_MetadataImage": true,
Binary file not shown.

After

Width:  |  Height:  |  Size: 494 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 176 KiB

+795
View File
@@ -0,0 +1,795 @@
{
"id": "b5850607-44ed-4abf-85d7-1399865d4011",
"revision": 0,
"last_node_id": 59,
"last_link_id": 104,
"nodes": [
{
"id": 4,
"type": "CLIPTextEncode",
"pos": [
3650,
100
],
"size": [
450,
150
],
"flags": {
"collapsed": false
},
"order": 9,
"mode": 0,
"inputs": [
{
"name": "clip",
"type": "CLIP",
"link": 89
}
],
"outputs": [
{
"name": "CONDITIONING",
"type": "CONDITIONING",
"links": [
59,
64
]
}
],
"title": "Negative Prompt",
"properties": {
"cnr_id": "comfy-core",
"ver": "0.3.43",
"Node name for S&R": "CLIPTextEncode"
},
"widgets_values": [
""
],
"color": "#2a363b",
"bgcolor": "#3f5159"
},
{
"id": 35,
"type": "KSamplerAdvanced",
"pos": [
4152.58056640625,
-684.031005859375
],
"size": [
250,
546
],
"flags": {},
"order": 11,
"mode": 0,
"inputs": [
{
"name": "model",
"type": "MODEL",
"link": 88
},
{
"name": "positive",
"type": "CONDITIONING",
"link": 58
},
{
"name": "negative",
"type": "CONDITIONING",
"link": 59
},
{
"name": "latent_image",
"type": "LATENT",
"link": 60
}
],
"outputs": [
{
"name": "LATENT",
"type": "LATENT",
"links": [
61
]
}
],
"properties": {
"cnr_id": "comfy-core",
"ver": "0.3.46",
"Node name for S&R": "KSamplerAdvanced"
},
"widgets_values": [
"enable",
463363085190188,
"randomize",
8,
1,
"euler",
"simple",
0,
4,
"disable"
],
"color": "#223",
"bgcolor": "#335"
},
{
"id": 51,
"type": "CLIPLoaderMultiGPU",
"pos": [
3174.543701171875,
-421.68939208984375
],
"size": [
410.7702941894531,
110.15969848632812
],
"flags": {},
"order": 0,
"mode": 0,
"inputs": [],
"outputs": [
{
"name": "CLIP",
"type": "CLIP",
"links": [
100
]
}
],
"properties": {
"cnr_id": "comfyui-multigpu",
"ver": "161174266c29e5860e5b565315fba99d2bc5f1e0",
"Node name for S&R": "CLIPLoaderMultiGPU"
},
"widgets_values": [
"umt5_xxl_fp8_e4m3fn_scaled.safetensors",
"wan",
"cuda:0"
],
"color": "#008181",
"bgcolor": "rgba(24,24,27,.9)"
},
{
"id": 55,
"type": "VAELoaderDisTorch2MultiGPU",
"pos": [
3213.78515625,
29.56181526184082
],
"size": [
297.41796875,
178
],
"flags": {},
"order": 1,
"mode": 0,
"inputs": [],
"outputs": [
{
"name": "VAE",
"type": "VAE",
"links": [
102
]
}
],
"properties": {
"cnr_id": "comfyui-multigpu",
"ver": "161174266c29e5860e5b565315fba99d2bc5f1e0",
"Node name for S&R": "VAELoaderDisTorch2MultiGPU"
},
"widgets_values": [
"wan_2.1_vae.safetensors",
"cuda:0",
0,
"cpu",
"",
true
],
"color": "#008181",
"bgcolor": "rgba(24,24,27,.9)"
},
{
"id": 44,
"type": "LoraLoaderModelOnly",
"pos": [
3645.671630859375,
-436.70050048828125
],
"size": [
474.6925354003906,
91.07210540771484
],
"flags": {},
"order": 7,
"mode": 0,
"inputs": [
{
"name": "model",
"type": "MODEL",
"link": 101
}
],
"outputs": [
{
"name": "MODEL",
"type": "MODEL",
"links": [
91
]
}
],
"properties": {
"cnr_id": "comfy-core",
"ver": "0.3.46",
"Node name for S&R": "LoraLoaderModelOnly"
},
"widgets_values": [
"Wan2.2-T2V-A14B-4steps-lora-rank64-Seko-V1.1/low_noise.safetensors",
1
],
"color": "#232",
"bgcolor": "#353"
},
{
"id": 29,
"type": "LoraLoader",
"pos": [
3637.26611328125,
-691.7128295898438
],
"size": [
482.47406005859375,
126
],
"flags": {},
"order": 8,
"mode": 0,
"inputs": [
{
"name": "model",
"type": "MODEL",
"link": 99
},
{
"name": "clip",
"type": "CLIP",
"link": 100
}
],
"outputs": [
{
"name": "MODEL",
"type": "MODEL",
"links": [
88
]
},
{
"name": "CLIP",
"type": "CLIP",
"links": [
89,
90
]
}
],
"properties": {
"cnr_id": "comfy-core",
"ver": "0.3.43",
"Node name for S&R": "LoraLoader"
},
"widgets_values": [
"Wan2.2-T2V-A14B-4steps-lora-rank64-Seko-V1.1/high_noise.safetensors",
1,
1
],
"color": "#232",
"bgcolor": "#353"
},
{
"id": 53,
"type": "MarkdownNote",
"pos": [
2355.81494140625,
-698.0171508789062
],
"size": [
777.6646728515625,
937.3121337890625
],
"flags": {},
"order": 2,
"mode": 0,
"inputs": [],
"outputs": [],
"title": "ComfyUI-MultiGPU Note - wan2_2 Double UNet DisTorch2",
"properties": {},
"widgets_values": [
"A DisTorch2 Wan 2.2 workflow where we eschew our other `gpu`, offloading both UNets by placing blocks on the `cpu`. In this case we are using the DisTorch2 node to statically allocate approximately 70% of the UNet model (13.3G) to the `cpu`, along with a proportional amount of the LoRAs patched to the model. With `eject_models` being `True`, all other models on the `compute` card (`cuda:0`) will be unloaded, regardless of size, ensuring a clean compute card prior to inference.\n\n## Custom Node\n- [ComfyUI-MultiGPU](https://github.com/pollockjj/ComfyUI-MultiGPU)\n```\n📂 ComfyUI/\n├── 📂 custom_nodes/\n│ ├── 📂 ComfyUI-MultiGPU/\n```\n## Model links\n\n**Diffusion model**\n- [wan2.2_t2v_high_noise_14B_fp8_scaled.safetensors](https://huggingface.co/Comfy-Org/Wan_2.2_ComfyUI_Repackaged/blob/main/split_files/diffusion_models/wan2.2_t2v_high_noise_14B_fp8_scaled.safetensors)\n- [wan2.2_t2v_low_noise_14B_fp8_scaled.safetensors](https://huggingface.co/Comfy-Org/Wan_2.2_ComfyUI_Repackaged/blob/main/split_files/diffusion_models/wan2.2_t2v_low_noise_14B_fp8_scaled.safetensors)\n\n**CLIP**\n- [umt5_xxl_fp8_e4m3fn_scaled.safetensors](https://huggingface.co/Comfy-Org/Wan_2.2_ComfyUI_Repackaged/resolve/main/split_files/text_encoders/umt5_xxl_fp8_e4m3fn_scaled.safetensors)\n\n**VAE**\n- [wan_2.1_vae.safetensors](https://huggingface.co/Comfy-Org/Wan_2.2_ComfyUI_Repackaged/blob/main/split_files/vae/wan_2.1_vae.safetensors)\n\n**LoRA**\n- [high_noise_model.safetensors](https://huggingface.co/lightx2v/Wan2.2-Lightning/resolve/main/Wan2.2-T2V-A14B-4steps-lora-rank64-Seko-V1.1/high_noise_model.safetensors)\n- [low_noise_model.safetensors](https://huggingface.co/lightx2v/Wan2.2-Lightning/resolve/main/Wan2.2-T2V-A14B-4steps-lora-rank64-Seko-V1.1/low_noise_model.safetensors)\n\n## Model Storage Location\n\n```\n📂 ComfyUI/\n├── 📂 models/\n│ ├── 📂 clip/\n│ │ └── umt5_xxl_fp8_e4m3fn_scaled.safetensors\n│ ├── 📂 unet/\n│ │ ├── wan2.2_t2v_high_noise_14B_fp8_scaled.safetensors [🟩🟩🟩🟪🟪🟪🟪🟪🟪🟪]\n│ │ ├── wan2.2_t2v_low_noise_14B_fp8_scaled.safetensors [🟩🟩🟩🟪🟪🟪🟪🟪🟪🟪]\n│ ├───📂 loras/\n│ ├─────📂 Wan2.2-T2V-A14B-4steps-lora-rank64-Seko-V1.1/\n│ │ ├────── high_noise_model.safetensors [🟩🟩🟩🟪🟪🟪🟪🟪🟪🟪]\n│ │ └────── low_noise_model.safetensors [🟩🟩🟩🟪🟪🟪🟪🟪🟪🟪]\n│ ├── 📂 vae/\n│ │ └── qwen_image_vae.safetensors \n```\n## Device Mapping (Example: Two GPUs, 1 CPU)\n```\n🖥️ system \n├── 🟢 cuda:0\n│ └── wan2.2_t2v_high_noise_14B_fp8_scaled.safetensors [🟩🟩🟩]\n│ └── wan2.2_t2v_low_noise_14B_fp8_scaled.safetensors [🟩🟩🟩]\n│ └── high_noise_model.safetensors [🟩🟩🟩]\n│ └── low_noise_model.safetensors [🟩🟩🟩]\n│ └── umt5_xxl_fp8_e4m3fn_scaled.safetensors\n│ └── wan_2.1_vae.safetensors\n├── 🟣 cuda:1\n│ └── EMPTY\n├── ⚙️ cpu\n └── wan2.2_t2v_high_noise_14B_fp8_scaled.safetensors [🟪🟪🟪🟪🟪🟪🟪]\n └── wan2.2_t2v_low_noise_14B_fp8_scaled.safetensors [🟪🟪🟪🟪🟪🟪🟪]\n └── high_noise_model.safetensors [🟪🟪🟪🟪🟪🟪🟪]\n └── low_noise_model.safetensors [🟪🟪🟪🟪🟪🟪🟪]\n```"
],
"color": "#008181",
"bgcolor": "rgba(24,24,27,.9)"
},
{
"id": 3,
"type": "CLIPTextEncode",
"pos": [
3650,
-300
],
"size": [
450,
350
],
"flags": {},
"order": 10,
"mode": 0,
"inputs": [
{
"name": "clip",
"type": "CLIP",
"link": 90
}
],
"outputs": [
{
"name": "CONDITIONING",
"type": "CONDITIONING",
"links": [
58,
63
]
}
],
"title": "Positive Prompt",
"properties": {
"cnr_id": "comfy-core",
"ver": "0.3.43",
"Node name for S&R": "CLIPTextEncode"
},
"widgets_values": [
"A towering technological monolith in a cyberpunk cityscape at night, with \"WAN 2.2\" and \"T2V\" emblazoned across its surface in massive neon blue-green mixed with purple letters that illuminate the surrounding buildings, with a smaller \"lightx2v\" underneath, bursting with color. The text occupies the central third of the frame, crafted from glowing plasma tubes and crackling energy. Rain-slicked streets below reflect the brilliant signage, while holographic advertisements and flying vehicles populate the background. Moody atmospheric lighting, heavy contrast, photorealistic textures, cinematic color grading. "
],
"color": "#2a363b",
"bgcolor": "#3f5159"
},
{
"id": 52,
"type": "UNETLoaderDisTorch2MultiGPU",
"pos": [
3194.302490234375,
-254.25840759277344
],
"size": [
401.1171569824219,
202
],
"flags": {},
"order": 3,
"mode": 0,
"inputs": [],
"outputs": [
{
"name": "MODEL",
"type": "MODEL",
"links": [
101
]
}
],
"properties": {
"cnr_id": "comfyui-multigpu",
"ver": "161174266c29e5860e5b565315fba99d2bc5f1e0",
"Node name for S&R": "UNETLoaderDisTorch2MultiGPU"
},
"widgets_values": [
"wan2.2_t2v_low_noise_14B_fp8_scaled.safetensors",
"default",
"cuda:0",
13,
"cpu",
"",
true
],
"color": "#008181",
"bgcolor": "rgba(24,24,27,.9)"
},
{
"id": 56,
"type": "MarkdownNote",
"pos": [
7540.54541015625,
-833.9743041992188
],
"size": [
634.0631103515625,
720.5999755859375
],
"flags": {},
"order": 4,
"mode": 0,
"inputs": [],
"outputs": [],
"title": "ComfyUI-MultiGPU Note - wan2_2 Double UNet DisTorch2",
"properties": {},
"widgets_values": [
"A DisTorch2 Wan 2.2 workflow where we ignore CPU offloading completely and load both UNets placing blocks on the CPU and CLIP DisTorch2. In this case we are using the DisTorch2 node to statically allocate approximately 70% of the UNet model (13.3G) to the cpu. With `eject_models` being `True`, all other models on the `compute` card (`cuda:0`) will be unloaded, regardless of size, ensuring a clean compute card prior to inference.\n\n## Custom Node\n- [ComfyUI-MultiGPU](https://github.com/pollockjj/ComfyUI-MultiGPU)\n```\n📂 ComfyUI/\n├── 📂 custom_nodes/\n│ ├── 📂 ComfyUI-MultiGPU/\n```\n## Model links\n\n**Diffusion model**\n- [wan2.2_t2v_high_noise_14B_fp8_scaled.safetensors](https://huggingface.co/Comfy-Org/Wan_2.2_ComfyUI_Repackaged/blob/main/split_files/diffusion_models/wan2.2_t2v_high_noise_14B_fp8_scaled.safetensors)\n- [wan2.2_t2v_low_noise_14B_fp8_scaled.safetensors](https://huggingface.co/Comfy-Org/Wan_2.2_ComfyUI_Repackaged/blob/main/split_files/diffusion_models/wan2.2_t2v_low_noise_14B_fp8_scaled.safetensors)\n\n**CLIP**\n- [umt5_xxl_fp8_e4m3fn_scaled.safetensors](https://huggingface.co/Comfy-Org/Wan_2.2_ComfyUI_Repackaged/resolve/main/split_files/text_encoders/umt5_xxl_fp8_e4m3fn_scaled.safetensors)\n\n**VAE**\n- [wan_2.1_vae.safetensors](https://huggingface.co/Comfy-Org/Wan_2.2_ComfyUI_Repackaged/blob/main/split_files/vae/wan_2.1_vae.safetensors)\n\nModel Storage Location\n\n```\n📂 ComfyUI/\n├── 📂 models/\n│ ├── 📂 clip/\n│ │ └── umt5_xxl_fp8_e4m3fn_scaled.safetensors\n│ ├── 📂 unet/\n│ │ ├── wan2.2_t2v_high_noise_14B_fp8_scaled.safetensors [🟩🟩🟩🟪🟪🟪🟪🟪🟪🟪]\n│ │ ├── wan2.2_t2v_low_noise_14B_fp8_scaled.safetensors [🟩🟩🟩🟪🟪🟪🟪🟪🟪🟪]\n│ ├── 📂 vae/\n│ │ └── qwen_image_vae.safetensors \n```\n## Device Mapping (Example: Two GPUs, 1 CPU)\n```\n🖥️ system \n├── 🟢 cuda:0\n│ └── wan2.2_t2v_high_noise_14B_fp8_scaled.safetensors [🟩🟩🟩]\n│ └── wan2.2_t2v_low_noise_14B_fp8_scaled.safetensors [🟩🟩🟩]\n├── 🟣 cuda:1\n│ └── wan2.2_t2v_high_noise_14B_fp8_scaled.safetensors [🟪🟪🟪🟪🟪🟪🟪]\n│ └── wan2.2_t2v_high_noise_14B_fp8_scaled.safetensors [🟪🟪🟪🟪🟪🟪🟪]\n│ └── umt5_xxl_fp8_e4m3fn_scaled.safetensors\n│ └── wan_2.1_vae.safetensors\n├── ⚙️ cpu\n```"
],
"color": "#008181",
"bgcolor": "rgba(24,24,27,.9)"
},
{
"id": 9,
"type": "VAEDecode",
"pos": [
4450.001953125,
-696.47216796875
],
"size": [
140,
46
],
"flags": {},
"order": 13,
"mode": 0,
"inputs": [
{
"name": "samples",
"type": "LATENT",
"link": 65
},
{
"name": "vae",
"type": "VAE",
"link": 102
}
],
"outputs": [
{
"name": "IMAGE",
"type": "IMAGE",
"links": [
103
]
}
],
"properties": {
"cnr_id": "comfy-core",
"ver": "0.3.43",
"Node name for S&R": "VAEDecode"
},
"widgets_values": [],
"color": "#323",
"bgcolor": "#535"
},
{
"id": 58,
"type": "SaveAnimatedWEBP",
"pos": [
4616.23095703125,
-513.6134643554688
],
"size": [
674.6224975585938,
820.6224975585938
],
"flags": {},
"order": 14,
"mode": 0,
"inputs": [
{
"name": "images",
"type": "IMAGE",
"link": 103
}
],
"outputs": [],
"properties": {
"cnr_id": "comfy-core",
"ver": "0.3.64",
"Node name for S&R": "SaveAnimatedWEBP"
},
"widgets_values": [
"MultiGPU",
16,
false,
80,
"default"
]
},
{
"id": 5,
"type": "EmptyHunyuanLatentVideo",
"pos": [
3650,
300
],
"size": [
450,
150
],
"flags": {},
"order": 5,
"mode": 0,
"inputs": [],
"outputs": [
{
"name": "LATENT",
"type": "LATENT",
"links": [
60
]
}
],
"properties": {
"cnr_id": "comfy-core",
"ver": "0.3.43",
"Node name for S&R": "EmptyHunyuanLatentVideo"
},
"widgets_values": [
768,
768,
81,
1
],
"color": "#323",
"bgcolor": "#535"
},
{
"id": 50,
"type": "UNETLoaderDisTorch2MultiGPU",
"pos": [
3169.217041015625,
-698.2782592773438
],
"size": [
440.8240051269531,
202
],
"flags": {},
"order": 6,
"mode": 0,
"inputs": [],
"outputs": [
{
"name": "MODEL",
"type": "MODEL",
"links": [
99
]
}
],
"properties": {
"cnr_id": "comfyui-multigpu",
"ver": "161174266c29e5860e5b565315fba99d2bc5f1e0",
"Node name for S&R": "UNETLoaderDisTorch2MultiGPU"
},
"widgets_values": [
"wan2.2_t2v_high_noise_14B_fp8_scaled.safetensors",
"default",
"cuda:0",
13,
"cuda:1",
"",
true
],
"color": "#008181",
"bgcolor": "rgba(24,24,27,.9)"
},
{
"id": 36,
"type": "KSamplerAdvanced",
"pos": [
4163.52001953125,
-74.00148010253906
],
"size": [
250,
546
],
"flags": {},
"order": 12,
"mode": 0,
"inputs": [
{
"name": "model",
"type": "MODEL",
"link": 91
},
{
"name": "positive",
"type": "CONDITIONING",
"link": 63
},
{
"name": "negative",
"type": "CONDITIONING",
"link": 64
},
{
"name": "latent_image",
"type": "LATENT",
"link": 61
}
],
"outputs": [
{
"name": "LATENT",
"type": "LATENT",
"links": [
65
]
}
],
"properties": {
"cnr_id": "comfy-core",
"ver": "0.3.46",
"Node name for S&R": "KSamplerAdvanced"
},
"widgets_values": [
"enable",
989059799892359,
"randomize",
8,
1,
"euler",
"simple",
4,
8,
"disable"
],
"color": "#223",
"bgcolor": "#335"
}
],
"links": [
[
58,
3,
0,
35,
1,
"CONDITIONING"
],
[
59,
4,
0,
35,
2,
"CONDITIONING"
],
[
60,
5,
0,
35,
3,
"LATENT"
],
[
61,
35,
0,
36,
3,
"LATENT"
],
[
63,
3,
0,
36,
1,
"CONDITIONING"
],
[
64,
4,
0,
36,
2,
"CONDITIONING"
],
[
65,
36,
0,
9,
0,
"LATENT"
],
[
88,
29,
0,
35,
0,
"MODEL"
],
[
89,
29,
1,
4,
0,
"CLIP"
],
[
90,
29,
1,
3,
0,
"CLIP"
],
[
91,
44,
0,
36,
0,
"MODEL"
],
[
99,
50,
0,
29,
0,
"MODEL"
],
[
100,
51,
0,
29,
1,
"CLIP"
],
[
101,
52,
0,
44,
0,
"MODEL"
],
[
102,
55,
0,
9,
1,
"VAE"
],
[
103,
9,
0,
58,
0,
"IMAGE"
]
],
"groups": [],
"config": {},
"extra": {
"ds": {
"scale": 0.6410618351739488,
"offset": [
-1966.2624469350503,
1246.7903506223172
]
},
"frontendVersion": "1.27.10",
"VHS_latentpreview": false,
"VHS_latentpreviewrate": 0,
"VHS_MetadataImage": true,
"VHS_KeepIntermediate": true
},
"version": 0.4
}
@@ -1,597 +0,0 @@
{
"last_node_id": 52,
"last_link_id": 103,
"nodes": [
{
"id": 22,
"type": "BasicGuider",
"pos": [
383.62896728515625,
96.27555847167969
],
"size": [
161.1999969482422,
46
],
"flags": {},
"order": 8,
"mode": 0,
"inputs": [
{
"name": "model",
"type": "MODEL",
"link": 102,
"slot_index": 0
},
{
"name": "conditioning",
"type": "CONDITIONING",
"link": 87,
"slot_index": 1
}
],
"outputs": [
{
"name": "GUIDER",
"type": "GUIDER",
"links": [
30
],
"slot_index": 0,
"shape": 3
}
],
"properties": {
"Node name for S&R": "BasicGuider"
},
"widgets_values": []
},
{
"id": 16,
"type": "KSamplerSelect",
"pos": [
398.8528137207031,
360.1959533691406
],
"size": [
210,
58
],
"flags": {},
"order": 0,
"mode": 0,
"inputs": [],
"outputs": [
{
"name": "SAMPLER",
"type": "SAMPLER",
"links": [
19
],
"shape": 3
}
],
"properties": {
"Node name for S&R": "KSamplerSelect"
},
"widgets_values": [
"deis"
]
},
{
"id": 13,
"type": "SamplerCustomAdvanced",
"pos": [
883.27783203125,
267.0603942871094
],
"size": [
236.8000030517578,
387.28668212890625
],
"flags": {},
"order": 9,
"mode": 0,
"inputs": [
{
"name": "noise",
"type": "NOISE",
"link": 37,
"slot_index": 0
},
{
"name": "guider",
"type": "GUIDER",
"link": 30,
"slot_index": 1
},
{
"name": "sampler",
"type": "SAMPLER",
"link": 19,
"slot_index": 2
},
{
"name": "sigmas",
"type": "SIGMAS",
"link": 20,
"slot_index": 3
},
{
"name": "latent_image",
"type": "LATENT",
"link": 82,
"slot_index": 4
}
],
"outputs": [
{
"name": "output",
"type": "LATENT",
"links": [
83
],
"slot_index": 0,
"shape": 3
},
{
"name": "denoised_output",
"type": "LATENT",
"links": null,
"shape": 3
}
],
"properties": {
"Node name for S&R": "SamplerCustomAdvanced"
},
"widgets_values": []
},
{
"id": 9,
"type": "SaveImage",
"pos": [
1153.8681640625,
66.58897399902344
],
"size": [
512.2255859375,
692.112548828125
],
"flags": {},
"order": 11,
"mode": 0,
"inputs": [
{
"name": "images",
"type": "IMAGE",
"link": 85
}
],
"outputs": [],
"properties": {
"Node name for S&R": "SaveImage"
},
"widgets_values": [
"ComfyUI"
]
},
{
"id": 41,
"type": "CLIPTextEncode",
"pos": [
420.7973937988281,
467.3779296875
],
"size": [
400,
200
],
"flags": {},
"order": 7,
"mode": 0,
"inputs": [
{
"name": "clip",
"type": "CLIP",
"link": 99
}
],
"outputs": [
{
"name": "CONDITIONING",
"type": "CONDITIONING",
"links": [
87
],
"slot_index": 0
}
],
"properties": {
"Node name for S&R": "CLIPTextEncode"
},
"widgets_values": [
"A towering technological monolith in a cyberpunk cityscape at night, with \"DisTorch\" emblazoned across its surface in massive neon red letters that illuminate the surrounding buildings. The text occupies the central third of the frame, crafted from glowing plasma tubes and crackling energy. Rain-slicked streets below reflect the brilliant signage, while holographic advertisements and flying vehicles populate the background. Moody atmospheric lighting, heavy contrast, photorealistic textures, cinematic color grading."
]
},
{
"id": 17,
"type": "BasicScheduler",
"pos": [
660.5484008789062,
118.03018188476562
],
"size": [
210,
106
],
"flags": {},
"order": 6,
"mode": 0,
"inputs": [
{
"name": "model",
"type": "MODEL",
"link": 103,
"slot_index": 0
}
],
"outputs": [
{
"name": "SIGMAS",
"type": "SIGMAS",
"links": [
20
],
"shape": 3
}
],
"properties": {
"Node name for S&R": "BasicScheduler"
},
"widgets_values": [
"ddim_uniform",
30,
1
]
},
{
"id": 40,
"type": "VAEDecode",
"pos": [
875.2288818359375,
120.00743103027344
],
"size": [
210,
46
],
"flags": {},
"order": 10,
"mode": 0,
"inputs": [
{
"name": "samples",
"type": "LATENT",
"link": 83
},
{
"name": "vae",
"type": "VAE",
"link": 84
}
],
"outputs": [
{
"name": "IMAGE",
"type": "IMAGE",
"links": [
85
],
"slot_index": 0
}
],
"properties": {
"Node name for S&R": "VAEDecode"
},
"widgets_values": []
},
{
"id": 39,
"type": "EmptySD3LatentImage",
"pos": [
644.3074951171875,
299.38372802734375
],
"size": [
210,
106
],
"flags": {},
"order": 1,
"mode": 0,
"inputs": [],
"outputs": [
{
"name": "LATENT",
"type": "LATENT",
"links": [
82
],
"slot_index": 0
}
],
"properties": {
"Node name for S&R": "EmptySD3LatentImage"
},
"widgets_values": [
1024,
1024,
1
]
},
{
"id": 25,
"type": "RandomNoise",
"pos": [
390.974853515625,
209.66781616210938
],
"size": [
236.60824584960938,
88.84210968017578
],
"flags": {},
"order": 2,
"mode": 0,
"inputs": [],
"outputs": [
{
"name": "NOISE",
"type": "NOISE",
"links": [
37
],
"shape": 3
}
],
"properties": {
"Node name for S&R": "RandomNoise"
},
"widgets_values": [
5770521,
"fixed"
]
},
{
"id": 37,
"type": "UnetLoaderGGUFDisTorchMultiGPU",
"pos": [
-71.38706970214844,
90.67648315429688
],
"size": [
417.6407775878906,
154
],
"flags": {},
"order": 3,
"mode": 0,
"inputs": [],
"outputs": [
{
"name": "MODEL",
"type": "MODEL",
"links": [
102,
103
],
"slot_index": 0
}
],
"properties": {
"Node name for S&R": "UnetLoaderGGUFDisTorchMultiGPU"
},
"widgets_values": [
"flux1-dev-Q8_0.gguf",
"cuda:0",
6,
false,
""
],
"color": "#233",
"bgcolor": "#355"
},
{
"id": 33,
"type": "VAELoaderMultiGPU",
"pos": [
-66.57144165039062,
479.7591552734375
],
"size": [
450.23980712890625,
82
],
"flags": {},
"order": 4,
"mode": 0,
"inputs": [],
"outputs": [
{
"name": "VAE",
"type": "VAE",
"links": [
84
],
"slot_index": 0,
"shape": 3
}
],
"properties": {
"Node name for S&R": "VAELoaderMultiGPU"
},
"widgets_values": [
"ae.safetensors",
"cuda:1"
],
"color": "#233",
"bgcolor": "#355"
},
{
"id": 35,
"type": "DualCLIPLoaderGGUFMultiGPU",
"pos": [
-69.62869262695312,
285.6338195800781
],
"size": [
435.3804016113281,
130
],
"flags": {},
"order": 5,
"mode": 0,
"inputs": [],
"outputs": [
{
"name": "CLIP",
"type": "CLIP",
"links": [
99
],
"slot_index": 0
}
],
"properties": {
"Node name for S&R": "DualCLIPLoaderGGUFMultiGPU"
},
"widgets_values": [
"t5-v1_1-xxl-encoder-Q4_K_M.gguf",
"clip_l.safetensors",
"flux",
"cuda:1"
],
"color": "#233",
"bgcolor": "#355"
}
],
"links": [
[
19,
16,
0,
13,
2,
"SAMPLER"
],
[
20,
17,
0,
13,
3,
"SIGMAS"
],
[
30,
22,
0,
13,
1,
"GUIDER"
],
[
37,
25,
0,
13,
0,
"NOISE"
],
[
82,
39,
0,
13,
4,
"LATENT"
],
[
83,
13,
0,
40,
0,
"LATENT"
],
[
84,
33,
0,
40,
1,
"VAE"
],
[
85,
40,
0,
9,
0,
"IMAGE"
],
[
87,
41,
0,
22,
1,
"CONDITIONING"
],
[
99,
35,
0,
41,
0,
"CLIP"
],
[
102,
37,
0,
22,
0,
"MODEL"
],
[
103,
37,
0,
17,
0,
"MODEL"
]
],
"groups": [],
"config": {},
"extra": {
"ds": {
"scale": 1,
"offset": [
574.0015045555798,
267.12195585438565
]
},
"ue_links": [],
"VHS_latentpreview": false,
"VHS_latentpreviewrate": 0,
"node_versions": {
"comfy-core": "0.3.12",
"ComfyUI-MultiGPU": "3dbfcc713552b0560a471c10d9b29520e8b1981e"
},
"VHS_MetadataImage": true,
"VHS_KeepIntermediate": true
},
"version": 0.4
}
File diff suppressed because it is too large Load Diff
-675
View File
@@ -1,675 +0,0 @@
{
"last_node_id": 36,
"last_link_id": 53,
"nodes": [
{
"id": 33,
"type": "VAELoaderMultiGPU",
"pos": [
-62.57144546508789,
460.42584228515625
],
"size": [
450.23980712890625,
82
],
"flags": {},
"order": 0,
"mode": 0,
"inputs": [],
"outputs": [
{
"name": "VAE",
"type": "VAE",
"links": [
48,
49
],
"slot_index": 0,
"shape": 3
}
],
"properties": {
"Node name for S&R": "VAELoaderMultiGPU"
},
"widgets_values": [
"ae.safetensors",
"cuda:0"
]
},
{
"id": 9,
"type": "SaveImage",
"pos": [
553.2835693359375,
604.8348999023438
],
"size": [
512.2255859375,
692.112548828125
],
"flags": {},
"order": 13,
"mode": 0,
"inputs": [
{
"name": "images",
"type": "IMAGE",
"link": 9
}
],
"outputs": [],
"properties": {
"Node name for S&R": "SaveImage"
},
"widgets_values": [
"ComfyUI"
]
},
{
"id": 22,
"type": "BasicGuider",
"pos": [
397.337158203125,
135.11544799804688
],
"size": [
161.1999969482422,
46
],
"flags": {},
"order": 10,
"mode": 0,
"inputs": [
{
"name": "model",
"type": "MODEL",
"link": 51,
"slot_index": 0
},
{
"name": "conditioning",
"type": "CONDITIONING",
"link": 40,
"slot_index": 1
}
],
"outputs": [
{
"name": "GUIDER",
"type": "GUIDER",
"links": [
30
],
"slot_index": 0,
"shape": 3
}
],
"properties": {
"Node name for S&R": "BasicGuider"
},
"widgets_values": []
},
{
"id": 25,
"type": "RandomNoise",
"pos": [
381.8360595703125,
230.80130004882812
],
"size": [
236.60824584960938,
88.84210968017578
],
"flags": {},
"order": 1,
"mode": 0,
"inputs": [],
"outputs": [
{
"name": "NOISE",
"type": "NOISE",
"links": [
37
],
"shape": 3
}
],
"properties": {
"Node name for S&R": "RandomNoise"
},
"widgets_values": [
5770521,
"fixed"
]
},
{
"id": 16,
"type": "KSamplerSelect",
"pos": [
398.8528137207031,
360.1959533691406
],
"size": [
210,
58
],
"flags": {},
"order": 2,
"mode": 0,
"inputs": [],
"outputs": [
{
"name": "SAMPLER",
"type": "SAMPLER",
"links": [
19
],
"shape": 3
}
],
"properties": {
"Node name for S&R": "KSamplerSelect"
},
"widgets_values": [
"euler"
]
},
{
"id": 17,
"type": "BasicScheduler",
"pos": [
573.0526123046875,
137.1051483154297
],
"size": [
210,
106
],
"flags": {},
"order": 8,
"mode": 0,
"inputs": [
{
"name": "model",
"type": "MODEL",
"link": 52,
"slot_index": 0
}
],
"outputs": [
{
"name": "SIGMAS",
"type": "SIGMAS",
"links": [
20
],
"shape": 3
}
],
"properties": {
"Node name for S&R": "BasicScheduler"
},
"widgets_values": [
"simple",
20,
0.75
]
},
{
"id": 30,
"type": "VAEEncode",
"pos": [
626.94189453125,
306.2926940917969
],
"size": [
140,
46.959110260009766
],
"flags": {},
"order": 7,
"mode": 0,
"inputs": [
{
"name": "pixels",
"type": "IMAGE",
"link": 53
},
{
"name": "vae",
"type": "VAE",
"link": 49
}
],
"outputs": [
{
"name": "LATENT",
"type": "LATENT",
"links": [
44
],
"slot_index": 0,
"shape": 3
}
],
"properties": {
"Node name for S&R": "VAEEncode"
},
"widgets_values": []
},
{
"id": 8,
"type": "VAEDecode",
"pos": [
625.9295654296875,
428.6144714355469
],
"size": [
140,
46
],
"flags": {},
"order": 12,
"mode": 0,
"inputs": [
{
"name": "samples",
"type": "LATENT",
"link": 24
},
{
"name": "vae",
"type": "VAE",
"link": 48
}
],
"outputs": [
{
"name": "IMAGE",
"type": "IMAGE",
"links": [
9
],
"slot_index": 0
}
],
"properties": {
"Node name for S&R": "VAEDecode"
},
"widgets_values": []
},
{
"id": 13,
"type": "SamplerCustomAdvanced",
"pos": [
806.6261596679688,
163.39205932617188
],
"size": [
236.8000030517578,
387.28668212890625
],
"flags": {},
"order": 11,
"mode": 0,
"inputs": [
{
"name": "noise",
"type": "NOISE",
"link": 37,
"slot_index": 0
},
{
"name": "guider",
"type": "GUIDER",
"link": 30,
"slot_index": 1
},
{
"name": "sampler",
"type": "SAMPLER",
"link": 19,
"slot_index": 2
},
{
"name": "sigmas",
"type": "SIGMAS",
"link": 20,
"slot_index": 3
},
{
"name": "latent_image",
"type": "LATENT",
"link": 44,
"slot_index": 4
}
],
"outputs": [
{
"name": "output",
"type": "LATENT",
"links": [
24
],
"slot_index": 0,
"shape": 3
},
{
"name": "denoised_output",
"type": "LATENT",
"links": null,
"shape": 3
}
],
"properties": {
"Node name for S&R": "SamplerCustomAdvanced"
},
"widgets_values": []
},
{
"id": 26,
"type": "LoadImage",
"pos": [
-49.16379928588867,
590.3043823242188
],
"size": [
571.7417602539062,
708.3975830078125
],
"flags": {},
"order": 3,
"mode": 0,
"inputs": [],
"outputs": [
{
"name": "IMAGE",
"type": "IMAGE",
"links": [
53
],
"slot_index": 0,
"shape": 3
},
{
"name": "MASK",
"type": "MASK",
"links": null,
"shape": 3
}
],
"properties": {
"Node name for S&R": "LoadImage"
},
"widgets_values": [
"43400095.png",
"image"
]
},
{
"id": 6,
"type": "CLIPTextEncode",
"pos": [
405.42108154296875,
460.1813049316406
],
"size": [
210,
76
],
"flags": {},
"order": 9,
"mode": 0,
"inputs": [
{
"name": "clip",
"type": "CLIP",
"link": 50
}
],
"outputs": [
{
"name": "CONDITIONING",
"type": "CONDITIONING",
"links": [
40
],
"slot_index": 0
}
],
"properties": {
"Node name for S&R": "CLIPTextEncode"
},
"widgets_values": [
"anime style"
]
},
{
"id": 34,
"type": "UnetLoaderGGUFMultiGPU",
"pos": [
-42.17792892456055,
132.78921508789062
],
"size": [
417.5072937011719,
97.88888549804688
],
"flags": {},
"order": 4,
"mode": 0,
"inputs": [],
"outputs": [
{
"name": "MODEL",
"type": "MODEL",
"links": [
51,
52
],
"slot_index": 0
}
],
"properties": {
"Node name for S&R": "UnetLoaderGGUFMultiGPU"
},
"widgets_values": [
"flux1-dev-Q4_0.gguf",
"cuda:1"
],
"color": "#332922",
"bgcolor": "#593930"
},
{
"id": 36,
"type": "Note",
"pos": [
-448.1904602050781,
138.0183868408203
],
"size": [
384.5566711425781,
276.04486083984375
],
"flags": {},
"order": 5,
"mode": 0,
"inputs": [],
"outputs": [],
"title": "This workflow requires ComfyUI-GGUF",
"properties": {},
"widgets_values": [
"**⚠️ Dependency Alert! ⚠️**\n\nThis workflow relies on nodes from the [ComfyUI-GGUF](https://github.com/city96/ComfyUI-GGUF) custom node repository to function correctly. \n\nSpecifically:\n\n*\"UnetLoaderGGUFMultiGPU\" and \n*\"DualCLIPLoaderGGUFMultiGPU\" \n\nwill not work without this dependency installed. Please install ComfyUI-GGUF before attempting to run this workflow."
],
"color": "#332922",
"bgcolor": "#593930"
},
{
"id": 35,
"type": "DualCLIPLoaderGGUFMultiGPU",
"pos": [
-52.30849075317383,
280.70391845703125
],
"size": [
435.3804016113281,
130
],
"flags": {},
"order": 6,
"mode": 0,
"inputs": [],
"outputs": [
{
"name": "CLIP",
"type": "CLIP",
"links": [
50
],
"slot_index": 0
}
],
"properties": {
"Node name for S&R": "DualCLIPLoaderGGUFMultiGPU"
},
"widgets_values": [
"t5-v1_1-xxl-encoder-Q4_K_M.gguf",
"clip_l.safetensors",
"flux",
"cuda:0"
],
"color": "#332922",
"bgcolor": "#593930"
}
],
"links": [
[
9,
8,
0,
9,
0,
"IMAGE"
],
[
19,
16,
0,
13,
2,
"SAMPLER"
],
[
20,
17,
0,
13,
3,
"SIGMAS"
],
[
24,
13,
0,
8,
0,
"LATENT"
],
[
30,
22,
0,
13,
1,
"GUIDER"
],
[
37,
25,
0,
13,
0,
"NOISE"
],
[
40,
6,
0,
22,
1,
"CONDITIONING"
],
[
44,
30,
0,
13,
4,
"LATENT"
],
[
48,
33,
0,
8,
1,
"VAE"
],
[
49,
33,
0,
30,
1,
"VAE"
],
[
50,
35,
0,
6,
0,
"CLIP"
],
[
51,
34,
0,
22,
0,
"MODEL"
],
[
52,
34,
0,
17,
0,
"MODEL"
],
[
53,
26,
0,
30,
0,
"IMAGE"
]
],
"groups": [],
"config": {},
"extra": {
"ds": {
"scale": 0.7972024500001046,
"offset": [
1117.1276694292012,
150.83008522230102
]
},
"ue_links": [],
"VHS_latentpreview": false,
"VHS_latentpreviewrate": 0
},
"version": 0.4
}
File diff suppressed because it is too large Load Diff
-767
View File
@@ -1,767 +0,0 @@
{
"last_node_id": 107,
"last_link_id": 282,
"nodes": [
{
"id": 26,
"type": "FluxGuidance",
"pos": [
350.5116882324219,
321.9669494628906
],
"size": [
211.60000610351562,
58
],
"flags": {},
"order": 10,
"mode": 0,
"inputs": [
{
"name": "conditioning",
"type": "CONDITIONING",
"link": 175
}
],
"outputs": [
{
"name": "CONDITIONING",
"type": "CONDITIONING",
"links": [
129
],
"slot_index": 0,
"shape": 3
}
],
"properties": {
"Node name for S&R": "FluxGuidance"
},
"widgets_values": [
6
],
"color": "#233",
"bgcolor": "#355"
},
{
"id": 16,
"type": "KSamplerSelect",
"pos": [
351.79522705078125,
238.22244262695312
],
"size": [
210,
58
],
"flags": {},
"order": 0,
"mode": 0,
"inputs": [],
"outputs": [
{
"name": "SAMPLER",
"type": "SAMPLER",
"links": [
19
],
"shape": 3
}
],
"properties": {
"Node name for S&R": "KSamplerSelect"
},
"widgets_values": [
"euler"
]
},
{
"id": 44,
"type": "CLIPTextEncode",
"pos": [
352.4063415527344,
110.92157745361328
],
"size": [
806.6873168945312,
100.75743865966797
],
"flags": {},
"order": 7,
"mode": 0,
"inputs": [
{
"name": "clip",
"type": "CLIP",
"link": 271
}
],
"outputs": [
{
"name": "CONDITIONING",
"type": "CONDITIONING",
"links": [
175
],
"slot_index": 0
}
],
"title": "CLIP Text Encode (Positive Prompt)",
"properties": {
"Node name for S&R": "CLIPTextEncode"
},
"widgets_values": [
"anime style anime girl with massive fennec ears and one big fluffy tail, she has blonde hair long hair blue eyes wearing a pink sweater and a long blue skirt walking in a beautiful outdoor scenery with snow mountains in the background"
],
"color": "#232",
"bgcolor": "#353"
},
{
"id": 103,
"type": "Note",
"pos": [
-341.6152038574219,
140.59632873535156
],
"size": [
353.56494140625,
190.77996826171875
],
"flags": {},
"order": 1,
"mode": 0,
"inputs": [],
"outputs": [],
"title": "This workflow requires ComfyUI-GGUF",
"properties": {},
"widgets_values": [
"**⚠️ Dependency Alert! ⚠️**\n\nThis workflow relies on nodes from the [ComfyUI-GGUF](https://github.com/city96/ComfyUI-GGUF) custom node repository to function correctly. \n\nSpecifically:\n\n*\"CLIPLoaderGGUFMultiGPU\" \n\nwill not work without this dependency installed. Please install ComfyUI-GGUF before attempting to run this workflow."
],
"color": "#332922",
"bgcolor": "#593930"
},
{
"id": 25,
"type": "RandomNoise",
"pos": [
564.22607421875,
246.15061950683594
],
"size": [
240.3448944091797,
82
],
"flags": {},
"order": 2,
"mode": 0,
"inputs": [],
"outputs": [
{
"name": "NOISE",
"type": "NOISE",
"links": [
37
],
"shape": 3
}
],
"properties": {
"Node name for S&R": "RandomNoise"
},
"widgets_values": [
5770521,
"fixed"
],
"color": "#2a363b",
"bgcolor": "#3f5159"
},
{
"id": 17,
"type": "BasicScheduler",
"pos": [
566.8038940429688,
356.6055908203125
],
"size": [
210,
109.8011474609375
],
"flags": {},
"order": 9,
"mode": 0,
"inputs": [
{
"name": "model",
"type": "MODEL",
"link": 270,
"slot_index": 0
}
],
"outputs": [
{
"name": "SIGMAS",
"type": "SIGMAS",
"links": [
20
],
"shape": 3
}
],
"properties": {
"Node name for S&R": "BasicScheduler"
},
"widgets_values": [
"simple",
20,
1
]
},
{
"id": 67,
"type": "ModelSamplingSD3",
"pos": [
353.3148193359375,
580.4356689453125
],
"size": [
210,
58
],
"flags": {},
"order": 8,
"mode": 0,
"inputs": [
{
"name": "model",
"type": "MODEL",
"link": 269
}
],
"outputs": [
{
"name": "MODEL",
"type": "MODEL",
"links": [
252
],
"slot_index": 0
}
],
"properties": {
"Node name for S&R": "ModelSamplingSD3"
},
"widgets_values": [
7
]
},
{
"id": 45,
"type": "EmptyHunyuanLatentVideo",
"pos": [
348.5732116699219,
417.52801513671875
],
"size": [
210,
130
],
"flags": {},
"order": 3,
"mode": 0,
"inputs": [],
"outputs": [
{
"name": "LATENT",
"type": "LATENT",
"links": [
180
],
"slot_index": 0
}
],
"properties": {
"Node name for S&R": "EmptyHunyuanLatentVideo"
},
"widgets_values": [
848,
480,
73,
1
]
},
{
"id": 87,
"type": "DualCLIPLoaderGGUFMultiGPU",
"pos": [
21.471084594726562,
250.58938598632812
],
"size": [
327.5999755859375,
130
],
"flags": {},
"order": 4,
"mode": 0,
"inputs": [],
"outputs": [
{
"name": "CLIP",
"type": "CLIP",
"links": [
271
],
"slot_index": 0
}
],
"properties": {
"Node name for S&R": "DualCLIPLoaderGGUFMultiGPU"
},
"widgets_values": [
"clip_l.safetensors",
"llava-llama-3-8B-v1_1-Q4_K_M.gguf",
"hunyuan_video",
"cpu"
],
"color": "#332922",
"bgcolor": "#593930"
},
{
"id": 88,
"type": "VAELoaderMultiGPU",
"pos": [
16.678661346435547,
554.1597290039062
],
"size": [
322.5263366699219,
82
],
"flags": {},
"order": 5,
"mode": 0,
"inputs": [],
"outputs": [
{
"name": "VAE",
"type": "VAE",
"links": [
280
],
"slot_index": 0
}
],
"properties": {
"Node name for S&R": "VAELoaderMultiGPU"
},
"widgets_values": [
"hunyuan_video_vae_bf16.safetensors",
"cuda:0"
]
},
{
"id": 13,
"type": "SamplerCustomAdvanced",
"pos": [
811.649169921875,
248.65501403808594
],
"size": [
342.43023681640625,
387.5726623535156
],
"flags": {
"collapsed": false
},
"order": 12,
"mode": 0,
"inputs": [
{
"name": "noise",
"type": "NOISE",
"link": 37,
"slot_index": 0
},
{
"name": "guider",
"type": "GUIDER",
"link": 30,
"slot_index": 1
},
{
"name": "sampler",
"type": "SAMPLER",
"link": 19,
"slot_index": 2
},
{
"name": "sigmas",
"type": "SIGMAS",
"link": 20,
"slot_index": 3
},
{
"name": "latent_image",
"type": "LATENT",
"link": 180,
"slot_index": 4
}
],
"outputs": [
{
"name": "output",
"type": "LATENT",
"links": [
281
],
"slot_index": 0,
"shape": 3
},
{
"name": "denoised_output",
"type": "LATENT",
"links": null,
"shape": 3
}
],
"properties": {
"Node name for S&R": "SamplerCustomAdvanced"
},
"widgets_values": []
},
{
"id": 22,
"type": "BasicGuider",
"pos": [
579.3200073242188,
506.49493408203125
],
"size": [
222.3482666015625,
46
],
"flags": {
"collapsed": true
},
"order": 11,
"mode": 0,
"inputs": [
{
"name": "model",
"type": "MODEL",
"link": 252,
"slot_index": 0
},
{
"name": "conditioning",
"type": "CONDITIONING",
"link": 129,
"slot_index": 1
}
],
"outputs": [
{
"name": "GUIDER",
"type": "GUIDER",
"links": [
30
],
"slot_index": 0,
"shape": 3
}
],
"properties": {
"Node name for S&R": "BasicGuider"
},
"widgets_values": []
},
{
"id": 107,
"type": "VAEDecodeTiled",
"pos": [
577.1324462890625,
546.57861328125
],
"size": [
210,
150
],
"flags": {},
"order": 13,
"mode": 0,
"inputs": [
{
"name": "samples",
"type": "LATENT",
"link": 281
},
{
"name": "vae",
"type": "VAE",
"link": 280
}
],
"outputs": [
{
"name": "IMAGE",
"type": "IMAGE",
"links": [
282
],
"slot_index": 0
}
],
"properties": {
"Node name for S&R": "VAEDecodeTiled"
},
"widgets_values": [
256,
64,
64,
8
]
},
{
"id": 86,
"type": "UnetLoaderGGUFMultiGPU",
"pos": [
28.1607723236084,
124.31423950195312
],
"size": [
315,
82
],
"flags": {},
"order": 6,
"mode": 0,
"inputs": [],
"outputs": [
{
"name": "MODEL",
"type": "MODEL",
"links": [
269,
270
],
"slot_index": 0
}
],
"properties": {
"Node name for S&R": "UnetLoaderGGUFMultiGPU"
},
"widgets_values": [
"hunyuan-video-t2v-720p-Q4_K_M.gguf",
"cuda:0"
],
"color": "#332922",
"bgcolor": "#593930"
},
{
"id": 102,
"type": "VHS_VideoCombine",
"pos": [
1161.8779296875,
-19.11272621154785
],
"size": [
580.7774658203125,
665.4212036132812
],
"flags": {},
"order": 14,
"mode": 0,
"inputs": [
{
"name": "images",
"type": "IMAGE",
"link": 282
},
{
"name": "audio",
"type": "AUDIO",
"link": null,
"shape": 7
},
{
"name": "meta_batch",
"type": "VHS_BatchManager",
"link": null,
"shape": 7
},
{
"name": "vae",
"type": "VAE",
"link": null,
"shape": 7
}
],
"outputs": [
{
"name": "Filenames",
"type": "VHS_FILENAMES",
"links": null
}
],
"properties": {
"Node name for S&R": "VHS_VideoCombine"
},
"widgets_values": {
"frame_rate": 25,
"loop_count": 0,
"filename_prefix": "HunyuanVideo",
"format": "video/h264-mp4",
"pix_fmt": "yuv420p",
"crf": 19,
"save_metadata": true,
"trim_to_audio": false,
"pingpong": false,
"save_output": true,
"videopreview": {
"hidden": false,
"paused": false,
"params": {
"filename": "HunyuanVideo_00058.mp4",
"subfolder": "",
"type": "output",
"format": "video/h264-mp4",
"frame_rate": 24,
"workflow": "HunyuanVideo_00058.png",
"fullpath": "/home/johnj/ComfyUI/output/HunyuanVideo_00058.mp4"
},
"muted": false
}
}
}
],
"links": [
[
19,
16,
0,
13,
2,
"SAMPLER"
],
[
20,
17,
0,
13,
3,
"SIGMAS"
],
[
30,
22,
0,
13,
1,
"GUIDER"
],
[
37,
25,
0,
13,
0,
"NOISE"
],
[
129,
26,
0,
22,
1,
"CONDITIONING"
],
[
175,
44,
0,
26,
0,
"CONDITIONING"
],
[
180,
45,
0,
13,
4,
"LATENT"
],
[
252,
67,
0,
22,
0,
"MODEL"
],
[
269,
86,
0,
67,
0,
"MODEL"
],
[
270,
86,
0,
17,
0,
"MODEL"
],
[
271,
87,
0,
44,
0,
"CLIP"
],
[
280,
88,
0,
107,
1,
"VAE"
],
[
281,
13,
0,
107,
0,
"LATENT"
],
[
282,
107,
0,
102,
0,
"IMAGE"
]
],
"groups": [],
"config": {},
"extra": {
"ds": {
"scale": 0.9646149645001282,
"offset": [
465.7708198313094,
178.06262567367494
]
},
"groupNodes": {},
"ue_links": [],
"VHS_latentpreview": false,
"VHS_latentpreviewrate": 0
},
"version": 0.4
}
-240
View File
@@ -1,240 +0,0 @@
{
"13": {
"inputs": {
"noise": [
"25",
0
],
"guider": [
"22",
0
],
"sampler": [
"16",
0
],
"sigmas": [
"17",
0
],
"latent_image": [
"45",
0
]
},
"class_type": "SamplerCustomAdvanced",
"_meta": {
"title": "SamplerCustomAdvanced"
}
},
"16": {
"inputs": {
"sampler_name": "euler"
},
"class_type": "KSamplerSelect",
"_meta": {
"title": "KSamplerSelect"
}
},
"17": {
"inputs": {
"scheduler": "simple",
"steps": 20,
"denoise": 1,
"model": [
"85",
0
]
},
"class_type": "BasicScheduler",
"_meta": {
"title": "BasicScheduler"
}
},
"22": {
"inputs": {
"model": [
"67",
0
],
"conditioning": [
"26",
0
]
},
"class_type": "BasicGuider",
"_meta": {
"title": "BasicGuider"
}
},
"25": {
"inputs": {
"noise_seed": 5770521
},
"class_type": "RandomNoise",
"_meta": {
"title": "RandomNoise"
}
},
"26": {
"inputs": {
"guidance": 6,
"conditioning": [
"44",
0
]
},
"class_type": "FluxGuidance",
"_meta": {
"title": "FluxGuidance"
}
},
"44": {
"inputs": {
"text": "A towering technological monolith in a cyberpunk cityscape at night, with alien letters emblazoned across its surface in massive neon blue-green mixed with purple letters that illuminate the surrounding buildings. The text occupies the central third of the frame, crafted from glowing plasma tubes and crackling energy. Rain-slicked streets below reflect the brilliant signage, while holographic advertisements and flying vehicles populate the background. Moody atmospheric lighting, heavy contrast, photorealistic textures, cinematic color grading.",
"clip": [
"82",
0
]
},
"class_type": "CLIPTextEncode",
"_meta": {
"title": "CLIP Text Encode (Positive Prompt)"
}
},
"45": {
"inputs": {
"width": 848,
"height": 480,
"length": 73,
"batch_size": 1
},
"class_type": "EmptyHunyuanLatentVideo",
"_meta": {
"title": "EmptyHunyuanLatentVideo"
}
},
"67": {
"inputs": {
"shift": 7,
"model": [
"85",
0
]
},
"class_type": "ModelSamplingSD3",
"_meta": {
"title": "ModelSamplingSD3"
}
},
"73": {
"inputs": {
"tile_size": 256,
"overlap": 64,
"temporal_size": 64,
"temporal_overlap": 8,
"samples": [
"13",
0
],
"vae": [
"81",
0
]
},
"class_type": "VAEDecodeTiled",
"_meta": {
"title": "VAE Decode (Tiled)"
}
},
"81": {
"inputs": {
"any_01": [
"88",
0
]
},
"class_type": "Any Switch (rgthree)",
"_meta": {
"title": "VAE Switch"
}
},
"82": {
"inputs": {
"any_01": [
"87",
0
]
},
"class_type": "Any Switch (rgthree)",
"_meta": {
"title": "CLIP Switch"
}
},
"85": {
"inputs": {
"any_01": [
"86",
0
]
},
"class_type": "Any Switch (rgthree)",
"_meta": {
"title": "UNet Switch"
}
},
"86": {
"inputs": {
"unet_name": "fast-hunyuan-video-t2v-720p-Q8_0.gguf",
"device": "cuda:0"
},
"class_type": "UnetLoaderGGUFMultiGPU",
"_meta": {
"title": "UnetLoaderGGUFMultiGPU"
}
},
"87": {
"inputs": {
"clip_name1": "clip_l.safetensors",
"clip_name2": "llava-llama-3-8B-v1_1-Q4_K_M.gguf",
"type": "hunyuan_video",
"device": "cuda:1"
},
"class_type": "DualCLIPLoaderGGUFMultiGPU",
"_meta": {
"title": "DualCLIPLoaderGGUFMultiGPU"
}
},
"88": {
"inputs": {
"vae_name": "hunyuan_video_vae_bf16.safetensors",
"device": "cuda:1"
},
"class_type": "VAELoaderMultiGPU",
"_meta": {
"title": "VAELoaderMultiGPU"
}
},
"102": {
"inputs": {
"frame_rate": 24,
"loop_count": 0,
"filename_prefix": "HunyuanVideo",
"format": "video/h264-mp4",
"pix_fmt": "yuv420p",
"crf": 19,
"save_metadata": true,
"trim_to_audio": false,
"pingpong": false,
"save_output": true,
"images": [
"73",
0
]
},
"class_type": "VHS_VideoCombine",
"_meta": {
"title": "Video Combine 🎥🅥🅗🅢"
}
}
}
-789
View File
@@ -1,789 +0,0 @@
{
"last_node_id": 120,
"last_link_id": 156,
"nodes": [
{
"id": 72,
"type": "FluxGuidance",
"pos": [
3012.307373046875,
-267.3423767089844
],
"size": [
211.60000610351562,
58
],
"flags": {},
"order": 10,
"mode": 0,
"inputs": [
{
"name": "conditioning",
"type": "CONDITIONING",
"link": 83
}
],
"outputs": [
{
"name": "CONDITIONING",
"type": "CONDITIONING",
"links": [
79
],
"slot_index": 0,
"shape": 3
}
],
"properties": {
"Node name for S&R": "FluxGuidance"
},
"widgets_values": [
6
],
"color": "#233",
"bgcolor": "#355"
},
{
"id": 73,
"type": "ModelSamplingSD3",
"pos": [
3030.986328125,
216.49542236328125
],
"size": [
210,
58
],
"flags": {},
"order": 7,
"mode": 0,
"inputs": [
{
"name": "model",
"type": "MODEL",
"link": 141
}
],
"outputs": [
{
"name": "MODEL",
"type": "MODEL",
"links": [
78
],
"slot_index": 0
}
],
"properties": {
"Node name for S&R": "ModelSamplingSD3"
},
"widgets_values": [
7
]
},
{
"id": 74,
"type": "VAEDecodeTiled",
"pos": [
3246.459716796875,
191.86683654785156
],
"size": [
210,
150
],
"flags": {},
"order": 13,
"mode": 0,
"inputs": [
{
"name": "samples",
"type": "LATENT",
"link": 85
},
{
"name": "vae",
"type": "VAE",
"link": 99
}
],
"outputs": [
{
"name": "IMAGE",
"type": "IMAGE",
"links": [
82
],
"slot_index": 0
}
],
"properties": {
"Node name for S&R": "VAEDecodeTiled"
},
"widgets_values": [
256,
64,
64,
8
]
},
{
"id": 66,
"type": "BasicScheduler",
"pos": [
3250.771484375,
41.81864929199219
],
"size": [
210,
109.8011474609375
],
"flags": {},
"order": 8,
"mode": 0,
"inputs": [
{
"name": "model",
"type": "MODEL",
"link": 142,
"slot_index": 0
}
],
"outputs": [
{
"name": "SIGMAS",
"type": "SIGMAS",
"links": [
90
],
"shape": 3
}
],
"properties": {
"Node name for S&R": "BasicScheduler"
},
"widgets_values": [
"simple",
20,
1
]
},
{
"id": 69,
"type": "KSamplerSelect",
"pos": [
3505.5615234375,
-276.5766296386719
],
"size": [
210,
58
],
"flags": {},
"order": 0,
"mode": 0,
"inputs": [],
"outputs": [
{
"name": "SAMPLER",
"type": "SAMPLER",
"links": [
89
],
"shape": 3
}
],
"properties": {
"Node name for S&R": "KSamplerSelect"
},
"widgets_values": [
"euler"
]
},
{
"id": 115,
"type": "EmptyHunyuanLatentVideo",
"pos": [
3026.87939453125,
50.70602035522461
],
"size": [
210,
130
],
"flags": {
"collapsed": false
},
"order": 1,
"mode": 0,
"inputs": [],
"outputs": [
{
"name": "LATENT",
"type": "LATENT",
"links": [
155
],
"slot_index": 0
}
],
"properties": {
"Node name for S&R": "EmptyHunyuanLatentVideo"
},
"widgets_values": [
368,
640,
65,
1
]
},
{
"id": 78,
"type": "Note",
"pos": [
2631.16015625,
-399.4529113769531
],
"size": [
353.56494140625,
190.77996826171875
],
"flags": {},
"order": 2,
"mode": 0,
"inputs": [],
"outputs": [],
"title": "This workflow requires ComfyUI-GGUF",
"properties": {},
"widgets_values": [
"**⚠️ Dependency Alert! ⚠️**\n\nThis workflow relies on nodes from the [ComfyUI-GGUF](https://github.com/city96/ComfyUI-GGUF) custom node repository to function correctly. \n\nSpecifically:\n\n*\"CLIPLoaderGGUFMultiGPU\" \n\nwill not work without this dependency installed. Please install ComfyUI-GGUF before attempting to run this workflow."
],
"color": "#332922",
"bgcolor": "#593930"
},
{
"id": 68,
"type": "RandomNoise",
"pos": [
3244.127685546875,
-303.9937438964844
],
"size": [
250.37998962402344,
82
],
"flags": {},
"order": 3,
"mode": 0,
"inputs": [],
"outputs": [
{
"name": "NOISE",
"type": "NOISE",
"links": [
87
],
"shape": 3
}
],
"properties": {
"Node name for S&R": "RandomNoise"
},
"widgets_values": [
5770521,
"fixed"
],
"color": "#2a363b",
"bgcolor": "#3f5159"
},
{
"id": 70,
"type": "VHS_VideoCombine",
"pos": [
3809.87548828125,
-522.964111328125
],
"size": [
338.94024658203125,
902.6787109375
],
"flags": {},
"order": 14,
"mode": 0,
"inputs": [
{
"name": "images",
"type": "IMAGE",
"link": 82
},
{
"name": "audio",
"type": "AUDIO",
"link": null,
"shape": 7
},
{
"name": "meta_batch",
"type": "VHS_BatchManager",
"link": null,
"shape": 7
},
{
"name": "vae",
"type": "VAE",
"link": null,
"shape": 7
}
],
"outputs": [
{
"name": "Filenames",
"type": "VHS_FILENAMES",
"links": null
}
],
"properties": {
"Node name for S&R": "VHS_VideoCombine"
},
"widgets_values": {
"frame_rate": 24,
"loop_count": 0,
"filename_prefix": "HunyuanVideo",
"format": "video/h264-mp4",
"pix_fmt": "yuv420p",
"crf": 19,
"save_metadata": true,
"trim_to_audio": false,
"pingpong": false,
"save_output": true,
"videopreview": {
"hidden": false,
"paused": false,
"params": {
"filename": "HunyuanVideo_00336.mp4",
"subfolder": "",
"type": "output",
"format": "video/h264-mp4",
"frame_rate": 24,
"workflow": "HunyuanVideo_00336.png",
"fullpath": "/home/johnj/ComfyUI/output/HunyuanVideo_00336.mp4"
},
"muted": false
}
}
},
{
"id": 64,
"type": "BasicGuider",
"pos": [
3288.76025390625,
-192.04156494140625
],
"size": [
222.3482666015625,
46
],
"flags": {
"collapsed": true
},
"order": 11,
"mode": 0,
"inputs": [
{
"name": "model",
"type": "MODEL",
"link": 78,
"slot_index": 0
},
{
"name": "conditioning",
"type": "CONDITIONING",
"link": 79,
"slot_index": 1
}
],
"outputs": [
{
"name": "GUIDER",
"type": "GUIDER",
"links": [
88
],
"slot_index": 0,
"shape": 3
}
],
"properties": {
"Node name for S&R": "BasicGuider"
},
"widgets_values": []
},
{
"id": 67,
"type": "CLIPTextEncode",
"pos": [
3032.827392578125,
-153.691650390625
],
"size": [
422.84503173828125,
164.31304931640625
],
"flags": {},
"order": 9,
"mode": 0,
"inputs": [
{
"name": "clip",
"type": "CLIP",
"link": 156
}
],
"outputs": [
{
"name": "CONDITIONING",
"type": "CONDITIONING",
"links": [
83
],
"slot_index": 0
}
],
"title": "CLIP Text Encode (Positive Prompt)",
"properties": {
"Node name for S&R": "CLIPTextEncode"
},
"widgets_values": [
"A light green frog with brown spots stares forward with its left eye moving subtly. The frog's skin is textured with small bumps, and its spots appear in irregular patterns across its head and face. The eye is round and black with a subtle shine. The head is slightly tilted to its left, and the body is barely visible. The background is a flat, solid bright yellow color, extending beyond the frog in all directions, with the lower part having a slight gradient into a lighter green. The camera zooms in slowly on the frog's eye and the frog looks directly at the viewer. The overall lighting is bright and diffused, creating a soft appearance."
],
"color": "#232",
"bgcolor": "#353"
},
{
"id": 76,
"type": "VAELoaderMultiGPU",
"pos": [
2632.252685546875,
327.2115783691406
],
"size": [
341.07464599609375,
87.14057922363281
],
"flags": {},
"order": 4,
"mode": 0,
"inputs": [],
"outputs": [
{
"name": "VAE",
"type": "VAE",
"links": [
99
],
"slot_index": 0
}
],
"properties": {
"Node name for S&R": "VAELoaderMultiGPU"
},
"widgets_values": [
"hunyuan_video_vae_bf16.safetensors",
"cuda:1"
],
"color": "#233",
"bgcolor": "#355"
},
{
"id": 75,
"type": "SamplerCustomAdvanced",
"pos": [
3517.626953125,
-117.69574737548828
],
"size": [
292.4319763183594,
479.03521728515625
],
"flags": {
"collapsed": false
},
"order": 12,
"mode": 0,
"inputs": [
{
"name": "noise",
"type": "NOISE",
"link": 87,
"slot_index": 0
},
{
"name": "guider",
"type": "GUIDER",
"link": 88,
"slot_index": 1
},
{
"name": "sampler",
"type": "SAMPLER",
"link": 89,
"slot_index": 2
},
{
"name": "sigmas",
"type": "SIGMAS",
"link": 90,
"slot_index": 3
},
{
"name": "latent_image",
"type": "LATENT",
"link": 155,
"slot_index": 4
}
],
"outputs": [
{
"name": "output",
"type": "LATENT",
"links": [
85
],
"slot_index": 0,
"shape": 3
},
{
"name": "denoised_output",
"type": "LATENT",
"links": null,
"shape": 3
}
],
"properties": {
"Node name for S&R": "SamplerCustomAdvanced"
},
"widgets_values": []
},
{
"id": 88,
"type": "UnetLoaderGGUFDisTorchMultiGPU",
"pos": [
2624.267822265625,
-66.1816177368164
],
"size": [
358.005859375,
154
],
"flags": {},
"order": 5,
"mode": 0,
"inputs": [],
"outputs": [
{
"name": "MODEL",
"type": "MODEL",
"links": [
141,
142
],
"slot_index": 0
}
],
"properties": {
"Node name for S&R": "UnetLoaderGGUFDisTorchMultiGPU"
},
"widgets_values": [
"hunyuan-video-t2v-720p-Q8_0.gguf",
"cuda:0",
8,
false,
""
],
"color": "#233",
"bgcolor": "#355"
},
{
"id": 120,
"type": "DualCLIPLoaderGGUFMultiGPU",
"pos": [
2625.07763671875,
132.1048126220703
],
"size": [
348.16229248046875,
130
],
"flags": {},
"order": 6,
"mode": 0,
"inputs": [],
"outputs": [
{
"name": "CLIP",
"type": "CLIP",
"links": [
156
],
"slot_index": 0
}
],
"properties": {
"Node name for S&R": "DualCLIPLoaderGGUFMultiGPU"
},
"widgets_values": [
"clip_l.safetensors",
"llava-llama-3-8B-v1_1-Q4_K_M.gguf",
"hunyuan_video",
"cpu"
],
"color": "#233",
"bgcolor": "#355"
}
],
"links": [
[
78,
73,
0,
64,
0,
"MODEL"
],
[
79,
72,
0,
64,
1,
"CONDITIONING"
],
[
82,
74,
0,
70,
0,
"IMAGE"
],
[
83,
67,
0,
72,
0,
"CONDITIONING"
],
[
85,
75,
0,
74,
0,
"LATENT"
],
[
87,
68,
0,
75,
0,
"NOISE"
],
[
88,
64,
0,
75,
1,
"GUIDER"
],
[
89,
69,
0,
75,
2,
"SAMPLER"
],
[
90,
66,
0,
75,
3,
"SIGMAS"
],
[
99,
76,
0,
74,
1,
"VAE"
],
[
141,
88,
0,
73,
0,
"MODEL"
],
[
142,
88,
0,
66,
0,
"MODEL"
],
[
155,
115,
0,
75,
4,
"LATENT"
],
[
156,
120,
0,
67,
0,
"CLIP"
]
],
"groups": [
{
"id": 1,
"title": "GGUFDisTorchMultiGPU",
"bounding": [
2620.569091796875,
-121.6815185546875,
360.4816589355469,
537.903076171875
],
"color": "#8AA",
"font_size": 24,
"flags": {}
}
],
"config": {},
"extra": {
"ds": {
"scale": 1.167184107045179,
"offset": [
-2360.0515813693187,
465.0591039206934
]
},
"ue_links": [],
"VHS_latentpreview": false,
"VHS_latentpreviewrate": 0,
"VHS_MetadataImage": true,
"VHS_KeepIntermediate": true
},
"version": 0.4
}
-737
View File
@@ -1,737 +0,0 @@
{
"id": "a6ee03c8-e601-4b33-87dc-64e9ed484de8",
"revision": 0,
"last_node_id": 26,
"last_link_id": 63,
"nodes": [
{
"id": 2,
"type": "KSampler",
"pos": [
1235.140380859375,
-287.8480529785156
],
"size": [
295.7660217285156,
474
],
"flags": {},
"order": 7,
"mode": 0,
"inputs": [
{
"name": "model",
"type": "MODEL",
"link": 35
},
{
"name": "positive",
"type": "CONDITIONING",
"link": 46
},
{
"name": "negative",
"type": "CONDITIONING",
"link": 59
},
{
"name": "latent_image",
"type": "LATENT",
"link": 9
}
],
"outputs": [
{
"name": "LATENT",
"type": "LATENT",
"slot_index": 0,
"links": [
6,
52
]
}
],
"properties": {
"Node name for S&R": "KSampler"
},
"widgets_values": [
5770521,
"fixed",
20,
8,
"dpmpp_2m_sde_gpu",
"karras",
1
]
},
{
"id": 21,
"type": "CLIPTextEncode",
"pos": [
937.1891479492188,
-240.19276428222656
],
"size": [
285.6000061035156,
88
],
"flags": {},
"order": 3,
"mode": 0,
"inputs": [
{
"name": "clip",
"type": "CLIP",
"link": 54
}
],
"outputs": [
{
"name": "CONDITIONING",
"type": "CONDITIONING",
"slot_index": 0,
"links": [
46
]
}
],
"title": "CLIP Text Encode (Positive Prompt)",
"properties": {
"Node name for S&R": "CLIPTextEncode"
},
"widgets_values": [
"realistic photograph of a glass of wine, depth of field, bokeh"
],
"color": "#232",
"bgcolor": "#353"
},
{
"id": 24,
"type": "CLIPTextEncode",
"pos": [
946.2571411132812,
271.57373046875
],
"size": [
285.6000061035156,
88
],
"flags": {},
"order": 5,
"mode": 0,
"inputs": [
{
"name": "clip",
"type": "CLIP",
"link": 61
}
],
"outputs": [
{
"name": "CONDITIONING",
"type": "CONDITIONING",
"slot_index": 0,
"links": [
56
]
}
],
"title": "CLIP Text Encode (Positive Prompt)",
"properties": {
"Node name for S&R": "CLIPTextEncode"
},
"widgets_values": [
"realistic photograph of a glass of wine, depth of field, bokeh"
],
"color": "#232",
"bgcolor": "#353"
},
{
"id": 15,
"type": "VAEDecode",
"pos": [
1556.0386962890625,
268.0700988769531
],
"size": [
210,
46
],
"flags": {
"collapsed": false
},
"order": 11,
"mode": 0,
"inputs": [
{
"name": "samples",
"type": "LATENT",
"link": 22
},
{
"name": "vae",
"type": "VAE",
"link": 63
}
],
"outputs": [
{
"name": "IMAGE",
"type": "IMAGE",
"slot_index": 0,
"links": [
53
]
}
],
"properties": {
"Node name for S&R": "VAEDecode"
},
"widgets_values": []
},
{
"id": 23,
"type": "SaveImage",
"pos": [
1796.7874755859375,
243.16427612304688
],
"size": [
473.8890686035156,
484.4914245605469
],
"flags": {},
"order": 12,
"mode": 0,
"inputs": [
{
"name": "images",
"type": "IMAGE",
"link": 53
}
],
"outputs": [],
"properties": {
"Node name for S&R": "SaveImage"
},
"widgets_values": [
"ComfyUI"
]
},
{
"id": 6,
"type": "PreviewImage",
"pos": [
1805.782958984375,
-291.3573303222656
],
"size": [
491.1799011230469,
494.12640380859375
],
"flags": {},
"order": 10,
"mode": 0,
"inputs": [
{
"name": "images",
"type": "IMAGE",
"link": 7
}
],
"outputs": [],
"properties": {
"Node name for S&R": "PreviewImage"
},
"widgets_values": []
},
{
"id": 5,
"type": "VAEDecode",
"pos": [
1592.0411376953125,
-260.3390808105469
],
"size": [
140,
46
],
"flags": {
"collapsed": false
},
"order": 8,
"mode": 0,
"inputs": [
{
"name": "samples",
"type": "LATENT",
"link": 6
},
{
"name": "vae",
"type": "VAE",
"link": 36
}
],
"outputs": [
{
"name": "IMAGE",
"type": "IMAGE",
"slot_index": 0,
"links": [
7
]
}
],
"properties": {
"Node name for S&R": "VAEDecode"
},
"widgets_values": []
},
{
"id": 12,
"type": "KSampler",
"pos": [
1255.6590576171875,
244.5147705078125
],
"size": [
274.0234375,
474.0000305175781
],
"flags": {},
"order": 9,
"mode": 0,
"inputs": [
{
"name": "model",
"type": "MODEL",
"link": 60
},
{
"name": "positive",
"type": "CONDITIONING",
"link": 56
},
{
"name": "negative",
"type": "CONDITIONING",
"link": 57
},
{
"name": "latent_image",
"type": "LATENT",
"link": 52
}
],
"outputs": [
{
"name": "LATENT",
"type": "LATENT",
"slot_index": 0,
"links": [
22
]
}
],
"properties": {
"Node name for S&R": "KSampler"
},
"widgets_values": [
5770521,
"fixed",
20,
4,
"dpmpp_2m_sde_gpu",
"karras",
0.5
]
},
{
"id": 25,
"type": "CLIPTextEncode",
"pos": [
944.7369384765625,
-117.6661605834961
],
"size": [
285.6000061035156,
76
],
"flags": {
"collapsed": false
},
"order": 4,
"mode": 0,
"inputs": [
{
"name": "clip",
"type": "CLIP",
"link": 58
}
],
"outputs": [
{
"name": "CONDITIONING",
"type": "CONDITIONING",
"slot_index": 0,
"links": [
59
]
}
],
"title": "CLIP Text Encode (Negative Prompt)",
"properties": {
"Node name for S&R": "CLIPTextEncode"
},
"widgets_values": [
""
],
"color": "#322",
"bgcolor": "#533"
},
{
"id": 19,
"type": "CheckpointLoaderSimpleMultiGPU",
"pos": [
549.6911010742188,
-220.0397186279297
],
"size": [
378,
122
],
"flags": {},
"order": 0,
"mode": 0,
"inputs": [],
"outputs": [
{
"name": "MODEL",
"type": "MODEL",
"slot_index": 0,
"links": [
35
]
},
{
"name": "CLIP",
"type": "CLIP",
"slot_index": 1,
"links": [
54,
58
]
},
{
"name": "VAE",
"type": "VAE",
"slot_index": 2,
"links": [
36
]
}
],
"properties": {
"Node name for S&R": "CheckpointLoaderSimpleMultiGPU"
},
"widgets_values": [
"safetensor_testing/realDream_15SD15.safetensors",
"cuda:0"
],
"color": "#233",
"bgcolor": "#355"
},
{
"id": 26,
"type": "CheckpointLoaderAdvancedMultiGPU",
"pos": [
558.9177856445312,
261.31072998046875
],
"size": [
335.6988220214844,
170
],
"flags": {},
"order": 1,
"mode": 0,
"inputs": [],
"outputs": [
{
"name": "MODEL",
"type": "MODEL",
"links": [
60
]
},
{
"name": "CLIP",
"type": "CLIP",
"links": [
61,
62
]
},
{
"name": "VAE",
"type": "VAE",
"links": [
63
]
}
],
"properties": {
"Node name for S&R": "CheckpointLoaderAdvancedMultiGPU"
},
"widgets_values": [
"safetensor_testing/realisticVisionV60B1_v51VAE.safetensors",
"cuda:0",
"cuda:1",
"cpu"
],
"color": "#233",
"bgcolor": "#355"
},
{
"id": 8,
"type": "EmptyLatentImage",
"pos": [
991.2929077148438,
-435.2230224609375
],
"size": [
210,
106
],
"flags": {},
"order": 2,
"mode": 0,
"inputs": [],
"outputs": [
{
"name": "LATENT",
"type": "LATENT",
"links": [
9
]
}
],
"properties": {
"Node name for S&R": "EmptyLatentImage"
},
"widgets_values": [
1024,
1024,
1
]
},
{
"id": 22,
"type": "CLIPTextEncode",
"pos": [
942.2822875976562,
408.21136474609375
],
"size": [
285.6000061035156,
98.24866485595703
],
"flags": {
"collapsed": false
},
"order": 6,
"mode": 0,
"inputs": [
{
"name": "clip",
"type": "CLIP",
"link": 62
}
],
"outputs": [
{
"name": "CONDITIONING",
"type": "CONDITIONING",
"slot_index": 0,
"links": [
57
]
}
],
"title": "CLIP Text Encode (Negative Prompt)",
"properties": {
"Node name for S&R": "CLIPTextEncode"
},
"widgets_values": [
""
],
"color": "#322",
"bgcolor": "#533"
}
],
"links": [
[
6,
2,
0,
5,
0,
"LATENT"
],
[
7,
5,
0,
6,
0,
"IMAGE"
],
[
9,
8,
0,
2,
3,
"LATENT"
],
[
22,
12,
0,
15,
0,
"LATENT"
],
[
35,
19,
0,
2,
0,
"MODEL"
],
[
36,
19,
2,
5,
1,
"VAE"
],
[
46,
21,
0,
2,
1,
"CONDITIONING"
],
[
52,
2,
0,
12,
3,
"LATENT"
],
[
53,
15,
0,
23,
0,
"IMAGE"
],
[
54,
19,
1,
21,
0,
"CLIP"
],
[
56,
24,
0,
12,
1,
"CONDITIONING"
],
[
57,
22,
0,
12,
2,
"CONDITIONING"
],
[
58,
19,
1,
25,
0,
"CLIP"
],
[
59,
25,
0,
2,
2,
"CONDITIONING"
],
[
60,
26,
0,
12,
0,
"MODEL"
],
[
61,
26,
1,
24,
0,
"CLIP"
],
[
62,
26,
1,
22,
0,
"CLIP"
],
[
63,
26,
2,
15,
1,
"VAE"
]
],
"groups": [],
"config": {},
"extra": {
"ds": {
"scale": 0.8769226950001169,
"offset": [
-155.61337164905575,
501.2042499363116
]
},
"ue_links": [],
"VHS_latentpreview": false,
"VHS_latentpreviewrate": 0,
"frontendVersion": "1.25.11",
"VHS_MetadataImage": true,
"VHS_KeepIntermediate": true
},
"version": 0.4
}
-738
View File
@@ -1,738 +0,0 @@
{
"last_node_id": 25,
"last_link_id": 59,
"nodes": [
{
"id": 5,
"type": "VAEDecode",
"pos": [
1592.0411376953125,
-260.3390808105469
],
"size": [
140,
46
],
"flags": {
"collapsed": true
},
"order": 8,
"mode": 0,
"inputs": [
{
"name": "samples",
"type": "LATENT",
"link": 6
},
{
"name": "vae",
"type": "VAE",
"link": 36
}
],
"outputs": [
{
"name": "IMAGE",
"type": "IMAGE",
"links": [
7
],
"slot_index": 0,
"shape": 3
}
],
"properties": {
"Node name for S&R": "VAEDecode"
},
"widgets_values": []
},
{
"id": 15,
"type": "VAEDecode",
"pos": [
1556.0386962890625,
268.0700988769531
],
"size": [
210,
46
],
"flags": {
"collapsed": true
},
"order": 11,
"mode": 0,
"inputs": [
{
"name": "samples",
"type": "LATENT",
"link": 22
},
{
"name": "vae",
"type": "VAE",
"link": 42
}
],
"outputs": [
{
"name": "IMAGE",
"type": "IMAGE",
"links": [
53
],
"slot_index": 0,
"shape": 3
}
],
"properties": {
"Node name for S&R": "VAEDecode"
},
"widgets_values": []
},
{
"id": 2,
"type": "KSampler",
"pos": [
1235.140380859375,
-287.8480529785156
],
"size": [
295.7660217285156,
474
],
"flags": {},
"order": 7,
"mode": 0,
"inputs": [
{
"name": "model",
"type": "MODEL",
"link": 35
},
{
"name": "positive",
"type": "CONDITIONING",
"link": 46,
"slot_index": 1
},
{
"name": "negative",
"type": "CONDITIONING",
"link": 59
},
{
"name": "latent_image",
"type": "LATENT",
"link": 9,
"slot_index": 3
}
],
"outputs": [
{
"name": "LATENT",
"type": "LATENT",
"links": [
6,
52
],
"slot_index": 0,
"shape": 3
}
],
"properties": {
"Node name for S&R": "KSampler"
},
"widgets_values": [
5770521,
"fixed",
20,
8,
"dpmpp_2m_sde_gpu",
"karras",
1
]
},
{
"id": 23,
"type": "SaveImage",
"pos": [
1533.74560546875,
241.643798828125
],
"size": [
473.8890686035156,
484.4914245605469
],
"flags": {},
"order": 12,
"mode": 0,
"inputs": [
{
"name": "images",
"type": "IMAGE",
"link": 53
}
],
"outputs": [],
"properties": {
"Node name for S&R": "SaveImage"
},
"widgets_values": [
"ComfyUI"
]
},
{
"id": 12,
"type": "KSampler",
"pos": [
1248.8175048828125,
237.6725311279297
],
"size": [
274.0234375,
474
],
"flags": {},
"order": 9,
"mode": 0,
"inputs": [
{
"name": "model",
"type": "MODEL",
"link": 39
},
{
"name": "positive",
"type": "CONDITIONING",
"link": 56,
"slot_index": 1
},
{
"name": "negative",
"type": "CONDITIONING",
"link": 57
},
{
"name": "latent_image",
"type": "LATENT",
"link": 52,
"slot_index": 3
}
],
"outputs": [
{
"name": "LATENT",
"type": "LATENT",
"links": [
22
],
"slot_index": 0,
"shape": 3
}
],
"properties": {
"Node name for S&R": "KSampler"
},
"widgets_values": [
5770521,
"fixed",
20,
4,
"dpmpp_2m_sde_gpu",
"karras",
0.5
]
},
{
"id": 6,
"type": "PreviewImage",
"pos": [
1526.01708984375,
-295.9187316894531
],
"size": [
491.1799011230469,
494.12640380859375
],
"flags": {},
"order": 10,
"mode": 0,
"inputs": [
{
"name": "images",
"type": "IMAGE",
"link": 7
}
],
"outputs": [],
"properties": {
"Node name for S&R": "PreviewImage"
},
"widgets_values": []
},
{
"id": 22,
"type": "CLIPTextEncode",
"pos": [
962.80859375,
390.72601318359375
],
"size": [
285.6000061035156,
98.24866485595703
],
"flags": {
"collapsed": true
},
"order": 3,
"mode": 0,
"inputs": [
{
"name": "clip",
"type": "CLIP",
"link": 49
}
],
"outputs": [
{
"name": "CONDITIONING",
"type": "CONDITIONING",
"links": [
57
],
"slot_index": 0
}
],
"title": "CLIP Text Encode (Negative Prompt)",
"properties": {
"Node name for S&R": "CLIPTextEncode"
},
"widgets_values": [
""
],
"color": "#322",
"bgcolor": "#533"
},
{
"id": 20,
"type": "CheckpointLoaderSimpleMultiGPU",
"pos": [
558.670654296875,
277.36590576171875
],
"size": [
378,
122
],
"flags": {},
"order": 0,
"mode": 0,
"inputs": [],
"outputs": [
{
"name": "MODEL",
"type": "MODEL",
"links": [
39
],
"slot_index": 0
},
{
"name": "CLIP",
"type": "CLIP",
"links": [
49,
55
],
"slot_index": 1
},
{
"name": "VAE",
"type": "VAE",
"links": [
42
],
"slot_index": 2
}
],
"properties": {
"Node name for S&R": "CheckpointLoaderSimpleMultiGPU"
},
"widgets_values": [
"juggernautXL_juggXIByRundiffusion.safetensors",
"cuda:1"
]
},
{
"id": 8,
"type": "EmptyLatentImage",
"pos": [
1250.5328369140625,
-431.4219055175781
],
"size": [
210,
106
],
"flags": {},
"order": 1,
"mode": 0,
"inputs": [],
"outputs": [
{
"name": "LATENT",
"type": "LATENT",
"links": [
9
],
"shape": 3
}
],
"properties": {
"Node name for S&R": "EmptyLatentImage"
},
"widgets_values": [
1024,
1024,
1
]
},
{
"id": 21,
"type": "CLIPTextEncode",
"pos": [
937.1891479492188,
-240.19276428222656
],
"size": [
285.6000061035156,
76
],
"flags": {},
"order": 5,
"mode": 0,
"inputs": [
{
"name": "clip",
"type": "CLIP",
"link": 54
}
],
"outputs": [
{
"name": "CONDITIONING",
"type": "CONDITIONING",
"links": [
46
],
"slot_index": 0
}
],
"title": "CLIP Text Encode (Positive Prompt)",
"properties": {
"Node name for S&R": "CLIPTextEncode"
},
"widgets_values": [
"realistic photograph of a glass of wine, depth of field, bokeh"
],
"color": "#232",
"bgcolor": "#353"
},
{
"id": 25,
"type": "CLIPTextEncode",
"pos": [
944.7369384765625,
-117.6661605834961
],
"size": [
285.6000061035156,
76
],
"flags": {
"collapsed": true
},
"order": 6,
"mode": 0,
"inputs": [
{
"name": "clip",
"type": "CLIP",
"link": 58
}
],
"outputs": [
{
"name": "CONDITIONING",
"type": "CONDITIONING",
"links": [
59
],
"slot_index": 0
}
],
"title": "CLIP Text Encode (Negative Prompt)",
"properties": {
"Node name for S&R": "CLIPTextEncode"
},
"widgets_values": [
""
],
"color": "#322",
"bgcolor": "#533"
},
{
"id": 19,
"type": "CheckpointLoaderSimpleMultiGPU",
"pos": [
549.6911010742188,
-220.0397186279297
],
"size": [
378,
122
],
"flags": {},
"order": 2,
"mode": 0,
"inputs": [],
"outputs": [
{
"name": "MODEL",
"type": "MODEL",
"links": [
35
],
"slot_index": 0
},
{
"name": "CLIP",
"type": "CLIP",
"links": [
54,
58
],
"slot_index": 1
},
{
"name": "VAE",
"type": "VAE",
"links": [
36
],
"slot_index": 2
}
],
"properties": {
"Node name for S&R": "CheckpointLoaderSimpleMultiGPU"
},
"widgets_values": [
"realvisxlV50_v50Bakedvae.safetensors",
"cuda:0"
]
},
{
"id": 24,
"type": "CLIPTextEncode",
"pos": [
946.2571411132812,
271.57373046875
],
"size": [
285.6000061035156,
76
],
"flags": {},
"order": 4,
"mode": 0,
"inputs": [
{
"name": "clip",
"type": "CLIP",
"link": 55
}
],
"outputs": [
{
"name": "CONDITIONING",
"type": "CONDITIONING",
"links": [
56
],
"slot_index": 0
}
],
"title": "CLIP Text Encode (Positive Prompt)",
"properties": {
"Node name for S&R": "CLIPTextEncode"
},
"widgets_values": [
"realistic photograph of a glass of wine, depth of field, bokeh"
],
"color": "#232",
"bgcolor": "#353"
}
],
"links": [
[
6,
2,
0,
5,
0,
"LATENT"
],
[
7,
5,
0,
6,
0,
"IMAGE"
],
[
9,
8,
0,
2,
3,
"LATENT"
],
[
22,
12,
0,
15,
0,
"LATENT"
],
[
35,
19,
0,
2,
0,
"MODEL"
],
[
36,
19,
2,
5,
1,
"VAE"
],
[
39,
20,
0,
12,
0,
"MODEL"
],
[
42,
20,
2,
15,
1,
"VAE"
],
[
46,
21,
0,
2,
1,
"CONDITIONING"
],
[
49,
20,
1,
22,
0,
"CLIP"
],
[
52,
2,
0,
12,
3,
"LATENT"
],
[
53,
15,
0,
23,
0,
"IMAGE"
],
[
54,
19,
1,
21,
0,
"CLIP"
],
[
55,
20,
1,
24,
0,
"CLIP"
],
[
56,
24,
0,
12,
1,
"CONDITIONING"
],
[
57,
22,
0,
12,
2,
"CONDITIONING"
],
[
58,
19,
1,
25,
0,
"CLIP"
],
[
59,
25,
0,
2,
2,
"CONDITIONING"
]
],
"groups": [],
"config": {},
"extra": {
"ds": {
"scale": 0.8769226950001169,
"offset": [
-163.9759947916083,
509.56687307886415
]
},
"ue_links": [],
"VHS_latentpreview": false,
"VHS_latentpreviewrate": 0
},
"version": 0.4
}
+8 -5
View File
@@ -189,6 +189,7 @@ class Florence2ModelLoader:
},
"optional": {
"lora": ("PEFTLORA",),
"convert_to_safetensors": ("BOOLEAN", {"default": False, "tooltip": "Some of the older model weights are not saved in .safetensors format, which seem to cause longer loading times, this option converts the .bin weights to .safetensors"}),
}
}
@@ -197,10 +198,10 @@ class Florence2ModelLoader:
FUNCTION = "loadmodel"
CATEGORY = "Florence2"
def loadmodel(self, model, precision, attention, lora=None):
def loadmodel(self, model, precision, attention, lora=None, convert_to_safetensors=False):
"""Load Florence2 vision model with specified precision and attention mode."""
original_loader = NODE_CLASS_MAPPINGS["Florence2ModelLoader"]()
return original_loader.loadmodel(model, precision, attention, lora)
return original_loader.loadmodel(model, precision, attention, lora, convert_to_safetensors)
class DownloadAndLoadFlorence2Model:
@classmethod
@@ -220,7 +221,8 @@ class DownloadAndLoadFlorence2Model:
'MiaoshouAI/Florence-2-base-PromptGen-v1.5',
'MiaoshouAI/Florence-2-large-PromptGen-v1.5',
'MiaoshouAI/Florence-2-base-PromptGen-v2.0',
'MiaoshouAI/Florence-2-large-PromptGen-v2.0'
'MiaoshouAI/Florence-2-large-PromptGen-v2.0',
'PJMixers-Images/Florence-2-base-Castollux-v0.5'
],
{
"default": 'microsoft/Florence-2-base'
@@ -237,6 +239,7 @@ class DownloadAndLoadFlorence2Model:
},
"optional": {
"lora": ("PEFTLORA",),
"convert_to_safetensors": ("BOOLEAN", {"default": False, "tooltip": "Some of the older model weights are not saved in .safetensors format, which seem to cause longer loading times, this option converts the .bin weights to .safetensors"}),
}
}
@@ -245,10 +248,10 @@ class DownloadAndLoadFlorence2Model:
FUNCTION = "loadmodel"
CATEGORY = "Florence2"
def loadmodel(self, model, precision, attention, lora=None):
def loadmodel(self, model, precision, attention, lora=None, convert_to_safetensors=False):
"""Download and load Florence2 model from HuggingFace."""
original_loader = NODE_CLASS_MAPPINGS["DownloadAndLoadFlorence2Model"]()
return original_loader.loadmodel(model, precision, attention, lora)
return original_loader.loadmodel(model, precision, attention, lora, convert_to_safetensors)
class CheckpointLoaderNF4:
@classmethod
+1 -1
View File
@@ -1,7 +1,7 @@
[project]
name = "comfyui-multigpu"
description = "Provides a suite of custom nodes to manage multiple GPUs for ComfyUI, including advanced model offloading for both GGUF and Safetensor formats with DisTorch, and bespoke MultiGPU support for WanVideoWrapper and other custom nodes."
version = "2.5.2"
version = "2.5.3"
license = {file = "LICENSE"}
[project.urls]
@@ -0,0 +1,5 @@
# CLIPLoaderGGUFDisTorchMultiGPU
> **Deprecated**: DisTorch V1 legacy nodes are no longer supported. Please migrate to [CLIPLoaderGGUFDisTorch2MultiGPU](CLIPLoaderGGUFDisTorch2MultiGPU.md) for maintained functionality.
This page is retained for archival purposes only. Use the DisTorch2 version linked above for current GGUF CLIP loading with MultiGPU support.
+15
View File
@@ -0,0 +1,15 @@
# CheckpointLoaderNF4MultiGPU
`CheckpointLoaderNF4MultiGPU` wraps the NF4 checkpoint loader from `ComfyUI_bitsandbytes_NF4` so you can pick the execution device when working with 4-bit Quantised diffusion checkpoints.
## Inputs
All base parameters from `CheckpointLoaderNF4` are retained. The MultiGPU wrapper adds one optional field:
| Parameter | Data Type | Description |
| --- | --- | --- |
| `device` | `STRING` | Device that should own the loaded NF4 checkpoint (GPU id or `cpu`). |
## Outputs
Outputs are identical to the upstream NF4 loader (UNet/CLIP/VAE tuple). The only behavioural change is the explicit device placement. |
@@ -0,0 +1,16 @@
# DownloadAndLoadFlorence2ModelMultiGPU
`DownloadAndLoadFlorence2ModelMultiGPU` mirrors the download-and-load helper supplied by `ComfyUI-Florence2`, but with explicit device and offload selection so large Florence2 checkpoints can live on secondary GPUs or CPU memory.
## Inputs
All original inputs from `DownloadAndLoadFlorence2Model` remain available. The MultiGPU wrapper introduces two optional selectors:
| Parameter | Data Type | Description |
| --- | --- | --- |
| `device` | `STRING` | Compute device to host the model once loaded. |
| `offload_device` | `STRING` | Device that receives automatic offloads (defaults to `cpu`). |
## Outputs
Outputs match the base Florence2 helper (model handle plus aux data). The only difference is that the returned model is already resident on the device you specified.
@@ -0,0 +1,20 @@
# DownloadAndLoadWav2VecModelMultiGPU
`DownloadAndLoadWav2VecModelMultiGPU` downloads a preset Wav2Vec2 checkpoint from Hugging Face (if missing) and loads it onto the device you choose, mirroring WanVideo's helper while adding MultiGPU awareness.
## Inputs
### Required
| Parameter | Data Type | Description |
| --- | --- | --- |
| `model` | `STRING` | Preset identifier (`TencentGameMate/chinese-wav2vec2-base` or `facebook/wav2vec2-base-960h`). |
| `base_precision` | `STRING` | Weight precision (`fp32`, `bf16`, `fp16`). |
| `load_device` | `STRING` | Wan loader slot (`main_device` or `offload_device`). |
| `device` | `STRING` | MultiGPU device to run the audio model. |
## Outputs
| Output Name | Data Type | Description |
| --- | --- | --- |
| `wav2vec_model` | `WAV2VECMODEL` | Downloaded and loaded Wav2Vec2 model. |
@@ -0,0 +1,5 @@
# DualCLIPLoaderGGUFDisTorchMultiGPU
> **Deprecated**: DisTorch V1 legacy nodes are no longer supported. Please migrate to [DualCLIPLoaderGGUFDisTorch2MultiGPU](DualCLIPLoaderGGUFDisTorch2MultiGPU.md) for maintained functionality.
This documentation is retained for reference only. Use the DisTorch2 version above for dual GGUF CLIP workflows with modern allocation support.
@@ -0,0 +1,19 @@
# FantasyTalkingModelLoaderMultiGPU
`FantasyTalkingModelLoaderMultiGPU` loads FantasyTalking diffusion models with explicit device control, making it easier to keep speech animation workloads off your primary compute GPU.
## Inputs
### Required
| Parameter | Data Type | Description |
| --- | --- | --- |
| `model` | `STRING` | FantasyTalking model from `ComfyUI/models/diffusion_models`. |
| `base_precision` | `STRING` | Precision for the weights (`fp32`, `bf16`, `fp16`). |
| `device` | `STRING` | MultiGPU device that should host the model. |
## Outputs
| Output Name | Data Type | Description |
| --- | --- | --- |
| `model` | `FANTASYTALKINGMODEL` | Loaded FantasyTalking model bundle. |
+16
View File
@@ -0,0 +1,16 @@
# Florence2ModelLoaderMultiGPU
`Florence2ModelLoaderMultiGPU` wraps the Florence2 model loader so you can decide which device handles model inference and which device receives Wan/Comfy offloads. Use it exactly like the original node from `ComfyUI-Florence2`; all native inputs remain available.
## Inputs
All parameters from `Florence2ModelLoader` are still supported. The MultiGPU variant adds the following optional fields:
| Parameter | Data Type | Description |
| --- | --- | --- |
| `device` | `STRING` | MultiGPU device used for runtime compute (`cuda:0`, `cuda:1`, `cpu`, etc.). |
| `offload_device` | `STRING` | Device that receives automatic model offloads (defaults to `cpu`). |
## Outputs
The outputs are identical to the upstream Florence2 loader (model tuple, additional metadata). Use them interchangeably in existing workflows; only the device placement behaviour changes.
+15
View File
@@ -0,0 +1,15 @@
# LTXVLoaderMultiGPU
`LTXVLoaderMultiGPU` wraps `ComfyUI-LTXVideo`'s checkpoint loader so you can push LTX Video models to any GPU (or CPU) in your system without editing the base node.
## Inputs
Every input from the upstream `LTXVLoader` node is preserved. The MultiGPU version adds a single optional selector:
| Parameter | Data Type | Description |
| --- | --- | --- |
| `device` | `STRING` | MultiGPU device that should host the loaded LTX Video checkpoint. |
## Outputs
Outputs are identical to the original LTX Video loader. The loader simply ensures the returned model already resides on the selected device.
+15
View File
@@ -0,0 +1,15 @@
# LoadFluxControlNetMultiGPU
`LoadFluxControlNetMultiGPU` exposes device selection for XLabAI's FLUX ControlNet loader, letting you keep the ControlNet on a secondary GPU or the CPU while the main FLUX UNet stays on your primary compute device.
## Inputs
All inputs from the upstream `LoadFluxControlNet` node remain unchanged. The MultiGPU variant introduces one optional field:
| Parameter | Data Type | Description |
| --- | --- | --- |
| `device` | `STRING` | MultiGPU device that will host the ControlNet during inference. |
## Outputs
Outputs match the base FLUX ControlNet loader exactly; only the device placement differs.
@@ -0,0 +1,25 @@
# LoadWanVideoClipTextEncoderMultiGPU
`LoadWanVideoClipTextEncoderMultiGPU` loads WanVideo CLIP vision/text encoders on the device you specify, making it easy to keep encoders off your primary compute GPU when memory is tight.
## Inputs
### Required
| Parameter | Data Type | Description |
| --- | --- | --- |
| `model_name` | `STRING` | CLIP vision or text encoder model from `ComfyUI/models/clip_vision` or `ComfyUI/models/text_encoders`. |
| `precision` | `STRING` | Weight precision for the model (`fp16`, `fp32`, or `bf16`). |
### Optional
| Parameter | Data Type | Description |
| --- | --- | --- |
| `device` | `STRING` | Target MultiGPU device to host the encoder. |
## Outputs
| Output Name | Data Type | Description |
| --- | --- | --- |
| `wan_clip_vision` | `CLIP_VISION` | Loaded CLIP vision/text module ready for image conditioning. |
| `load_device` | `MULTIGPUDEVICE` | Device that now owns the encoder; feed into `WanVideoClipVisionEncode`. |
@@ -0,0 +1,26 @@
# LoadWanVideoT5TextEncoderMultiGPU
`LoadWanVideoT5TextEncoderMultiGPU` loads WanVideo T5 text encoders while letting you choose the MultiGPU device used for embedding work. The node returns both the encoder handle and the device string so downstream text nodes inherit placement automatically.
## Inputs
### Required
| Parameter | Data Type | Description |
| --- | --- | --- |
| `model_name` | `STRING` | T5 model from `ComfyUI/models/text_encoders`. |
| `precision` | `STRING` | Base precision for the encoder (`fp32` or `bf16`). |
### Optional
| Parameter | Data Type | Description |
| --- | --- | --- |
| `device` | `STRING` | MultiGPU device (defaults to secondary GPU when available). |
| `quantization` | `STRING` | Enable FP8 quantisation (`fp8_e4m3fn`) when supported. |
## Outputs
| Output Name | Data Type | Description |
| --- | --- | --- |
| `wan_t5_model` | `WANTEXTENCODER` | Loaded Wan T5 encoder bundle. |
| `load_device` | `MULTIGPUDEVICE` | Device string to reuse with `WanVideoTextEncode*` nodes. |
@@ -0,0 +1,28 @@
# MMAudioFeatureUtilsLoaderMultiGPU
`MMAudioFeatureUtilsLoaderMultiGPU` gathers the auxiliary MMAudio components (VAE, Synchformer, CLIP, and optional vocoder) on the device you choose so they can feed the sampler without consuming your main GPU.
## Inputs
### Required
| Parameter | Data Type | Description |
| --- | --- | --- |
| `vae_model` | `STRING` | VAE weights from `ComfyUI/models/mmaudio`. |
| `synchformer_model` | `STRING` | Synchformer weights from `ComfyUI/models/mmaudio`. |
| `clip_model` | `STRING` | CLIP weights from `ComfyUI/models/mmaudio`. |
### Optional
| Parameter | Data Type | Description |
| --- | --- | --- |
| `bigvgan_vocoder_model` | `VOCODER_MODEL` | Optional BigVGAN vocoder bundle. |
| `mode` | `STRING` | Feature resolution (`16k` or `44k`). |
| `precision` | `STRING` | Precision for aux weights (`fp16`, `fp32`, `bf16`). |
| `device` | `STRING` | Device receiving the feature utility stack. |
## Outputs
| Output Name | Data Type | Description |
| --- | --- | --- |
| `mmaudio_featureutils` | `MMAUDIO_FEATUREUTILS` | Fully prepared feature utility pack. |
+24
View File
@@ -0,0 +1,24 @@
# MMAudioModelLoaderMultiGPU
`MMAudioModelLoaderMultiGPU` loads MMAudio diffusion checkpoints while letting you pin the model weights to a specific compute device. Use it to keep long-running audio generations off your primary image GPU.
## Inputs
### Required
| Parameter | Data Type | Description |
| --- | --- | --- |
| `mmaudio_model` | `STRING` | Model filename from `ComfyUI/models/mmaudio`. |
| `base_precision` | `STRING` | Weight precision to request (`fp16`, `fp32`, `bf16`). |
### Optional
| Parameter | Data Type | Description |
| --- | --- | --- |
| `device` | `STRING` | Target device for the loaded model (e.g. `cuda:0`, `cpu`). |
## Outputs
| Output Name | Data Type | Description |
| --- | --- | --- |
| `mmaudio_model` | `MMAUDIO_MODEL` | Loaded MMAudio diffusion pipeline. |
+33
View File
@@ -0,0 +1,33 @@
# MMAudioSamplerMultiGPU
`MMAudioSamplerMultiGPU` renders audio clips with MMAudio while giving you control over which accelerator runs the diffusion loop and whether frames stay offloaded.
## Inputs
### Required
| Parameter | Data Type | Description |
| --- | --- | --- |
| `mmaudio_model` | `MMAUDIO_MODEL` | Core MMAudio checkpoint prepared by the loader. |
| `feature_utils` | `MMAUDIO_FEATUREUTILS` | Feature utility bundle containing VAE, Synchformer, CLIP, and optional vocoder. |
| `duration` | `FLOAT` | Target duration for the generated audio in seconds. |
| `steps` | `INT` | Number of sampler iterations to run. |
| `cfg` | `FLOAT` | Classifier-free guidance scale. |
| `seed` | `INT` | Random seed, `0` for deterministic repeatability. |
| `prompt` | `STRING` | Positive conditioning text. |
| `negative_prompt` | `STRING` | Negative conditioning text. |
| `mask_away_clip` | `BOOLEAN` | Hide supplied clip video frames during sampling. |
| `force_offload` | `BOOLEAN` | Force temporary offload of the model after sampling. |
### Optional
| Parameter | Data Type | Description |
| --- | --- | --- |
| `images` | `IMAGE` | Reference frames to guide the sampler. |
| `device` | `STRING` | Device that hosts the diffusion pass (`cuda:0`, `cpu`, etc.). |
## Outputs
| Output Name | Data Type | Description |
| --- | --- | --- |
| `audio` | `AUDIO` | Generated audio waveform tensor. |
+17
View File
@@ -0,0 +1,17 @@
# PulidEvaClipLoaderMultiGPU
`PulidEvaClipLoaderMultiGPU` prepares the EVA CLIP text encoder required by PuLID and keeps it on the device you nominate for downstream conditioning.
## Inputs
### Optional
| Parameter | Data Type | Description |
| --- | --- | --- |
| `device` | `STRING` | Device selected for the EVA CLIP encoder. |
## Outputs
| Output Name | Data Type | Description |
| --- | --- | --- |
| `eva_clip` | `EVA_CLIP` | Loaded EVA CLIP encoder instance. |
@@ -0,0 +1,23 @@
# PulidInsightFaceLoaderMultiGPU
`PulidInsightFaceLoaderMultiGPU` boots the InsightFace detector needed by PuLID and pins it to the device you specify, ensuring face embeddings come from the best accelerator for your setup.
## Inputs
### Required
| Parameter | Data Type | Description |
| --- | --- | --- |
| `provider` | `STRING` | Execution backend (`CPU`, `CUDA`, `ROCM`, `CoreML`). |
### Optional
| Parameter | Data Type | Description |
| --- | --- | --- |
| `device` | `STRING` | Device assigned to the InsightFace runtime. |
## Outputs
| Output Name | Data Type | Description |
| --- | --- | --- |
| `faceanalysis` | `FACEANALYSIS` | Ready InsightFace analysis module. |
+23
View File
@@ -0,0 +1,23 @@
# PulidModelLoaderMultiGPU
`PulidModelLoaderMultiGPU` loads PuLID identity preservation checkpoints onto your chosen device so facial guidance workloads can avoid your primary rendering GPU.
## Inputs
### Required
| Parameter | Data Type | Description |
| --- | --- | --- |
| `pulid_file` | `STRING` | PuLID model file from `ComfyUI/models/pulid`. |
### Optional
| Parameter | Data Type | Description |
| --- | --- | --- |
| `device` | `STRING` | Device that will host the PuLID weights. |
## Outputs
| Output Name | Data Type | Description |
| --- | --- | --- |
| `model` | `PULID` | Loaded PuLID model bundle. |
@@ -0,0 +1,5 @@
# QuadrupleCLIPLoaderGGUFDisTorchMultiGPU
> **Deprecated**: DisTorch V1 legacy nodes are no longer supported. Please migrate to [QuadrupleCLIPLoaderGGUFDisTorch2MultiGPU](QuadrupleCLIPLoaderGGUFDisTorch2MultiGPU.md) for maintained functionality.
This record is kept solely for archival reasons; adopt the DisTorch2 loader referenced above for four-CLIP GGUF pipelines.
@@ -0,0 +1,5 @@
# TripleCLIPLoaderGGUFDisTorchMultiGPU
> **Deprecated**: DisTorch V1 legacy nodes are no longer supported. Please migrate to [TripleCLIPLoaderGGUFDisTorch2MultiGPU](TripleCLIPLoaderGGUFDisTorch2MultiGPU.md) for maintained functionality.
Only the DisTorch2 loader linked above receives updates; this legacy documentation is kept for historical context.
+23
View File
@@ -0,0 +1,23 @@
# UNetLoaderLP
`UNetLoaderLP` is a low-precision variant of the standard UNet loader that disables high-precision LoRA tensors for CPU-stored models, freeing additional host memory while remaining compatible with MultiGPU device routing.
## Inputs
### Required
| Parameter | Data Type | Description |
| --- | --- | --- |
| `unet_name` | `STRING` | UNet checkpoint filename from `ComfyUI/models/unet`. |
### Optional
| Parameter | Data Type | Description |
| --- | --- | --- |
| `device` | `STRING` | Device that should serve the UNet after loading. |
## Outputs
| Output Name | Data Type | Description |
| --- | --- | --- |
| `model` | `MODEL` | Loaded UNet model with low-precision LoRA flag set. |
@@ -0,0 +1,5 @@
# UnetLoaderGGUFAdvancedDisTorchMultiGPU
> **Deprecated**: DisTorch V1 legacy nodes are no longer supported. Please migrate to [UnetLoaderGGUFAdvancedDisTorch2MultiGPU](UnetLoaderGGUFAdvancedDisTorch2MultiGPU.md) for maintained functionality.
This legacy documentation is preserved only for reference. All new setups should switch to the DisTorch2-based loader noted above to receive current fixes and allocation features.
@@ -0,0 +1,5 @@
# UnetLoaderGGUFDisTorchMultiGPU
> **Deprecated**: DisTorch V1 legacy nodes are no longer supported. Please migrate to [UnetLoaderGGUFDisTorch2MultiGPU](UnetLoaderGGUFDisTorch2MultiGPU.md) for current DisTorch functionality.
The original DisTorch wrappers shipped with ComfyUI-MultiGPU V1 have been retired. This page remains for archival purposes only; new workflows should adopt the DisTorch2 node linked above, which receives ongoing fixes and feature updates.
+16
View File
@@ -0,0 +1,16 @@
# WanVideoBlockSwapMultiGPU
`WanVideoBlockSwapMultiGPU` prepares block swap arguments for WanVideo models and adds an explicit `swap_device` selector so you can decide which device receives swapped transformer blocks.
## Inputs
| Parameter | Data Type | Description |
| --- | --- | --- |
| *(base Wan block swap inputs)* | *varies* | All parameters exposed by the upstream `WanVideoBlockSwap` node are available and behave identically. |
| `swap_device` | `STRING` | Additional MultiGPU device option that picks the destination for swapped layers (`cpu`, `cuda:1`, etc.). |
## Outputs
| Output Name | Data Type | Description |
| --- | --- | --- |
| `block_swap_args` | `BLOCKSWAPARGS` | Configuration dictionary to feed into `WanVideoModelLoaderMultiGPU` or Wan samplers. |
@@ -0,0 +1,33 @@
# WanVideoClipVisionEncodeMultiGPU
`WanVideoClipVisionEncodeMultiGPU` runs WanVideo's CLIP vision encoder on the device you provide. It supports tiled encoding, dual-image blending, and optional negative guidance while managing offload behaviour for you.
## Inputs
### Required
| Parameter | Data Type | Description |
| --- | --- | --- |
| `clip_vision` | `CLIP_VISION` | Encoder pair from `LoadWanVideoClipTextEncoderMultiGPU`. |
| `load_device` | `MULTIGPUDEVICE` | Device where encoding should occur. |
| `image_1` | `IMAGE` | Primary image to encode. |
| `strength_1` | `FLOAT` | Weight applied to the first image embedding. |
| `strength_2` | `FLOAT` | Weight applied to the second image embedding. |
| `crop` | `STRING` | Cropping mode (`center` or `disabled`). |
| `combine_embeds` | `STRING` | Strategy when combining multiple embeds (`average`, `sum`, `concat`, `batch`). |
| `force_offload` | `BOOLEAN` | Offload encoder after processing. |
### Optional
| Parameter | Data Type | Description |
| --- | --- | --- |
| `image_2` | `IMAGE` | Secondary image for combination. |
| `negative_image` | `IMAGE` | Negative reference image. |
| `tiles` | `INT` | Enable Matteo's tiled encode by setting tile count > 0. |
| `ratio` | `FLOAT` | Blend ratio used with tiled encoding. |
## Outputs
| Output Name | Data Type | Description |
| --- | --- | --- |
| `image_embeds` | `WANVIDIMAGE_CLIPEMBEDS` | CLIP vision embeddings suitable for Wan samplers or encoders. |
@@ -0,0 +1,21 @@
# WanVideoControlnetLoaderMultiGPU
`WanVideoControlnetLoaderMultiGPU` loads WanVideo-compatible ControlNets while letting you choose the execution device and optional FP8 quantisation modes.
## Inputs
### Required
| Parameter | Data Type | Description |
| --- | --- | --- |
| `model` | `STRING` | ControlNet file from `ComfyUI/models/controlnet`. |
| `base_precision` | `STRING` | Weight precision (`fp32`, `bf16`, `fp16`). |
| `quantization` | `STRING` | FP8 preset (`disabled`, `fp8_e4m3fn`, `fp8_e4m3fn_fast`, `fp8_e5m2`, `fp8_e4m3fn_fast_no_ffn`). |
| `load_device` | `STRING` | Wan loader slot (`main_device` or `offload_device`). |
| `device` | `STRING` | MultiGPU device that will host the ControlNet. |
## Outputs
| Output Name | Data Type | Description |
| --- | --- | --- |
| `controlnet` | `WANVIDEOCONTROLNET` | Loaded ControlNet ready for Wan samplers. |
+30
View File
@@ -0,0 +1,30 @@
# WanVideoDecodeMultiGPU
`WanVideoDecodeMultiGPU` decodes Wan latents back into frames using the VAE you provide, pinning decode work to the chosen MultiGPU device and safeguarding validation for tiled decode settings.
## Inputs
### Required
| Parameter | Data Type | Description |
| --- | --- | --- |
| `vae` | `WANVAE` | VAE pair from a Wan VAE loader. |
| `load_device` | `MULTIGPUDEVICE` | Device that will run the decode. |
| `samples` | `LATENT` | Latent tensor to decode. |
| `enable_vae_tiling` | `BOOLEAN` | Enables tiled decoding to reduce VRAM usage. |
| `tile_x` | `INT` | Tile width in pixels. |
| `tile_y` | `INT` | Tile height in pixels. |
| `tile_stride_x` | `INT` | Horizontal stride between tiles. |
| `tile_stride_y` | `INT` | Vertical stride between tiles. |
### Optional
| Parameter | Data Type | Description |
| --- | --- | --- |
| `normalization` | `STRING` | Switch between default and min-max output normalisation. |
## Outputs
| Output Name | Data Type | Description |
| --- | --- | --- |
| `images` | `IMAGE` | Decoded video frames or image batch. |
+32
View File
@@ -0,0 +1,32 @@
# WanVideoEncodeMultiGPU
`WanVideoEncodeMultiGPU` encodes single images into Wan latents using the selected device, mirroring WanVideo's image encoder while adding explicit device routing and tiled encode safeguards.
## Inputs
### Required
| Parameter | Data Type | Description |
| --- | --- | --- |
| `vae` | `WANVAE` | VAE pair for encoding. |
| `load_device` | `MULTIGPUDEVICE` | Device that will run the encode. |
| `image` | `IMAGE` | Image tensor to convert to latents. |
| `enable_vae_tiling` | `BOOLEAN` | Enables tiled encoding to lower VRAM usage. |
| `tile_x` | `INT` | Tile width in pixels. |
| `tile_y` | `INT` | Tile height in pixels. |
| `tile_stride_x` | `INT` | Horizontal stride between tiles. |
| `tile_stride_y` | `INT` | Vertical stride between tiles. |
### Optional
| Parameter | Data Type | Description |
| --- | --- | --- |
| `noise_aug_strength` | `FLOAT` | Adds noise before encoding for motion workflows. |
| `latent_strength` | `FLOAT` | Scales encoded latents. |
| `mask` | `MASK` | Optional mask to limit encoding region. |
## Outputs
| Output Name | Data Type | Description |
| --- | --- | --- |
| `samples` | `LATENT` | Encoded Wan latent tensor. |
@@ -0,0 +1,39 @@
# WanVideoImageToVideoEncodeMultiGPU
`WanVideoImageToVideoEncodeMultiGPU` mirrors WanVideo's image-to-video encoder but ensures the heavy transformer work runs on your selected device while pushing temporary buffers to the configured offload target. Use it to convert reference imagery into Wan latents for I2V workflows.
## Inputs
### Required
| Parameter | Data Type | Description |
| --- | --- | --- |
| `width` | `INT` | Output latent width (multiple of 8). |
| `height` | `INT` | Output latent height (multiple of 8). |
| `num_frames` | `INT` | Number of frames to encode. |
| `noise_aug_strength` | `FLOAT` | Noise level to add before encoding (helps motion). |
| `start_latent_strength` | `FLOAT` | Multiplier applied at sequence start. |
| `end_latent_strength` | `FLOAT` | Multiplier applied at sequence end. |
| `force_offload` | `BOOLEAN` | Offload Wan model once encoding finishes. |
### Optional
| Parameter | Data Type | Description |
| --- | --- | --- |
| `vae` | `WANVAE` | VAE pair from Wan VAE loader; defaults to global VAE if omitted. |
| `load_device` | `MULTIGPUDEVICE` | Device to run encoding on. |
| `clip_embeds` | `WANVIDIMAGE_CLIPEMBEDS` | Additional clip guidance tensors. |
| `start_image` | `IMAGE` | First frame reference. |
| `end_image` | `IMAGE` | End frame reference for interpolation. |
| `control_embeds` | `WANVIDIMAGE_EMBEDS` | Control signal tensors (e.g., Fun). |
| `fun_or_fl2v_model` | `BOOLEAN` | Enable special behaviour for FLF2V/Fun models. |
| `temporal_mask` | `MASK` | Mask for temporal control. |
| `extra_latents` | `LATENT` | Additional latents to prepend (e.g., Skyreels refs). |
| `tiled_vae` | `BOOLEAN` | Use tiled VAE encoding to minimise VRAM. |
| `add_cond_latents` | `ADD_COND_LATENTS` | Extra conditional latents for advanced workflows. |
## Outputs
| Output Name | Data Type | Description |
| --- | --- | --- |
| `image_embeds` | `WANVIDIMAGE_EMBEDS` | Encoded Wan latents for downstream samplers. |
+37
View File
@@ -0,0 +1,37 @@
# WanVideoModelLoaderMultiGPU
`WanVideoModelLoaderMultiGPU` wraps the base WanVideo model loader so you can pick both the loader device and the downstream compute device when working with large WanVideo checkpoints. The node patches the underlying WanVideo loader so the model materialises on the device chosen via `compute_device` while still honouring WanVideo's block swap and quantisation options.
## Inputs
### Required
| Parameter | Data Type | Description |
| --- | --- | --- |
| `model` | `STRING` | Model file from `ComfyUI/models/diffusion_models` or `ComfyUI/models/unet_gguf` to load. |
| `base_precision` | `STRING` | Floating-point format for base weights (`fp32`, `bf16`, `fp16`, or `fp16_fast`). |
| `quantization` | `STRING` | Optional FP8 quantisation preset; `disabled` keeps original precision. |
| `load_device` | `STRING` | WanVideo loader slot (`main_device` or `offload_device`) used during initial weight materialisation. |
| `compute_device` | `STRING` | MultiGPU device id (e.g. `cuda:0`, `cuda:1`, `cpu`) to run inference on. |
### Optional
| Parameter | Data Type | Description |
| --- | --- | --- |
| `attention_mode` | `STRING` | Select specialised attention kernels (`sdpa`, `flash_attn_2`, `flash_attn_3`, `sageattn`, `sageattn_3`, `radial_sage_attention`). |
| `compile_args` | `WANCOMPILEARGS` | Torch compile configuration passed through to WanVideo. |
| `block_swap_args` | `BLOCKSWAPARGS` | Enables WanVideo block swapping; supply alongside `WanVideoBlockSwapMultiGPU`. |
| `lora` | `WANVIDLORA` | Optional Wan LoRA bundle to apply during load. |
| `vram_management_args` | `VRAM_MANAGEMENTARGS` | DiffSynth-Studio memory manager arguments for aggressive VRAM reclamation. |
| `extra_model` | `VACEPATH` | Adds auxiliary model weights (e.g. VACE / MTV Crafter). |
| `fantasytalking_model` | `FANTASYTALKINGMODEL` | Preloads FantasyTalking speech model. |
| `multitalk_model` | `MULTITALKMODEL` | Preloads MultiTalk model. |
| `fantasyportrait_model` | `FANTASYPORTRAITMODEL` | Preloads FantasyPortrait model. |
| `rms_norm_function` | `STRING` | Choose RMSNorm implementation (`default` Wan variant or `pytorch`). |
## Outputs
| Output Name | Data Type | Description |
| --- | --- | --- |
| `model` | `WANVIDEOMODEL` | Initialised Wan diffusion model ready for sampling. |
| `compute_device` | `MULTIGPUDEVICE` | Device id chosen for downstream nodes; pass directly into samplers. |
+53
View File
@@ -0,0 +1,53 @@
# WanVideoSamplerMultiGPU
`WanVideoSamplerMultiGPU` runs WanVideo diffusion sampling while respecting your chosen compute and offload devices. The node patches WanVideo's internal device tracking so samplers, transformer blocks, and optional block swap features all target the MultiGPU placements you configure.
## Inputs
### Required
| Parameter | Data Type | Description |
| --- | --- | --- |
| `model` | `WANVIDEOMODEL` | Wan diffusion model output by `WanVideoModelLoaderMultiGPU`. |
| `compute_device` | `MULTIGPUDEVICE` | Device identifier to run the sampler on. |
| `image_embeds` | `WANVIDIMAGE_EMBEDS` | Latent/video conditioning produced by Wan preprocessing nodes. |
| `steps` | `INT` | Number of denoising steps to execute. |
| `cfg` | `FLOAT` | Classifier-free guidance strength. |
| `shift` | `FLOAT` | Scheduler-specific shift parameter. |
| `seed` | `INT` | Random seed for reproducibility (0 uses the provided value). |
| `force_offload` | `BOOLEAN` | When true, move the model back to the offload device after sampling. |
| `scheduler` | `STRING` | Sampler scheduler to use (`unipc`, `dpm++`, `euler`, etc.). |
| `riflex_freq_index` | `INT` | Enables RIFLEX continuation frames when > 0. |
### Optional
| Parameter | Data Type | Description |
| --- | --- | --- |
| `text_embeds` | `WANVIDEOTEXTEMBEDS` | Conditioning from Wan text encoders. |
| `samples` | `LATENT` | Initial latents for video-to-video workflows. |
| `denoise_strength` | `FLOAT` | Fraction of steps to apply when reusing latents. |
| `feta_args` | `FETAARGS` | Wan FETA extension controls. |
| `context_options` | `WANVIDCONTEXT` | Context window adjustments. |
| `cache_args` | `CACHEARGS` | Cache behaviour for incremental runs. |
| `flowedit_args` | `FLOWEDITARGS` | FlowEdit animation refinements. |
| `batched_cfg` | `BOOLEAN` | Batch cond/uncond passes to trade VRAM for speed. |
| `slg_args` | `SLGARGS` | Sparse latent guidance options. |
| `rope_function` | `STRING` | Rotary embedding mode (`default`, `comfy`, `comfy_chunked`). |
| `loop_args` | `LOOPARGS` | Looping schedule configuration. |
| `experimental_args` | `EXPERIMENTALARGS` | Wan experimental toggles. |
| `sigmas` | `SIGMAS` | Custom sigma schedule. |
| `unianimate_poses` | `UNIANIMATE_POSE` | Pose conditioning inputs. |
| `fantasytalking_embeds` | `FANTASYTALKING_EMBEDS` | Speech animation embeds. |
| `uni3c_embeds` | `UNI3C_EMBEDS` | Multi-character conditioning embeds. |
| `multitalk_embeds` | `MULTITALK_EMBEDS` | MultiTalk conditioning embeds. |
| `freeinit_args` | `FREEINITARGS` | FreeInit configuration. |
| `start_step` | `INT` | Start step for partial denoising. |
| `end_step` | `INT` | End step for partial denoising (-1 uses full schedule). |
| `add_noise_to_samples` | `BOOLEAN` | Adds fresh noise to latents before diffusion. |
## Outputs
| Output Name | Data Type | Description |
| --- | --- | --- |
| `samples` | `LATENT` | Final latent video tensor after sampling. |
| `denoised_samples` | `LATENT` | Optional mid-run denoised latents for reuse or decoding. |
@@ -0,0 +1,31 @@
# WanVideoTextEncodeCachedMultiGPU
`WanVideoTextEncodeCachedMultiGPU` is a convenience wrapper that loads a Wan T5 encoder on demand, produces prompt embeddings, and fully unloads the encoder when finished. It favours disk caching so repeated prompts can reuse saved embeddings without re-running the model.
## Inputs
### Required
| Parameter | Data Type | Description |
| --- | --- | --- |
| `model_name` | `STRING` | T5 encoder to load from `ComfyUI/models/text_encoders`. |
| `precision` | `STRING` | Precision for the temporary encoder (`fp32` or `bf16`). |
| `positive_prompt` | `STRING` | Prompt text for the conditioned branch. |
| `negative_prompt` | `STRING` | Prompt text for the unconditioned branch. |
| `quantization` | `STRING` | FP8 switch (`disabled` or `fp8_e4m3fn`). |
| `use_disk_cache` | `BOOLEAN` | Enables Wan disk caching for embeddings. |
| `load_device` | `STRING` | MultiGPU device that will host the one-shot encoder. |
### Optional
| Parameter | Data Type | Description |
| --- | --- | --- |
| `extender_args` | `WANVIDEOPROMPTEXTENDER_ARGS` | Configuration for Wan prompt extender helpers. |
## Outputs
| Output Name | Data Type | Description |
| --- | --- | --- |
| `text_embeds` | `WANVIDEOTEXTEMBEDS` | Positive/negative embedding bundle for Wan samplers. |
| `negative_text_embeds` | `WANVIDEOTEXTEMBEDS` | Negative-only embeddings (for workflows that split branches). |
| `positive_prompt` | `STRING` | The positive prompt as finalised by the extender (handy for preview nodes). |
+28
View File
@@ -0,0 +1,28 @@
# WanVideoTextEncodeMultiGPU
`WanVideoTextEncodeMultiGPU` encodes paired positive/negative prompts using a WanVideo T5 encoder while respecting the MultiGPU device you choose. The node can temporarily offload Wan models to free VRAM before encoding and supports optional disk caching for embeddings.
## Inputs
### Required
| Parameter | Data Type | Description |
| --- | --- | --- |
| `positive_prompt` | `STRING` | Prompt text for the conditioned branch. |
| `negative_prompt` | `STRING` | Prompt text for the unconditioned branch. |
### Optional
| Parameter | Data Type | Description |
| --- | --- | --- |
| `t5` | `WANTEXTENCODER` | Encoder pair from `LoadWanVideoT5TextEncoderMultiGPU`; defaults to the global Wan encoder if omitted. |
| `load_device` | `MULTIGPUDEVICE` | Device to run encoding on; also controls temporary model moves. |
| `force_offload` | `BOOLEAN` | When true, offloads the model after encoding completes. |
| `model_to_offload` | `WANVIDEOMODEL` | Wan diffusion model to move to the offload device prior to encoding. |
| `use_disk_cache` | `BOOLEAN` | Enable Wan disk cache for repeated prompt reuse. |
## Outputs
| Output Name | Data Type | Description |
| --- | --- | --- |
| `text_embeds` | `WANVIDEOTEXTEMBEDS` | Dictionary of positive and negative embeddings ready for `WanVideoSamplerMultiGPU`. |
@@ -0,0 +1,27 @@
# WanVideoTextEncodeSingleMultiGPU
`WanVideoTextEncodeSingleMultiGPU` encodes a single prompt string (no negative branch) using a Wan T5 encoder while honouring the device you supply. Use it for LoRA control channels or scenarios where only one conditioning embedding is required.
## Inputs
### Required
| Parameter | Data Type | Description |
| --- | --- | --- |
| `prompt` | `STRING` | Prompt text to encode. |
### Optional
| Parameter | Data Type | Description |
| --- | --- | --- |
| `t5` | `WANTEXTENCODER` | Encoder pair from `LoadWanVideoT5TextEncoderMultiGPU`. |
| `load_device` | `MULTIGPUDEVICE` | Device that will perform encoding. |
| `force_offload` | `BOOLEAN` | Offload linked models after encoding completes. |
| `model_to_offload` | `WANVIDEOMODEL` | Wan diffusion model to move while encoding to free VRAM. |
| `use_disk_cache` | `BOOLEAN` | Store/reuse embeddings on disk for repeat runs. |
## Outputs
| Output Name | Data Type | Description |
| --- | --- | --- |
| `text_embeds` | `WANVIDEOTEXTEMBEDS` | Encoded embeddings ready for Wan samplers. |
+26
View File
@@ -0,0 +1,26 @@
# WanVideoTinyVAELoaderMultiGPU
`WanVideoTinyVAELoaderMultiGPU` loads lightweight Wan VAEs from the `vae_approx` folder, useful for preview drafts or efficiency workflows. The node mirrors ComfyUI's tiny VAE loader while exposing explicit device placement and optional parallel decoding.
## Inputs
### Required
| Parameter | Data Type | Description |
| --- | --- | --- |
| `model_name` | `STRING` | Tiny VAE filename from `ComfyUI/models/vae_approx`. |
### Optional
| Parameter | Data Type | Description |
| --- | --- | --- |
| `load_device` | `STRING` | MultiGPU device to host the VAE. |
| `precision` | `STRING` | Weight precision (`fp16`, `fp32`, `bf16`). |
| `parallel` | `BOOLEAN` | Enable parallel encode/decode for extra speed (uses more VRAM). |
## Outputs
| Output Name | Data Type | Description |
| --- | --- | --- |
| `vae` | `WANVAE` | Loaded lightweight VAE. |
| `load_device` | `MULTIGPUDEVICE` | Device string to pass into Wan encode/decode nodes. |
@@ -0,0 +1,28 @@
# WanVideoUni3C_ControlnetLoaderMultiGPU
`WanVideoUni3C_ControlnetLoaderMultiGPU` loads Uni3C ControlNets for WanVideo, exposing device, attention, and compile options so you can balance performance and VRAM across multiple GPUs.
## Inputs
### Required
| Parameter | Data Type | Description |
| --- | --- | --- |
| `model` | `STRING` | Uni3C ControlNet from `ComfyUI/models/controlnet`. |
| `base_precision` | `STRING` | Weight precision (`fp32`, `bf16`, `fp16`). |
| `load_device` | `STRING` | Wan loader slot (`main_device` or `offload_device`). |
| `device` | `STRING` | MultiGPU device that will host the ControlNet. |
| `quantization` | `STRING` | FP8 mode (`disabled`, `fp8_e4m3fn`, `fp8_e5m2`). |
| `attention_mode` | `STRING` | Attention kernel (`sdpa` or `sageattn`). |
### Optional
| Parameter | Data Type | Description |
| --- | --- | --- |
| `compile_args` | `WANCOMPILEARGS` | Torch compile configuration for the ControlNet. |
## Outputs
| Output Name | Data Type | Description |
| --- | --- | --- |
| `controlnet` | `WANVIDEOCONTROLNET` | Loaded Uni3C ControlNet ready for Wan samplers. |
+34
View File
@@ -0,0 +1,34 @@
# WanVideoVACEEncodeMultiGPU
`WanVideoVACEEncodeMultiGPU` encodes VACE reference inputs for WanVideo workflows while respecting your chosen device. It patches the base encoder to run on the MultiGPU device and to reuse Wan offload settings automatically.
## Inputs
### Required
| Parameter | Data Type | Description |
| --- | --- | --- |
| `vae` | `WANVAE` | VAE pair to use during encoding. |
| `load_device` | `MULTIGPUDEVICE` | Device that will execute encoding. |
| `width` | `INT` | Target latent width. |
| `height` | `INT` | Target latent height. |
| `num_frames` | `INT` | Number of frames to encode. |
| `strength` | `FLOAT` | Overall conditioning strength. |
| `vace_start_percent` | `FLOAT` | Step fraction where VACE influence begins. |
| `vace_end_percent` | `FLOAT` | Step fraction where VACE influence ends. |
### Optional
| Parameter | Data Type | Description |
| --- | --- | --- |
| `input_frames` | `IMAGE` | Input frames used for conditioning. |
| `ref_images` | `IMAGE` | Reference imagery to encode. |
| `input_masks` | `MASK` | Masks applied during encoding. |
| `prev_vace_embeds` | `WANVIDIMAGE_EMBEDS` | Prior VACE embeds to reuse or blend. |
| `tiled_vae` | `BOOLEAN` | Enable tiled encode for lower VRAM usage. |
## Outputs
| Output Name | Data Type | Description |
| --- | --- | --- |
| `vace_embeds` | `WANVIDIMAGE_EMBEDS` | Encoded VACE embeddings for Wan samplers. |
+26
View File
@@ -0,0 +1,26 @@
# WanVideoVAELoaderMultiGPU
`WanVideoVAELoaderMultiGPU` loads WanVideo VAEs on the device you choose, returning both the VAE handle and the selected device so downstream encode/decode nodes run on the correct hardware.
## Inputs
### Required
| Parameter | Data Type | Description |
| --- | --- | --- |
| `model_name` | `STRING` | VAE model from `ComfyUI/models/vae`. |
### Optional
| Parameter | Data Type | Description |
| --- | --- | --- |
| `load_device` | `STRING` | Destination MultiGPU device. |
| `precision` | `STRING` | VAE precision (`fp16`, `fp32`, or `bf16`). |
| `compile_args` | `WANCOMPILEARGS` | Optional torch compile parameters. |
## Outputs
| Output Name | Data Type | Description |
| --- | --- | --- |
| `vae` | `WANVAE` | Loaded Wan VAE model. |
| `load_device` | `MULTIGPUDEVICE` | Device string to feed into encode/decode nodes. |
+20
View File
@@ -0,0 +1,20 @@
# Wav2VecModelLoaderMultiGPU
`Wav2VecModelLoaderMultiGPU` loads locally stored Wav2Vec2 models for WanVideo workflows while exposing MultiGPU placement controls and load-device selection.
## Inputs
### Required
| Parameter | Data Type | Description |
| --- | --- | --- |
| `model` | `STRING` | Wav2Vec2 model from `ComfyUI/models/wav2vec2`. |
| `base_precision` | `STRING` | Weight precision (`fp32`, `bf16`, `fp16`). |
| `load_device` | `STRING` | Wan loader slot (`main_device` or `offload_device`). |
| `device` | `STRING` | MultiGPU device to own the model during inference. |
## Outputs
| Output Name | Data Type | Description |
| --- | --- | --- |
| `wav2vec_model` | `WAV2VECMODEL` | Loaded speech model for Wan audio pipelines. |
+30
View File
@@ -484,6 +484,36 @@ def override_class(cls):
return NodeOverride
def override_class_offload(cls):
"""Standard MultiGPU device override for UNet/VAE models"""
from . import set_current_device, set_current_unet_offload_device
class NodeOverride(cls):
@classmethod
def INPUT_TYPES(s):
inputs = copy.deepcopy(cls.INPUT_TYPES())
devices = get_device_list()
default_device = devices[1] if len(devices) > 1 else devices[0]
inputs["optional"] = inputs.get("optional", {})
inputs["optional"]["device"] = (devices, {"default": default_device})
inputs["optional"]["offload_device"] = (devices, {"default": "cpu"})
return inputs
CATEGORY = "multigpu"
FUNCTION = "override"
def override(self, *args, device=None, offload_device=None, **kwargs):
if device is not None:
set_current_device(device)
if offload_device is not None:
set_current_unet_offload_device(offload_device)
fn = getattr(super(), cls.FUNCTION)
out = fn(*args, **kwargs)
return out
return NodeOverride
def override_class_clip(cls):
"""Standard MultiGPU device override for CLIP models (with device kwarg workaround)"""