diff --git a/README.md b/README.md index 206505f..a87e71a 100644 --- a/README.md +++ b/README.md @@ -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) + + + + + + + + + + + + + + + + +
+ + LTX Video + CheckpointLoaderSimple (DisTorch2) +
LTX Video + CheckpointLoaderSimple (DisTorch2)
+
+
+ + Mochi + CheckpointLoaderAdvanced (DisTorch2) +
Mochi + CheckpointLoaderAdvanced (DisTorch2)
+
+
+ + Qwen Image UNet + CLIP (DisTorch2) +
Qwen Image UNet + CLIP (DisTorch2)
+
+
+ + Qwen Image Edit UNet + CLIP (DisTorch2) +
Qwen Image Edit UNet + CLIP (DisTorch2)
+
+
+ + WanVideo 2.2 Double UNet, No CPU (DisTorch2) +
WanVideo 2.2 Double UNet, No CPU (DisTorch2)
+
+
+ + WanVideo 2.2 T2I LightX2V LoRA (DisTorch2) +
WanVideo 2.2 T2I LightX2V LoRA (DisTorch2)
+
+
+ + WanVideo 2.2 T2V LightX2V LoRA (DisTorch2) +
WanVideo 2.2 T2V LightX2V LoRA (DisTorch2)
+
+
### WanVideoWrapper -- [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) + + + + + + +
+ + WanVideoWrapper T2V +
WanVideoWrapper T2V
+
+
+ + WanVideoWrapper 1.3B Control LoRA +
WanVideoWrapper 1.3B Control LoRA
+
+
+ + WanVideoWrapper 2.2 I2V A14B GGUF +
WanVideoWrapper 2.2 I2V A14B GGUF
+
+
### 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) + + + + + + +
+ + FLUX UNet + Dual CLIP + VAE Loaders (MultiGPU) +
FLUX UNet + Dual CLIP + VAE Loaders (MultiGPU)
+
+
+ + SD15 CheckpointLoaderSimple (MultiGPU) +
SD15 CheckpointLoaderSimple (MultiGPU)
+
+
+ + SDXL CheckpointLoaderAdvanced (MultiGPU) +
SDXL CheckpointLoaderAdvanced (MultiGPU)
+
+
### Florence2 -- [Florence2, FLUX.1-dev, LTX Video Pipeline](https://github.com/pollockjj/ComfyUI-MultiGPU/blob/main/examples/florence2/florence2_flux1dev_ltxv_cpu_2gpu.json) + + + + +
+ + Florence2 Detailed Caption to FLUX Pipeline +
Florence2 Detailed Caption to FLUX Pipeline
+
+
### 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) + + + + + + +
+ + FLUX UNet + Dual CLIP GGUF +
FLUX UNet + Dual CLIP GGUF
+
+
+ + Qwen Image UNet DisTorch2 GGUF +
Qwen Image UNet DisTorch2 GGUF
+
+
### 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) + + + + +
+ + HunyuanVideoWrapper DisTorch (Legacy, Deprecated) +
HunyuanVideoWrapper DisTorch (Legacy, Deprecated)
+
+
## Support diff --git a/__init__.py b/__init__.py index da7e686..c4dee25 100644 --- a/__init__.py +++ b/__init__.py @@ -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) diff --git a/example_workflows/ComfyUI-Florence2 detailed_caption to flux.jpg b/example_workflows/ComfyUI-Florence2 detailed_caption to flux.jpg new file mode 100755 index 0000000..4e01f36 Binary files /dev/null and b/example_workflows/ComfyUI-Florence2 detailed_caption to flux.jpg differ diff --git a/example_workflows/ComfyUI-Florence2 detailed_caption to flux.json b/example_workflows/ComfyUI-Florence2 detailed_caption to flux.json new file mode 100755 index 0000000..b1d5f76 --- /dev/null +++ b/example_workflows/ComfyUI-Florence2 detailed_caption to flux.json @@ -0,0 +1,1109 @@ +{ + "id": "4d231a10-da3b-4b12-8698-449accd4b87a", + "revision": 0, + "last_node_id": 47, + "last_link_id": 128, + "nodes": [ + { + "id": 17, + "type": "BasicScheduler", + "pos": [ + 480, + 1008 + ], + "size": [ + 315, + 106 + ], + "flags": {}, + "order": 13, + "mode": 0, + "inputs": [ + { + "name": "model", + "type": "MODEL", + "link": 55 + } + ], + "outputs": [ + { + "name": "SIGMAS", + "type": "SIGMAS", + "links": [ + 20 + ] + } + ], + "properties": { + "cnr_id": "comfy-core", + "ver": "0.3.64", + "Node name for S&R": "BasicScheduler" + }, + "widgets_values": [ + "simple", + 20, + 1 + ] + }, + { + "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": 16, + "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": [ + 576, + 48 + ], + "size": [ + 222.3482666015625, + 46 + ], + "flags": {}, + "order": 17, + "mode": 0, + "inputs": [ + { + "name": "model", + "type": "MODEL", + "link": 54 + }, + { + "name": "conditioning", + "type": "CONDITIONING", + "link": 42 + } + ], + "outputs": [ + { + "name": "GUIDER", + "type": "GUIDER", + "slot_index": 0, + "links": [ + 30 + ] + } + ], + "properties": { + "cnr_id": "comfy-core", + "ver": "0.3.64", + "Node name for S&R": "BasicGuider" + }, + "widgets_values": [] + }, + { + "id": 13, + "type": "SamplerCustomAdvanced", + "pos": [ + 864, + 192 + ], + "size": [ + 272.3617858886719, + 326 + ], + "flags": {}, + "order": 18, + "mode": 0, + "inputs": [ + { + "name": "noise", + "type": "NOISE", + "link": 37 + }, + { + "name": "guider", + "type": "GUIDER", + "link": 30 + }, + { + "name": "sampler", + "type": "SAMPLER", + "link": 19 + }, + { + "name": "sigmas", + "type": "SIGMAS", + "link": 20 + }, + { + "name": "latent_image", + "type": "LATENT", + "link": 116 + } + ], + "outputs": [ + { + "name": "output", + "type": "LATENT", + "slot_index": 0, + "links": [ + 24 + ] + }, + { + "name": "denoised_output", + "type": "LATENT", + "links": null + } + ], + "properties": { + "cnr_id": "comfy-core", + "ver": "0.3.64", + "Node name for S&R": "SamplerCustomAdvanced" + }, + "widgets_values": [] + }, + { + "id": 25, + "type": "RandomNoise", + "pos": [ + 480, + 768 + ], + "size": [ + 315, + 82 + ], + "flags": {}, + "order": 1, + "mode": 0, + "inputs": [], + "outputs": [ + { + "name": "NOISE", + "type": "NOISE", + "links": [ + 37 + ] + } + ], + "properties": { + "cnr_id": "comfy-core", + "ver": "0.3.64", + "Node name for S&R": "RandomNoise" + }, + "widgets_values": [ + 66527593966288, + "randomize" + ], + "color": "#2a363b", + "bgcolor": "#3f5159" + }, + { + "id": 30, + "type": "ModelSamplingFlux", + "pos": [ + 480, + 1152 + ], + "size": [ + 315, + 130 + ], + "flags": {}, + "order": 11, + "mode": 0, + "inputs": [ + { + "name": "model", + "type": "MODEL", + "link": 117 + }, + { + "name": "width", + "type": "INT", + "widget": { + "name": "width" + }, + "link": 115 + }, + { + "name": "height", + "type": "INT", + "widget": { + "name": "height" + }, + "link": 114 + } + ], + "outputs": [ + { + "name": "MODEL", + "type": "MODEL", + "slot_index": 0, + "links": [ + 54, + 55 + ] + } + ], + "properties": { + "cnr_id": "comfy-core", + "ver": "0.3.64", + "Node name for S&R": "ModelSamplingFlux" + }, + "widgets_values": [ + 1.15, + 0.5, + 1024, + 1024 + ] + }, + { + "id": 27, + "type": "EmptySD3LatentImage", + "pos": [ + 480, + 624 + ], + "size": [ + 315, + 106 + ], + "flags": {}, + "order": 10, + "mode": 0, + "inputs": [ + { + "name": "width", + "type": "INT", + "widget": { + "name": "width" + }, + "link": 112 + }, + { + "name": "height", + "type": "INT", + "widget": { + "name": "height" + }, + "link": 113 + } + ], + "outputs": [ + { + "name": "LATENT", + "type": "LATENT", + "slot_index": 0, + "links": [ + 116 + ] + } + ], + "properties": { + "cnr_id": "comfy-core", + "ver": "0.3.64", + "Node name for S&R": "EmptySD3LatentImage" + }, + "widgets_values": [ + 1024, + 1024, + 1 + ] + }, + { + "id": 34, + "type": "PrimitiveNode", + "pos": [ + 432, + 480 + ], + "size": [ + 210, + 82 + ], + "flags": {}, + "order": 2, + "mode": 0, + "inputs": [], + "outputs": [ + { + "name": "INT", + "type": "INT", + "widget": { + "name": "width" + }, + "slot_index": 0, + "links": [ + 112, + 115 + ] + } + ], + "title": "width", + "properties": { + "Run widget replace on values": false + }, + "widgets_values": [ + 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": [ + 883.333251953125, + 602.3333129882812 + ], + "size": [ + 210, + 46 + ], + "flags": {}, + "order": 19, + "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": 40, + "type": "VAELoaderMultiGPU", + "pos": [ + 38.24152755737305, + 451.91839599609375 + ], + "size": [ + 250.19544982910156, + 83.10191345214844 + ], + "flags": {}, + "order": 5, + "mode": 0, + "inputs": [], + "outputs": [ + { + "name": "VAE", + "type": "VAE", + "links": [ + 119 + ] + } + ], + "properties": { + "cnr_id": "comfyui-multigpu", + "ver": "0d6dfc7524472943ba912a6ec3088757edba15c3", + "Node name for S&R": "VAELoaderMultiGPU" + }, + "widgets_values": [ + "ae.safetensors", + "cuda:1" + ], + "color": "#008181", + "bgcolor": "rgba(24,24,27,.9)" + }, + { + "id": 39, + "type": "DualCLIPLoaderMultiGPU", + "pos": [ + 35.378475189208984, + 276.3390197753906 + ], + "size": [ + 252.36911010742188, + 130 + ], + "flags": {}, + "order": 6, + "mode": 0, + "inputs": [], + "outputs": [ + { + "name": "CLIP", + "type": "CLIP", + "links": [ + 118 + ] + } + ], + "properties": { + "cnr_id": "comfyui-multigpu", + "ver": "0d6dfc7524472943ba912a6ec3088757edba15c3", + "Node name for S&R": "DualCLIPLoaderMultiGPU" + }, + "widgets_values": [ + "t5xxl_fp8_e4m3fn_scaled.safetensors", + "clip_l.safetensors", + "flux", + "cpu" + ], + "color": "#008181", + "bgcolor": "rgba(24,24,27,.9)" + }, + { + "id": 9, + "type": "SaveImage", + "pos": [ + 1155, + 196 + ], + "size": [ + 985.3012084960938, + 1060.3828125 + ], + "flags": {}, + "order": 20, + "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": [ + "MultiGPU" + ] + }, + { + "id": 45, + "type": "DownloadAndLoadFlorence2ModelMultiGPU", + "pos": [ + 25.58489990234375, + 607.4310302734375 + ], + "size": [ + 378.4986267089844, + 178 + ], + "flags": {}, + "order": 7, + "mode": 0, + "inputs": [ + { + "name": "lora", + "shape": 7, + "type": "PEFTLORA", + "link": null + } + ], + "outputs": [ + { + "name": "florence2_model", + "type": "FL2MODEL", + "links": [ + 122 + ] + } + ], + "properties": { + "cnr_id": "comfyui-multigpu", + "ver": "0d6dfc7524472943ba912a6ec3088757edba15c3", + "Node name for S&R": "DownloadAndLoadFlorence2ModelMultiGPU" + }, + "widgets_values": [ + "MiaoshouAI/Florence-2-large-PromptGen-v2.0", + "fp16", + "sdpa", + "cuda:1", + "cuda:1", + "cpu" + ], + "color": "#008181", + "bgcolor": "rgba(24,24,27,.9)" + }, + { + "id": 44, + "type": "LoadImage", + "pos": [ + -838.129638671875, + 851.3551025390625 + ], + "size": [ + 274.080078125, + 314.00006103515625 + ], + "flags": {}, + "order": 8, + "mode": 0, + "inputs": [], + "outputs": [ + { + "name": "IMAGE", + "type": "IMAGE", + "links": [ + 121 + ] + }, + { + "name": "MASK", + "type": "MASK", + "links": null + } + ], + "properties": { + "cnr_id": "comfy-core", + "ver": "0.3.64", + "Node name for S&R": "LoadImage" + }, + "widgets_values": [ + "ComfyUI-Florence2 detailed_caption to flux.jpg", + "image" + ] + }, + { + "id": 6, + "type": "CLIPTextEncode", + "pos": [ + 409.25079345703125, + 252.41845703125 + ], + "size": [ + 422.84503173828125, + 164.31304931640625 + ], + "flags": {}, + "order": 15, + "mode": 0, + "inputs": [ + { + "name": "clip", + "type": "CLIP", + "link": 118 + }, + { + "name": "text", + "type": "STRING", + "widget": { + "name": "text" + }, + "link": 128 + } + ], + "outputs": [ + { + "name": "CONDITIONING", + "type": "CONDITIONING", + "slot_index": 0, + "links": [ + 41 + ] + } + ], + "title": "CLIP Text Encode (Positive Prompt)", + "properties": { + "cnr_id": "comfy-core", + "ver": "0.3.64", + "Node name for S&R": "CLIPTextEncode" + }, + "widgets_values": [ + "A futuristic cityscape at night, with a neon sign that reads \"Florence 2\" prominently displayed in the center of the image. The cityscape is filled with tall buildings, illuminated by bright neon lights, and vehicles driving on a wet, rainy street. The sky is a deep blue with a few clouds, and an airplane is flying overhead. The image has a sci-fi aesthetic with a cyberpunk twist, featuring a combination of neon signs and urban elements." + ], + "color": "#232", + "bgcolor": "#353" + }, + { + "id": 47, + "type": "Florence2Run", + "pos": [ + -510.5350341796875, + 847.5802612304688 + ], + "size": [ + 400, + 364 + ], + "flags": {}, + "order": 12, + "mode": 0, + "inputs": [ + { + "name": "image", + "type": "IMAGE", + "link": 121 + }, + { + "name": "florence2_model", + "type": "FL2MODEL", + "link": 122 + } + ], + "outputs": [ + { + "name": "image", + "type": "IMAGE", + "links": null + }, + { + "name": "mask", + "type": "MASK", + "links": null + }, + { + "name": "caption", + "type": "STRING", + "links": [ + 125 + ] + }, + { + "name": "data", + "type": "JSON", + "links": null + } + ], + "properties": { + "cnr_id": "comfyui-florence2", + "ver": "00b63382966a444a9fefacb65b8deb188d12a458", + "Node name for S&R": "Florence2Run" + }, + "widgets_values": [ + "", + "detailed_caption", + true, + true, + 4096, + 3, + true, + "", + 61577449829591, + "randomize" + ] + }, + { + "id": 46, + "type": "ShowText|pysssss", + "pos": [ + -66.1690444946289, + 880.0821533203125 + ], + "size": [ + 364.72259521484375, + 207.80789184570312 + ], + "flags": {}, + "order": 14, + "mode": 4, + "inputs": [ + { + "name": "text", + "type": "STRING", + "link": 125 + } + ], + "outputs": [ + { + "name": "STRING", + "shape": 6, + "type": "STRING", + "links": [ + 128 + ] + } + ], + "properties": { + "cnr_id": "comfyui-custom-scripts", + "ver": "f2838ed5e59de4d73cde5c98354b87a8d3200190", + "Node name for S&R": "ShowText|pysssss" + }, + "widgets_values": [ + "A futuristic cityscape at night, with a neon sign that reads \"Florence 2\" prominently displayed in the center of the image. The cityscape is filled with tall buildings, illuminated by bright neon lights, and vehicles driving on a wet, rainy street. The sky is a deep blue with a few clouds, and an airplane is flying overhead. The image has a sci-fi aesthetic with a cyberpunk twist, featuring a combination of neon signs and urban elements." + ] + }, + { + "id": 42, + "type": "MarkdownNote", + "pos": [ + -492.1598205566406, + 96.541259765625 + ], + "size": [ + 499.7046203613281, + 699.9719848632812 + ], + "flags": {}, + "order": 9, + "mode": 0, + "inputs": [], + "outputs": [], + "title": "ComfyUI-MultiGPU Note - ComfyUI-Florence2", + "properties": {}, + "widgets_values": [ + "A basic implementation of a the DownloadandLoad node from ComfyUI-Florence2. Takes an input image and creates a natural language caption which is used to feed a standard FLUX.dev workflow.\n\n## Custom Node\n- [ComfyUI-Florence2](https://github.com/kijai/ComfyUI-Florence2)\n- [ComfyUI-MultiGPU](https://github.com/pollockjj/ComfyUI-MultiGPU)\n```\nšŸ“‚ ComfyUI/\nā”œā”€ā”€ šŸ“‚ custom_nodes/\n│ ā”œā”€ā”€ šŸ“‚ ComfyUI-Florence2/\n│ ā”œā”€ā”€ šŸ“‚ ComfyUI-MultiGPU/\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\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│ └── Florence-2-large-PromptGen-v2.0\nā”œā”€ā”€ āš™ļø cpu\n └── t5xxl_fp8_e4m3fn_scaled.safetensors\n └── clip_l.safetensors\n```" + ], + "color": "#008181", + "bgcolor": "rgba(24,24,27,.9)" + } + ], + "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" + ], + [ + 41, + 6, + 0, + 26, + 0, + "CONDITIONING" + ], + [ + 42, + 26, + 0, + 22, + 1, + "CONDITIONING" + ], + [ + 54, + 30, + 0, + 22, + 0, + "MODEL" + ], + [ + 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" + ], + [ + 117, + 38, + 0, + 30, + 0, + "MODEL" + ], + [ + 118, + 39, + 0, + 6, + 0, + "CLIP" + ], + [ + 119, + 40, + 0, + 8, + 1, + "VAE" + ], + [ + 121, + 44, + 0, + 47, + 0, + "IMAGE" + ], + [ + 122, + 45, + 0, + 47, + 1, + "FL2MODEL" + ], + [ + 125, + 47, + 2, + 46, + 0, + "STRING" + ], + [ + 128, + 46, + 0, + 6, + 1, + "STRING" + ] + ], + "groups": [], + "config": {}, + "extra": { + "ds": { + "scale": 0.6830134553650707, + "offset": [ + 964.7884757012523, + 44.96235296741689 + ] + }, + "frontendVersion": "1.27.10", + "groupNodes": {}, + "VHS_latentpreview": false, + "VHS_latentpreviewrate": 0, + "VHS_MetadataImage": true, + "VHS_KeepIntermediate": true + }, + "version": 0.4 +} \ No newline at end of file diff --git a/example_workflows/ComfyUI-GGUF flux unet dual_clip loaders.jpg b/example_workflows/ComfyUI-GGUF flux unet dual_clip loaders.jpg new file mode 100755 index 0000000..1531415 Binary files /dev/null and b/example_workflows/ComfyUI-GGUF flux unet dual_clip loaders.jpg differ diff --git a/examples/distorch2/flux_dev_DisTorch2.json b/example_workflows/ComfyUI-GGUF flux unet dual_clip loaders.json similarity index 54% rename from examples/distorch2/flux_dev_DisTorch2.json rename to example_workflows/ComfyUI-GGUF flux unet dual_clip loaders.json index 085ffbe..daf597c 100755 --- a/examples/distorch2/flux_dev_DisTorch2.json +++ b/example_workflows/ComfyUI-GGUF flux unet dual_clip loaders.json @@ -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 }, diff --git a/example_workflows/ComfyUI-GGUF qwen_image unet distorch2 cliploader.jpg b/example_workflows/ComfyUI-GGUF qwen_image unet distorch2 cliploader.jpg new file mode 100755 index 0000000..53d1cfe Binary files /dev/null and b/example_workflows/ComfyUI-GGUF qwen_image unet distorch2 cliploader.jpg differ diff --git a/examples/distorch2/qwen_image_basic_DisTorch2.json b/example_workflows/ComfyUI-GGUF qwen_image unet distorch2 cliploader.json similarity index 61% rename from examples/distorch2/qwen_image_basic_DisTorch2.json rename to example_workflows/ComfyUI-GGUF qwen_image unet distorch2 cliploader.json index 0b78419..4244a26 100755 --- a/examples/distorch2/qwen_image_basic_DisTorch2.json +++ b/example_workflows/ComfyUI-GGUF qwen_image unet distorch2 cliploader.json @@ -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, diff --git a/example_workflows/ComfyUI-WanVideoWrapper wanvideo2_2 I2V A14B GGUF.jpg b/example_workflows/ComfyUI-WanVideoWrapper wanvideo2_2 I2V A14B GGUF.jpg new file mode 100755 index 0000000..640ba8e Binary files /dev/null and b/example_workflows/ComfyUI-WanVideoWrapper wanvideo2_2 I2V A14B GGUF.jpg differ diff --git a/examples/wannvideowrapper/wanvideo2_2_I2V_A14B_example_WIP_Multigpu.json b/example_workflows/ComfyUI-WanVideoWrapper wanvideo2_2 I2V A14B GGUF.json similarity index 83% rename from examples/wannvideowrapper/wanvideo2_2_I2V_A14B_example_WIP_Multigpu.json rename to example_workflows/ComfyUI-WanVideoWrapper wanvideo2_2 I2V A14B GGUF.json index 4c3dd48..e4fdb45 100755 --- a/examples/wannvideowrapper/wanvideo2_2_I2V_A14B_example_WIP_Multigpu.json +++ b/example_workflows/ComfyUI-WanVideoWrapper wanvideo2_2 I2V A14B GGUF.json @@ -1,196 +1,9 @@ { "id": "c6e410bc-5e2c-460b-ae81-c91b6094fbb1", "revision": 0, - "last_node_id": 116, + "last_node_id": 117, "last_link_id": 215, "nodes": [ - { - "id": 50, - "type": "CLIPTextEncode", - "pos": [ - 354.00396728515625, - 922.6547241210938 - ], - "size": [ - 400, - 200 - ], - "flags": {}, - "order": 14, - "mode": 2, - "inputs": [ - { - "name": "clip", - "type": "CLIP", - "link": 53 - } - ], - "outputs": [ - { - "name": "CONDITIONING", - "type": "CONDITIONING", - "slot_index": 0, - "links": [ - 55 - ] - } - ], - "properties": { - "cnr_id": "comfy-core", - "ver": "0.3.44", - "Node name for S&R": "CLIPTextEncode" - }, - "widgets_values": [ - "č‰²č°ƒč‰³äø½ļ¼Œčæ‡ę›ļ¼Œé™ę€ļ¼Œē»†čŠ‚ęØ”ē³Šäøęø…ļ¼Œå­—å¹•ļ¼Œé£Žę ¼ļ¼Œä½œå“ļ¼Œē”»ä½œļ¼Œē”»é¢ļ¼Œé™ę­¢ļ¼Œę•“ä½“å‘ē°ļ¼Œęœ€å·®č“Øé‡ļ¼Œä½Žč“Øé‡ļ¼ŒJPEGåŽ‹ē¼©ę®‹ē•™ļ¼Œäø‘é™‹ēš„ļ¼Œę®‹ē¼ŗēš„ļ¼Œå¤šä½™ēš„ę‰‹ęŒ‡ļ¼Œē”»å¾—äøå„½ēš„ę‰‹éƒØļ¼Œē”»å¾—äøå„½ēš„č„øéƒØļ¼Œē•øå½¢ēš„ļ¼ŒęÆå®¹ēš„ļ¼Œå½¢ę€ē•øå½¢ēš„č‚¢ä½“ļ¼Œę‰‹ęŒ‡čžåˆļ¼Œé™ę­¢äøåŠØēš„ē”»é¢ļ¼Œę‚ä¹±ēš„čƒŒę™Æļ¼Œäø‰ę”č…æļ¼ŒčƒŒę™Æäŗŗå¾ˆå¤šļ¼Œå€’ē€čµ°" - ], - "color": "#432", - "bgcolor": "#653" - }, - { - "id": 48, - "type": "CLIPLoader", - "pos": [ - -5.996182441711426, - 672.6546020507812 - ], - "size": [ - 315, - 106 - ], - "flags": {}, - "order": 0, - "mode": 2, - "inputs": [], - "outputs": [ - { - "name": "CLIP", - "type": "CLIP", - "slot_index": 0, - "links": [ - 52, - 53 - ] - } - ], - "properties": { - "cnr_id": "comfy-core", - "ver": "0.3.44", - "Node name for S&R": "CLIPLoader" - }, - "widgets_values": [ - "umt5_xxl_fp16.safetensors", - "wan", - "default" - ], - "color": "#432", - "bgcolor": "#653" - }, - { - "id": 51, - "type": "Note", - "pos": [ - 24.003835678100586, - 502.65411376953125 - ], - "size": [ - 253.16725158691406, - 88 - ], - "flags": {}, - "order": 1, - "mode": 0, - "inputs": [], - "outputs": [], - "properties": {}, - "widgets_values": [ - "You can also use native ComfyUI text encoding with these nodes instead of the original, the models are node specific and can't otherwise be mixed." - ], - "color": "#432", - "bgcolor": "#653" - }, - { - "id": 49, - "type": "CLIPTextEncode", - "pos": [ - 354.00396728515625, - 672.6546020507812 - ], - "size": [ - 400, - 200 - ], - "flags": {}, - "order": 13, - "mode": 2, - "inputs": [ - { - "name": "clip", - "type": "CLIP", - "link": 52 - } - ], - "outputs": [ - { - "name": "CONDITIONING", - "type": "CONDITIONING", - "slot_index": 0, - "links": [ - 54 - ] - } - ], - "properties": { - "cnr_id": "comfy-core", - "ver": "0.3.44", - "Node name for S&R": "CLIPTextEncode" - }, - "widgets_values": [ - "high quality nature video featuring a red panda balancing on a bamboo stem while a bird lands on it's head, on the background there is a waterfall" - ], - "color": "#432", - "bgcolor": "#653" - }, - { - "id": 46, - "type": "WanVideoTextEmbedBridge", - "pos": [ - 804.0042724609375, - 662.6546020507812 - ], - "size": [ - 315, - 46 - ], - "flags": {}, - "order": 21, - "mode": 2, - "inputs": [ - { - "name": "positive", - "type": "CONDITIONING", - "link": 54 - }, - { - "name": "negative", - "shape": 7, - "type": "CONDITIONING", - "link": 55 - } - ], - "outputs": [ - { - "name": "text_embeds", - "type": "WANVIDEOTEXTEMBEDS", - "links": null - } - ], - "properties": { - "cnr_id": "ComfyUI-WanVideoWrapper", - "ver": "998a69cc0acbec503001b8b0ce0a5d5404420e1e", - "Node name for S&R": "WanVideoTextEmbedBridge" - }, - "widgets_values": [] - }, { "id": 92, "type": "WanVideoSetBlockSwap", @@ -203,7 +16,7 @@ 46 ], "flags": {}, - "order": 19, + "order": 11, "mode": 0, "inputs": [ { @@ -236,186 +49,6 @@ "color": "#223", "bgcolor": "#335" }, - { - "id": 69, - "type": "GetImageSizeAndCount", - "pos": [ - 2725.78076171875, - -249.85873413085938 - ], - "size": [ - 240.41265869140625, - 86 - ], - "flags": {}, - "order": 29, - "mode": 0, - "inputs": [ - { - "name": "image", - "type": "IMAGE", - "link": 211 - } - ], - "outputs": [ - { - "name": "image", - "type": "IMAGE", - "links": [ - 77 - ] - }, - { - "label": "704 width", - "name": "width", - "type": "INT", - "links": null - }, - { - "label": "512 height", - "name": "height", - "type": "INT", - "links": null - }, - { - "label": "81 count", - "name": "count", - "type": "INT", - "links": null - } - ], - "properties": { - "cnr_id": "comfyui-kjnodes", - "ver": "a6b867b63a29ca48ddb15c589e17a9f2d8530d57", - "Node name for S&R": "GetImageSizeAndCount" - }, - "widgets_values": [] - }, - { - "id": 56, - "type": "WanVideoLoraSelect", - "pos": [ - -764.6182250976562, - -480.6791076660156 - ], - "size": [ - 580.85986328125, - 154.09483337402344 - ], - "flags": {}, - "order": 2, - "mode": 0, - "inputs": [ - { - "name": "prev_lora", - "shape": 7, - "type": "WANVIDLORA", - "link": null - }, - { - "name": "blocks", - "shape": 7, - "type": "SELECTEDBLOCKS", - "link": null - } - ], - "outputs": [ - { - "name": "lora", - "type": "WANVIDLORA", - "links": [ - 110 - ] - } - ], - "properties": { - "cnr_id": "ComfyUI-WanVideoWrapper", - "ver": "998a69cc0acbec503001b8b0ce0a5d5404420e1e", - "Node name for S&R": "WanVideoLoraSelect" - }, - "widgets_values": [ - "WanVideo/Lightx2v/lightx2v_I2V_14B_480p_cfg_step_distill_rank64_bf16.safetensors", - 3, - false, - false - ], - "color": "#223", - "bgcolor": "#335" - }, - { - "id": 97, - "type": "WanVideoLoraSelect", - "pos": [ - -748.1927490234375, - -265.5889587402344 - ], - "size": [ - 575.3505859375, - 165.56051635742188 - ], - "flags": {}, - "order": 3, - "mode": 0, - "inputs": [ - { - "name": "prev_lora", - "shape": 7, - "type": "WANVIDLORA", - "link": null - }, - { - "name": "blocks", - "shape": 7, - "type": "SELECTEDBLOCKS", - "link": null - } - ], - "outputs": [ - { - "name": "lora", - "type": "WANVIDLORA", - "links": [ - 169 - ] - } - ], - "properties": { - "cnr_id": "ComfyUI-WanVideoWrapper", - "ver": "998a69cc0acbec503001b8b0ce0a5d5404420e1e", - "Node name for S&R": "WanVideoLoraSelect" - }, - "widgets_values": [ - "WanVideo/Lightx2v/lightx2v_I2V_14B_480p_cfg_step_distill_rank64_bf16.safetensors", - 1, - false, - false - ], - "color": "#223", - "bgcolor": "#335" - }, - { - "id": 44, - "type": "Note", - "pos": [ - -880.5595092773438, - -862.414306640625 - ], - "size": [ - 303.0501403808594, - 88 - ], - "flags": {}, - "order": 4, - "mode": 0, - "inputs": [], - "outputs": [], - "properties": {}, - "widgets_values": [ - "If you have Triton installed, connect this for ~30% speed increase" - ], - "color": "#432", - "bgcolor": "#653" - }, { "id": 102, "type": "Note", @@ -428,7 +61,7 @@ 88 ], "flags": {}, - "order": 5, + "order": 0, "mode": 0, "inputs": [], "outputs": [], @@ -451,7 +84,7 @@ 46 ], "flags": {}, - "order": 22, + "order": 18, "mode": 0, "inputs": [ { @@ -484,19 +117,62 @@ "color": "#223", "bgcolor": "#335" }, + { + "id": 116, + "type": "WanVideoBlockSwapMultiGPU", + "pos": [ + 515.2559814453125, + -589.2463989257812 + ], + "size": [ + 292.8716735839844, + 226 + ], + "flags": {}, + "order": 1, + "mode": 0, + "inputs": [], + "outputs": [ + { + "name": "block_swap_args", + "type": "BLOCKSWAPARGS", + "links": [ + 214, + 215 + ] + } + ], + "properties": { + "cnr_id": "comfyui-multigpu", + "ver": "db931d66c31acbcfce26f29babfb552509e586aa", + "Node name for S&R": "WanVideoBlockSwapMultiGPU" + }, + "widgets_values": [ + 40, + true, + true, + false, + 0, + 0, + false, + "cuda:1" + ], + "color": "#008181", + "bgcolor": "rgba(24,24,27,.9)" + }, { "id": 80, "type": "WanVideoSetLoRAs", "pos": [ - 985.8822021484375, - -458.0684814453125 + 854.084716796875, + -533.3812866210938 ], "size": [ 222.27981567382812, 46 ], "flags": {}, - "order": 23, + "order": 17, "mode": 0, "inputs": [ { @@ -527,67 +203,19 @@ "color": "#223", "bgcolor": "#335" }, - { - "id": 95, - "type": "CreateCFGScheduleFloatList", - "pos": [ - 1455.8336181640625, - 44.19880294799805 - ], - "size": [ - 298.3199157714844, - 228 - ], - "flags": {}, - "order": 15, - "mode": 0, - "inputs": [ - { - "name": "steps", - "type": "INT", - "widget": { - "name": "steps" - }, - "link": 165 - } - ], - "outputs": [ - { - "name": "float_list", - "type": "FLOAT", - "links": [ - 186 - ] - } - ], - "properties": { - "cnr_id": "ComfyUI-WanVideoWrapper", - "ver": "7e290c67bff1f906cdab84523018573f6c9d4d7f", - "Node name for S&R": "CreateCFGScheduleFloatList" - }, - "widgets_values": [ - 30, - 2, - 2, - "linear", - 0, - 0.01, - "[2.0, 1.0, 1.0, 1.0, 1.0, 1.0]" - ] - }, { "id": 79, "type": "WanVideoSetLoRAs", "pos": [ - 969.6483764648438, - -216.53614807128906 + 825.959716796875, + -259.14739990234375 ], "size": [ 222.27981567382812, 46 ], "flags": {}, - "order": 25, + "order": 20, "mode": 0, "inputs": [ { @@ -621,93 +249,129 @@ "bgcolor": "#335" }, { - "id": 94, - "type": "INTConstant", + "id": 69, + "type": "GetImageSizeAndCount", "pos": [ - 1446.0140380859375, - -77.41889953613281 + 1925.56787109375, + -1228.0408935546875 ], "size": [ - 210, - 58 + 240.41265869140625, + 86 ], "flags": {}, - "order": 6, + "order": 24, "mode": 0, - "inputs": [], - "outputs": [ + "inputs": [ { - "name": "value", - "type": "INT", + "name": "image", + "type": "IMAGE", + "link": 211 + } + ], + "outputs": [ + { + "name": "image", + "type": "IMAGE", "links": [ - 165, - 184, - 193 + 77 ] + }, + { + "label": "704 width", + "name": "width", + "type": "INT", + "links": null + }, + { + "label": "704 height", + "name": "height", + "type": "INT", + "links": null + }, + { + "label": "81 count", + "name": "count", + "type": "INT", + "links": null } ], - "title": "Steps", "properties": { "cnr_id": "comfyui-kjnodes", "ver": "a6b867b63a29ca48ddb15c589e17a9f2d8530d57", - "Node name for S&R": "INTConstant" + "Node name for S&R": "GetImageSizeAndCount" }, - "widgets_values": [ - 6 - ], - "color": "#1b4669", - "bgcolor": "#29699c" + "widgets_values": [] }, { - "id": 91, - "type": "INTConstant", + "id": 115, + "type": "WanVideoDecodeMultiGPU", "pos": [ - 1473.2628173828125, - 579.54443359375 + 2106.275390625, + -1017.4448852539062 ], "size": [ - 210, - 58 + 271.8716735839844, + 218 ], "flags": {}, - "order": 7, + "order": 23, "mode": 0, - "inputs": [], + "inputs": [ + { + "name": "vae", + "type": "WANVAE", + "link": 209 + }, + { + "name": "load_device", + "type": "MULTIGPUDEVICE", + "link": 210 + }, + { + "name": "samples", + "type": "LATENT", + "link": 212 + } + ], "outputs": [ { - "name": "value", - "type": "INT", + "name": "images", + "type": "IMAGE", "links": [ - 187, - 194 + 211 ] } ], - "title": "Split_step", "properties": { - "cnr_id": "comfyui-kjnodes", - "ver": "a6b867b63a29ca48ddb15c589e17a9f2d8530d57", - "Node name for S&R": "INTConstant" + "cnr_id": "comfyui-multigpu", + "ver": "db931d66c31acbcfce26f29babfb552509e586aa", + "Node name for S&R": "WanVideoDecodeMultiGPU" }, "widgets_values": [ - 3 + false, + 272, + 272, + 144, + 128, + "default" ], - "color": "#1b4669", - "bgcolor": "#29699c" + "color": "#008181", + "bgcolor": "rgba(24,24,27,.9)" }, { "id": 60, "type": "VHS_VideoCombine", "pos": [ - 3150, - -390 + 2330.95849609375, + -665.5919799804688 ], "size": [ 698.6392211914062, - 841.5557861328125 + 1026.63916015625 ], "flags": {}, - "order": 30, + "order": 25, "mode": 0, "inputs": [ { @@ -761,127 +425,187 @@ "hidden": false, "paused": false, "params": { - "filename": "WanVideo2_2_I2V_00041.mp4", + "filename": "WanVideo2_2_I2V_00045.mp4", "subfolder": "", "type": "output", "format": "video/h264-mp4", "frame_rate": 16, - "workflow": "WanVideo2_2_I2V_00041.png", - "fullpath": "/home/johnj/ComfyUI/output/WanVideo2_2_I2V_00041.mp4" + "workflow": "WanVideo2_2_I2V_00045.png", + "fullpath": "/home/johnj/ComfyUI/output/WanVideo2_2_I2V_00045.mp4" } } } }, { - "id": 109, - "type": "WanVideoModelLoaderMultiGPU", + "id": 68, + "type": "ImageResizeKJv2", "pos": [ - -48.799888610839844, - -768.8370971679688 + 1107.4034423828125, + -1168.68896484375 ], "size": [ - 450.2710876464844, - 342 + 270, + 336 ], "flags": {}, - "order": 18, + "order": 16, "mode": 0, "inputs": [ { - "name": "compile_args", - "shape": 7, - "type": "WANCOMPILEARGS", - "link": 213 + "name": "image", + "type": "IMAGE", + "link": 71 }, { - "name": "block_swap_args", + "name": "mask", "shape": 7, - "type": "BLOCKSWAPARGS", - "link": null - }, - { - "name": "lora", - "shape": 7, - "type": "WANVIDLORA", - "link": null - }, - { - "name": "vram_management_args", - "shape": 7, - "type": "VRAM_MANAGEMENTARGS", - "link": null - }, - { - "name": "extra_model", - "shape": 7, - "type": "VACEPATH", - "link": null - }, - { - "name": "fantasytalking_model", - "shape": 7, - "type": "FANTASYTALKINGMODEL", - "link": null - }, - { - "name": "multitalk_model", - "shape": 7, - "type": "MULTITALKMODEL", - "link": null - }, - { - "name": "fantasyportrait_model", - "shape": 7, - "type": "FANTASYPORTRAITMODEL", + "type": "MASK", "link": null } ], "outputs": [ { - "name": "model", - "type": "WANVIDEOMODEL", + "name": "IMAGE", + "type": "IMAGE", "links": [ - 200 + 204 ] }, { - "name": "compute_device", + "name": "width", + "type": "INT", + "links": [ + 205 + ] + }, + { + "name": "height", + "type": "INT", + "links": [ + 206 + ] + }, + { + "name": "mask", + "type": "MASK", + "links": null + } + ], + "properties": { + "cnr_id": "comfyui-kjnodes", + "ver": "a6b867b63a29ca48ddb15c589e17a9f2d8530d57", + "Node name for S&R": "ImageResizeKJv2" + }, + "widgets_values": [ + 720, + 720, + "lanczos", + "resize", + "0, 0, 0", + "center", + 32, + "cpu" + ] + }, + { + "id": 99, + "type": "LoadWanVideoT5TextEncoderMultiGPU", + "pos": [ + 487.4730529785156, + 21.758373260498047 + ], + "size": [ + 348.9195251464844, + 150 + ], + "flags": {}, + "order": 2, + "mode": 0, + "inputs": [], + "outputs": [ + { + "name": "wan_t5_model", + "type": "WANTEXTENCODER", + "links": [ + 172 + ] + }, + { + "name": "load_device", "type": "MULTIGPUDEVICE", "links": [ - 201 + 199 ] } ], "properties": { "cnr_id": "comfyui-multigpu", "ver": "db931d66c31acbcfce26f29babfb552509e586aa", - "Node name for S&R": "WanVideoModelLoaderMultiGPU" + "Node name for S&R": "LoadWanVideoT5TextEncoderMultiGPU" }, "widgets_values": [ - "WanVideo/2_2/Wan2_2-I2V-A14B-HIGH_fp8_e4m3fn_scaled_KJ.safetensors", - "fp16_fast", - "fp8_e4m3fn_scaled", - "offload_device", + "umt5-xxl-enc-bf16.safetensors", + "bf16", "cuda:0", - "sdpa", - "default" + "disabled" ], "color": "#008181", "bgcolor": "rgba(24,24,27,.9)" }, + { + "id": 35, + "type": "WanVideoTorchCompileSettings", + "pos": [ + -57.218780517578125, + -1194.65380859375 + ], + "size": [ + 390.5999755859375, + 202 + ], + "flags": {}, + "order": 3, + "mode": 4, + "inputs": [], + "outputs": [ + { + "name": "torch_compile_args", + "type": "WANCOMPILEARGS", + "slot_index": 0, + "links": [ + 198, + 213 + ] + } + ], + "properties": { + "cnr_id": "ComfyUI-WanVideoWrapper", + "ver": "998a69cc0acbec503001b8b0ce0a5d5404420e1e", + "Node name for S&R": "WanVideoTorchCompileSettings" + }, + "widgets_values": [ + "inductor", + false, + "default", + false, + 64, + true, + 128 + ] + }, { "id": 112, "type": "WanVideoImageToVideoEncodeMultiGPU", "pos": [ - 1388.4976806640625, - -903.1487426757812 + 1415.9361572265625, + -1230.95751953125 ], "size": [ 360.3492126464844, 410 ], "flags": {}, - "order": 24, + "order": 19, "mode": 0, "inputs": [ { @@ -988,15 +712,15 @@ "id": 114, "type": "WanVideoVAELoaderMultiGPU", "pos": [ - 1988.8050537109375, - -840.9067993164062 + 965.3035278320312, + -748.364501953125 ], "size": [ 294.1841735839844, 126 ], "flags": {}, - "order": 8, + "order": 4, "mode": 0, "inputs": [ { @@ -1038,216 +762,140 @@ "bgcolor": "rgba(24,24,27,.9)" }, { - "id": 115, - "type": "WanVideoDecodeMultiGPU", + "id": 91, + "type": "INTConstant", "pos": [ - 2517.043212890625, - -736.8970947265625 + 869.322265625, + -121.25193786621094 ], "size": [ - 271.8716735839844, - 218 + 210, + 58 ], "flags": {}, - "order": 28, - "mode": 0, - "inputs": [ - { - "name": "vae", - "type": "WANVAE", - "link": 209 - }, - { - "name": "load_device", - "type": "MULTIGPUDEVICE", - "link": 210 - }, - { - "name": "samples", - "type": "LATENT", - "link": 212 - } - ], - "outputs": [ - { - "name": "images", - "type": "IMAGE", - "links": [ - 211 - ] - } - ], - "properties": { - "cnr_id": "comfyui-multigpu", - "ver": "db931d66c31acbcfce26f29babfb552509e586aa", - "Node name for S&R": "WanVideoDecodeMultiGPU" - }, - "widgets_values": [ - false, - 272, - 272, - 144, - 128, - "default" - ], - "color": "#008181", - "bgcolor": "rgba(24,24,27,.9)" - }, - { - "id": 108, - "type": "WanVideoModelLoaderMultiGPU", - "pos": [ - -47.79293441772461, - -350.2671813964844 - ], - "size": [ - 458.3773498535156, - 342 - ], - "flags": {}, - "order": 17, - "mode": 0, - "inputs": [ - { - "name": "compile_args", - "shape": 7, - "type": "WANCOMPILEARGS", - "link": 198 - }, - { - "name": "block_swap_args", - "shape": 7, - "type": "BLOCKSWAPARGS", - "link": null - }, - { - "name": "lora", - "shape": 7, - "type": "WANVIDLORA", - "link": null - }, - { - "name": "vram_management_args", - "shape": 7, - "type": "VRAM_MANAGEMENTARGS", - "link": null - }, - { - "name": "extra_model", - "shape": 7, - "type": "VACEPATH", - "link": null - }, - { - "name": "fantasytalking_model", - "shape": 7, - "type": "FANTASYTALKINGMODEL", - "link": null - }, - { - "name": "multitalk_model", - "shape": 7, - "type": "MULTITALKMODEL", - "link": null - }, - { - "name": "fantasyportrait_model", - "shape": 7, - "type": "FANTASYPORTRAITMODEL", - "link": null - } - ], - "outputs": [ - { - "name": "model", - "type": "WANVIDEOMODEL", - "links": [ - 196 - ] - }, - { - "name": "compute_device", - "type": "MULTIGPUDEVICE", - "links": [ - 197 - ] - } - ], - "properties": { - "cnr_id": "comfyui-multigpu", - "ver": "db931d66c31acbcfce26f29babfb552509e586aa", - "Node name for S&R": "WanVideoModelLoaderMultiGPU" - }, - "widgets_values": [ - "WanVideo/2_2/Wan2_2-I2V-A14B-LOW_fp8_e4m3fn_scaled_KJ.safetensors", - "fp16_fast", - "fp8_e4m3fn_scaled", - "offload_device", - "cuda:0", - "sdpa", - "default" - ], - "color": "#008181", - "bgcolor": "rgba(24,24,27,.9)" - }, - { - "id": 99, - "type": "LoadWanVideoT5TextEncoderMultiGPU", - "pos": [ - 363.88275146484375, - 41.0692138671875 - ], - "size": [ - 348.9195251464844, - 150 - ], - "flags": {}, - "order": 9, + "order": 5, "mode": 0, "inputs": [], "outputs": [ { - "name": "wan_t5_model", - "type": "WANTEXTENCODER", + "name": "value", + "type": "INT", "links": [ - 172 + 187, + 194 ] - }, + } + ], + "title": "Split_step", + "properties": { + "cnr_id": "comfyui-kjnodes", + "ver": "a6b867b63a29ca48ddb15c589e17a9f2d8530d57", + "Node name for S&R": "INTConstant" + }, + "widgets_values": [ + 3 + ], + "color": "#1b4669", + "bgcolor": "#29699c" + }, + { + "id": 95, + "type": "CreateCFGScheduleFloatList", + "pos": [ + 1092.0882568359375, + -377.0962219238281 + ], + "size": [ + 298.3199157714844, + 228 + ], + "flags": {}, + "order": 15, + "mode": 0, + "inputs": [ { - "name": "load_device", - "type": "MULTIGPUDEVICE", + "name": "steps", + "type": "INT", + "widget": { + "name": "steps" + }, + "link": 165 + } + ], + "outputs": [ + { + "name": "float_list", + "type": "FLOAT", "links": [ - 199 + 186 ] } ], "properties": { - "cnr_id": "comfyui-multigpu", - "ver": "db931d66c31acbcfce26f29babfb552509e586aa", - "Node name for S&R": "LoadWanVideoT5TextEncoderMultiGPU" + "cnr_id": "ComfyUI-WanVideoWrapper", + "ver": "7e290c67bff1f906cdab84523018573f6c9d4d7f", + "Node name for S&R": "CreateCFGScheduleFloatList" }, "widgets_values": [ - "umt5-xxl-enc-bf16.safetensors", - "bf16", - "cuda:0", - "disabled" + 30, + 2, + 2, + "linear", + 0, + 0.01 + ] + }, + { + "id": 94, + "type": "INTConstant", + "pos": [ + 1142.3046875, + -517.5074462890625 ], - "color": "#008181", - "bgcolor": "rgba(24,24,27,.9)" + "size": [ + 210, + 58 + ], + "flags": {}, + "order": 6, + "mode": 0, + "inputs": [], + "outputs": [ + { + "name": "value", + "type": "INT", + "links": [ + 165, + 184, + 193 + ] + } + ], + "title": "Steps", + "properties": { + "cnr_id": "comfyui-kjnodes", + "ver": "a6b867b63a29ca48ddb15c589e17a9f2d8530d57", + "Node name for S&R": "INTConstant" + }, + "widgets_values": [ + 6 + ], + "color": "#1b4669", + "bgcolor": "#29699c" }, { "id": 105, "type": "WanVideoSamplerMultiGPU", "pos": [ - 1822.2808837890625, - -346.01214599609375 + 1422.509765625, + -679.75634765625 ], "size": [ 327.80859375, 922 ], "flags": {}, - "order": 26, + "order": 21, "mode": 0, "inputs": [ { @@ -1404,7 +1052,7 @@ 30, 6, 8.000000000000002, - 914434359508585, + 668069490023304, "randomize", true, "dpm++_sde", @@ -1423,15 +1071,15 @@ "id": 106, "type": "WanVideoSamplerMultiGPU", "pos": [ - 2237.71875, - -350.4714660644531 + 1774.6383056640625, + -678.9400024414062 ], "size": [ 327.80859375, 922 ], "flags": {}, - "order": 27, + "order": 22, "mode": 0, "inputs": [ { @@ -1580,7 +1228,7 @@ 30, 1.0000000000000002, 8.000000000000002, - 459358799394648, + 40589387979507, "randomize", true, "dpm++_sde", @@ -1596,102 +1244,57 @@ "bgcolor": "rgba(24,24,27,.9)" }, { - "id": 35, - "type": "WanVideoTorchCompileSettings", + "id": 67, + "type": "LoadImage", "pos": [ - -550, - -870 + 753.1961059570312, + -1150.5321044921875 ], "size": [ - 390.5999755859375, - 202 + 274.080078125, + 314 ], "flags": {}, - "order": 10, - "mode": 4, - "inputs": [], - "outputs": [ - { - "name": "torch_compile_args", - "type": "WANCOMPILEARGS", - "slot_index": 0, - "links": [ - 198, - 213 - ] - } - ], - "properties": { - "cnr_id": "ComfyUI-WanVideoWrapper", - "ver": "998a69cc0acbec503001b8b0ce0a5d5404420e1e", - "Node name for S&R": "WanVideoTorchCompileSettings" - }, - "widgets_values": [ - "inductor", - false, - "default", - false, - 64, - true, - 128 - ] - }, - { - "id": 116, - "type": "WanVideoBlockSwapMultiGPU", - "pos": [ - 515.2559814453125, - -589.2463989257812 - ], - "size": [ - 292.8716735839844, - 226 - ], - "flags": {}, - "order": 11, + "order": 7, "mode": 0, "inputs": [], "outputs": [ { - "name": "block_swap_args", - "type": "BLOCKSWAPARGS", + "name": "IMAGE", + "type": "IMAGE", "links": [ - 214, - 215 + 71 ] + }, + { + "name": "MASK", + "type": "MASK", + "links": null } ], "properties": { - "cnr_id": "comfyui-multigpu", - "ver": "db931d66c31acbcfce26f29babfb552509e586aa", - "Node name for S&R": "WanVideoBlockSwapMultiGPU" + "cnr_id": "comfy-core", + "ver": "0.3.44", + "Node name for S&R": "LoadImage" }, "widgets_values": [ - 40, - true, - true, - false, - 0, - 0, - false, - "cuda:1" - ], - "color": "#008181", - "bgcolor": "rgba(24,24,27,.9)" + "sd15 checkpoint loader simple.jpg", + "image" + ] }, { "id": 100, "type": "WanVideoTextEncodeMultiGPU", "pos": [ - 800.8797607421875, - 19.50592613220215 + 868.4681396484375, + 11.781484603881836 ], "size": [ 400, 234 ], "flags": {}, - "order": 16, + "order": 12, "mode": 0, "inputs": [ { @@ -1729,7 +1332,7 @@ "Node name for S&R": "WanVideoTextEncodeMultiGPU" }, "widgets_values": [ - "Lines and text on a static Excel graph pulsate and glow", + "The words \"ComfyUI-WanVideoWrapper\" emblazoned across the scene of an animated cyberpunk cityscape", "č‰²č°ƒč‰³äø½ļ¼Œčæ‡ę›ļ¼Œé™ę€ļ¼Œē»†čŠ‚ęØ”ē³Šäøęø…ļ¼Œå­—å¹•ļ¼Œé£Žę ¼ļ¼Œä½œå“ļ¼Œē”»ä½œļ¼Œē”»é¢ļ¼Œé™ę­¢ļ¼Œę•“ä½“å‘ē°ļ¼Œęœ€å·®č“Øé‡ļ¼Œä½Žč“Øé‡ļ¼ŒJPEGåŽ‹ē¼©ę®‹ē•™ļ¼Œäø‘é™‹ēš„ļ¼Œę®‹ē¼ŗēš„ļ¼Œå¤šä½™ēš„ę‰‹ęŒ‡ļ¼Œē”»å¾—äøå„½ēš„ę‰‹éƒØļ¼Œē”»å¾—äøå„½ēš„č„øéƒØļ¼Œē•øå½¢ēš„ļ¼ŒęÆå®¹ēš„ļ¼Œå½¢ę€ē•øå½¢ēš„č‚¢ä½“ļ¼Œę‰‹ęŒ‡čžåˆļ¼Œé™ę­¢äøåŠØēš„ē”»é¢ļ¼Œę‚ä¹±ēš„čƒŒę™Æļ¼Œäø‰ę”č…æļ¼ŒčƒŒę™Æäŗŗå¾ˆå¤šļ¼Œå€’ē€čµ°", "cpu", false @@ -1738,150 +1341,327 @@ "bgcolor": "rgba(24,24,27,.9)" }, { - "id": 68, - "type": "ImageResizeKJv2", + "id": 56, + "type": "WanVideoLoraSelect", "pos": [ - 696.0801391601562, - -1143.5843505859375 + -135.46725463867188, + -56.22418212890625 ], "size": [ - 270, - 336 + 551.2889404296875, + 150 ], "flags": {}, - "order": 20, + "order": 8, "mode": 0, "inputs": [ { - "name": "image", - "type": "IMAGE", - "link": 71 + "name": "prev_lora", + "shape": 7, + "type": "WANVIDLORA", + "link": null }, { - "name": "mask", + "name": "blocks", "shape": 7, - "type": "MASK", + "type": "SELECTEDBLOCKS", "link": null } ], "outputs": [ { - "name": "IMAGE", - "type": "IMAGE", + "name": "lora", + "type": "WANVIDLORA", "links": [ - 204 + 110 ] - }, - { - "name": "width", - "type": "INT", - "links": [ - 205 - ] - }, - { - "name": "height", - "type": "INT", - "links": [ - 206 - ] - }, - { - "name": "mask", - "type": "MASK", - "links": null } ], "properties": { - "cnr_id": "comfyui-kjnodes", - "ver": "a6b867b63a29ca48ddb15c589e17a9f2d8530d57", - "Node name for S&R": "ImageResizeKJv2" + "cnr_id": "ComfyUI-WanVideoWrapper", + "ver": "998a69cc0acbec503001b8b0ce0a5d5404420e1e", + "Node name for S&R": "WanVideoLoraSelect" }, "widgets_values": [ - 720, - 720, - "lanczos", - "resize", - "0, 0, 0", - "center", - 32, - "cpu", - "Output: 1 x 704 x 512 | 4.12MB" - ] + "WanVideo/Lightx2v/wan2.2_i2v_lightx2v_4steps_lora_v1_high_noise.safetensors", + 3, + false, + false + ], + "color": "#223", + "bgcolor": "#335" }, { - "id": 67, - "type": "LoadImage", + "id": 97, + "type": "WanVideoLoraSelect", "pos": [ - 330.2861633300781, - -1144.739013671875 + -141.38307189941406, + 152.2328338623047 ], "size": [ - 274.080078125, - 314 + 532.1088256835938, + 159.2544708251953 ], "flags": {}, - "order": 12, + "order": 9, "mode": 0, - "inputs": [], - "outputs": [ + "inputs": [ { - "name": "IMAGE", - "type": "IMAGE", - "links": [ - 71 - ] + "name": "prev_lora", + "shape": 7, + "type": "WANVIDLORA", + "link": null }, { - "name": "MASK", - "type": "MASK", - "links": null + "name": "blocks", + "shape": 7, + "type": "SELECTEDBLOCKS", + "link": null + } + ], + "outputs": [ + { + "name": "lora", + "type": "WANVIDLORA", + "links": [ + 169 + ] } ], "properties": { - "cnr_id": "comfy-core", - "ver": "0.3.44", - "Node name for S&R": "LoadImage" + "cnr_id": "ComfyUI-WanVideoWrapper", + "ver": "998a69cc0acbec503001b8b0ce0a5d5404420e1e", + "Node name for S&R": "WanVideoLoraSelect" }, "widgets_values": [ - "wan2_2_benchmark_v2.png", - "image" - ] + "WanVideo/Lightx2v/wan2.2_i2v_lightx2v_4steps_lora_v1_low_noise.safetensors", + 1, + false, + false + ], + "color": "#223", + "bgcolor": "#335" + }, + { + "id": 117, + "type": "MarkdownNote", + "pos": [ + -964.5131225585938, + -883.290771484375 + ], + "size": [ + 777.6646728515625, + 937.3121337890625 + ], + "flags": {}, + "order": 10, + "mode": 0, + "inputs": [], + "outputs": [], + "title": "ComfyUI-MultiGPU Note - ComfyUI-WanVideoWrapper", + "properties": {}, + "widgets_values": [ + "These nodes are designed to work with ComfyUI-WanVideoWrapper they enable UNets, CLIPs, and VAEs to be loaded on any available device. This is a replication of the original workflow by kijai which can be found here: [wanvideo2_2_I2V_A14B_example_WIP.json](https://github.com/kijai/ComfyUI-WanVideoWrapper/blob/main/example_workflows/wanvideo2_2_I2V_A14B_example_WIP.json)\n\n## Custom Node\n- [ComfyUI-MultiGPU](https://github.com/pollockjj/ComfyUI-MultiGPU)\n- [ComfyUI-WanVideoWrapper](https://github.com/kijai/ComfyUI-WanVideoWrapper)\n```\nšŸ“‚ ComfyUI/\nā”œā”€ā”€ šŸ“‚ custom_nodes/\n│ ā”œā”€ā”€ šŸ“‚ ComfyUI-MultiGPU/\n│ ā”œā”€ā”€ šŸ“‚ ComfyUI-WanVideoWrapper\n```\n## Model links\n\n**Diffusion model**\n- [Wan2.2-I2V-A14B-HighNoise-Q5_K_M.gguf](https://huggingface.co/QuantStack/Wan2.2-I2V-A14B-GGUF/resolve/main/HighNoise/Wan2.2-I2V-A14B-HighNoise-Q5_K_M.gguf)\n- [Wan2.2-I2V-A14B-LowNoise-Q5_K_M.gguf](https://huggingface.co/QuantStack/Wan2.2-I2V-A14B-GGUF/resolve/main/LowNoise/Wan2.2-I2V-A14B-LowNoise-Q5_K_M.gguf)\n\n**CLIP**\n- [umt5_xxl_enc-bf16.safetensors](https://huggingface.co/Kijai/WanVideo_comfy/resolve/main/umt5-xxl-enc-bf16.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-I2V-A14B-4steps-lora-rank64-Seko-V1/high_noise_model.safetensors)\n- [low_noise_model.safetensors](https://huggingface.co/lightx2v/Wan2.2-Lightning/resolve/main/Wan2.2-I2V-A14B-4steps-lora-rank64-Seko-V1/low_noise_model.safetensors)\n\n## Model Storage Location\n\n```\nšŸ“‚ ComfyUI/\nā”œā”€ā”€ šŸ“‚ models/\n│ ā”œā”€ā”€ šŸ“‚ clip/\n│ │ └── umt5_xxl_enc-bf16.safetensors\n│ ā”œā”€ā”€ šŸ“‚ unet/\n│ │ ā”œā”€ā”€ Wan2.2-I2V-A14B-HighNoise-Q5_K_M.gguf [🟩🟩🟩🟪🟪🟪🟪🟪🟪🟪]\n│ │ ā”œā”€ā”€ Wan2.2-I2V-A14B-LowNoise-Q5_K_M.gguf [🟩🟩🟩🟪🟪🟪🟪🟪🟪🟪]\n│ ā”œā”€ā”€ā”€šŸ“‚ loras/\n│ ā”œā”€ā”€ā”€ā”€ā”€šŸ“‚ Wan2.2-I2V-A14B-4steps-lora-rank64-Seko-V1/\n│ │ ā”œā”€ā”€ā”€ā”€ā”€ā”€ high_noise_model.safetensors [🟩🟩🟩🟪🟪🟪🟪🟪🟪🟪]\n│ │ └────── low_noise_model.safetensors [🟩🟩🟩🟪🟪🟪🟪🟪🟪🟪]\n│ ā”œā”€ā”€ šŸ“‚ vae/\n│ │ └── wan_2.1_vae.safetensors \n```\n## Device Mapping (Example: Two GPUs, 1 CPU)\n```\nšŸ–„ļø system \nā”œā”€ā”€ 🟢 cuda:0\n│ └── Wan2.2-I2V-A14B-HighNoise-Q5_K_M.gguf [🟩🟩🟩]\n│ └── Wan2.2-I2V-A14B-LowNoise-Q5_K_M.gguf [🟩🟩🟩]\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| └── Wan2.2-I2V-A14B-HighNoise-Q5_K_M.gguf [🟪🟪🟪🟪🟪🟪🟪]\n| └── Wan2.2-I2V-A14B-LowNoise-Q5_K_M.gguf [🟪🟪🟪🟪🟪🟪🟪]\n| └── high_noise_model.safetensors [🟪🟪🟪🟪🟪🟪🟪]\n| └── low_noise_model.safetensors [🟪🟪🟪🟪🟪🟪🟪]\nā”œā”€ā”€ āš™ļø cpu\n\n```" + ], + "color": "#008181", + "bgcolor": "rgba(24,24,27,.9)" + }, + { + "id": 109, + "type": "WanVideoModelLoaderMultiGPU", + "pos": [ + -14.040166854858398, + -871.1851806640625 + ], + "size": [ + 450.2710876464844, + 342 + ], + "flags": {}, + "order": 14, + "mode": 0, + "inputs": [ + { + "name": "compile_args", + "shape": 7, + "type": "WANCOMPILEARGS", + "link": 213 + }, + { + "name": "block_swap_args", + "shape": 7, + "type": "BLOCKSWAPARGS", + "link": null + }, + { + "name": "lora", + "shape": 7, + "type": "WANVIDLORA", + "link": null + }, + { + "name": "vram_management_args", + "shape": 7, + "type": "VRAM_MANAGEMENTARGS", + "link": null + }, + { + "name": "extra_model", + "shape": 7, + "type": "VACEPATH", + "link": null + }, + { + "name": "fantasytalking_model", + "shape": 7, + "type": "FANTASYTALKINGMODEL", + "link": null + }, + { + "name": "multitalk_model", + "shape": 7, + "type": "MULTITALKMODEL", + "link": null + }, + { + "name": "fantasyportrait_model", + "shape": 7, + "type": "FANTASYPORTRAITMODEL", + "link": null + } + ], + "outputs": [ + { + "name": "model", + "type": "WANVIDEOMODEL", + "links": [ + 200 + ] + }, + { + "name": "compute_device", + "type": "MULTIGPUDEVICE", + "links": [ + 201 + ] + } + ], + "properties": { + "cnr_id": "comfyui-multigpu", + "ver": "db931d66c31acbcfce26f29babfb552509e586aa", + "Node name for S&R": "WanVideoModelLoaderMultiGPU" + }, + "widgets_values": [ + "Wan2.2-I2V-A14B-HighNoise-Q5_K_M.gguf", + "fp16_fast", + "fp8_e4m3fn_scaled", + "offload_device", + "cuda:0", + "sageattn", + "default" + ], + "color": "#008181", + "bgcolor": "rgba(24,24,27,.9)" + }, + { + "id": 108, + "type": "WanVideoModelLoaderMultiGPU", + "pos": [ + -40.068668365478516, + -462.2707824707031 + ], + "size": [ + 458.3773498535156, + 342 + ], + "flags": {}, + "order": 13, + "mode": 0, + "inputs": [ + { + "name": "compile_args", + "shape": 7, + "type": "WANCOMPILEARGS", + "link": 198 + }, + { + "name": "block_swap_args", + "shape": 7, + "type": "BLOCKSWAPARGS", + "link": null + }, + { + "name": "lora", + "shape": 7, + "type": "WANVIDLORA", + "link": null + }, + { + "name": "vram_management_args", + "shape": 7, + "type": "VRAM_MANAGEMENTARGS", + "link": null + }, + { + "name": "extra_model", + "shape": 7, + "type": "VACEPATH", + "link": null + }, + { + "name": "fantasytalking_model", + "shape": 7, + "type": "FANTASYTALKINGMODEL", + "link": null + }, + { + "name": "multitalk_model", + "shape": 7, + "type": "MULTITALKMODEL", + "link": null + }, + { + "name": "fantasyportrait_model", + "shape": 7, + "type": "FANTASYPORTRAITMODEL", + "link": null + } + ], + "outputs": [ + { + "name": "model", + "type": "WANVIDEOMODEL", + "links": [ + 196 + ] + }, + { + "name": "compute_device", + "type": "MULTIGPUDEVICE", + "links": [ + 197 + ] + } + ], + "properties": { + "cnr_id": "comfyui-multigpu", + "ver": "db931d66c31acbcfce26f29babfb552509e586aa", + "Node name for S&R": "WanVideoModelLoaderMultiGPU" + }, + "widgets_values": [ + "Wan2.2-I2V-A14B-LowNoise-Q5_K_M.gguf", + "fp16_fast", + "fp8_e4m3fn_scaled", + "offload_device", + "cuda:0", + "sageattn", + "default" + ], + "color": "#008181", + "bgcolor": "rgba(24,24,27,.9)" } ], "links": [ - [ - 52, - 48, - 0, - 49, - 0, - "CLIP" - ], - [ - 53, - 48, - 0, - 50, - 0, - "CLIP" - ], - [ - 54, - 49, - 0, - 46, - 0, - "CONDITIONING" - ], - [ - 55, - 50, - 0, - 46, - 1, - "CONDITIONING" - ], [ 71, 67, @@ -2179,28 +1959,14 @@ "BLOCKSWAPARGS" ] ], - "groups": [ - { - "id": 1, - "title": "ComfyUI text encoding alternative", - "bounding": [ - -68.81207275390625, - 358.7208251953125, - 1210.621337890625, - 805.9080810546875 - ], - "color": "#3f789e", - "font_size": 24, - "flags": {} - } - ], + "groups": [], "config": {}, "extra": { "ds": { - "scale": 0.505447028499326, + "scale": 0.5559917313492586, "offset": [ - 329.46053758144194, - 1458.1424592955568 + 1049.3003683168295, + 1500.8605042177378 ] }, "frontendVersion": "1.27.10", diff --git a/example_workflows/ComfyUI-WanVideoWrapper wanvideo_1_3B control_lora.jpg b/example_workflows/ComfyUI-WanVideoWrapper wanvideo_1_3B control_lora.jpg new file mode 100755 index 0000000..ec7710f Binary files /dev/null and b/example_workflows/ComfyUI-WanVideoWrapper wanvideo_1_3B control_lora.jpg differ diff --git a/examples/wannvideowrapper/wanvideo_1_3B_control_lora_example_01_MultiGPU.json b/example_workflows/ComfyUI-WanVideoWrapper wanvideo_1_3B control_lora.json similarity index 81% rename from examples/wannvideowrapper/wanvideo_1_3B_control_lora_example_01_MultiGPU.json rename to example_workflows/ComfyUI-WanVideoWrapper wanvideo_1_3B control_lora.json index 32ebe53..850f7de 100755 --- a/examples/wannvideowrapper/wanvideo_1_3B_control_lora_example_01_MultiGPU.json +++ b/example_workflows/ComfyUI-WanVideoWrapper wanvideo_1_3B control_lora.json @@ -1,218 +1,9 @@ { "id": "04f1de76-e363-4c27-bec7-eb184ac6e476", "revision": 0, - "last_node_id": 114, + "last_node_id": 115, "last_link_id": 175, "nodes": [ - { - "id": 36, - "type": "Note", - "pos": [ - 160, - -1010 - ], - "size": [ - 374.3061828613281, - 171.9547576904297 - ], - "flags": {}, - "order": 0, - "mode": 0, - "inputs": [], - "outputs": [], - "properties": {}, - "widgets_values": [ - "fp8_fast seems to cause huge quality degradation\n\nfp_16_fast enables \"Full FP16 Accmumulation in FP16 GEMMs\" feature available in the very latest pytorch nightly, this is around 20% speed boost. \n\nSageattn if you have it installed can be used for almost double inference speed" - ], - "color": "#432", - "bgcolor": "#653" - }, - { - "id": 35, - "type": "WanVideoTorchCompileSettings", - "pos": [ - -276.8500671386719, - -1050.6326904296875 - ], - "size": [ - 390.5999755859375, - 202 - ], - "flags": {}, - "order": 1, - "mode": 0, - "inputs": [], - "outputs": [ - { - "name": "torch_compile_args", - "type": "WANCOMPILEARGS", - "slot_index": 0, - "links": [] - } - ], - "properties": { - "cnr_id": "ComfyUI-WanVideoWrapper", - "ver": "76ea2aa6a664edbd553799f78d6bafdd23e34dc6", - "Node name for S&R": "WanVideoTorchCompileSettings" - }, - "widgets_values": [ - "inductor", - false, - "default", - false, - 64, - true, - 128 - ], - "color": "#223", - "bgcolor": "#335" - }, - { - "id": 44, - "type": "Note", - "pos": [ - -620.9041137695312, - -1049.732421875 - ], - "size": [ - 303.0501403808594, - 88 - ], - "flags": {}, - "order": 2, - "mode": 0, - "inputs": [], - "outputs": [], - "properties": {}, - "widgets_values": [ - "If you have Triton installed, connect this for ~30% speed increase" - ], - "color": "#432", - "bgcolor": "#653" - }, - { - "id": 53, - "type": "Note", - "pos": [ - 1329.0076904296875, - -810.7708740234375 - ], - "size": [ - 324.64129638671875, - 159.47401428222656 - ], - "flags": {}, - "order": 3, - "mode": 0, - "inputs": [], - "outputs": [], - "properties": {}, - "widgets_values": [ - "TeaCache could be considered to be sort of an automated step skipper \n\nThe relative l1 threshold -value determines how aggressive this is, higher values are faster but quality suffers more. Very first steps should NEVER be skipped with this model or it kills the motion. When using the pre-calculated coefficients, the treshold value should be much higher than with the default coefficients." - ], - "color": "#432", - "bgcolor": "#653" - }, - { - "id": 30, - "type": "VHS_VideoCombine", - "pos": [ - 1709.29345703125, - -334.3517150878906 - ], - "size": [ - 1037.934326171875, - 856.9671630859375 - ], - "flags": {}, - "order": 19, - "mode": 0, - "inputs": [ - { - "name": "images", - "type": "IMAGE", - "link": 146 - }, - { - "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": 16, - "loop_count": 0, - "filename_prefix": "WanVideoWrapper_I2V", - "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": "WanVideoWrapper_I2V_00002.mp4", - "subfolder": "", - "type": "output", - "format": "video/h264-mp4", - "frame_rate": 16, - "workflow": "WanVideoWrapper_I2V_00002.png", - "fullpath": "/home/johnj/ComfyUI/output/WanVideoWrapper_I2V_00002.mp4" - } - } - } - }, - { - "id": 33, - "type": "Note", - "pos": [ - 170, - -1150 - ], - "size": [ - 359.0753479003906, - 88 - ], - "flags": {}, - "order": 4, - "mode": 0, - "inputs": [], - "outputs": [], - "properties": {}, - "widgets_values": [ - "Models:\nhttps://huggingface.co/Kijai/WanVideo_comfy/tree/main" - ], - "color": "#432", - "bgcolor": "#653" - }, { "id": 96, "type": "WanVideoControlEmbeds", @@ -225,7 +16,7 @@ 102 ], "flags": {}, - "order": 15, + "order": 11, "mode": 0, "inputs": [ { @@ -260,6 +51,44 @@ 0.7 ] }, + { + "id": 52, + "type": "WanVideoTeaCache", + "pos": [ + 784.0582885742188, + 198.33489990234375 + ], + "size": [ + 315, + 178 + ], + "flags": {}, + "order": 0, + "mode": 0, + "inputs": [], + "outputs": [ + { + "name": "cache_args", + "type": "CACHEARGS", + "links": [ + 153 + ] + } + ], + "properties": { + "cnr_id": "ComfyUI-WanVideoWrapper", + "ver": "76ea2aa6a664edbd553799f78d6bafdd23e34dc6", + "Node name for S&R": "WanVideoTeaCache" + }, + "widgets_values": [ + 0.1, + 1, + -1, + "offload_device", + "true", + "e" + ] + }, { "id": 110, "type": "WanVideoTextEncodeMultiGPU", @@ -272,7 +101,7 @@ 234 ], "flags": {}, - "order": 11, + "order": 8, "mode": 0, "inputs": [ { @@ -309,161 +138,83 @@ "Node name for S&R": "WanVideoTextEncodeMultiGPU" }, "widgets_values": [ - "video of a wolf", + "video of a cyberpunk city street", "č‰²č°ƒč‰³äø½ļ¼Œčæ‡ę›ļ¼Œé™ę€ļ¼Œē»†čŠ‚ęØ”ē³Šäøęø…ļ¼Œå­—å¹•ļ¼Œé£Žę ¼ļ¼Œä½œå“ļ¼Œē”»ä½œļ¼Œē”»é¢ļ¼Œé™ę­¢ļ¼Œę•“ä½“å‘ē°ļ¼Œęœ€å·®č“Øé‡ļ¼Œä½Žč“Øé‡ļ¼ŒJPEGåŽ‹ē¼©ę®‹ē•™ļ¼Œäø‘é™‹ēš„ļ¼Œę®‹ē¼ŗēš„ļ¼Œå¤šä½™ēš„ę‰‹ęŒ‡ļ¼Œē”»å¾—äøå„½ēš„ę‰‹éƒØļ¼Œē”»å¾—äøå„½ēš„č„øéƒØļ¼Œē•øå½¢ēš„ļ¼ŒęÆå®¹ēš„ļ¼Œå½¢ę€ē•øå½¢ēš„č‚¢ä½“ļ¼Œę‰‹ęŒ‡čžåˆļ¼Œé™ę­¢äøåŠØēš„ē”»é¢ļ¼Œę‚ä¹±ēš„čƒŒę™Æļ¼Œäø‰ę”č…æļ¼ŒčƒŒę™Æäŗŗå¾ˆå¤šļ¼Œå€’ē€čµ°", "cuda:0", false ], - "color": "#233", - "bgcolor": "#355" + "color": "#008181", + "bgcolor": "rgba(24,24,27,.9)" }, { - "id": 111, - "type": "LoadWanVideoT5TextEncoderMultiGPU", + "id": 114, + "type": "WanVideoDecodeMultiGPU", "pos": [ - 278.705810546875, - -281.6587829589844 + 1218.4522705078125, + -915.2039184570312 ], "size": [ - 348.9195251464844, - 150 + 271.8716735839844, + 218 ], "flags": {}, - "order": 5, + "order": 13, "mode": 0, - "inputs": [], - "outputs": [ + "inputs": [ { - "name": "wan_t5_model", - "type": "WANTEXTENCODER", - "links": [ - 161 - ] + "name": "vae", + "type": "WANVAE", + "link": 172 }, { "name": "load_device", "type": "MULTIGPUDEVICE", + "link": 173 + }, + { + "name": "samples", + "type": "LATENT", + "link": 174 + } + ], + "outputs": [ + { + "name": "images", + "type": "IMAGE", "links": [ - 166 + 175 ] } ], "properties": { "cnr_id": "comfyui-multigpu", "ver": "ba0a3a6e21b0a7f54bd24c51419a8e85b9217c3f", - "Node name for S&R": "LoadWanVideoT5TextEncoderMultiGPU" + "Node name for S&R": "WanVideoDecodeMultiGPU" }, "widgets_values": [ - "umt5-xxl-enc-bf16.safetensors", - "bf16", - "cuda:0", - "disabled" - ], - "color": "#233", - "bgcolor": "#355" - }, - { - "id": 64, - "type": "WanVideoTorchCompileSettings", - "pos": [ - -276.8500671386719, - -1050.6326904296875 - ], - "size": [ - 390.5999755859375, - 202 - ], - "flags": {}, - "order": 6, - "mode": 0, - "inputs": [], - "outputs": [ - { - "name": "torch_compile_args", - "type": "WANCOMPILEARGS", - "slot_index": 0, - "links": [ - 168 - ] - } - ], - "properties": { - "cnr_id": "ComfyUI-WanVideoWrapper", - "ver": "76ea2aa6a664edbd553799f78d6bafdd23e34dc6", - "Node name for S&R": "WanVideoTorchCompileSettings" - }, - "widgets_values": [ - "inductor", false, - "default", - false, - 64, - true, - 128 - ] - }, - { - "id": 98, - "type": "WanVideoLoraSelect", - "pos": [ - -161.7538604736328, - -680.8223876953125 + 272, + 272, + 144, + 128, + "default" ], - "size": [ - 315, - 150 - ], - "flags": {}, - "order": 7, - "mode": 0, - "inputs": [ - { - "name": "prev_lora", - "shape": 7, - "type": "WANVIDLORA", - "link": null - }, - { - "name": "blocks", - "shape": 7, - "type": "SELECTEDBLOCKS", - "link": null - } - ], - "outputs": [ - { - "name": "lora", - "type": "WANVIDLORA", - "links": [ - 169 - ] - } - ], - "properties": { - "cnr_id": "ComfyUI-WanVideoWrapper", - "ver": "76ea2aa6a664edbd553799f78d6bafdd23e34dc6", - "Node name for S&R": "WanVideoLoraSelect" - }, - "widgets_values": [ - "wan2.1-1.3b-control-lora-tile-v1.1_comfy.safetensors", - 1, - false, - true - ] + "color": "#008181", + "bgcolor": "rgba(24,24,27,.9)" }, { "id": 108, "type": "WanVideoSamplerMultiGPU", "pos": [ - 1322.1207275390625, - -347.0115051269531 + 1248.2589111328125, + -572.5546264648438 ], "size": [ 327.80859375, 922 ], "flags": {}, - "order": 16, + "order": 12, "mode": 0, "inputs": [ { @@ -607,77 +358,35 @@ -1, false ], - "color": "#233", - "bgcolor": "#355" + "color": "#008181", + "bgcolor": "rgba(24,24,27,.9)" }, { - "id": 109, - "type": "WanVideoVAELoaderMultiGPU", + "id": 30, + "type": "VHS_VideoCombine", "pos": [ - 689.3143310546875, - -934.9156494140625 + 1615.98486328125, + -531.5858764648438 ], "size": [ - 368.710693359375, - 126 + 1037.934326171875, + 1111.45068359375 ], "flags": {}, - "order": 8, + "order": 15, "mode": 0, "inputs": [ { - "name": "compile_args", - "shape": 7, - "type": "WANCOMPILEARGS", - "link": null - } - ], - "outputs": [ - { - "name": "vae", - "type": "WANVAE", - "links": [ - 162, - 172 - ] + "name": "images", + "type": "IMAGE", + "link": 146 }, { - "name": "load_device", - "type": "MULTIGPUDEVICE", - "links": [ - 163, - 173 - ] - } - ], - "properties": { - "cnr_id": "comfyui-multigpu", - "ver": "ba0a3a6e21b0a7f54bd24c51419a8e85b9217c3f", - "Node name for S&R": "WanVideoVAELoaderMultiGPU" - }, - "widgets_values": [ - "wan_2.1_vae.safetensors", - "cuda:0", - "bf16" - ], - "color": "#233", - "bgcolor": "#355" - }, - { - "id": 97, - "type": "VHS_LoadVideo", - "pos": [ - -854.7728271484375, - -166.42774963378906 - ], - "size": [ - 247.455078125, - 551.455078125 - ], - "flags": {}, - "order": 9, - "mode": 0, - "inputs": [ + "name": "audio", + "shape": 7, + "type": "AUDIO", + "link": null + }, { "name": "meta_batch", "shape": 7, @@ -693,57 +402,38 @@ ], "outputs": [ { - "name": "IMAGE", - "type": "IMAGE", - "slot_index": 0, - "links": [ - 147 - ] - }, - { - "name": "frame_count", - "type": "INT", - "links": null - }, - { - "name": "audio", - "type": "AUDIO", - "links": null - }, - { - "name": "video_info", - "type": "VHS_VIDEOINFO", + "name": "Filenames", + "type": "VHS_FILENAMES", "links": null } ], "properties": { "cnr_id": "comfyui-videohelpersuite", "ver": "08e8df15db24da292d4b7f943c460dc2ab442b24", - "Node name for S&R": "VHS_LoadVideo" + "Node name for S&R": "VHS_VideoCombine" }, "widgets_values": { - "video": "wolf_interpolated.mp4", - "force_rate": 0, - "custom_width": 0, - "custom_height": 0, - "frame_load_cap": 0, - "skip_first_frames": 0, - "select_every_nth": 1, - "format": "AnimateDiff", - "choose video to upload": "image", + "frame_rate": 16, + "loop_count": 0, + "filename_prefix": "WanVideoWrapper_I2V", + "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": "wolf_interpolated.mp4", - "type": "input", - "format": "video/mp4", - "force_rate": 0, - "custom_width": 0, - "custom_height": 0, - "frame_load_cap": 0, - "skip_first_frames": 0, - "select_every_nth": 1 + "filename": "WanVideoWrapper_I2V_00008.mp4", + "subfolder": "", + "type": "output", + "format": "video/h264-mp4", + "frame_rate": 16, + "workflow": "WanVideoWrapper_I2V_00008.png", + "fullpath": "/home/johnj/ComfyUI/output/WanVideoWrapper_I2V_00008.mp4" } } } @@ -752,15 +442,15 @@ "id": 103, "type": "ImageConcatMulti", "pos": [ - 1796.8583984375, - -624.5692138671875 + 1605.4227294921875, + -764.019775390625 ], "size": [ 315, 150 ], "flags": {}, - "order": 18, + "order": 14, "mode": 0, "inputs": [ { @@ -797,200 +487,94 @@ ] }, { - "id": 52, - "type": "WanVideoTeaCache", + "id": 64, + "type": "WanVideoTorchCompileSettings", "pos": [ - 784.0582885742188, - 198.33489990234375 + -12.65381908416748, + -1050.6871337890625 ], "size": [ - 315, - 178 + 390.5999755859375, + 202 ], "flags": {}, - "order": 10, - "mode": 0, + "order": 1, + "mode": 4, "inputs": [], "outputs": [ { - "name": "cache_args", - "type": "CACHEARGS", + "name": "torch_compile_args", + "type": "WANCOMPILEARGS", + "slot_index": 0, "links": [ - 153 + 168 ] } ], "properties": { "cnr_id": "ComfyUI-WanVideoWrapper", "ver": "76ea2aa6a664edbd553799f78d6bafdd23e34dc6", - "Node name for S&R": "WanVideoTeaCache" + "Node name for S&R": "WanVideoTorchCompileSettings" }, "widgets_values": [ - 0.1, - 1, - -1, - "offload_device", - "true", - "e" + "inductor", + false, + "default", + false, + 64, + true, + 128 ] }, { - "id": 104, - "type": "ImageBlur", + "id": 109, + "type": "WanVideoVAELoaderMultiGPU", "pos": [ - -336.56787109375, - -98.77837371826172 + 755.2626953125, + -863.6914672851562 ], "size": [ - 315, - 82 + 368.710693359375, + 126 ], "flags": {}, - "order": 13, + "order": 2, "mode": 0, "inputs": [ { - "name": "image", - "type": "IMAGE", - "link": 147 - } - ], - "outputs": [ - { - "name": "IMAGE", - "type": "IMAGE", - "slot_index": 0, - "links": [ - 149, - 165 - ] - } - ], - "properties": { - "cnr_id": "comfy-core", - "ver": "0.3.64", - "Node name for S&R": "ImageBlur" - }, - "widgets_values": [ - 4, - 1 - ] - }, - { - "id": 112, - "type": "WanVideoEncodeMultiGPU", - "pos": [ - 169.56695556640625, - 108.46249389648438 - ], - "size": [ - 271.0992126464844, - 262 - ], - "flags": {}, - "order": 14, - "mode": 0, - "inputs": [ - { - "name": "vae", - "type": "WANVAE", - "link": 162 - }, - { - "name": "load_device", - "type": "MULTIGPUDEVICE", - "link": 163 - }, - { - "name": "image", - "type": "IMAGE", - "link": 165 - }, - { - "name": "mask", + "name": "compile_args", "shape": 7, - "type": "MASK", + "type": "WANCOMPILEARGS", "link": null } ], "outputs": [ - { - "name": "samples", - "type": "LATENT", - "links": [ - 164 - ] - } - ], - "properties": { - "cnr_id": "comfyui-multigpu", - "ver": "ba0a3a6e21b0a7f54bd24c51419a8e85b9217c3f", - "Node name for S&R": "WanVideoEncodeMultiGPU" - }, - "widgets_values": [ - false, - 272, - 272, - 144, - 128, - 0, - 1 - ], - "color": "#008181", - "bgcolor": "rgba(24,24,27,.9)" - }, - { - "id": 114, - "type": "WanVideoDecodeMultiGPU", - "pos": [ - 1679.09765625, - -978.121826171875 - ], - "size": [ - 271.8716735839844, - 218 - ], - "flags": {}, - "order": 17, - "mode": 0, - "inputs": [ { "name": "vae", "type": "WANVAE", - "link": 172 + "links": [ + 162, + 172 + ] }, { "name": "load_device", "type": "MULTIGPUDEVICE", - "link": 173 - }, - { - "name": "samples", - "type": "LATENT", - "link": 174 - } - ], - "outputs": [ - { - "name": "images", - "type": "IMAGE", "links": [ - 175 + 163, + 173 ] } ], "properties": { "cnr_id": "comfyui-multigpu", "ver": "ba0a3a6e21b0a7f54bd24c51419a8e85b9217c3f", - "Node name for S&R": "WanVideoDecodeMultiGPU" + "Node name for S&R": "WanVideoVAELoaderMultiGPU" }, "widgets_values": [ - false, - 272, - 272, - 144, - 128, - "default" + "wan_2.1_vae.safetensors", + "cuda:1", + "bf16" ], "color": "#008181", "bgcolor": "rgba(24,24,27,.9)" @@ -999,15 +583,15 @@ "id": 113, "type": "WanVideoModelLoaderMultiGPU", "pos": [ - 304.0582275390625, - -755.562255859375 + 361.5360412597656, + -777.0635986328125 ], "size": [ 325.787109375, 342 ], "flags": {}, - "order": 12, + "order": 7, "mode": 0, "inputs": [ { @@ -1085,12 +669,320 @@ "bf16", "disabled", "offload_device", - "cuda:1", + "cuda:0", "sdpa", "default" ], "color": "#008181", "bgcolor": "rgba(24,24,27,.9)" + }, + { + "id": 98, + "type": "WanVideoLoraSelect", + "pos": [ + 3.530043840408325, + -733.1419067382812 + ], + "size": [ + 353.5796203613281, + 150 + ], + "flags": {}, + "order": 3, + "mode": 0, + "inputs": [ + { + "name": "prev_lora", + "shape": 7, + "type": "WANVIDLORA", + "link": null + }, + { + "name": "blocks", + "shape": 7, + "type": "SELECTEDBLOCKS", + "link": null + } + ], + "outputs": [ + { + "name": "lora", + "type": "WANVIDLORA", + "links": [ + 169 + ] + } + ], + "properties": { + "cnr_id": "ComfyUI-WanVideoWrapper", + "ver": "76ea2aa6a664edbd553799f78d6bafdd23e34dc6", + "Node name for S&R": "WanVideoLoraSelect" + }, + "widgets_values": [ + "wan2.1-1.3b-control-lora-tile-v1.1_comfy.safetensors", + 1, + false, + true + ] + }, + { + "id": 111, + "type": "LoadWanVideoT5TextEncoderMultiGPU", + "pos": [ + 359.0979309082031, + -377.98248291015625 + ], + "size": [ + 348.9195251464844, + 150 + ], + "flags": {}, + "order": 4, + "mode": 0, + "inputs": [], + "outputs": [ + { + "name": "wan_t5_model", + "type": "WANTEXTENCODER", + "links": [ + 161 + ] + }, + { + "name": "load_device", + "type": "MULTIGPUDEVICE", + "links": [ + 166 + ] + } + ], + "properties": { + "cnr_id": "comfyui-multigpu", + "ver": "ba0a3a6e21b0a7f54bd24c51419a8e85b9217c3f", + "Node name for S&R": "LoadWanVideoT5TextEncoderMultiGPU" + }, + "widgets_values": [ + "umt5-xxl-enc-bf16.safetensors", + "bf16", + "cuda:1", + "fp8_e4m3fn" + ], + "color": "#008181", + "bgcolor": "rgba(24,24,27,.9)" + }, + { + "id": 115, + "type": "MarkdownNote", + "pos": [ + -839.5035400390625, + -838.1215209960938 + ], + "size": [ + 777.6646728515625, + 937.3121337890625 + ], + "flags": {}, + "order": 5, + "mode": 0, + "inputs": [], + "outputs": [], + "title": "ComfyUI-MultiGPU Note - ComfyUI-WanVideoWrapper", + "properties": {}, + "widgets_values": [ + "These nodes are designed to work with ComfyUI-WanVideoWrapper they enable UNets, CLIPs, and VAEs to be loaded on any available device. This is a replication of the original workflow by kijai which can be found here: [wanvideo_1_3B_control_lora_example_01.json](https://github.com/kijai/ComfyUI-WanVideoWrapper/blob/main/example_workflows/wanvideo_1_3B_control_lora_example_01.json)\n\n## Custom Node\n- [ComfyUI-MultiGPU](https://github.com/pollockjj/ComfyUI-MultiGPU)\n- [ComfyUI-WanVideoWrapper](https://github.com/kijai/ComfyUI-WanVideoWrapper)\n```\nšŸ“‚ ComfyUI/\nā”œā”€ā”€ šŸ“‚ custom_nodes/\n│ ā”œā”€ā”€ šŸ“‚ ComfyUI-MultiGPU/\n│ ā”œā”€ā”€ šŸ“‚ ComfyUI-WanVideoWrapper\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_enc-bf16.safetensors](https://huggingface.co/Kijai/WanVideo_comfy/resolve/main/umt5-xxl-enc-bf16.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- [wan2.1-1.3b-control-lora-tile-v1.1_comfy.safetensors](https://huggingface.co/spacepxl/Wan2.1-control-loras/resolve/main/1.3b/tile/wan2.1-1.3b-control-lora-tile-v1.1_comfy.safetensors)\n\n## Model Storage Location\n\n```\nšŸ“‚ ComfyUI/\nā”œā”€ā”€ šŸ“‚ models/\n│ ā”œā”€ā”€ šŸ“‚ clip/\n│ │ └── umt5_xxl_enc-bf16.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.1-1.3b-control-lora-tile-v1.1_comfy.safetensors\n│ ā”œā”€ā”€ šŸ“‚ vae/\n│ │ └── wan_2.1_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": 112, + "type": "WanVideoEncodeMultiGPU", + "pos": [ + 426.3719177246094, + 95.08206939697266 + ], + "size": [ + 271.0992126464844, + 262 + ], + "flags": {}, + "order": 10, + "mode": 0, + "inputs": [ + { + "name": "vae", + "type": "WANVAE", + "link": 162 + }, + { + "name": "load_device", + "type": "MULTIGPUDEVICE", + "link": 163 + }, + { + "name": "image", + "type": "IMAGE", + "link": 165 + }, + { + "name": "mask", + "shape": 7, + "type": "MASK", + "link": null + } + ], + "outputs": [ + { + "name": "samples", + "type": "LATENT", + "links": [ + 164 + ] + } + ], + "properties": { + "cnr_id": "comfyui-multigpu", + "ver": "ba0a3a6e21b0a7f54bd24c51419a8e85b9217c3f", + "Node name for S&R": "WanVideoEncodeMultiGPU" + }, + "widgets_values": [ + false, + 272, + 272, + 144, + 128, + 0, + 1 + ], + "color": "#008181", + "bgcolor": "rgba(24,24,27,.9)" + }, + { + "id": 104, + "type": "ImageBlur", + "pos": [ + 320.9183349609375, + -48.397422790527344 + ], + "size": [ + 315, + 82 + ], + "flags": {}, + "order": 9, + "mode": 0, + "inputs": [ + { + "name": "image", + "type": "IMAGE", + "link": 147 + } + ], + "outputs": [ + { + "name": "IMAGE", + "type": "IMAGE", + "slot_index": 0, + "links": [ + 149, + 165 + ] + } + ], + "properties": { + "cnr_id": "comfy-core", + "ver": "0.3.64", + "Node name for S&R": "ImageBlur" + }, + "widgets_values": [ + 4, + 1 + ] + }, + { + "id": 97, + "type": "VHS_LoadVideo", + "pos": [ + 29.053192138671875, + -498.8067626953125 + ], + "size": [ + 247.455078125, + 664.9326782226562 + ], + "flags": {}, + "order": 6, + "mode": 0, + "inputs": [ + { + "name": "meta_batch", + "shape": 7, + "type": "VHS_BatchManager", + "link": null + }, + { + "name": "vae", + "shape": 7, + "type": "VAE", + "link": null + } + ], + "outputs": [ + { + "name": "IMAGE", + "type": "IMAGE", + "slot_index": 0, + "links": [ + 147 + ] + }, + { + "name": "frame_count", + "type": "INT", + "links": null + }, + { + "name": "audio", + "type": "AUDIO", + "links": null + }, + { + "name": "video_info", + "type": "VHS_VIDEOINFO", + "links": null + } + ], + "properties": { + "cnr_id": "comfyui-videohelpersuite", + "ver": "08e8df15db24da292d4b7f943c460dc2ab442b24", + "Node name for S&R": "VHS_LoadVideo" + }, + "widgets_values": { + "video": "ComfyUI-WanVideoWrapper wanvideo_1_3B control_lora.webm", + "force_rate": 0, + "custom_width": 0, + "custom_height": 0, + "frame_load_cap": 0, + "skip_first_frames": 0, + "select_every_nth": 1, + "format": "AnimateDiff", + "choose video to upload": "image", + "videopreview": { + "hidden": false, + "paused": false, + "params": { + "filename": "ComfyUI-WanVideoWrapper wanvideo_1_3B control_lora.webm", + "type": "input", + "format": "video/webm", + "force_rate": 0, + "custom_width": 0, + "custom_height": 0, + "frame_load_cap": 0, + "skip_first_frames": 0, + "select_every_nth": 1 + } + } + } } ], "links": [ @@ -1259,10 +1151,10 @@ "config": {}, "extra": { "ds": { - "scale": 0.5559917313492605, + "scale": 0.6115909044841882, "offset": [ - 1542.2773971567624, - 1325.1448841491515 + 1103.896612697283, + 1090.9859517147797 ] }, "frontendVersion": "1.27.10", diff --git a/example_workflows/ComfyUI-WanVideoWrapper wanvideo_1_3B control_lora.webm b/example_workflows/ComfyUI-WanVideoWrapper wanvideo_1_3B control_lora.webm new file mode 100755 index 0000000..4b8c93d Binary files /dev/null and b/example_workflows/ComfyUI-WanVideoWrapper wanvideo_1_3B control_lora.webm differ diff --git a/example_workflows/ComfyUI-WanVideoWrapper wanvideo_T2V.jpg b/example_workflows/ComfyUI-WanVideoWrapper wanvideo_T2V.jpg new file mode 100755 index 0000000..f8c8041 Binary files /dev/null and b/example_workflows/ComfyUI-WanVideoWrapper wanvideo_T2V.jpg differ diff --git a/examples/wannvideowrapper/wanvideo_T2V_example_MultiGPU.json b/example_workflows/ComfyUI-WanVideoWrapper wanvideo_T2V.json similarity index 74% rename from examples/wannvideowrapper/wanvideo_T2V_example_MultiGPU.json rename to example_workflows/ComfyUI-WanVideoWrapper wanvideo_T2V.json index 0be682f..b45f3be 100755 --- a/examples/wannvideowrapper/wanvideo_T2V_example_MultiGPU.json +++ b/example_workflows/ComfyUI-WanVideoWrapper wanvideo_T2V.json @@ -1,247 +1,69 @@ { "id": "c6e410bc-5e2c-460b-ae81-c91b6094fbb1", "revision": 0, - "last_node_id": 75, - "last_link_id": 88, + "last_node_id": 78, + "last_link_id": 91, "nodes": [ { - "id": 50, - "type": "CLIPTextEncode", + "id": 62, + "type": "WanVideoVAELoaderMultiGPU", "pos": [ - 396.64337158203125, - 929.3626098632812 + 1261.431884765625, + -741.0675048828125 ], "size": [ - 400, - 200 - ], - "flags": {}, - "order": 12, - "mode": 2, - "inputs": [ - { - "name": "clip", - "type": "CLIP", - "link": 53 - } - ], - "outputs": [ - { - "name": "CONDITIONING", - "type": "CONDITIONING", - "slot_index": 0, - "links": [ - 55 - ] - } - ], - "properties": { - "cnr_id": "comfy-core", - "ver": "0.3.64", - "Node name for S&R": "CLIPTextEncode" - }, - "widgets_values": [ - "č‰²č°ƒč‰³äø½ļ¼Œčæ‡ę›ļ¼Œé™ę€ļ¼Œē»†čŠ‚ęØ”ē³Šäøęø…ļ¼Œå­—å¹•ļ¼Œé£Žę ¼ļ¼Œä½œå“ļ¼Œē”»ä½œļ¼Œē”»é¢ļ¼Œé™ę­¢ļ¼Œę•“ä½“å‘ē°ļ¼Œęœ€å·®č“Øé‡ļ¼Œä½Žč“Øé‡ļ¼ŒJPEGåŽ‹ē¼©ę®‹ē•™ļ¼Œäø‘é™‹ēš„ļ¼Œę®‹ē¼ŗēš„ļ¼Œå¤šä½™ēš„ę‰‹ęŒ‡ļ¼Œē”»å¾—äøå„½ēš„ę‰‹éƒØļ¼Œē”»å¾—äøå„½ēš„č„øéƒØļ¼Œē•øå½¢ēš„ļ¼ŒęÆå®¹ēš„ļ¼Œå½¢ę€ē•øå½¢ēš„č‚¢ä½“ļ¼Œę‰‹ęŒ‡čžåˆļ¼Œé™ę­¢äøåŠØēš„ē”»é¢ļ¼Œę‚ä¹±ēš„čƒŒę™Æļ¼Œäø‰ę”č…æļ¼ŒčƒŒę™Æäŗŗå¾ˆå¤šļ¼Œå€’ē€čµ°" - ], - "color": "#432", - "bgcolor": "#653" - }, - { - "id": 48, - "type": "CLIPLoader", - "pos": [ - 36.643455505371094, - 679.3622436523438 - ], - "size": [ - 315, - 106 + 294.1841735839844, + 126 ], "flags": {}, "order": 0, - "mode": 2, - "inputs": [], - "outputs": [ - { - "name": "CLIP", - "type": "CLIP", - "slot_index": 0, - "links": [ - 52, - 53 - ] - } - ], - "properties": { - "cnr_id": "comfy-core", - "ver": "0.3.64", - "Node name for S&R": "CLIPLoader" - }, - "widgets_values": [ - "umt5_xxl_fp16.safetensors", - "wan", - "default" - ], - "color": "#432", - "bgcolor": "#653" - }, - { - "id": 51, - "type": "Note", - "pos": [ - 66.64339447021484, - 509.36181640625 - ], - "size": [ - 253.16725158691406, - 88 - ], - "flags": {}, - "order": 1, "mode": 0, - "inputs": [], - "outputs": [], - "properties": {}, - "widgets_values": [ - "You can also use native ComfyUI text encoding with these nodes instead of the original, the models are node specific and can't otherwise be mixed." - ], - "color": "#432", - "bgcolor": "#653" - }, - { - "id": 49, - "type": "CLIPTextEncode", - "pos": [ - 396.64337158203125, - 679.3622436523438 - ], - "size": [ - 400, - 200 - ], - "flags": {}, - "order": 11, - "mode": 2, "inputs": [ { - "name": "clip", - "type": "CLIP", - "link": 52 + "name": "compile_args", + "shape": 7, + "type": "WANCOMPILEARGS", + "link": null } ], "outputs": [ { - "name": "CONDITIONING", - "type": "CONDITIONING", - "slot_index": 0, - "links": [ - 54 - ] - } - ], - "properties": { - "cnr_id": "comfy-core", - "ver": "0.3.64", - "Node name for S&R": "CLIPTextEncode" - }, - "widgets_values": [ - "high quality nature video featuring a red panda balancing on a bamboo stem while a bird lands on it's head, on the background there is a waterfall" - ], - "color": "#432", - "bgcolor": "#653" - }, - { - "id": 46, - "type": "WanVideoTextEmbedBridge", - "pos": [ - 846.6441650390625, - 669.3622436523438 - ], - "size": [ - 315, - 46 - ], - "flags": {}, - "order": 15, - "mode": 2, - "inputs": [ - { - "name": "positive", - "type": "CONDITIONING", - "link": 54 + "name": "vae", + "type": "WANVAE", + "links": [] }, { - "name": "negative", - "shape": 7, - "type": "CONDITIONING", - "link": 55 - } - ], - "outputs": [ - { - "name": "text_embeds", - "type": "WANVIDEOTEXTEMBEDS", + "name": "load_device", + "type": "MULTIGPUDEVICE", "links": null } ], "properties": { - "cnr_id": "ComfyUI-WanVideoWrapper", - "ver": "76ea2aa6a664edbd553799f78d6bafdd23e34dc6", - "Node name for S&R": "WanVideoTextEmbedBridge" - }, - "widgets_values": [] - }, - { - "id": 52, - "type": "WanVideoTeaCache", - "pos": [ - 870.7489013671875, - -1000.0360717773438 - ], - "size": [ - 315, - 178 - ], - "flags": {}, - "order": 2, - "mode": 0, - "inputs": [], - "outputs": [ - { - "name": "cache_args", - "type": "CACHEARGS", - "links": [ - 66 - ] - } - ], - "properties": { - "cnr_id": "ComfyUI-WanVideoWrapper", - "ver": "76ea2aa6a664edbd553799f78d6bafdd23e34dc6", - "Node name for S&R": "WanVideoTeaCache" + "cnr_id": "comfyui-multigpu", + "ver": "15ff29c63b816a5d4139557730da6b4dae2840cf", + "Node name for S&R": "WanVideoVAELoaderMultiGPU" }, "widgets_values": [ - 0.25, - 1, - -1, - "offload_device", - "true", - "e" - ] + "wan_2.1_vae.safetensors", + "cuda:0", + "bf16" + ], + "color": "#008181", + "bgcolor": "rgba(24,24,27,.9)" }, { "id": 37, "type": "WanVideoEmptyEmbeds", "pos": [ - 809.1670532226562, - -720.2110595703125 + 854.26123046875, + -667.6011962890625 ], "size": [ 315, 126 ], "flags": {}, - "order": 3, + "order": 1, "mode": 0, "inputs": [ { @@ -281,15 +103,15 @@ "id": 55, "type": "WanVideoEnhanceAVideo", "pos": [ - 1282.9122314453125, - -994.9732666015625 + 1216.34375, + -912.3005981445312 ], "size": [ 315, 106 ], "flags": {}, - "order": 4, + "order": 2, "mode": 0, "inputs": [], "outputs": [ @@ -313,61 +135,74 @@ ] }, { - "id": 66, - "type": "WanVideoSetBlockSwap", + "id": 75, + "type": "WanVideoDecodeMultiGPU", "pos": [ - 824.3810424804688, - -377.044189453125 + 1621.107666015625, + -527.0068359375 ], "size": [ - 201.76815795898438, - 46 + 271.8716735839844, + 218 ], "flags": {}, - "order": 14, + "order": 13, "mode": 0, "inputs": [ { - "name": "model", - "type": "WANVIDEOMODEL", - "link": 84 + "name": "vae", + "type": "WANVAE", + "link": 85 }, { - "name": "block_swap_args", - "shape": 7, - "type": "BLOCKSWAPARGS", - "link": 72 + "name": "load_device", + "type": "MULTIGPUDEVICE", + "link": 86 + }, + { + "name": "samples", + "type": "LATENT", + "link": 87 } ], "outputs": [ { - "name": "model", - "type": "WANVIDEOMODEL", - "links": [] + "name": "images", + "type": "IMAGE", + "links": [ + 88 + ] } ], "properties": { - "cnr_id": "ComfyUI-WanVideoWrapper", - "ver": "7e290c67bff1f906cdab84523018573f6c9d4d7f", - "Node name for S&R": "WanVideoSetBlockSwap" + "cnr_id": "comfyui-multigpu", + "ver": "db931d66c31acbcfce26f29babfb552509e586aa", + "Node name for S&R": "WanVideoDecodeMultiGPU" }, - "widgets_values": [], - "color": "#223", - "bgcolor": "#335" + "widgets_values": [ + false, + 272, + 272, + 144, + 128, + "default" + ], + "color": "#008181", + "bgcolor": "rgba(24,24,27,.9)" }, { "id": 69, "type": "GetImageSizeAndCount", "pos": [ - 1655.0137939453125, - -260.44696044921875 + 1972.8206787109375, + -598.654052734375 ], "size": [ 240.41265869140625, 86 ], "flags": {}, - "order": 18, + "order": 14, "mode": 0, "inputs": [ { @@ -385,19 +220,19 @@ ] }, { - "label": "width", + "label": "832 width", "name": "width", "type": "INT", "links": null }, { - "label": "height", + "label": "480 height", "name": "height", "type": "INT", "links": null }, { - "label": "count", + "label": "81 count", "name": "count", "type": "INT", "links": null @@ -411,95 +246,18 @@ "widgets_values": [] }, { - "id": 70, - "type": "VHS_VideoCombine", - "pos": [ - 1994.4910888671875, - -545.2236328125 - ], - "size": [ - 698.6392211914062, - 334 - ], - "flags": {}, - "order": 19, - "mode": 0, - "inputs": [ - { - "name": "images", - "type": "IMAGE", - "link": 78 - }, - { - "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": "0a75c7958fe320efcb052f1d9f8451fd20c730a8", - "Node name for S&R": "VHS_VideoCombine" - }, - "widgets_values": { - "frame_rate": 16, - "loop_count": 0, - "filename_prefix": "WanVideo2_1_T2V", - "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": "WanVideo2_1_T2V_00020.mp4", - "subfolder": "", - "type": "output", - "format": "video/h264-mp4", - "frame_rate": 16, - "workflow": "WanVideo2_1_T2V_00020.png", - "fullpath": "/home/johnj/ComfyUI/output/WanVideo2_1_T2V_00020.mp4" - } - } - } - }, - { - "id": 62, + "id": 74, "type": "WanVideoVAELoaderMultiGPU", "pos": [ - 1324.779052734375, - -796.8985595703125 + 1635.6156005859375, + -764.2013549804688 ], "size": [ 294.1841735839844, 126 ], "flags": {}, - "order": 5, + "order": 3, "mode": 0, "inputs": [ { @@ -513,23 +271,72 @@ { "name": "vae", "type": "WANVAE", - "links": [] + "links": [ + 85 + ] }, { "name": "load_device", "type": "MULTIGPUDEVICE", - "links": null + "links": [ + 86 + ] + } + ], + "properties": { + "cnr_id": "comfyui-multigpu", + "ver": "db931d66c31acbcfce26f29babfb552509e586aa", + "Node name for S&R": "WanVideoVAELoaderMultiGPU" + }, + "widgets_values": [ + "wan_2.1_vae.safetensors", + "cuda:1", + "bf16" + ], + "color": "#008181", + "bgcolor": "rgba(24,24,27,.9)" + }, + { + "id": 60, + "type": "LoadWanVideoT5TextEncoderMultiGPU", + "pos": [ + 272.1676025390625, + -32.73524856567383 + ], + "size": [ + 344.07952880859375, + 150 + ], + "flags": {}, + "order": 4, + "mode": 0, + "inputs": [], + "outputs": [ + { + "name": "wan_t5_model", + "type": "WANTEXTENCODER", + "links": [ + 63 + ] + }, + { + "name": "load_device", + "type": "MULTIGPUDEVICE", + "links": [ + 89 + ] } ], "properties": { "cnr_id": "comfyui-multigpu", "ver": "15ff29c63b816a5d4139557730da6b4dae2840cf", - "Node name for S&R": "WanVideoVAELoaderMultiGPU" + "Node name for S&R": "LoadWanVideoT5TextEncoderMultiGPU" }, "widgets_values": [ - "wan_2.1_vae.safetensors", - "cuda:0", - "bf16" + "umt5-xxl-enc-bf16.safetensors", + "bf16", + "cuda:1", + "disabled" ], "color": "#008181", "bgcolor": "rgba(24,24,27,.9)" @@ -546,14 +353,14 @@ 342 ], "flags": {}, - "order": 6, + "order": 10, "mode": 0, "inputs": [ { "name": "compile_args", "shape": 7, "type": "WANCOMPILEARGS", - "link": null + "link": 91 }, { "name": "block_swap_args", @@ -603,7 +410,6 @@ "name": "model", "type": "WANVIDEOMODEL", "links": [ - 82, 84 ] }, @@ -621,7 +427,7 @@ "Node name for S&R": "WanVideoModelLoaderMultiGPU" }, "widgets_values": [ - "wan2.1_t2v_1.3B_bf16.safetensors", + "Wan2_1-T2V-14B_fp8_e5m2.safetensors", "bf16", "disabled", "offload_device", @@ -633,61 +439,95 @@ "bgcolor": "rgba(24,24,27,.9)" }, { - "id": 60, - "type": "LoadWanVideoT5TextEncoderMultiGPU", + "id": 70, + "type": "VHS_VideoCombine", "pos": [ - 272.1676025390625, - -32.73524856567383 + 2090.0478515625, + -465.7718505859375 ], "size": [ - 344.07952880859375, - 150 + 698.6392211914062, + 739.5226440429688 ], "flags": {}, - "order": 7, + "order": 15, "mode": 0, - "inputs": [], - "outputs": [ + "inputs": [ { - "name": "wan_t5_model", - "type": "WANTEXTENCODER", - "links": [ - 63 - ] + "name": "images", + "type": "IMAGE", + "link": 78 }, { - "name": "load_device", - "type": "MULTIGPUDEVICE", + "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-multigpu", - "ver": "15ff29c63b816a5d4139557730da6b4dae2840cf", - "Node name for S&R": "LoadWanVideoT5TextEncoderMultiGPU" + "cnr_id": "comfyui-videohelpersuite", + "ver": "0a75c7958fe320efcb052f1d9f8451fd20c730a8", + "Node name for S&R": "VHS_VideoCombine" }, - "widgets_values": [ - "umt5-xxl-enc-bf16.safetensors", - "bf16", - "cuda:0", - "disabled" - ], - "color": "#008181", - "bgcolor": "rgba(24,24,27,.9)" + "widgets_values": { + "frame_rate": 16, + "loop_count": 0, + "filename_prefix": "MultiGPU", + "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": "MultiGPU_00056.mp4", + "subfolder": "", + "type": "output", + "format": "video/h264-mp4", + "frame_rate": 16, + "workflow": "MultiGPU_00056.png", + "fullpath": "/home/johnj/ComfyUI/output/MultiGPU_00056.mp4" + } + } + } }, { "id": 61, "type": "WanVideoTextEncodeMultiGPU", "pos": [ - 712.607177734375, - -10.148613929748535 + 680.0242309570312, + -36.73755645751953 ], "size": [ - 400, - 234 + 566.0554809570312, + 250.3997344970703 ], "flags": {}, - "order": 13, + "order": 9, "mode": 0, "inputs": [ { @@ -700,7 +540,7 @@ "name": "load_device", "shape": 7, "type": "MULTIGPUDEVICE", - "link": null + "link": 89 }, { "name": "model_to_offload", @@ -724,7 +564,7 @@ "Node name for S&R": "WanVideoTextEncodeMultiGPU" }, "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 \"WanVideoWrapper\" and \"T2V\" 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. ", "č‰²č°ƒč‰³äø½ļ¼Œčæ‡ę›ļ¼Œé™ę€ļ¼Œē»†čŠ‚ęØ”ē³Šäøęø…ļ¼Œå­—å¹•ļ¼Œé£Žę ¼ļ¼Œä½œå“ļ¼Œē”»ä½œļ¼Œē”»é¢ļ¼Œé™ę­¢ļ¼Œę•“ä½“å‘ē°ļ¼Œęœ€å·®č“Øé‡ļ¼Œä½Žč“Øé‡ļ¼ŒJPEGåŽ‹ē¼©ę®‹ē•™ļ¼Œäø‘é™‹ēš„ļ¼Œę®‹ē¼ŗēš„ļ¼Œå¤šä½™ēš„ę‰‹ęŒ‡ļ¼Œē”»å¾—äøå„½ēš„ę‰‹éƒØļ¼Œē”»å¾—äøå„½ēš„č„øéƒØļ¼Œē•øå½¢ēš„ļ¼ŒęÆå®¹ēš„ļ¼Œå½¢ę€ē•øå½¢ēš„č‚¢ä½“ļ¼Œę‰‹ęŒ‡čžåˆļ¼Œé™ę­¢äøåŠØēš„ē”»é¢ļ¼Œę‚ä¹±ēš„čƒŒę™Æļ¼Œäø‰ę”č…æļ¼ŒčƒŒę™Æäŗŗå¾ˆå¤šļ¼Œå€’ē€čµ°", "cpu", false @@ -732,99 +572,6 @@ "color": "#008181", "bgcolor": "rgba(24,24,27,.9)" }, - { - "id": 65, - "type": "WanVideoBlockSwapMultiGPU", - "pos": [ - -41.53060531616211, - -427.4794616699219 - ], - "size": [ - 292.8716735839844, - 226 - ], - "flags": {}, - "order": 8, - "mode": 0, - "inputs": [], - "outputs": [ - { - "name": "block_swap_args", - "type": "BLOCKSWAPARGS", - "links": [ - 72 - ] - } - ], - "properties": { - "cnr_id": "comfyui-multigpu", - "ver": "15ff29c63b816a5d4139557730da6b4dae2840cf", - "Node name for S&R": "WanVideoBlockSwapMultiGPU" - }, - "widgets_values": [ - 5, - "cuda:2", - "cpu", - false, - false, - false, - 0, - "cuda:1" - ], - "color": "#008181", - "bgcolor": "rgba(24,24,27,.9)" - }, - { - "id": 74, - "type": "WanVideoVAELoaderMultiGPU", - "pos": [ - 1695.74169921875, - -860.8320922851562 - ], - "size": [ - 294.1841735839844, - 126 - ], - "flags": {}, - "order": 9, - "mode": 0, - "inputs": [ - { - "name": "compile_args", - "shape": 7, - "type": "WANCOMPILEARGS", - "link": null - } - ], - "outputs": [ - { - "name": "vae", - "type": "WANVAE", - "links": [ - 85 - ] - }, - { - "name": "load_device", - "type": "MULTIGPUDEVICE", - "links": [ - 86 - ] - } - ], - "properties": { - "cnr_id": "comfyui-multigpu", - "ver": "db931d66c31acbcfce26f29babfb552509e586aa", - "Node name for S&R": "WanVideoVAELoaderMultiGPU" - }, - "widgets_values": [ - "wan_2.1_vae.safetensors", - "cuda:0", - "bf16" - ], - "color": "#008181", - "bgcolor": "rgba(24,24,27,.9)" - }, { "id": 63, "type": "WanVideoSamplerMultiGPU", @@ -837,13 +584,13 @@ 922 ], "flags": {}, - "order": 16, + "order": 12, "mode": 0, "inputs": [ { "name": "model", "type": "WANVIDEOMODEL", - "link": 82 + "link": 90 }, { "name": "compute_device", @@ -969,9 +716,9 @@ 25, 6, 5, - 47, + 60, "increment", - false, + true, "unipc", 0, 1, @@ -985,87 +732,115 @@ "bgcolor": "rgba(24,24,27,.9)" }, { - "id": 75, - "type": "WanVideoDecodeMultiGPU", + "id": 66, + "type": "WanVideoSetBlockSwap", "pos": [ - 1667.2755126953125, - -590.3536376953125 + 683.7297973632812, + -358.79156494140625 ], "size": [ - 271.8716735839844, - 218 + 201.76815795898438, + 46 ], "flags": {}, - "order": 17, + "order": 11, "mode": 0, "inputs": [ { - "name": "vae", - "type": "WANVAE", - "link": 85 + "name": "model", + "type": "WANVIDEOMODEL", + "link": 84 }, { - "name": "load_device", - "type": "MULTIGPUDEVICE", - "link": 86 - }, - { - "name": "samples", - "type": "LATENT", - "link": 87 + "name": "block_swap_args", + "shape": 7, + "type": "BLOCKSWAPARGS", + "link": 72 } ], "outputs": [ { - "name": "images", - "type": "IMAGE", + "name": "model", + "type": "WANVIDEOMODEL", "links": [ - 88 + 90 ] } ], "properties": { - "cnr_id": "comfyui-multigpu", - "ver": "db931d66c31acbcfce26f29babfb552509e586aa", - "Node name for S&R": "WanVideoDecodeMultiGPU" + "cnr_id": "ComfyUI-WanVideoWrapper", + "ver": "7e290c67bff1f906cdab84523018573f6c9d4d7f", + "Node name for S&R": "WanVideoSetBlockSwap" }, - "widgets_values": [ - false, - 272, - 272, - 144, - 128, - "default" - ], - "color": "#008181", - "bgcolor": "rgba(24,24,27,.9)" + "widgets_values": [], + "color": "#223", + "bgcolor": "#335" }, { - "id": 35, - "type": "WanVideoTorchCompileSettings", + "id": 52, + "type": "WanVideoTeaCache", "pos": [ - 352.3750915527344, - -817.9258422851562 + 828.8751831054688, + -948.4996948242188 ], "size": [ - 390.5999755859375, + 315, + 178 + ], + "flags": {}, + "order": 5, + "mode": 0, + "inputs": [], + "outputs": [ + { + "name": "cache_args", + "type": "CACHEARGS", + "links": [ + 66 + ] + } + ], + "properties": { + "cnr_id": "ComfyUI-WanVideoWrapper", + "ver": "76ea2aa6a664edbd553799f78d6bafdd23e34dc6", + "Node name for S&R": "WanVideoTeaCache" + }, + "widgets_values": [ + 0.25, + 1, + -1, + "offload_device", + false, + "e" + ] + }, + { + "id": 78, + "type": "WanVideoTorchCompileSettings", + "pos": [ + 311.9624328613281, + -764.6751098632812 + ], + "size": [ + 342.74609375, 202 ], "flags": {}, - "order": 10, + "order": 6, "mode": 0, "inputs": [], "outputs": [ { "name": "torch_compile_args", "type": "WANCOMPILEARGS", - "slot_index": 0, - "links": [] + "links": [ + 91 + ] } ], "properties": { "cnr_id": "ComfyUI-WanVideoWrapper", - "ver": "76ea2aa6a664edbd553799f78d6bafdd23e34dc6", + "ver": "e2d8c9bef572d488d6474caa144436e08b543605", "Node name for S&R": "WanVideoTorchCompileSettings" }, "widgets_values": [ @@ -1077,41 +852,75 @@ true, 128 ] + }, + { + "id": 65, + "type": "WanVideoBlockSwapMultiGPU", + "pos": [ + 895.7860717773438, + -325.48040771484375 + ], + "size": [ + 292.8716735839844, + 226 + ], + "flags": {}, + "order": 7, + "mode": 0, + "inputs": [], + "outputs": [ + { + "name": "block_swap_args", + "type": "BLOCKSWAPARGS", + "links": [ + 72 + ] + } + ], + "properties": { + "cnr_id": "comfyui-multigpu", + "ver": "15ff29c63b816a5d4139557730da6b4dae2840cf", + "Node name for S&R": "WanVideoBlockSwapMultiGPU" + }, + "widgets_values": [ + 21, + "cuda:2", + "cpu", + false, + false, + false, + 0, + "cuda:1" + ], + "color": "#008181", + "bgcolor": "rgba(24,24,27,.9)" + }, + { + "id": 76, + "type": "MarkdownNote", + "pos": [ + -584.4541625976562, + -762.4033203125 + ], + "size": [ + 647.0803833007812, + 804.3665771484375 + ], + "flags": {}, + "order": 8, + "mode": 0, + "inputs": [], + "outputs": [], + "title": "ComfyUI-MultiGPU Note - ComfyUI-WanVideoWrapper", + "properties": {}, + "widgets_values": [ + "These nodes are designed to work with ComfyUI-WanVideoWrapper they enable UNets, CLIPs, and VAEs to be loaded on any available device. This is a replication of the original workflow by kijai which can be found here: [wanvideo_T2V_example_03.json](https://github.com/kijai/ComfyUI-WanVideoWrapper/blob/main/example_workflows/wanvideo_T2V_example_03.json). In this case we assume that there is a second video card in the system that can donate ~7G for the model. Literally any device on the PCIe bus can be used for model storage with very little impact to WanVideo generation times.\n\n## Custom Node\n- [ComfyUI-MultiGPU](https://github.com/pollockjj/ComfyUI-MultiGPU)\n- [ComfyUI-WanVideoWrapper](https://github.com/kijai/ComfyUI-WanVideoWrapper)\n```\nšŸ“‚ ComfyUI/\nā”œā”€ā”€ šŸ“‚ custom_nodes/\n│ ā”œā”€ā”€ šŸ“‚ ComfyUI-MultiGPU/\n│ ā”œā”€ā”€ šŸ“‚ ComfyUI-WanVideoWrapper\n```\n## Model links\n\n**Diffusion model**\n- [Wan2_1-T2V-14B_fp8_e5m2.safetensors](https://huggingface.co/Kijai/WanVideo_comfy/resolve/main/Wan2_1-T2V-14B_fp8_e5m2.safetensors)\n\n**CLIP**\n- [umt5_xxl_enc-bf16.safetensors](https://huggingface.co/Kijai/WanVideo_comfy/resolve/main/umt5-xxl-enc-bf16.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- [wan2.1-1.3b-control-lora-tile-v1.1_comfy.safetensors](https://huggingface.co/spacepxl/Wan2.1-control-loras/resolve/main/1.3b/tile/wan2.1-1.3b-control-lora-tile-v1.1_comfy.safetensors)\n\n## Model Storage Location\n\n```\nšŸ“‚ ComfyUI/\nā”œā”€ā”€ šŸ“‚ models/\n│ ā”œā”€ā”€ šŸ“‚ clip/\n│ │ └── umt5_xxl_enc-bf16.safetensors \n│ ā”œā”€ā”€ šŸ“‚ unet/\n│ │ ā”œā”€ā”€ Wan2_1-T2V-14B_fp8_e5m2.safetensors [🟪🟪🟪🟪🟪🟩🟩🟩🟩🟩]\n│ ā”œā”€ā”€ā”€šŸ“‚ loras/\n│ │ ā”œā”€ā”€ wan2.1-1.3b-control-lora-tile-v1.1_comfy.safetensors\n│ ā”œā”€ā”€ šŸ“‚ vae/\n│ │ └── wan_2.1_vae.safetensors \n```\n## Device Mapping (Example: Two GPUs, 1 CPU)\n```\nšŸ–„ļø system \nā”œā”€ā”€ 🟢 cuda:0\n│ └── Wan2_1-T2V-14B_fp8_e5m2.safetensors [🟩🟩🟩🟩🟩]\n│ └── wan2.1-1.3b-control-lora-tile-v1.1_comfy.safetensors\nā”œā”€ā”€ 🟣 cuda:1\n│ └── Wan2_1-T2V-14B_fp8_e5m2.safetensors [🟪🟪🟪🟪🟪]\n│ └── umt5_xxl_enc-bf16.safetensors\n│ └── wan_2.1_vae.safetensors\nā”œā”€ā”€ āš™ļø cpu\n └── Empty\n```" + ], + "color": "#008181", + "bgcolor": "rgba(24,24,27,.9)" } ], "links": [ - [ - 52, - 48, - 0, - 49, - 0, - "CLIP" - ], - [ - 53, - 48, - 0, - 50, - 0, - "CLIP" - ], - [ - 54, - 49, - 0, - 46, - 0, - "CONDITIONING" - ], - [ - 55, - 50, - 0, - 46, - 1, - "CONDITIONING" - ], [ 63, 60, @@ -1168,14 +977,6 @@ 0, "IMAGE" ], - [ - 82, - 72, - 0, - 63, - 0, - "WANVIDEOMODEL" - ], [ 83, 72, @@ -1223,30 +1024,40 @@ 69, 0, "IMAGE" + ], + [ + 89, + 60, + 1, + 61, + 1, + "MULTIGPUDEVICE" + ], + [ + 90, + 66, + 0, + 63, + 0, + "WANVIDEOMODEL" + ], + [ + 91, + 78, + 0, + 72, + 0, + "WANCOMPILEARGS" ] ], - "groups": [ - { - "id": 1, - "title": "ComfyUI text encoding alternative", - "bounding": [ - -26.172378540039062, - 365.4286193847656, - 1210.621337890625, - 805.9080810546875 - ], - "color": "#3f789e", - "font_size": 24, - "flags": {} - } - ], + "groups": [], "config": {}, "extra": { "ds": { - "scale": 0.620921323059155, + "scale": 0.6830134553650705, "offset": [ - 949.2262021137265, - 1175.3792206745793 + 655.4991813722315, + 1152.1915705024237 ] }, "frontendVersion": "1.27.10", diff --git a/example_workflows/flux unet dual_clip vae loaders.jpg b/example_workflows/flux unet dual_clip vae loaders.jpg new file mode 100755 index 0000000..43e065b Binary files /dev/null and b/example_workflows/flux unet dual_clip vae loaders.jpg differ diff --git a/examples/multiGPU/flux_dev_example_MultiGPU.json b/example_workflows/flux unet dual_clip vae loaders.json similarity index 76% rename from examples/multiGPU/flux_dev_example_MultiGPU.json rename to example_workflows/flux unet dual_clip vae loaders.json index c7210c0..72bcc06 100755 --- a/examples/multiGPU/flux_dev_example_MultiGPU.json +++ b/example_workflows/flux unet dual_clip vae loaders.json @@ -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, diff --git a/example_workflows/hunyuanvideo distorch DEPRECATED.jpg b/example_workflows/hunyuanvideo distorch DEPRECATED.jpg new file mode 100755 index 0000000..d77ddcd Binary files /dev/null and b/example_workflows/hunyuanvideo distorch DEPRECATED.jpg differ diff --git a/examples/distorch2/hunyuan_gguf_DisTorch2.json b/example_workflows/hunyuanvideo distorch DEPRECATED.json similarity index 70% rename from examples/distorch2/hunyuan_gguf_DisTorch2.json rename to example_workflows/hunyuanvideo distorch DEPRECATED.json index 13db27d..40b6040 100755 --- a/examples/distorch2/hunyuan_gguf_DisTorch2.json +++ b/example_workflows/hunyuanvideo distorch DEPRECATED.json @@ -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 } \ No newline at end of file diff --git a/example_workflows/ltxvideo checkpointloadersimple distorch2.jpg b/example_workflows/ltxvideo checkpointloadersimple distorch2.jpg new file mode 100755 index 0000000..2ca3ff7 Binary files /dev/null and b/example_workflows/ltxvideo checkpointloadersimple distorch2.jpg differ diff --git a/examples/distorch2/ltxv_text_to_video_MultiGPU.json b/example_workflows/ltxvideo checkpointloadersimple distorch2.json similarity index 53% rename from examples/distorch2/ltxv_text_to_video_MultiGPU.json rename to example_workflows/ltxvideo checkpointloadersimple distorch2.json index f572450..dd3781a 100755 --- a/examples/distorch2/ltxv_text_to_video_MultiGPU.json +++ b/example_workflows/ltxvideo checkpointloadersimple distorch2.json @@ -1,49 +1,86 @@ { - "id": "b0f0352b-75f9-4187-87f8-d352fe46227e", + "id": "2a11ea9c-4fb7-40c8-91e5-4da8cf6a3e2c", "revision": 0, - "last_node_id": 79, - "last_link_id": 186, + "last_node_id": 98, + "last_link_id": 255, "nodes": [ { - "id": 8, - "type": "VAEDecode", + "id": 71, + "type": "LTXVScheduler", "pos": [ - 1600, - 30 + 880, + 290 ], "size": [ - 210, - 46 + 315, + 154 ], "flags": {}, "order": 10, "mode": 0, "inputs": [ { - "name": "samples", + "name": "latent", + "shape": 7, "type": "LATENT", - "link": 171 - }, - { - "name": "vae", - "type": "VAE", - "link": 184 + "link": 249 } ], "outputs": [ { - "name": "IMAGE", - "type": "IMAGE", + "name": "SIGMAS", + "type": "SIGMAS", "slot_index": 0, "links": [ - 106 + 182 ] } ], "properties": { - "Node name for S&R": "VAEDecode" + "cnr_id": "comfy-core", + "ver": "0.3.64", + "Node name for S&R": "LTXVScheduler" }, - "widgets_values": [] + "widgets_values": [ + 30, + 2.05, + 0.95, + true, + 0.1 + ] + }, + { + "id": 73, + "type": "KSamplerSelect", + "pos": [ + 880, + 190 + ], + "size": [ + 315, + 58 + ], + "flags": {}, + "order": 0, + "mode": 0, + "inputs": [], + "outputs": [ + { + "name": "SAMPLER", + "type": "SAMPLER", + "links": [ + 172 + ] + } + ], + "properties": { + "cnr_id": "comfy-core", + "ver": "0.3.64", + "Node name for S&R": "KSamplerSelect" + }, + "widgets_values": [ + "euler" + ] }, { "id": 69, @@ -57,18 +94,18 @@ 78 ], "flags": {}, - "order": 8, + "order": 9, "mode": 0, "inputs": [ { "name": "positive", "type": "CONDITIONING", - "link": 169 + "link": 245 }, { "name": "negative", "type": "CONDITIONING", - "link": 170 + "link": 246 } ], "outputs": [ @@ -77,7 +114,7 @@ "type": "CONDITIONING", "slot_index": 0, "links": [ - 166 + 199 ] }, { @@ -90,12 +127,54 @@ } ], "properties": { + "cnr_id": "comfy-core", + "ver": "0.3.64", "Node name for S&R": "LTXVConditioning" }, "widgets_values": [ 25 ] }, + { + "id": 82, + "type": "LTXVPreprocess", + "pos": [ + 570, + 670 + ], + "size": [ + 275.9266662597656, + 58 + ], + "flags": {}, + "order": 7, + "mode": 0, + "inputs": [ + { + "name": "image", + "type": "IMAGE", + "link": 226 + } + ], + "outputs": [ + { + "name": "output_image", + "type": "IMAGE", + "slot_index": 0, + "links": [ + 248 + ] + } + ], + "properties": { + "cnr_id": "comfy-core", + "ver": "0.3.64", + "Node name for S&R": "LTXVPreprocess" + }, + "widgets_values": [ + 40 + ] + }, { "id": 72, "type": "SamplerCustom", @@ -108,18 +187,18 @@ 442 ], "flags": {}, - "order": 9, + "order": 11, "mode": 0, "inputs": [ { "name": "model", "type": "MODEL", - "link": 183 + "link": 251 }, { "name": "positive", "type": "CONDITIONING", - "link": 166 + "link": 199 }, { "name": "negative", @@ -139,7 +218,7 @@ { "name": "latent_image", "type": "LATENT", - "link": 175 + "link": 247 } ], "outputs": [ @@ -148,7 +227,7 @@ "type": "LATENT", "slot_index": 0, "links": [ - 171 + 235 ] }, { @@ -158,320 +237,114 @@ } ], "properties": { + "cnr_id": "comfy-core", + "ver": "0.3.64", "Node name for S&R": "SamplerCustom" }, "widgets_values": [ true, - 1032748596967060, + 871180669305010, "randomize", 3 ] }, { - "id": 70, - "type": "EmptyLTXVLatentVideo", + "id": 95, + "type": "LTXVImgToVideo", "pos": [ - 860, - 240 + 888.8251342773438, + 608.7010498046875 ], "size": [ 315, - 130 + 214 ], "flags": {}, - "order": 0, + "order": 8, "mode": 0, - "inputs": [], + "inputs": [ + { + "name": "positive", + "type": "CONDITIONING", + "link": 239 + }, + { + "name": "negative", + "type": "CONDITIONING", + "link": 240 + }, + { + "name": "vae", + "type": "VAE", + "link": 252 + }, + { + "name": "image", + "type": "IMAGE", + "link": 248 + } + ], "outputs": [ { - "name": "LATENT", - "type": "LATENT", + "name": "positive", + "type": "CONDITIONING", "slot_index": 0, "links": [ - 168, - 175 + 245 + ] + }, + { + "name": "negative", + "type": "CONDITIONING", + "slot_index": 1, + "links": [ + 246 + ] + }, + { + "name": "latent", + "type": "LATENT", + "slot_index": 2, + "links": [ + 247, + 249 ] } ], "properties": { - "Node name for S&R": "EmptyLTXVLatentVideo" + "cnr_id": "comfy-core", + "ver": "0.3.64", + "Node name for S&R": "LTXVImgToVideo" }, "widgets_values": [ - 768, 512, + 768, 97, + 1, 1 ] }, { - "id": 71, - "type": "LTXVScheduler", + "id": 96, + "type": "CheckpointLoaderSimpleDisTorch2MultiGPU", "pos": [ - 856, - 531 + 443.546875, + -209.70184326171875 ], "size": [ - 315, - 154 - ], - "flags": {}, - "order": 5, - "mode": 0, - "inputs": [ - { - "name": "latent", - "shape": 7, - "type": "LATENT", - "link": 168 - } - ], - "outputs": [ - { - "name": "SIGMAS", - "type": "SIGMAS", - "slot_index": 0, - "links": [ - 182 - ] - } - ], - "properties": { - "Node name for S&R": "LTXVScheduler" - }, - "widgets_values": [ - 30, - 2.05, - 0.95, - true, - 0.1 - ] - }, - { - "id": 7, - "type": "CLIPTextEncode", - "pos": [ - 420, - 390 - ], - "size": [ - 425.27801513671875, - 180.6060791015625 - ], - "flags": {}, - "order": 7, - "mode": 0, - "inputs": [ - { - "name": "clip", - "type": "CLIP", - "link": 186 - } - ], - "outputs": [ - { - "name": "CONDITIONING", - "type": "CONDITIONING", - "slot_index": 0, - "links": [ - 170 - ] - } - ], - "title": "CLIP Text Encode (Negative Prompt)", - "properties": { - "Node name for S&R": "CLIPTextEncode" - }, - "widgets_values": [ - "low quality, worst quality, deformed, distorted, disfigured, motion smear, motion artifacts, fused fingers, bad anatomy, weird hand, ugly" - ], - "color": "#322", - "bgcolor": "#533" - }, - { - "id": 73, - "type": "KSamplerSelect", - "pos": [ - 860, - 420 - ], - "size": [ - 315, - 58 + 378.4644470214844, + 218 ], "flags": {}, "order": 1, "mode": 0, "inputs": [], - "outputs": [ - { - "name": "SAMPLER", - "type": "SAMPLER", - "links": [ - 172 - ] - } - ], - "properties": { - "Node name for S&R": "KSamplerSelect" - }, - "widgets_values": [ - "euler" - ] - }, - { - "id": 76, - "type": "Note", - "pos": [ - 40, - 350 - ], - "size": [ - 360, - 200 - ], - "flags": {}, - "order": 2, - "mode": 0, - "inputs": [], - "outputs": [], - "properties": {}, - "widgets_values": [ - "This model needs long descriptive prompts, if the prompt is too short the quality will suffer greatly." - ], - "color": "#432", - "bgcolor": "#653" - }, - { - "id": 41, - "type": "SaveAnimatedWEBP", - "pos": [ - 1830, - 30 - ], - "size": [ - 680, - 610 - ], - "flags": {}, - "order": 11, - "mode": 0, - "inputs": [ - { - "name": "images", - "type": "IMAGE", - "link": 106 - } - ], - "outputs": [], - "properties": { - "Node name for S&R": "SaveAnimatedWEBP" - }, - "widgets_values": [ - "ComfyUI", - 24, - false, - 90, - "default" - ] - }, - { - "id": 6, - "type": "CLIPTextEncode", - "pos": [ - 420, - 190 - ], - "size": [ - 422.84503173828125, - 164.31304931640625 - ], - "flags": {}, - "order": 6, - "mode": 0, - "inputs": [ - { - "name": "clip", - "type": "CLIP", - "link": 185 - } - ], - "outputs": [ - { - "name": "CONDITIONING", - "type": "CONDITIONING", - "slot_index": 0, - "links": [ - 169 - ] - } - ], - "title": "CLIP Text Encode (Positive Prompt)", - "properties": { - "Node name for S&R": "CLIPTextEncode" - }, - "widgets_values": [ - "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." - ], - "color": "#232", - "bgcolor": "#353" - }, - { - "id": 79, - "type": "CLIPLoaderMultiGPU", - "pos": [ - 46.40668487548828, - 190.66615295410156 - ], - "size": [ - 342.5956115722656, - 107.56124114990234 - ], - "flags": {}, - "order": 3, - "mode": 0, - "inputs": [], - "outputs": [ - { - "name": "CLIP", - "type": "CLIP", - "links": [ - 185, - 186 - ] - } - ], - "properties": { - "Node name for S&R": "CLIPLoaderMultiGPU" - }, - "widgets_values": [ - "t5xxl_fp16.safetensors", - "ltxv", - "cuda:1" - ], - "color": "#233", - "bgcolor": "#355" - }, - { - "id": 78, - "type": "CheckpointLoaderSimpleDisTorch2MultiGPU", - "pos": [ - 451.5371398925781, - -91.12973022460938 - ], - "size": [ - 378.4644470214844, - 194 - ], - "flags": {}, - "order": 4, - "mode": 0, - "inputs": [], "outputs": [ { "name": "MODEL", "type": "MODEL", "links": [ - 183 + 251 ] }, { @@ -483,22 +356,292 @@ "name": "VAE", "type": "VAE", "links": [ - 184 + 252, + 253 ] } ], "properties": { + "cnr_id": "comfyui-multigpu", + "ver": "0d6dfc7524472943ba912a6ec3088757edba15c3", "Node name for S&R": "CheckpointLoaderSimpleDisTorch2MultiGPU" }, "widgets_values": [ - "safetensor_testing/ltx-video-2b-v0.9.1.safetensors", + "ltx-video-2b-v0.9.5.safetensors", "cuda:0", - 4, - "cpu", - "" + 5, + "cuda:1", + "", + true ], - "color": "#233", - "bgcolor": "#355" + "color": "#008181", + "bgcolor": "rgba(24,24,27,.9)" + }, + { + "id": 6, + "type": "CLIPTextEncode", + "pos": [ + 446.0032653808594, + 56.484344482421875 + ], + "size": [ + 422.84503173828125, + 164.31304931640625 + ], + "flags": {}, + "order": 5, + "mode": 0, + "inputs": [ + { + "name": "clip", + "type": "CLIP", + "link": 254 + } + ], + "outputs": [ + { + "name": "CONDITIONING", + "type": "CONDITIONING", + "slot_index": 0, + "links": [ + 239 + ] + } + ], + "title": "CLIP Text Encode (Positive Prompt)", + "properties": { + "cnr_id": "comfy-core", + "ver": "0.3.64", + "Node name for S&R": "CLIPTextEncode" + }, + "widgets_values": [ + "The sun, having just dipped below the horizon, casts a deep twilight blue across the urban canyon. The air is thick with the hush of the approaching night, punctuated only by the distant hum of the city. A gentle drizzle has just passed, leaving the asphalt slick and reflective, mirroring the neon glow from the towering buildings.\n\nIn the foreground, the street stretches out, a dark ribbon reflecting the faint reds and purples of brake lights and storefronts. Small puddles shimmer, disturbed only by the occasional ripple from a lingering raindrop or the almost imperceptible air current.\n\nAs the 3 seconds pass, a barely noticeable shift occurs. The light in the sky ever so subtly deepens, transitioning from a soft, almost ethereal blue to a richer, more profound indigo. The neon signs, which were already bright, seem to gain a fractional intensity, their colors bleeding slightly more vividly onto the wet pavement below. The faint glint on the parked cars, particularly the red one, catches the ambient light just a touch more, highlighting the curves of its wet surface.\n\nIt's a moment of serene transition, a quiet breath as the city fully embraces the night, its artificial lights beginning their nightly dominance against the fading natural world." + ], + "color": "#232", + "bgcolor": "#353" + }, + { + "id": 7, + "type": "CLIPTextEncode", + "pos": [ + 439.50244140625, + 262.1505432128906 + ], + "size": [ + 425.27801513671875, + 180.6060791015625 + ], + "flags": {}, + "order": 6, + "mode": 0, + "inputs": [ + { + "name": "clip", + "type": "CLIP", + "link": 255 + } + ], + "outputs": [ + { + "name": "CONDITIONING", + "type": "CONDITIONING", + "slot_index": 0, + "links": [ + 240 + ] + } + ], + "title": "CLIP Text Encode (Negative Prompt)", + "properties": { + "cnr_id": "comfy-core", + "ver": "0.3.64", + "Node name for S&R": "CLIPTextEncode" + }, + "widgets_values": [ + "low quality, worst quality, deformed, distorted, disfigured, motion smear, motion artifacts, fused fingers, bad anatomy, weird hand, ugly" + ], + "color": "#322", + "bgcolor": "#533" + }, + { + "id": 97, + "type": "CLIPLoaderMultiGPU", + "pos": [ + 496.30120849609375, + 485.4229431152344 + ], + "size": [ + 270, + 106 + ], + "flags": {}, + "order": 2, + "mode": 0, + "inputs": [], + "outputs": [ + { + "name": "CLIP", + "type": "CLIP", + "links": [ + 254, + 255 + ] + } + ], + "properties": { + "cnr_id": "comfyui-multigpu", + "ver": "0d6dfc7524472943ba912a6ec3088757edba15c3", + "Node name for S&R": "CLIPLoaderMultiGPU" + }, + "widgets_values": [ + "t5xxl_fp16.safetensors", + "ltxv", + "cuda:1" + ], + "color": "#008181", + "bgcolor": "rgba(24,24,27,.9)" + }, + { + "id": 8, + "type": "VAEDecode", + "pos": [ + 1291.988037109375, + 517.429443359375 + ], + "size": [ + 210, + 46 + ], + "flags": {}, + "order": 12, + "mode": 0, + "inputs": [ + { + "name": "samples", + "type": "LATENT", + "link": 235 + }, + { + "name": "vae", + "type": "VAE", + "link": 253 + } + ], + "outputs": [ + { + "name": "IMAGE", + "type": "IMAGE", + "slot_index": 0, + "links": [ + 106 + ] + } + ], + "properties": { + "cnr_id": "comfy-core", + "ver": "0.3.64", + "Node name for S&R": "VAEDecode" + }, + "widgets_values": [] + }, + { + "id": 41, + "type": "SaveAnimatedWEBP", + "pos": [ + 1580.6339111328125, + 44.42099380493164 + ], + "size": [ + 493.98468017578125, + 886.97705078125 + ], + "flags": {}, + "order": 13, + "mode": 0, + "inputs": [ + { + "name": "images", + "type": "IMAGE", + "link": 106 + } + ], + "outputs": [], + "properties": { + "cnr_id": "comfy-core", + "ver": "0.3.64", + "Node name for S&R": "SaveAnimatedWEBP" + }, + "widgets_values": [ + "MultiGPU", + 25, + false, + 90, + "default" + ] + }, + { + "id": 98, + "type": "MarkdownNote", + "pos": [ + -244.6554412841797, + -139.60447692871094 + ], + "size": [ + 648.826904296875, + 649.345947265625 + ], + "flags": {}, + "order": 3, + "mode": 0, + "inputs": [], + "outputs": [], + "title": "ComfyUI-MultiGPU Note - CheckpointLoaderSimpleDisTorch2", + "properties": {}, + "widgets_values": [ + "An LTXVideo workflow using a simple UNet DisTorch to test the CheckpointLoaderSimpleDisTorch2 node. In this case we are using the DisTorch2 node to statically allocate 100% of the main UNet model on to the second video card, `cuda:1`.\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**Checkpoint**\n- [ltx-video-2b-v0.9.5.safetensors](https://huggingface.co/Lightricks/LTX-Video/blob/main/ltx-video-2b-v0.9.5.safetensors)\n\n**CLIP**\n- [t5xxl_fp16.safetensors](https://huggingface.co/Comfy-Org/mochi_preview_repackaged/blob/main/split_files/text_encoders/t5xxl_fp16.safetensors)\n\nModel Storage Location\n\n```\nšŸ“‚ ComfyUI/\nā”œā”€ā”€ šŸ“‚ models/\n│ ā”œā”€ā”€ šŸ“‚ checkpoints/\n│ │ ā”œā”€ā”€ ltx-video-2b-v0.9.5.safetensors[🟪🟪🟪🟪🟪🟪🟪🟪🟪🟪]\n│ ā”œā”€ā”€ šŸ“‚ clip/\n│ │ └── t5xxl_fp16.safetensors\n```\n\n```\nšŸ–„ļø Device Mapping\nā”œā”€ā”€ 🟢 cuda:0\n│ └── ltx-video-2b-v0.9.5.safetensors[]\nā”œā”€ā”€ 🟣 cuda:1\n│ └── ltx-video-2b-v0.9.5.safetensors[🟪🟪🟪🟪🟪🟪🟪🟪🟪🟪]\nā”œā”€ā”€ āš™ļø cpu\n └── t5xxl_fp16.safetensors\n```" + ], + "color": "#008181", + "bgcolor": "rgba(24,24,27,.9)" + }, + { + "id": 78, + "type": "LoadImage", + "pos": [ + 143.64366149902344, + 649.3419189453125 + ], + "size": [ + 385.15606689453125, + 333.3305358886719 + ], + "flags": {}, + "order": 4, + "mode": 0, + "inputs": [], + "outputs": [ + { + "name": "IMAGE", + "type": "IMAGE", + "slot_index": 0, + "links": [ + 226 + ] + }, + { + "name": "MASK", + "type": "MASK", + "links": null + } + ], + "properties": { + "cnr_id": "comfy-core", + "ver": "0.3.64", + "Node name for S&R": "LoadImage" + }, + "widgets_values": [ + "ltxvideo checkpointloadersimple distorch2.jpg", + "image" + ] } ], "links": [ @@ -510,14 +653,6 @@ 0, "IMAGE" ], - [ - 166, - 69, - 0, - 72, - 1, - "CONDITIONING" - ], [ 167, 69, @@ -526,38 +661,6 @@ 2, "CONDITIONING" ], - [ - 168, - 70, - 0, - 71, - 0, - "LATENT" - ], - [ - 169, - 6, - 0, - 69, - 0, - "CONDITIONING" - ], - [ - 170, - 7, - 0, - 69, - 1, - "CONDITIONING" - ], - [ - 171, - 72, - 0, - 8, - 0, - "LATENT" - ], [ 172, 73, @@ -566,14 +669,6 @@ 3, "SAMPLER" ], - [ - 175, - 70, - 0, - 72, - 5, - "LATENT" - ], [ 182, 71, @@ -583,32 +678,120 @@ "SIGMAS" ], [ - 183, + 199, + 69, + 0, + 72, + 1, + "CONDITIONING" + ], + [ + 226, 78, 0, + 82, + 0, + "IMAGE" + ], + [ + 235, + 72, + 0, + 8, + 0, + "LATENT" + ], + [ + 239, + 6, + 0, + 95, + 0, + "CONDITIONING" + ], + [ + 240, + 7, + 0, + 95, + 1, + "CONDITIONING" + ], + [ + 245, + 95, + 0, + 69, + 0, + "CONDITIONING" + ], + [ + 246, + 95, + 1, + 69, + 1, + "CONDITIONING" + ], + [ + 247, + 95, + 2, + 72, + 5, + "LATENT" + ], + [ + 248, + 82, + 0, + 95, + 3, + "IMAGE" + ], + [ + 249, + 95, + 2, + 71, + 0, + "LATENT" + ], + [ + 251, + 96, + 0, 72, 0, "MODEL" ], [ - 184, - 78, + 252, + 96, + 2, + 95, + 2, + "VAE" + ], + [ + 253, + 96, 2, 8, 1, "VAE" ], [ - 185, - 79, + 254, + 97, 0, 6, 0, "CLIP" ], [ - 186, - 79, + 255, + 97, 0, 7, 0, @@ -619,13 +802,13 @@ "config": {}, "extra": { "ds": { - "scale": 0.8540461847389561, + "scale": 0.8390545288824128, "offset": [ - 49.21647341090857, - 425.22565245368656 + 415.0195744565383, + 355.7565473217434 ] }, - "frontendVersion": "1.24.4", + "frontendVersion": "1.27.10", "VHS_latentpreview": false, "VHS_latentpreviewrate": 0, "VHS_MetadataImage": true, diff --git a/example_workflows/mochi checkpointloaderadvanced distorch2.jpg b/example_workflows/mochi checkpointloaderadvanced distorch2.jpg new file mode 100755 index 0000000..3cf9c23 Binary files /dev/null and b/example_workflows/mochi checkpointloaderadvanced distorch2.jpg differ diff --git a/examples/distorch2/default_advanced_DisTorch2.json b/example_workflows/mochi checkpointloaderadvanced distorch2.json similarity index 53% rename from examples/distorch2/default_advanced_DisTorch2.json rename to example_workflows/mochi checkpointloaderadvanced distorch2.json index 1993039..e5a9a8f 100755 --- a/examples/distorch2/default_advanced_DisTorch2.json +++ b/example_workflows/mochi checkpointloaderadvanced distorch2.json @@ -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, diff --git a/example_workflows/qwen_image unet clip distorch2.jpg b/example_workflows/qwen_image unet clip distorch2.jpg new file mode 100755 index 0000000..7bb8d01 Binary files /dev/null and b/example_workflows/qwen_image unet clip distorch2.jpg differ diff --git a/example_workflows/qwen_image unet clip distorch2.json b/example_workflows/qwen_image unet clip distorch2.json new file mode 100755 index 0000000..83189a8 --- /dev/null +++ b/example_workflows/qwen_image unet clip distorch2.json @@ -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 +} \ No newline at end of file diff --git a/example_workflows/qwen_image_edit_2509 unet clip distorch2.jpg b/example_workflows/qwen_image_edit_2509 unet clip distorch2.jpg new file mode 100755 index 0000000..2937683 Binary files /dev/null and b/example_workflows/qwen_image_edit_2509 unet clip distorch2.jpg differ diff --git a/example_workflows/qwen_image_edit_2509 unet clip distorch2.json b/example_workflows/qwen_image_edit_2509 unet clip distorch2.json new file mode 100755 index 0000000..92cd819 --- /dev/null +++ b/example_workflows/qwen_image_edit_2509 unet clip distorch2.json @@ -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 +} \ No newline at end of file diff --git a/example_workflows/sd15 checkpoint loader simple.jpg b/example_workflows/sd15 checkpoint loader simple.jpg new file mode 100755 index 0000000..b577522 Binary files /dev/null and b/example_workflows/sd15 checkpoint loader simple.jpg differ diff --git a/examples/distorch2/default_simple_DisTorch2.json b/example_workflows/sd15 checkpoint loader simple.json similarity index 53% rename from examples/distorch2/default_simple_DisTorch2.json rename to example_workflows/sd15 checkpoint loader simple.json index 03ca19f..5006e48 100755 --- a/examples/distorch2/default_simple_DisTorch2.json +++ b/example_workflows/sd15 checkpoint loader simple.json @@ -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, diff --git a/example_workflows/sdxl checkpoint loader advanced.jpg b/example_workflows/sdxl checkpoint loader advanced.jpg new file mode 100755 index 0000000..623f59a Binary files /dev/null and b/example_workflows/sdxl checkpoint loader advanced.jpg differ diff --git a/example_workflows/sdxl checkpoint loader advanced.json b/example_workflows/sdxl checkpoint loader advanced.json new file mode 100755 index 0000000..0d61b5e --- /dev/null +++ b/example_workflows/sdxl checkpoint loader advanced.json @@ -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 +} \ No newline at end of file diff --git a/example_workflows/wan2_2 distorch2 double_unet no_cpu.jpg b/example_workflows/wan2_2 distorch2 double_unet no_cpu.jpg new file mode 100755 index 0000000..4b80966 Binary files /dev/null and b/example_workflows/wan2_2 distorch2 double_unet no_cpu.jpg differ diff --git a/examples/distorch2/wan2_2_DisTorch2.json b/example_workflows/wan2_2 distorch2 double_unet no_cpu.json similarity index 68% rename from examples/distorch2/wan2_2_DisTorch2.json rename to example_workflows/wan2_2 distorch2 double_unet no_cpu.json index 64d29e2..474627c 100755 --- a/examples/distorch2/wan2_2_DisTorch2.json +++ b/example_workflows/wan2_2 distorch2 double_unet no_cpu.json @@ -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, diff --git a/example_workflows/wan2_2 t2i lightx2v lora distorch2.jpg b/example_workflows/wan2_2 t2i lightx2v lora distorch2.jpg new file mode 100755 index 0000000..03b2092 Binary files /dev/null and b/example_workflows/wan2_2 t2i lightx2v lora distorch2.jpg differ diff --git a/examples/distorch2/wan2_2_t2i_fusionX_lightx2v_loras.json b/example_workflows/wan2_2 t2i lightx2v lora distorch2.json similarity index 58% rename from examples/distorch2/wan2_2_t2i_fusionX_lightx2v_loras.json rename to example_workflows/wan2_2 t2i lightx2v lora distorch2.json index 2852761..a1225af 100755 --- a/examples/distorch2/wan2_2_t2i_fusionX_lightx2v_loras.json +++ b/example_workflows/wan2_2 t2i lightx2v lora distorch2.json @@ -1,80 +1,9 @@ { "id": "25dfce61-3571-4c9a-a7f8-6a83951d66aa", "revision": 0, - "last_node_id": 52, - "last_link_id": 97, + "last_node_id": 55, + "last_link_id": 102, "nodes": [ - { - "id": 10, - "type": "SaveImage", - "pos": [ - 4750, - -350 - ], - "size": [ - 2000, - 1700 - ], - "flags": {}, - "order": 14, - "mode": 0, - "inputs": [ - { - "name": "images", - "type": "IMAGE", - "link": 8 - } - ], - "outputs": [], - "properties": { - "Node name for S&R": "SaveImage", - "cnr_id": "comfy-core", - "ver": "0.3.43" - }, - "widgets_values": [ - "ComfyUI" - ], - "color": "#233", - "bgcolor": "#355" - }, - { - "id": 5, - "type": "EmptyHunyuanLatentVideo", - "pos": [ - 3650, - 300 - ], - "size": [ - 450, - 150 - ], - "flags": {}, - "order": 0, - "mode": 0, - "inputs": [], - "outputs": [ - { - "name": "LATENT", - "type": "LATENT", - "links": [ - 60 - ] - } - ], - "properties": { - "Node name for S&R": "EmptyHunyuanLatentVideo", - "cnr_id": "comfy-core", - "ver": "0.3.43" - }, - "widgets_values": [ - 1536, - 1536, - 1, - 1 - ], - "color": "#323", - "bgcolor": "#535" - }, { "id": 4, "type": "CLIPTextEncode", @@ -89,7 +18,7 @@ "flags": { "collapsed": false }, - "order": 9, + "order": 8, "mode": 0, "inputs": [ { @@ -110,9 +39,9 @@ ], "title": "Negative Prompt", "properties": { - "Node name for S&R": "CLIPTextEncode", "cnr_id": "comfy-core", - "ver": "0.3.43" + "ver": "0.3.43", + "Node name for S&R": "CLIPTextEncode" }, "widgets_values": [ "" @@ -120,125 +49,6 @@ "color": "#2a363b", "bgcolor": "#3f5159" }, - { - "id": 44, - "type": "LoraLoaderModelOnly", - "pos": [ - 3200, - 100 - ], - "size": [ - 400, - 150 - ], - "flags": {}, - "order": 8, - "mode": 0, - "inputs": [ - { - "name": "model", - "type": "MODEL", - "link": 78 - } - ], - "outputs": [ - { - "name": "MODEL", - "type": "MODEL", - "links": [ - 91 - ] - } - ], - "properties": { - "Node name for S&R": "LoraLoaderModelOnly", - "cnr_id": "comfy-core", - "ver": "0.3.46" - }, - "widgets_values": [ - "Wan21_T2V_14B_lightx2v_cfg_step_distill_lora_rank32.safetensors", - 0.6000000000000001 - ], - "color": "#232", - "bgcolor": "#353" - }, - { - "id": 43, - "type": "LoraLoaderModelOnly", - "pos": [ - 3182.24267578125, - -103.5514907836914 - ], - "size": [ - 400, - 150 - ], - "flags": {}, - "order": 6, - "mode": 0, - "inputs": [ - { - "name": "model", - "type": "MODEL", - "link": 97 - } - ], - "outputs": [ - { - "name": "MODEL", - "type": "MODEL", - "links": [ - 78 - ] - } - ], - "properties": { - "Node name for S&R": "LoraLoaderModelOnly", - "cnr_id": "comfy-core", - "ver": "0.3.46" - }, - "widgets_values": [ - "Wan2.1_T2V_14B_FusionX_LoRA.safetensors", - 0.8000000000000002 - ], - "color": "#232", - "bgcolor": "#353" - }, - { - "id": 8, - "type": "VAELoader", - "pos": [ - 4450, - -50 - ], - "size": [ - 250, - 100 - ], - "flags": {}, - "order": 1, - "mode": 0, - "inputs": [], - "outputs": [ - { - "name": "VAE", - "type": "VAE", - "links": [ - 9 - ] - } - ], - "properties": { - "Node name for S&R": "VAELoader", - "cnr_id": "comfy-core", - "ver": "0.3.43" - }, - "widgets_values": [ - "wan_2.1_vae.safetensors" - ], - "color": "#323", - "bgcolor": "#535" - }, { "id": 36, "type": "KSamplerAdvanced", @@ -251,7 +61,7 @@ 546 ], "flags": {}, - "order": 12, + "order": 11, "mode": 0, "inputs": [ { @@ -285,13 +95,13 @@ } ], "properties": { - "Node name for S&R": "KSamplerAdvanced", "cnr_id": "comfy-core", - "ver": "0.3.46" + "ver": "0.3.46", + "Node name for S&R": "KSamplerAdvanced" }, "widgets_values": [ "enable", - 575669122636822, + 8496083239430, "randomize", 8, 1, @@ -316,7 +126,7 @@ 546 ], "flags": {}, - "order": 11, + "order": 10, "mode": 0, "inputs": [ { @@ -350,13 +160,13 @@ } ], "properties": { - "Node name for S&R": "KSamplerAdvanced", "cnr_id": "comfy-core", - "ver": "0.3.46" + "ver": "0.3.46", + "Node name for S&R": "KSamplerAdvanced" }, "widgets_values": [ "enable", - 202136745531075, + 38613268423774, "randomize", 8, 1, @@ -370,15 +180,169 @@ "bgcolor": "#335" }, { - "id": 29, - "type": "LoraLoader", + "id": 9, + "type": "VAEDecode", "pos": [ - 3190.54638671875, - -428.14935302734375 + 4450.001953125, + -696.47216796875 ], "size": [ - 400, - 150 + 140, + 46 + ], + "flags": {}, + "order": 12, + "mode": 0, + "inputs": [ + { + "name": "samples", + "type": "LATENT", + "link": 65 + }, + { + "name": "vae", + "type": "VAE", + "link": 102 + } + ], + "outputs": [ + { + "name": "IMAGE", + "type": "IMAGE", + "links": [ + 8 + ] + } + ], + "properties": { + "cnr_id": "comfy-core", + "ver": "0.3.43", + "Node name for S&R": "VAEDecode" + }, + "widgets_values": [], + "color": "#323", + "bgcolor": "#535" + }, + { + "id": 10, + "type": "SaveImage", + "pos": [ + 4611.58251953125, + -668.0137939453125 + ], + "size": [ + 912.117431640625, + 1108.58544921875 + ], + "flags": {}, + "order": 13, + "mode": 0, + "inputs": [ + { + "name": "images", + "type": "IMAGE", + "link": 8 + } + ], + "outputs": [], + "properties": { + "cnr_id": "comfy-core", + "ver": "0.3.43", + "Node name for S&R": "SaveImage" + }, + "widgets_values": [ + "MultiGPU" + ], + "color": "#233", + "bgcolor": "#355" + }, + { + "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, @@ -387,12 +351,54 @@ { "name": "model", "type": "MODEL", - "link": 39 + "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": 6, + "mode": 0, + "inputs": [ + { + "name": "model", + "type": "MODEL", + "link": 99 }, { "name": "clip", "type": "CLIP", - "link": 40 + "link": 100 } ], "outputs": [ @@ -413,18 +419,162 @@ } ], "properties": { - "Node name for S&R": "LoraLoader", "cnr_id": "comfy-core", - "ver": "0.3.43" + "ver": "0.3.43", + "Node name for S&R": "LoraLoader" }, "widgets_values": [ - "Wan21_T2V_14B_lightx2v_cfg_step_distill_lora_rank32.safetensors", - 0.6000000000000001, - 0.6000000000000001 + "Wan2.2-T2V-A14B-4steps-lora-rank64-Seko-V1.1/high_noise.safetensors", + 1, + 1 ], "color": "#232", "bgcolor": "#353" }, + { + "id": 50, + "type": "UNETLoaderDisTorch2MultiGPU", + "pos": [ + 3169.217041015625, + -698.2782592773438 + ], + "size": [ + 440.8240051269531, + 202 + ], + "flags": {}, + "order": 2, + "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", + 9, + "cpu", + "", + true + ], + "color": "#008181", + "bgcolor": "rgba(24,24,27,.9)" + }, + { + "id": 53, + "type": "MarkdownNote", + "pos": [ + 2355.81494140625, + -698.0171508789062 + ], + "size": [ + 777.6646728515625, + 937.3121337890625 + ], + "flags": {}, + "order": 3, + "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": 52, + "type": "UNETLoaderDisTorch2MultiGPU", + "pos": [ + 3194.302490234375, + -254.25840759277344 + ], + "size": [ + 401.1171569824219, + 202 + ], + "flags": {}, + "order": 4, + "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", + 9, + "cpu", + "", + true + ], + "color": "#008181", + "bgcolor": "rgba(24,24,27,.9)" + }, + { + "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": [ + 1536, + 1536, + 1, + 1 + ], + "color": "#323", + "bgcolor": "#535" + }, { "id": 3, "type": "CLIPTextEncode", @@ -437,7 +587,7 @@ 350 ], "flags": {}, - "order": 10, + "order": 9, "mode": 0, "inputs": [ { @@ -458,227 +608,15 @@ ], "title": "Positive Prompt", "properties": { - "Node name for S&R": "CLIPTextEncode", "cnr_id": "comfy-core", - "ver": "0.3.43" + "ver": "0.3.43", + "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 \"WAN 2.2\" and \"T2I\" 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": 9, - "type": "VAEDecode", - "pos": [ - 4450, - 112.2901840209961 - ], - "size": [ - 250, - 150 - ], - "flags": {}, - "order": 13, - "mode": 0, - "inputs": [ - { - "name": "samples", - "type": "LATENT", - "link": 65 - }, - { - "name": "vae", - "type": "VAE", - "link": 9 - } - ], - "outputs": [ - { - "name": "IMAGE", - "type": "IMAGE", - "links": [ - 8 - ] - } - ], - "properties": { - "Node name for S&R": "VAEDecode", - "cnr_id": "comfy-core", - "ver": "0.3.43" - }, - "widgets_values": [], - "color": "#323", - "bgcolor": "#535" - }, - { - "id": 51, - "type": "CLIPLoaderMultiGPU", - "pos": [ - 2706.568603515625, - -368.65240478515625 - ], - "size": [ - 380.6119384765625, - 106 - ], - "flags": {}, - "order": 2, - "mode": 0, - "inputs": [], - "outputs": [ - { - "name": "CLIP", - "type": "CLIP", - "links": [ - 96 - ] - } - ], - "properties": { - "Node name for S&R": "CLIPLoaderMultiGPU" - }, - "widgets_values": [ - "umt5_xxl_fp8_e4m3fn_scaled.safetensors", - "wan", - "cuda:1" - ], - "color": "#233", - "bgcolor": "#355" - }, - { - "id": 50, - "type": "UNETLoaderDisTorch2MultiGPU", - "pos": [ - 2650.002685546875, - -685.0429077148438 - ], - "size": [ - 440.8240051269531, - 202 - ], - "flags": {}, - "order": 3, - "mode": 0, - "inputs": [], - "outputs": [ - { - "name": "MODEL", - "type": "MODEL", - "links": [ - 93 - ] - } - ], - "properties": { - "Node name for S&R": "UNETLoaderDisTorch2MultiGPU" - }, - "widgets_values": [ - "wan2.2_t2v_high_noise_14B_fp8_scaled.safetensors", - "default", - "cuda:0", - 4, - "cpu", - "", - true - ], - "color": "#233", - "bgcolor": "#355" - }, - { - "id": 30, - "type": "LoraLoader", - "pos": [ - 3182.037353515625, - -675.4197387695312 - ], - "size": [ - 400, - 150 - ], - "flags": {}, - "order": 5, - "mode": 0, - "inputs": [ - { - "name": "model", - "type": "MODEL", - "link": 93 - }, - { - "name": "clip", - "type": "CLIP", - "link": 96 - } - ], - "outputs": [ - { - "name": "MODEL", - "type": "MODEL", - "links": [ - 39 - ] - }, - { - "name": "CLIP", - "type": "CLIP", - "links": [ - 40 - ] - } - ], - "properties": { - "Node name for S&R": "LoraLoader", - "cnr_id": "comfy-core", - "ver": "0.3.43" - }, - "widgets_values": [ - "Wan2.1_T2V_14B_FusionX_LoRA.safetensors", - 0.8000000000000002, - 0.8000000000000002 - ], - "color": "#232", - "bgcolor": "#353" - }, - { - "id": 52, - "type": "UNETLoaderDisTorch2MultiGPU", - "pos": [ - 2666.862548828125, - -89.75868225097656 - ], - "size": [ - 401.1171569824219, - 202 - ], - "flags": {}, - "order": 4, - "mode": 0, - "inputs": [], - "outputs": [ - { - "name": "MODEL", - "type": "MODEL", - "links": [ - 97 - ] - } - ], - "properties": { - "Node name for S&R": "UNETLoaderDisTorch2MultiGPU" - }, - "widgets_values": [ - "wan2.2_t2v_low_noise_14B_fp8_scaled.safetensors", - "default", - "cuda:1", - 4, - "cpu", - "", - true - ], - "color": "#233", - "bgcolor": "#355" } ], "links": [ @@ -690,30 +628,6 @@ 0, "IMAGE" ], - [ - 9, - 8, - 0, - 9, - 1, - "VAE" - ], - [ - 39, - 30, - 0, - 29, - 0, - "MODEL" - ], - [ - 40, - 30, - 1, - 29, - 1, - "CLIP" - ], [ 58, 3, @@ -770,14 +684,6 @@ 0, "LATENT" ], - [ - 78, - 43, - 0, - 44, - 0, - "MODEL" - ], [ 88, 29, @@ -811,41 +717,49 @@ "MODEL" ], [ - 93, + 99, 50, 0, - 30, + 29, 0, "MODEL" ], [ - 96, + 100, 51, 0, - 30, + 29, 1, "CLIP" ], [ - 97, + 101, 52, 0, - 43, + 44, 0, "MODEL" + ], + [ + 102, + 55, + 0, + 9, + 1, + "VAE" ] ], "groups": [], "config": {}, "extra": { "ds": { - "scale": 0.7051680186913379, + "scale": 0.641061835173946, "offset": [ - -2597.5068415226533, - 881.6331759197561 + -2192.490736659068, + 1081.0525365299138 ] }, - "frontendVersion": "1.25.9", + "frontendVersion": "1.27.10", "VHS_latentpreview": false, "VHS_latentpreviewrate": 0, "VHS_MetadataImage": true, diff --git a/example_workflows/wan2_2 t2v lightx2v lora distorch2.jpg b/example_workflows/wan2_2 t2v lightx2v lora distorch2.jpg new file mode 100755 index 0000000..bcad55d Binary files /dev/null and b/example_workflows/wan2_2 t2v lightx2v lora distorch2.jpg differ diff --git a/example_workflows/wan2_2 t2v lightx2v lora distorch2.json b/example_workflows/wan2_2 t2v lightx2v lora distorch2.json new file mode 100755 index 0000000..21ff2b8 --- /dev/null +++ b/example_workflows/wan2_2 t2v lightx2v lora distorch2.json @@ -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 +} \ No newline at end of file diff --git a/examples/distorch/flux1dev_gguf_distorch.json b/examples/distorch/flux1dev_gguf_distorch.json deleted file mode 100755 index bec502f..0000000 --- a/examples/distorch/flux1dev_gguf_distorch.json +++ /dev/null @@ -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 -} \ No newline at end of file diff --git a/examples/florence2/florence2_flux1dev_ltxv_cpu_2gpu.json b/examples/florence2/florence2_flux1dev_ltxv_cpu_2gpu.json deleted file mode 100644 index 2ebd9f7..0000000 --- a/examples/florence2/florence2_flux1dev_ltxv_cpu_2gpu.json +++ /dev/null @@ -1,4182 +0,0 @@ -{ - "last_node_id": 302, - "last_link_id": 770, - "nodes": [ - { - "id": 291, - "type": "ImageResizeKJ", - "pos": [ - 383.1074523925781, - -548.6244506835938 - ], - "size": [ - 210, - 238 - ], - "flags": {}, - "order": 18, - "mode": 0, - "inputs": [ - { - "name": "image", - "type": "IMAGE", - "link": 748 - }, - { - "name": "get_image_size", - "type": "IMAGE", - "link": null, - "shape": 7 - }, - { - "name": "width_input", - "type": "INT", - "link": null, - "widget": { - "name": "width_input" - }, - "shape": 7 - }, - { - "name": "height_input", - "type": "INT", - "link": null, - "widget": { - "name": "height_input" - }, - "shape": 7 - } - ], - "outputs": [ - { - "name": "IMAGE", - "type": "IMAGE", - "links": [], - "slot_index": 0 - }, - { - "name": "width", - "type": "INT", - "links": [ - 749 - ], - "slot_index": 1 - }, - { - "name": "height", - "type": "INT", - "links": [ - 750 - ], - "slot_index": 2 - } - ], - "properties": { - "Node name for S&R": "ImageResizeKJ" - }, - "widgets_values": [ - 1024, - 1024, - "nearest-exact", - true, - 16, - 0, - 0, - "center" - ] - }, - { - "id": 286, - "type": "DownloadAndLoadFlorence2ModelMultiGPU", - "pos": [ - 0.036769963800907135, - -964.1196899414062 - ], - "size": [ - 335.5765075683594, - 130 - ], - "flags": {}, - "order": 0, - "mode": 0, - "inputs": [ - { - "name": "lora", - "type": "PEFTLORA", - "link": null, - "shape": 7 - } - ], - "outputs": [ - { - "name": "florence2_model", - "type": "FL2MODEL", - "links": [ - 742 - ], - "slot_index": 0 - } - ], - "properties": { - "Node name for S&R": "DownloadAndLoadFlorence2ModelMultiGPU" - }, - "widgets_values": [ - "microsoft/Florence-2-large", - "fp16", - "sdpa", - "cpu" - ], - "color": "#ff9414", - "bgcolor": "#ff8000" - }, - { - "id": 287, - "type": "Florence2Run", - "pos": [ - 380.0677795410156, - -955.0060424804688 - ], - "size": [ - 282.5164489746094, - 352 - ], - "flags": { - "collapsed": false - }, - "order": 17, - "mode": 0, - "inputs": [ - { - "name": "image", - "type": "IMAGE", - "link": 744 - }, - { - "name": "florence2_model", - "type": "FL2MODEL", - "link": 742, - "slot_index": 1 - } - ], - "outputs": [ - { - "name": "image", - "type": "IMAGE", - "links": [], - "slot_index": 0, - "shape": 3 - }, - { - "name": "mask", - "type": "MASK", - "links": [], - "slot_index": 1, - "shape": 3 - }, - { - "name": "caption", - "type": "STRING", - "links": [ - 767, - 768, - 769 - ], - "slot_index": 2, - "shape": 3 - }, - { - "name": "data", - "type": "JSON", - "links": null, - "slot_index": 3, - "shape": 3 - } - ], - "properties": { - "Node name for S&R": "Florence2Run" - }, - "widgets_values": [ - "", - "more_detailed_caption", - false, - true, - 2048, - 3, - true, - "", - 5770521, - "fixed" - ], - "color": "#ff9414", - "bgcolor": "#ff8000", - "shape": 1 - }, - { - "id": 299, - "type": "ShowText|pysssss", - "pos": [ - 1727.4791259765625, - -777.7683715820312 - ], - "size": [ - 312.02349853515625, - 171.37887573242188 - ], - "flags": {}, - "order": 30, - "mode": 0, - "inputs": [ - { - "name": "text", - "type": "STRING", - "link": 763, - "widget": { - "name": "text" - } - } - ], - "outputs": [ - { - "name": "STRING", - "type": "STRING", - "links": [ - 764 - ], - "slot_index": 0, - "shape": 6 - } - ], - "properties": { - "Node name for S&R": "ShowText|pysssss" - }, - "widgets_values": [ - "", - "This describes the first frame of a video that needs to subtly animated for 5 seconds: The image is a black and white photograph of a waterfall. The waterfall is cascading down a rocky cliff, with the water flowing over the rocks and creating a misty effect. The rocks are large and jagged, and the water is flowing over them. The cliff is covered in trees and shrubs, and there is a hill in the background. The sky is overcast and the overall mood of the image is peaceful and serene." - ], - "color": "#232", - "bgcolor": "#353" - }, - { - "id": 300, - "type": "CLIPLoaderMultiGPU", - "pos": [ - 1732.0577392578125, - -564.0845336914062 - ], - "size": [ - 315, - 106 - ], - "flags": {}, - "order": 1, - "mode": 0, - "inputs": [], - "outputs": [ - { - "name": "CLIP", - "type": "CLIP", - "links": [ - 765, - 766 - ], - "slot_index": 0 - } - ], - "properties": { - "Node name for S&R": "CLIPLoaderMultiGPU" - }, - "widgets_values": [ - "t5xxl_fp8_e4m3fn.safetensors", - "ltxv", - "cpu" - ] - }, - { - "id": 274, - "type": "ImageResizeKJ", - "pos": [ - 1736.1766357421875, - -410.67987060546875 - ], - "size": [ - 210, - 238 - ], - "flags": { - "collapsed": false - }, - "order": 35, - "mode": 0, - "inputs": [ - { - "name": "image", - "type": "IMAGE", - "link": 740 - }, - { - "name": "get_image_size", - "type": "IMAGE", - "link": null, - "shape": 7 - }, - { - "name": "width_input", - "type": "INT", - "link": null, - "widget": { - "name": "width_input" - }, - "shape": 7 - }, - { - "name": "height_input", - "type": "INT", - "link": null, - "widget": { - "name": "height_input" - }, - "shape": 7 - } - ], - "outputs": [ - { - "name": "IMAGE", - "type": "IMAGE", - "links": [ - 720 - ], - "slot_index": 0 - }, - { - "name": "width", - "type": "INT", - "links": [ - 721, - 727 - ], - "slot_index": 1 - }, - { - "name": "height", - "type": "INT", - "links": [ - 722, - 728 - ], - "slot_index": 2 - } - ], - "properties": { - "Node name for S&R": "ImageResizeKJ" - }, - "widgets_values": [ - 768, - 768, - "nearest-exact", - true, - 16, - 0, - 0, - "center" - ] - }, - { - "id": 270, - "type": "ModifyLTXModel", - "pos": [ - 2066.1455078125, - -931.8618774414062 - ], - "size": [ - 210, - 26 - ], - "flags": { - "collapsed": false - }, - "order": 20, - "mode": 0, - "inputs": [ - { - "name": "model", - "type": "MODEL", - "link": 714 - } - ], - "outputs": [ - { - "name": "MODEL", - "type": "MODEL", - "links": [ - 715 - ], - "slot_index": 0 - } - ], - "properties": { - "Node name for S&R": "ModifyLTXModel" - }, - "widgets_values": [] - }, - { - "id": 271, - "type": "LTXAttnOverride", - "pos": [ - 2304.862060546875, - -951.1757202148438 - ], - "size": [ - 210, - 76 - ], - "flags": { - "collapsed": false - }, - "order": 2, - "mode": 0, - "inputs": [], - "outputs": [ - { - "name": "ATTN_OVERRIDE", - "type": "ATTN_OVERRIDE", - "links": [ - 716 - ], - "slot_index": 0 - } - ], - "properties": { - "Node name for S&R": "LTXAttnOverride" - }, - "widgets_values": [ - "14" - ] - }, - { - "id": 292, - "type": "EmptySD3LatentImage", - "pos": [ - 449.8915710449219, - -242.02732849121094 - ], - "size": [ - 210, - 78 - ], - "flags": {}, - "order": 24, - "mode": 0, - "inputs": [ - { - "name": "width", - "type": "INT", - "link": 749, - "widget": { - "name": "width" - } - }, - { - "name": "height", - "type": "INT", - "link": 750, - "widget": { - "name": "height" - } - } - ], - "outputs": [ - { - "name": "LATENT", - "type": "LATENT", - "links": [ - 770 - ], - "slot_index": 0, - "shape": 3 - } - ], - "properties": { - "Node name for S&R": "EmptySD3LatentImage" - }, - "widgets_values": [ - 1024, - 1024, - 1 - ], - "color": "#222", - "bgcolor": "#000" - }, - { - "id": 113, - "type": "DualCLIPLoaderMultiGPU", - "pos": [ - 743.3309326171875, - -912.5949096679688 - ], - "size": [ - 315, - 130 - ], - "flags": {}, - "order": 3, - "mode": 0, - "inputs": [], - "outputs": [ - { - "name": "CLIP", - "type": "CLIP", - "links": [ - 711 - ], - "slot_index": 0, - "shape": 3 - } - ], - "properties": { - "Node name for S&R": "DualCLIPLoaderMultiGPU" - }, - "widgets_values": [ - "t5xxl_fp16.safetensors", - "clip_l.safetensors", - "flux", - "cpu" - ] - }, - { - "id": 111, - "type": "VAELoaderMultiGPU", - "pos": [ - 749.1101684570312, - -590.5072631835938 - ], - "size": [ - 315, - 82 - ], - "flags": {}, - "order": 4, - "mode": 0, - "inputs": [], - "outputs": [ - { - "name": "VAE", - "type": "VAE", - "links": [ - 706 - ], - "slot_index": 0, - "shape": 3 - } - ], - "properties": { - "Node name for S&R": "VAELoaderMultiGPU" - }, - "widgets_values": [ - "ae.safetensors", - "cpu" - ] - }, - { - "id": 184, - "type": "SaveImage", - "pos": [ - 1312.477783203125, - -490.65277099609375 - ], - "size": [ - 398.87176513671875, - 393.47467041015625 - ], - "flags": {}, - "order": 34, - "mode": 0, - "inputs": [ - { - "name": "images", - "type": "IMAGE", - "link": 384 - } - ], - "outputs": [], - "properties": { - "Node name for S&R": "SaveImage" - }, - "widgets_values": [ - "ComfyUI" - ] - }, - { - "id": 293, - "type": "DF_Text_Box", - "pos": [ - 948.7462768554688, - -1066.32470703125 - ], - "size": [ - 246.73094177246094, - 96.81416320800781 - ], - "flags": { - "collapsed": true - }, - "order": 5, - "mode": 0, - "inputs": [], - "outputs": [ - { - "name": "STRING", - "type": "STRING", - "links": [ - 757 - ], - "slot_index": 0 - } - ], - "properties": { - "Node name for S&R": "DF_Text_Box" - }, - "widgets_values": [ - "This describes the first frame of a video that needs to subtly animated for " - ] - }, - { - "id": 296, - "type": "Int2String", - "pos": [ - 867.2527465820312, - -1008.2164916992188 - ], - "size": [ - 210, - 34 - ], - "flags": { - "collapsed": true - }, - "order": 26, - "mode": 0, - "inputs": [ - { - "name": "Int", - "type": "INT", - "link": 756, - "widget": { - "name": "Int" - } - } - ], - "outputs": [ - { - "name": "STRING", - "type": "STRING", - "links": [ - 758 - ], - "slot_index": 0 - } - ], - "properties": { - "Node name for S&R": "Int2String" - }, - "widgets_values": [ - 0 - ] - }, - { - "id": 295, - "type": "easy mathInt", - "pos": [ - 755.301025390625, - -1006.3259887695312 - ], - "size": [ - 210, - 82 - ], - "flags": { - "collapsed": true - }, - "order": 21, - "mode": 0, - "inputs": [ - { - "name": "a", - "type": "INT", - "link": 755, - "widget": { - "name": "a" - } - } - ], - "outputs": [ - { - "name": "INT", - "type": "INT", - "links": [ - 756 - ], - "slot_index": 0 - } - ], - "properties": { - "Node name for S&R": "easy mathInt" - }, - "widgets_values": [ - 0, - 25, - "divide" - ] - }, - { - "id": 298, - "type": "DF_Text_Box", - "pos": [ - 846.861328125, - -954.3756713867188 - ], - "size": [ - 210, - 76 - ], - "flags": { - "collapsed": true - }, - "order": 6, - "mode": 0, - "inputs": [], - "outputs": [ - { - "name": "STRING", - "type": "STRING", - "links": [ - 759 - ], - "slot_index": 0 - } - ], - "properties": { - "Node name for S&R": "DF_Text_Box" - }, - "widgets_values": [ - "seconds: " - ] - }, - { - "id": 268, - "type": "CLIPTextEncode", - "pos": [ - 2067.76708984375, - -786.3204956054688 - ], - "size": [ - 210, - 54 - ], - "flags": { - "collapsed": false - }, - "order": 32, - "mode": 0, - "inputs": [ - { - "name": "clip", - "type": "CLIP", - "link": 765 - }, - { - "name": "text", - "type": "STRING", - "link": 764, - "widget": { - "name": "text" - } - } - ], - "outputs": [ - { - "name": "CONDITIONING", - "type": "CONDITIONING", - "links": [ - 717 - ], - "slot_index": 0 - } - ], - "title": "LTXV Pos", - "properties": { - "Node name for S&R": "CLIPTextEncode", - "enableTabs": false, - "tabWidth": 65, - "tabXOffset": 10, - "hasSecondTab": false, - "secondTabText": "Send Back", - "secondTabOffset": 80, - "secondTabWidth": 65 - }, - "widgets_values": [ - "A scary box" - ], - "color": "#232", - "bgcolor": "#353" - }, - { - "id": 269, - "type": "CLIPTextEncode", - "pos": [ - 2075.806396484375, - -657.681884765625 - ], - "size": [ - 285.6000061035156, - 76 - ], - "flags": { - "collapsed": false - }, - "order": 16, - "mode": 0, - "inputs": [ - { - "name": "clip", - "type": "CLIP", - "link": 766 - } - ], - "outputs": [ - { - "name": "CONDITIONING", - "type": "CONDITIONING", - "links": [ - 718 - ], - "slot_index": 0 - } - ], - "title": "CLIP Text Encode (Negative Prompt)", - "properties": { - "Node name for S&R": "CLIPTextEncode", - "enableTabs": false, - "tabWidth": 65, - "tabXOffset": 10, - "hasSecondTab": false, - "secondTabText": "Send Back", - "secondTabOffset": 80, - "secondTabWidth": 65 - }, - "widgets_values": [ - "low quality, worst quality, deformed, distorted, disfigured, motion smear, motion artifacts, fused fingers, bad anatomy, weird hand, ugly" - ], - "color": "#322", - "bgcolor": "#533" - }, - { - "id": 276, - "type": "EmptyLTXVLatentVideo", - "pos": [ - 2054.917236328125, - -266.39617919921875 - ], - "size": [ - 210, - 130 - ], - "flags": { - "collapsed": false - }, - "order": 37, - "mode": 0, - "inputs": [ - { - "name": "width", - "type": "INT", - "link": 727, - "widget": { - "name": "width" - } - }, - { - "name": "height", - "type": "INT", - "link": 728, - "widget": { - "name": "height" - } - }, - { - "name": "length", - "type": "INT", - "link": 761, - "widget": { - "name": "length" - } - } - ], - "outputs": [ - { - "name": "LATENT", - "type": "LATENT", - "links": [ - 730, - 739 - ], - "slot_index": 0 - } - ], - "properties": { - "Node name for S&R": "EmptyLTXVLatentVideo", - "enableTabs": false, - "tabWidth": 65, - "tabXOffset": 10, - "hasSecondTab": false, - "secondTabText": "Send Back", - "secondTabOffset": 80, - "secondTabWidth": 65 - }, - "widgets_values": [ - 512, - 768, - 129, - 1 - ] - }, - { - "id": 273, - "type": "LTXVImgToVideo", - "pos": [ - 2062.09521484375, - -511.68597412109375 - ], - "size": [ - 210, - 202 - ], - "flags": { - "collapsed": false - }, - "order": 36, - "mode": 0, - "inputs": [ - { - "name": "positive", - "type": "CONDITIONING", - "link": 717 - }, - { - "name": "negative", - "type": "CONDITIONING", - "link": 718 - }, - { - "name": "vae", - "type": "VAE", - "link": 719 - }, - { - "name": "image", - "type": "IMAGE", - "link": 720 - }, - { - "name": "width", - "type": "INT", - "link": 721, - "widget": { - "name": "width" - } - }, - { - "name": "height", - "type": "INT", - "link": 722, - "widget": { - "name": "height" - } - }, - { - "name": "length", - "type": "INT", - "link": 760, - "widget": { - "name": "length" - } - } - ], - "outputs": [ - { - "name": "positive", - "type": "CONDITIONING", - "links": [ - 725 - ], - "slot_index": 0 - }, - { - "name": "negative", - "type": "CONDITIONING", - "links": [ - 726 - ], - "slot_index": 1 - }, - { - "name": "latent", - "type": "LATENT", - "links": null - } - ], - "properties": { - "Node name for S&R": "LTXVImgToVideo" - }, - "widgets_values": [ - 512, - 768, - 257, - 1, - 0.15 - ], - "color": "#232", - "bgcolor": "#353" - }, - { - "id": 272, - "type": "LTXPerturbedAttention", - "pos": [ - 2322.979736328125, - -835.3939819335938 - ], - "size": [ - 243.60000610351562, - 126 - ], - "flags": { - "collapsed": false - }, - "order": 25, - "mode": 0, - "inputs": [ - { - "name": "model", - "type": "MODEL", - "link": 715 - }, - { - "name": "attn_override", - "type": "ATTN_OVERRIDE", - "link": 716, - "shape": 7 - } - ], - "outputs": [ - { - "name": "MODEL", - "type": "MODEL", - "links": [ - 734 - ], - "slot_index": 0 - } - ], - "properties": { - "Node name for S&R": "LTXPerturbedAttention" - }, - "widgets_values": [ - 1, - 0.25, - 3 - ] - }, - { - "id": 279, - "type": "VAEDecode", - "pos": [ - 2374.200439453125, - -643.4945678710938 - ], - "size": [ - 140, - 46 - ], - "flags": { - "collapsed": false - }, - "order": 41, - "mode": 0, - "inputs": [ - { - "name": "samples", - "type": "LATENT", - "link": 731 - }, - { - "name": "vae", - "type": "VAE", - "link": 732 - } - ], - "outputs": [ - { - "name": "IMAGE", - "type": "IMAGE", - "links": [ - 733 - ], - "slot_index": 0 - } - ], - "properties": { - "Node name for S&R": "VAEDecode", - "enableTabs": false, - "tabWidth": 65, - "tabXOffset": 10, - "hasSecondTab": false, - "secondTabText": "Send Back", - "secondTabOffset": 80, - "secondTabWidth": 65 - }, - "widgets_values": [] - }, - { - "id": 278, - "type": "LTXVScheduler", - "pos": [ - 2308.156005859375, - -289.2124938964844 - ], - "size": [ - 210, - 154 - ], - "flags": { - "collapsed": false - }, - "order": 39, - "mode": 0, - "inputs": [ - { - "name": "latent", - "type": "LATENT", - "link": 730, - "shape": 7 - } - ], - "outputs": [ - { - "name": "SIGMAS", - "type": "SIGMAS", - "links": [ - 738 - ], - "slot_index": 0 - } - ], - "properties": { - "Node name for S&R": "LTXVScheduler", - "enableTabs": false, - "tabWidth": 65, - "tabXOffset": 10, - "hasSecondTab": false, - "secondTabText": "Send Back", - "secondTabOffset": 80, - "secondTabWidth": 65 - }, - "widgets_values": [ - 100, - 2.05, - 0.95, - true, - 0.1 - ] - }, - { - "id": 277, - "type": "KSamplerSelect", - "pos": [ - 2291.593994140625, - -388.44921875 - ], - "size": [ - 210, - 58 - ], - "flags": { - "collapsed": false - }, - "order": 7, - "mode": 0, - "inputs": [], - "outputs": [ - { - "name": "SAMPLER", - "type": "SAMPLER", - "links": [ - 737 - ] - } - ], - "properties": { - "Node name for S&R": "KSamplerSelect", - "enableTabs": false, - "tabWidth": 65, - "tabXOffset": 10, - "hasSecondTab": false, - "secondTabText": "Send Back", - "secondTabOffset": 80, - "secondTabWidth": 65 - }, - "widgets_values": [ - "euler" - ] - }, - { - "id": 275, - "type": "LTXVConditioning", - "pos": [ - 2285.292236328125, - -512.1409912109375 - ], - "size": [ - 210, - 78 - ], - "flags": { - "collapsed": false - }, - "order": 38, - "mode": 0, - "inputs": [ - { - "name": "positive", - "type": "CONDITIONING", - "link": 725 - }, - { - "name": "negative", - "type": "CONDITIONING", - "link": 726 - } - ], - "outputs": [ - { - "name": "positive", - "type": "CONDITIONING", - "links": [ - 735 - ], - "slot_index": 0 - }, - { - "name": "negative", - "type": "CONDITIONING", - "links": [ - 736 - ], - "slot_index": 1 - } - ], - "properties": { - "Node name for S&R": "LTXVConditioning", - "enableTabs": false, - "tabWidth": 65, - "tabXOffset": 10, - "hasSecondTab": false, - "secondTabText": "Send Back", - "secondTabOffset": 80, - "secondTabWidth": 65 - }, - "widgets_values": [ - 25 - ], - "color": "#232", - "bgcolor": "#353" - }, - { - "id": 283, - "type": "SamplerCustom", - "pos": [ - 2520.345703125, - -559.6461181640625 - ], - "size": [ - 236.8000030517578, - 443.8398132324219 - ], - "flags": {}, - "order": 40, - "mode": 0, - "inputs": [ - { - "name": "model", - "type": "MODEL", - "link": 734 - }, - { - "name": "positive", - "type": "CONDITIONING", - "link": 735 - }, - { - "name": "negative", - "type": "CONDITIONING", - "link": 736 - }, - { - "name": "sampler", - "type": "SAMPLER", - "link": 737 - }, - { - "name": "sigmas", - "type": "SIGMAS", - "link": 738 - }, - { - "name": "latent_image", - "type": "LATENT", - "link": 739 - } - ], - "outputs": [ - { - "name": "output", - "type": "LATENT", - "links": [ - 731 - ], - "slot_index": 0 - }, - { - "name": "denoised_output", - "type": "LATENT", - "links": null - } - ], - "properties": { - "Node name for S&R": "SamplerCustom", - "enableTabs": false, - "tabWidth": 65, - "tabXOffset": 10, - "hasSecondTab": false, - "secondTabText": "Send Back", - "secondTabOffset": 80, - "secondTabWidth": 65 - }, - "widgets_values": [ - true, - 5770521, - "fixed", - 3 - ] - }, - { - "id": 280, - "type": "VHS_VideoCombine", - "pos": [ - 2769.0009765625, - -939.8538818359375 - ], - "size": [ - 281.3041687011719, - 696.4055786132812 - ], - "flags": {}, - "order": 42, - "mode": 0, - "inputs": [ - { - "name": "images", - "type": "IMAGE", - "link": 733 - }, - { - "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", - "enableTabs": false, - "tabWidth": 65, - "tabXOffset": 10, - "hasSecondTab": false, - "secondTabText": "Send Back", - "secondTabOffset": 80, - "secondTabWidth": 65 - }, - "widgets_values": { - "frame_rate": 24, - "loop_count": 0, - "filename_prefix": "LTXVideo", - "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": "LTXVideo_00383.mp4", - "subfolder": "", - "type": "output", - "format": "video/h264-mp4", - "frame_rate": 24, - "workflow": "LTXVideo_00383.png", - "fullpath": "/home/johnj/ComfyUI/output/LTXVideo_00383.mp4" - }, - "muted": false - } - } - }, - { - "id": 128, - "type": "RandomNoise", - "pos": [ - 759.59130859375, - -453.7845153808594 - ], - "size": [ - 252.69171142578125, - 82 - ], - "flags": {}, - "order": 8, - "mode": 0, - "inputs": [], - "outputs": [ - { - "name": "NOISE", - "type": "NOISE", - "links": [ - 702 - ], - "slot_index": 0, - "shape": 3 - } - ], - "title": "RandomNoise/Seed", - "properties": { - "Node name for S&R": "RandomNoise" - }, - "widgets_values": [ - 5770521, - "fixed" - ], - "color": "#432", - "bgcolor": "#653" - }, - { - "id": 288, - "type": "ShowText|pysssss", - "pos": [ - 735.609375, - -322.7117004394531 - ], - "size": [ - 301.9348449707031, - 183.0865020751953 - ], - "flags": {}, - "order": 23, - "mode": 0, - "inputs": [ - { - "name": "text", - "type": "STRING", - "link": 769, - "widget": { - "name": "text" - } - } - ], - "outputs": [ - { - "name": "STRING", - "type": "STRING", - "links": null, - "shape": 6 - } - ], - "properties": { - "Node name for S&R": "ShowText|pysssss" - }, - "widgets_values": [ - "", - "The image is a black and white photograph of a waterfall. The waterfall is cascading down a rocky cliff, with the water flowing over the rocks and creating a misty effect. The rocks are large and jagged, and the water is flowing over them. The cliff is covered in trees and shrubs, and there is a hill in the background. The sky is overcast and the overall mood of the image is peaceful and serene." - ] - }, - { - "id": 297, - "type": "Text Concatenate", - "pos": [ - 1094.17333984375, - -922.4619750976562 - ], - "size": [ - 210, - 142 - ], - "flags": { - "collapsed": true - }, - "order": 28, - "mode": 0, - "inputs": [ - { - "name": "text_a", - "type": "STRING", - "link": 757, - "widget": { - "name": "text_a" - }, - "shape": 7 - }, - { - "name": "text_b", - "type": "STRING", - "link": 758, - "widget": { - "name": "text_b" - }, - "shape": 7 - }, - { - "name": "text_c", - "type": "STRING", - "link": 759, - "widget": { - "name": "text_c" - }, - "shape": 7 - }, - { - "name": "text_d", - "type": "STRING", - "link": 767, - "widget": { - "name": "text_d" - }, - "shape": 7 - } - ], - "outputs": [ - { - "name": "STRING", - "type": "STRING", - "links": [ - 763 - ], - "slot_index": 0 - } - ], - "properties": { - "Node name for S&R": "Text Concatenate" - }, - "widgets_values": [ - " ", - "true", - "", - "", - "", - "" - ] - }, - { - "id": 150, - "type": "BasicGuider", - "pos": [ - 1116.4012451171875, - -707.979736328125 - ], - "size": [ - 257.0326232910156, - 51.87638854980469 - ], - "flags": { - "collapsed": true - }, - "order": 29, - "mode": 0, - "inputs": [ - { - "name": "model", - "type": "MODEL", - "link": 707, - "slot_index": 0 - }, - { - "name": "conditioning", - "type": "CONDITIONING", - "link": 703, - "slot_index": 1 - } - ], - "outputs": [ - { - "name": "GUIDER", - "type": "GUIDER", - "links": [ - 272 - ], - "slot_index": 0, - "shape": 3 - } - ], - "properties": { - "Node name for S&R": "BasicGuider" - }, - "widgets_values": [], - "color": "#232", - "bgcolor": "#353" - }, - { - "id": 151, - "type": "BasicScheduler", - "pos": [ - 1081.531005859375, - -818.8421630859375 - ], - "size": [ - 236.516357421875, - 106 - ], - "flags": { - "collapsed": false - }, - "order": 19, - "mode": 0, - "inputs": [ - { - "name": "model", - "type": "MODEL", - "link": 705, - "slot_index": 0 - } - ], - "outputs": [ - { - "name": "SIGMAS", - "type": "SIGMAS", - "links": [ - 273 - ], - "slot_index": 0, - "shape": 3 - } - ], - "properties": { - "Node name for S&R": "BasicScheduler" - }, - "widgets_values": [ - "ddim_uniform", - 30, - 1 - ], - "color": "#323", - "bgcolor": "#535" - }, - { - "id": 130, - "type": "KSamplerSelect", - "pos": [ - 1070.2655029296875, - -671.5866088867188 - ], - "size": [ - 210, - 58 - ], - "flags": { - "collapsed": false - }, - "order": 9, - "mode": 0, - "inputs": [], - "outputs": [ - { - "name": "SAMPLER", - "type": "SAMPLER", - "links": [ - 700 - ], - "slot_index": 0, - "shape": 3 - } - ], - "properties": { - "Node name for S&R": "KSamplerSelect" - }, - "widgets_values": [ - "deis" - ], - "color": "#323", - "bgcolor": "#535" - }, - { - "id": 149, - "type": "SamplerCustomAdvanced", - "pos": [ - 1053.5076904296875, - -463.5470886230469 - ], - "size": [ - 236.8000030517578, - 344.8153076171875 - ], - "flags": {}, - "order": 31, - "mode": 0, - "inputs": [ - { - "name": "noise", - "type": "NOISE", - "link": 702, - "slot_index": 0 - }, - { - "name": "guider", - "type": "GUIDER", - "link": 272, - "slot_index": 1 - }, - { - "name": "sampler", - "type": "SAMPLER", - "link": 700, - "slot_index": 2 - }, - { - "name": "sigmas", - "type": "SIGMAS", - "link": 273, - "slot_index": 3 - }, - { - "name": "latent_image", - "type": "LATENT", - "link": 770, - "slot_index": 4 - } - ], - "outputs": [ - { - "name": "output", - "type": "LATENT", - "links": [ - 270 - ], - "slot_index": 0, - "shape": 3 - }, - { - "name": "denoised_output", - "type": "LATENT", - "links": null, - "shape": 3 - } - ], - "properties": { - "Node name for S&R": "SamplerCustomAdvanced" - }, - "widgets_values": [], - "color": "#323", - "bgcolor": "#535" - }, - { - "id": 147, - "type": "VAEDecode", - "pos": [ - 1332.1346435546875, - -581.1580200195312 - ], - "size": [ - 140, - 46 - ], - "flags": { - "collapsed": true - }, - "order": 33, - "mode": 0, - "inputs": [ - { - "name": "samples", - "type": "LATENT", - "link": 270 - }, - { - "name": "vae", - "type": "VAE", - "link": 706 - } - ], - "outputs": [ - { - "name": "IMAGE", - "type": "IMAGE", - "links": [ - 384, - 740 - ], - "slot_index": 0 - } - ], - "properties": { - "Node name for S&R": "VAEDecode" - }, - "widgets_values": [] - }, - { - "id": 35, - "type": "FluxGuidance", - "pos": [ - 1074.5513916015625, - -575.5557861328125 - ], - "size": [ - 211.60000610351562, - 58 - ], - "flags": { - "collapsed": false - }, - "order": 27, - "mode": 0, - "inputs": [ - { - "name": "conditioning", - "type": "CONDITIONING", - "link": 56 - } - ], - "outputs": [ - { - "name": "CONDITIONING", - "type": "CONDITIONING", - "links": [ - 703 - ], - "slot_index": 0, - "shape": 3 - } - ], - "properties": { - "Node name for S&R": "FluxGuidance" - }, - "widgets_values": [ - 3.5 - ] - }, - { - "id": 301, - "type": "Note", - "pos": [ - 90.61213684082031, - -1320.3759765625 - ], - "size": [ - 783.961669921875, - 254.1817626953125 - ], - "flags": {}, - "order": 10, - "mode": 0, - "inputs": [], - "outputs": [], - "title": "This workflow is main memory (CPU) intensive", - "properties": {}, - "widgets_values": [ - "**āš ļø Dependency Alert! āš ļø**\n\nThis workflow is designed to show how much of a complex workflow can be spread across GPUs while offloading as much as it can to main memory (cpu). \n\nSince this workflow cannot predict every combination of cuda devices and main memory, you might find your desired model component doesn't fit. At that point, your options are to change to a different (larger) device, load a smaller model, or explore GGUF quantizations of existing models. \n\nShould you want to explore GGUF quantizations, it requires nodes from the [ComfyUI-GGUF](https://github.com/city96/ComfyUI-GGUF) custom node repository to function correctly, along with swapping out to the GGUF versions of the MultiGPU node(s). Please see the GGUF examples located in the same diretory for further exploration." - ], - "color": "#332922", - "bgcolor": "#593930" - }, - { - "id": 302, - "type": "Note", - "pos": [ - 1132.27734375, - -1160.07568359375 - ], - "size": [ - 210, - 91.36243438720703 - ], - "flags": {}, - "order": 11, - "mode": 0, - "inputs": [], - "outputs": [], - "title": "User Input", - "properties": {}, - "widgets_values": [ - "24 frames per second, needs to be equal to N*8+1 = e.g. 9,17,25, etc." - ], - "color": "#233", - "bgcolor": "#355" - }, - { - "id": 232, - "type": "LoadImage", - "pos": [ - -11.854447364807129, - -784.3826904296875 - ], - "size": [ - 371.3655090332031, - 625.0361938476562 - ], - "flags": {}, - "order": 12, - "mode": 0, - "inputs": [], - "outputs": [ - { - "name": "IMAGE", - "type": "IMAGE", - "links": [ - 744, - 748 - ], - "slot_index": 0, - "shape": 3 - }, - { - "name": "MASK", - "type": "MASK", - "links": null, - "shape": 3 - } - ], - "properties": { - "Node name for S&R": "LoadImage" - }, - "widgets_values": [ - "ComfyUI_08535_.png", - "image" - ], - "color": "#ff9414", - "bgcolor": "#ff8000" - }, - { - "id": 6, - "type": "CLIPTextEncode", - "pos": [ - 1089.039306640625, - -871.3989868164062 - ], - "size": [ - 210, - 54 - ], - "flags": { - "collapsed": true - }, - "order": 22, - "mode": 0, - "inputs": [ - { - "name": "clip", - "type": "CLIP", - "link": 711 - }, - { - "name": "text", - "type": "STRING", - "link": 768, - "widget": { - "name": "text" - } - } - ], - "outputs": [ - { - "name": "CONDITIONING", - "type": "CONDITIONING", - "links": [ - 56 - ], - "slot_index": 0 - } - ], - "title": "CLIP Text Encode", - "properties": { - "Node name for S&R": "CLIPTextEncode" - }, - "widgets_values": [ - "" - ], - "color": "#232", - "bgcolor": "#353" - }, - { - "id": 198, - "type": "UNETLoaderMultiGPU", - "pos": [ - 753.8175048828125, - -741.8397216796875 - ], - "size": [ - 270.74609375, - 110.4522705078125 - ], - "flags": {}, - "order": 13, - "mode": 0, - "inputs": [], - "outputs": [ - { - "name": "MODEL", - "type": "MODEL", - "links": [ - 705, - 707 - ], - "slot_index": 0 - } - ], - "properties": { - "Node name for S&R": "UNETLoaderMultiGPU" - }, - "widgets_values": [ - "flux1-dev.safetensors", - "default", - "cuda:0" - ] - }, - { - "id": 266, - "type": "CheckpointLoaderSimpleMultiGPU", - "pos": [ - 1732.7156982421875, - -940.305419921875 - ], - "size": [ - 307.1690368652344, - 122 - ], - "flags": {}, - "order": 14, - "mode": 0, - "inputs": [], - "outputs": [ - { - "name": "MODEL", - "type": "MODEL", - "links": [ - 714 - ], - "slot_index": 0 - }, - { - "name": "CLIP", - "type": "CLIP", - "links": null - }, - { - "name": "VAE", - "type": "VAE", - "links": [ - 719, - 732 - ], - "slot_index": 2 - } - ], - "properties": { - "Node name for S&R": "CheckpointLoaderSimpleMultiGPU" - }, - "widgets_values": [ - "ltx-video-2b-v0.9.1.safetensors", - "cuda:1" - ] - }, - { - "id": 294, - "type": "Int", - "pos": [ - 1038.341796875, - -1035.79931640625 - ], - "size": [ - 315, - 58 - ], - "flags": {}, - "order": 15, - "mode": 0, - "inputs": [], - "outputs": [ - { - "name": "INT", - "type": "INT", - "links": [ - 755, - 760, - 761 - ], - "slot_index": 0 - } - ], - "title": "Frames (N*8+1)", - "properties": { - "Node name for S&R": "Int" - }, - "widgets_values": [ - "129" - ], - "color": "#233", - "bgcolor": "#355" - } - ], - "links": [ - [ - 56, - 6, - 0, - 35, - 0, - "CONDITIONING" - ], - [ - 270, - 149, - 0, - 147, - 0, - "LATENT" - ], - [ - 272, - 150, - 0, - 149, - 1, - "GUIDER" - ], - [ - 273, - 151, - 0, - 149, - 3, - "SIGMAS" - ], - [ - 384, - 147, - 0, - 184, - 0, - "IMAGE" - ], - [ - 439, - 132, - 0, - 65, - 1, - "INT" - ], - [ - 440, - 111, - 0, - 8, - 1, - "VAE" - ], - [ - 441, - 111, - 0, - 141, - 1, - "VAE" - ], - [ - 442, - 128, - 0, - 149, - 0, - "NOISE" - ], - [ - 443, - 130, - 0, - 149, - 2, - "SAMPLER" - ], - [ - 444, - 27, - 0, - 149, - 4, - "LATENT" - ], - [ - 445, - 128, - 0, - 127, - 0, - "NOISE" - ], - [ - 446, - 130, - 0, - 127, - 2, - "SAMPLER" - ], - [ - 447, - 27, - 0, - 127, - 4, - "LATENT" - ], - [ - 448, - 128, - 0, - 61, - 0, - "NOISE" - ], - [ - 449, - 130, - 0, - 61, - 2, - "SAMPLER" - ], - [ - 450, - 27, - 0, - 61, - 4, - "LATENT" - ], - [ - 451, - 128, - 0, - 143, - 0, - "NOISE" - ], - [ - 452, - 130, - 0, - 143, - 2, - "SAMPLER" - ], - [ - 453, - 27, - 0, - 143, - 4, - "LATENT" - ], - [ - 454, - 132, - 0, - 131, - 1, - "INT" - ], - [ - 455, - 111, - 0, - 123, - 1, - "VAE" - ], - [ - 456, - 132, - 0, - 145, - 1, - "INT" - ], - [ - 457, - 198, - 0, - 151, - 0, - "MODEL" - ], - [ - 458, - 132, - 0, - 151, - 1, - "INT" - ], - [ - 459, - 198, - 0, - 150, - 0, - "MODEL" - ], - [ - 460, - 113, - 0, - 219, - 0, - "CLIP" - ], - [ - 461, - 113, - 0, - 214, - 0, - "CLIP" - ], - [ - 462, - 198, - 0, - 146, - 0, - "MODEL" - ], - [ - 463, - 198, - 0, - 134, - 0, - "MODEL" - ], - [ - 464, - 113, - 0, - 223, - 0, - "CLIP" - ], - [ - 465, - 111, - 0, - 147, - 1, - "VAE" - ], - [ - 466, - 198, - 0, - 122, - 0, - "MODEL" - ], - [ - 467, - 113, - 0, - 6, - 0, - "CLIP" - ], - [ - 491, - 132, - 0, - 65, - 1, - "INT" - ], - [ - 492, - 111, - 0, - 8, - 1, - "VAE" - ], - [ - 493, - 111, - 0, - 141, - 1, - "VAE" - ], - [ - 494, - 128, - 0, - 127, - 0, - "NOISE" - ], - [ - 495, - 130, - 0, - 127, - 2, - "SAMPLER" - ], - [ - 496, - 27, - 0, - 127, - 4, - "LATENT" - ], - [ - 497, - 128, - 0, - 61, - 0, - "NOISE" - ], - [ - 498, - 130, - 0, - 61, - 2, - "SAMPLER" - ], - [ - 499, - 27, - 0, - 61, - 4, - "LATENT" - ], - [ - 500, - 132, - 0, - 131, - 1, - "INT" - ], - [ - 501, - 132, - 0, - 145, - 1, - "INT" - ], - [ - 502, - 113, - 0, - 219, - 0, - "CLIP" - ], - [ - 503, - 113, - 0, - 214, - 0, - "CLIP" - ], - [ - 504, - 198, - 0, - 146, - 0, - "MODEL" - ], - [ - 505, - 198, - 0, - 134, - 0, - "MODEL" - ], - [ - 506, - 113, - 0, - 223, - 0, - "CLIP" - ], - [ - 507, - 111, - 0, - 147, - 1, - "VAE" - ], - [ - 508, - 198, - 0, - 122, - 0, - "MODEL" - ], - [ - 509, - 113, - 0, - 6, - 0, - "CLIP" - ], - [ - 510, - 128, - 0, - 149, - 0, - "NOISE" - ], - [ - 511, - 130, - 0, - 149, - 2, - "SAMPLER" - ], - [ - 512, - 27, - 0, - 149, - 4, - "LATENT" - ], - [ - 513, - 198, - 0, - 151, - 0, - "MODEL" - ], - [ - 514, - 132, - 0, - 151, - 1, - "INT" - ], - [ - 515, - 198, - 0, - 150, - 0, - "MODEL" - ], - [ - 516, - 128, - 0, - 143, - 0, - "NOISE" - ], - [ - 517, - 130, - 0, - 143, - 2, - "SAMPLER" - ], - [ - 518, - 27, - 0, - 143, - 4, - "LATENT" - ], - [ - 519, - 111, - 0, - 123, - 1, - "VAE" - ], - [ - 523, - 132, - 0, - 65, - 1, - "INT" - ], - [ - 524, - 111, - 0, - 8, - 1, - "VAE" - ], - [ - 525, - 111, - 0, - 141, - 1, - "VAE" - ], - [ - 526, - 128, - 0, - 127, - 0, - "NOISE" - ], - [ - 527, - 130, - 0, - 127, - 2, - "SAMPLER" - ], - [ - 528, - 27, - 0, - 127, - 4, - "LATENT" - ], - [ - 529, - 128, - 0, - 61, - 0, - "NOISE" - ], - [ - 530, - 130, - 0, - 61, - 2, - "SAMPLER" - ], - [ - 531, - 27, - 0, - 61, - 4, - "LATENT" - ], - [ - 532, - 132, - 0, - 131, - 1, - "INT" - ], - [ - 533, - 132, - 0, - 145, - 1, - "INT" - ], - [ - 534, - 113, - 0, - 219, - 0, - "CLIP" - ], - [ - 535, - 113, - 0, - 214, - 0, - "CLIP" - ], - [ - 536, - 195, - 0, - 146, - 0, - "MODEL" - ], - [ - 537, - 195, - 0, - 134, - 0, - "MODEL" - ], - [ - 538, - 113, - 0, - 223, - 0, - "CLIP" - ], - [ - 539, - 111, - 0, - 147, - 1, - "VAE" - ], - [ - 540, - 195, - 0, - 122, - 0, - "MODEL" - ], - [ - 541, - 113, - 0, - 6, - 0, - "CLIP" - ], - [ - 542, - 128, - 0, - 149, - 0, - "NOISE" - ], - [ - 543, - 130, - 0, - 149, - 2, - "SAMPLER" - ], - [ - 544, - 27, - 0, - 149, - 4, - "LATENT" - ], - [ - 545, - 195, - 0, - 151, - 0, - "MODEL" - ], - [ - 546, - 132, - 0, - 151, - 1, - "INT" - ], - [ - 547, - 195, - 0, - 150, - 0, - "MODEL" - ], - [ - 548, - 128, - 0, - 143, - 0, - "NOISE" - ], - [ - 549, - 130, - 0, - 143, - 2, - "SAMPLER" - ], - [ - 550, - 27, - 0, - 143, - 4, - "LATENT" - ], - [ - 551, - 111, - 0, - 123, - 1, - "VAE" - ], - [ - 562, - 132, - 0, - 65, - 1, - "INT" - ], - [ - 563, - 111, - 0, - 8, - 1, - "VAE" - ], - [ - 564, - 111, - 0, - 141, - 1, - "VAE" - ], - [ - 565, - 128, - 0, - 127, - 0, - "NOISE" - ], - [ - 566, - 130, - 0, - 127, - 2, - "SAMPLER" - ], - [ - 567, - 27, - 0, - 127, - 4, - "LATENT" - ], - [ - 568, - 128, - 0, - 61, - 0, - "NOISE" - ], - [ - 569, - 130, - 0, - 61, - 2, - "SAMPLER" - ], - [ - 570, - 27, - 0, - 61, - 4, - "LATENT" - ], - [ - 571, - 132, - 0, - 131, - 1, - "INT" - ], - [ - 572, - 132, - 0, - 145, - 1, - "INT" - ], - [ - 573, - 113, - 0, - 219, - 0, - "CLIP" - ], - [ - 574, - 113, - 0, - 214, - 0, - "CLIP" - ], - [ - 575, - 195, - 0, - 134, - 0, - "MODEL" - ], - [ - 576, - 113, - 0, - 223, - 0, - "CLIP" - ], - [ - 577, - 128, - 0, - 149, - 0, - "NOISE" - ], - [ - 578, - 130, - 0, - 149, - 2, - "SAMPLER" - ], - [ - 579, - 27, - 0, - 149, - 4, - "LATENT" - ], - [ - 580, - 195, - 0, - 151, - 0, - "MODEL" - ], - [ - 581, - 132, - 0, - 151, - 1, - "INT" - ], - [ - 582, - 195, - 0, - 150, - 0, - "MODEL" - ], - [ - 583, - 128, - 0, - 143, - 0, - "NOISE" - ], - [ - 584, - 130, - 0, - 143, - 2, - "SAMPLER" - ], - [ - 585, - 27, - 0, - 143, - 4, - "LATENT" - ], - [ - 586, - 111, - 0, - 123, - 1, - "VAE" - ], - [ - 587, - 113, - 0, - 6, - 0, - "CLIP" - ], - [ - 588, - 195, - 0, - 146, - 0, - "MODEL" - ], - [ - 589, - 195, - 0, - 122, - 0, - "MODEL" - ], - [ - 590, - 111, - 0, - 147, - 1, - "VAE" - ], - [ - 605, - 132, - 0, - 65, - 1, - "INT" - ], - [ - 606, - 111, - 0, - 8, - 1, - "VAE" - ], - [ - 607, - 111, - 0, - 141, - 1, - "VAE" - ], - [ - 608, - 128, - 0, - 127, - 0, - "NOISE" - ], - [ - 609, - 130, - 0, - 127, - 2, - "SAMPLER" - ], - [ - 610, - 27, - 0, - 127, - 4, - "LATENT" - ], - [ - 611, - 128, - 0, - 61, - 0, - "NOISE" - ], - [ - 612, - 130, - 0, - 61, - 2, - "SAMPLER" - ], - [ - 613, - 27, - 0, - 61, - 4, - "LATENT" - ], - [ - 614, - 132, - 0, - 131, - 1, - "INT" - ], - [ - 615, - 132, - 0, - 145, - 1, - "INT" - ], - [ - 616, - 113, - 0, - 219, - 0, - "CLIP" - ], - [ - 617, - 113, - 0, - 214, - 0, - "CLIP" - ], - [ - 618, - 198, - 0, - 134, - 0, - "MODEL" - ], - [ - 619, - 113, - 0, - 223, - 0, - "CLIP" - ], - [ - 620, - 128, - 0, - 149, - 0, - "NOISE" - ], - [ - 621, - 130, - 0, - 149, - 2, - "SAMPLER" - ], - [ - 622, - 27, - 0, - 149, - 4, - "LATENT" - ], - [ - 623, - 198, - 0, - 151, - 0, - "MODEL" - ], - [ - 624, - 132, - 0, - 151, - 1, - "INT" - ], - [ - 625, - 198, - 0, - 150, - 0, - "MODEL" - ], - [ - 626, - 128, - 0, - 143, - 0, - "NOISE" - ], - [ - 627, - 130, - 0, - 143, - 2, - "SAMPLER" - ], - [ - 628, - 27, - 0, - 143, - 4, - "LATENT" - ], - [ - 629, - 111, - 0, - 123, - 1, - "VAE" - ], - [ - 630, - 113, - 0, - 6, - 0, - "CLIP" - ], - [ - 631, - 198, - 0, - 146, - 0, - "MODEL" - ], - [ - 632, - 111, - 0, - 147, - 1, - "VAE" - ], - [ - 633, - 198, - 0, - 122, - 0, - "MODEL" - ], - [ - 644, - 132, - 0, - 65, - 1, - "INT" - ], - [ - 645, - 111, - 0, - 8, - 1, - "VAE" - ], - [ - 646, - 111, - 0, - 141, - 1, - "VAE" - ], - [ - 647, - 128, - 0, - 127, - 0, - "NOISE" - ], - [ - 648, - 130, - 0, - 127, - 2, - "SAMPLER" - ], - [ - 649, - 27, - 0, - 127, - 4, - "LATENT" - ], - [ - 650, - 128, - 0, - 61, - 0, - "NOISE" - ], - [ - 651, - 130, - 0, - 61, - 2, - "SAMPLER" - ], - [ - 652, - 27, - 0, - 61, - 4, - "LATENT" - ], - [ - 653, - 132, - 0, - 131, - 1, - "INT" - ], - [ - 654, - 132, - 0, - 145, - 1, - "INT" - ], - [ - 655, - 113, - 0, - 219, - 0, - "CLIP" - ], - [ - 656, - 113, - 0, - 214, - 0, - "CLIP" - ], - [ - 657, - 198, - 0, - 134, - 0, - "MODEL" - ], - [ - 658, - 113, - 0, - 223, - 0, - "CLIP" - ], - [ - 659, - 128, - 0, - 149, - 0, - "NOISE" - ], - [ - 660, - 130, - 0, - 149, - 2, - "SAMPLER" - ], - [ - 661, - 27, - 0, - 149, - 4, - "LATENT" - ], - [ - 662, - 198, - 0, - 151, - 0, - "MODEL" - ], - [ - 663, - 132, - 0, - 151, - 1, - "INT" - ], - [ - 664, - 198, - 0, - 150, - 0, - "MODEL" - ], - [ - 665, - 128, - 0, - 143, - 0, - "NOISE" - ], - [ - 666, - 130, - 0, - 143, - 2, - "SAMPLER" - ], - [ - 667, - 27, - 0, - 143, - 4, - "LATENT" - ], - [ - 668, - 111, - 0, - 123, - 1, - "VAE" - ], - [ - 669, - 113, - 0, - 6, - 0, - "CLIP" - ], - [ - 670, - 198, - 0, - 146, - 0, - "MODEL" - ], - [ - 671, - 111, - 0, - 147, - 1, - "VAE" - ], - [ - 672, - 198, - 0, - 122, - 0, - "MODEL" - ], - [ - 682, - 265, - 0, - 151, - 0, - "MODEL" - ], - [ - 683, - 132, - 0, - 151, - 1, - "INT" - ], - [ - 684, - 111, - 0, - 147, - 1, - "VAE" - ], - [ - 685, - 265, - 0, - 150, - 0, - "MODEL" - ], - [ - 686, - 35, - 0, - 150, - 1, - "CONDITIONING" - ], - [ - 687, - 113, - 0, - 6, - 0, - "CLIP" - ], - [ - 688, - 128, - 0, - 149, - 0, - "NOISE" - ], - [ - 689, - 130, - 0, - 149, - 2, - "SAMPLER" - ], - [ - 690, - 27, - 0, - 149, - 4, - "LATENT" - ], - [ - 691, - 265, - 0, - 151, - 0, - "MODEL" - ], - [ - 692, - 132, - 0, - 151, - 1, - "INT" - ], - [ - 693, - 111, - 0, - 147, - 1, - "VAE" - ], - [ - 694, - 265, - 0, - 150, - 0, - "MODEL" - ], - [ - 695, - 35, - 0, - 150, - 1, - "CONDITIONING" - ], - [ - 696, - 113, - 0, - 6, - 0, - "CLIP" - ], - [ - 697, - 128, - 0, - 149, - 0, - "NOISE" - ], - [ - 698, - 130, - 0, - 149, - 2, - "SAMPLER" - ], - [ - 699, - 27, - 0, - 149, - 4, - "LATENT" - ], - [ - 700, - 130, - 0, - 149, - 2, - "SAMPLER" - ], - [ - 702, - 128, - 0, - 149, - 0, - "NOISE" - ], - [ - 703, - 35, - 0, - 150, - 1, - "CONDITIONING" - ], - [ - 705, - 198, - 0, - 151, - 0, - "MODEL" - ], - [ - 706, - 111, - 0, - 147, - 1, - "VAE" - ], - [ - 707, - 198, - 0, - 150, - 0, - "MODEL" - ], - [ - 711, - 113, - 0, - 6, - 0, - "CLIP" - ], - [ - 714, - 266, - 0, - 270, - 0, - "MODEL" - ], - [ - 715, - 270, - 0, - 272, - 0, - "MODEL" - ], - [ - 716, - 271, - 0, - 272, - 1, - "ATTN_OVERRIDE" - ], - [ - 717, - 268, - 0, - 273, - 0, - "CONDITIONING" - ], - [ - 718, - 269, - 0, - 273, - 1, - "CONDITIONING" - ], - [ - 719, - 266, - 2, - 273, - 2, - "VAE" - ], - [ - 720, - 274, - 0, - 273, - 3, - "IMAGE" - ], - [ - 721, - 274, - 1, - 273, - 4, - "INT" - ], - [ - 722, - 274, - 2, - 273, - 5, - "INT" - ], - [ - 725, - 273, - 0, - 275, - 0, - "CONDITIONING" - ], - [ - 726, - 273, - 1, - 275, - 1, - "CONDITIONING" - ], - [ - 727, - 274, - 1, - 276, - 0, - "INT" - ], - [ - 728, - 274, - 2, - 276, - 1, - "INT" - ], - [ - 730, - 276, - 0, - 278, - 0, - "LATENT" - ], - [ - 731, - 283, - 0, - 279, - 0, - "LATENT" - ], - [ - 732, - 266, - 2, - 279, - 1, - "VAE" - ], - [ - 733, - 279, - 0, - 280, - 0, - "IMAGE" - ], - [ - 734, - 272, - 0, - 283, - 0, - "MODEL" - ], - [ - 735, - 275, - 0, - 283, - 1, - "CONDITIONING" - ], - [ - 736, - 275, - 1, - 283, - 2, - "CONDITIONING" - ], - [ - 737, - 277, - 0, - 283, - 3, - "SAMPLER" - ], - [ - 738, - 278, - 0, - 283, - 4, - "SIGMAS" - ], - [ - 739, - 276, - 0, - 283, - 5, - "LATENT" - ], - [ - 740, - 147, - 0, - 274, - 0, - "IMAGE" - ], - [ - 742, - 286, - 0, - 287, - 1, - "FL2MODEL" - ], - [ - 744, - 232, - 0, - 287, - 0, - "IMAGE" - ], - [ - 748, - 232, - 0, - 291, - 0, - "IMAGE" - ], - [ - 749, - 291, - 1, - 292, - 0, - "INT" - ], - [ - 750, - 291, - 2, - 292, - 1, - "INT" - ], - [ - 755, - 294, - 0, - 295, - 0, - "INT" - ], - [ - 756, - 295, - 0, - 296, - 0, - "INT" - ], - [ - 757, - 293, - 0, - 297, - 0, - "STRING" - ], - [ - 758, - 296, - 0, - 297, - 1, - "STRING" - ], - [ - 759, - 298, - 0, - 297, - 2, - "STRING" - ], - [ - 760, - 294, - 0, - 273, - 6, - "INT" - ], - [ - 761, - 294, - 0, - 276, - 2, - "INT" - ], - [ - 763, - 297, - 0, - 299, - 0, - "STRING" - ], - [ - 764, - 299, - 0, - 268, - 1, - "STRING" - ], - [ - 765, - 300, - 0, - 268, - 0, - "CLIP" - ], - [ - 766, - 300, - 0, - 269, - 0, - "CLIP" - ], - [ - 767, - 287, - 2, - 297, - 3, - "STRING" - ], - [ - 768, - 287, - 2, - 6, - 1, - "STRING" - ], - [ - 769, - 287, - 2, - 288, - 0, - "STRING" - ], - [ - 770, - 292, - 0, - 149, - 4, - "LATENT" - ] - ], - "groups": [ - { - "id": 1, - "title": "img2txt2img2vid", - "bounding": [ - -29.928714752197266, - -1037.2220458984375, - 736.355224609375, - 915.1064453125 - ], - "color": "#3f789e", - "font_size": 24, - "flags": {} - }, - { - "id": 2, - "title": "img2vid", - "bounding": [ - 1717.4788818359375, - -1023.1045532226562, - 1363.980712890625, - 921.808837890625 - ], - "color": "#3f789e", - "font_size": 24, - "flags": {} - } - ], - "config": {}, - "extra": { - "ds": { - "scale": 0.724729500000097, - "offset": [ - 176.63560141460363, - 1445.6002770420216 - ] - }, - "ue_links": [], - "VHS_latentpreview": false, - "VHS_latentpreviewrate": 0 - }, - "version": 0.4 -} \ No newline at end of file diff --git a/examples/gguf/flux1dev_2gpu_gguf.json b/examples/gguf/flux1dev_2gpu_gguf.json deleted file mode 100644 index d45ec54..0000000 --- a/examples/gguf/flux1dev_2gpu_gguf.json +++ /dev/null @@ -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 -} \ No newline at end of file diff --git a/examples/gguf/hunyuan_2gpu_gguf.json b/examples/gguf/hunyuan_2gpu_gguf.json deleted file mode 100644 index ec408e5..0000000 --- a/examples/gguf/hunyuan_2gpu_gguf.json +++ /dev/null @@ -1,1348 +0,0 @@ -{ - "last_node_id": 104, - "last_link_id": 268, - "nodes": [ - { - "id": 88, - "type": "VAELoaderMultiGPU", - "pos": [ - -932.6995239257812, - 528.2268676757812 - ], - "size": [ - 322.5263366699219, - 82 - ], - "flags": {}, - "order": 0, - "mode": 0, - "inputs": [], - "outputs": [ - { - "name": "VAE", - "type": "VAE", - "links": [ - 242 - ], - "slot_index": 0 - } - ], - "properties": { - "Node name for S&R": "VAELoaderMultiGPU" - }, - "widgets_values": [ - "hunyuan_video_vae_bf16.safetensors", - "cuda:1" - ] - }, - { - "id": 79, - "type": "DualCLIPLoaderMultiGPU", - "pos": [ - -553.4775390625, - 336.9512023925781 - ], - "size": [ - 315, - 130 - ], - "flags": {}, - "order": 1, - "mode": 4, - "inputs": [], - "outputs": [ - { - "name": "CLIP", - "type": "CLIP", - "links": [ - 237 - ], - "slot_index": 0 - } - ], - "properties": { - "Node name for S&R": "DualCLIPLoaderMultiGPU" - }, - "widgets_values": [ - "clip_l.safetensors", - "llava_llama3_fp8_scaled.safetensors", - "hunyuan_video", - "cuda:1" - ] - }, - { - "id": 80, - "type": "VAELoaderMultiGPU", - "pos": [ - -561.4585571289062, - 522.6740112304688 - ], - "size": [ - 322.5263366699219, - 82 - ], - "flags": {}, - "order": 2, - "mode": 4, - "inputs": [], - "outputs": [ - { - "name": "VAE", - "type": "VAE", - "links": [ - 239 - ], - "slot_index": 0 - } - ], - "properties": { - "Node name for S&R": "VAELoaderMultiGPU" - }, - "widgets_values": [ - "hunyuan_video_vae_bf16.safetensors", - "cuda:1" - ] - }, - { - "id": 97, - "type": "UNETLoaderMultiGPU", - "pos": [ - -553.2993774414062, - 180.6386260986328 - ], - "size": [ - 315, - 106 - ], - "flags": {}, - "order": 3, - "mode": 4, - "inputs": [], - "outputs": [ - { - "name": "MODEL", - "type": "MODEL", - "links": [ - 251 - ], - "slot_index": 0 - } - ], - "properties": { - "Node name for S&R": "UNETLoaderMultiGPU" - }, - "widgets_values": [ - "hunyuan_video_720_cfgdistill_fp8_e4m3fn.safetensors", - "default", - "cuda:0" - ] - }, - { - "id": 11, - "type": "DualCLIPLoader", - "pos": [ - -205.30178833007812, - 359.85260009765625 - ], - "size": [ - 350, - 106 - ], - "flags": {}, - "order": 4, - "mode": 4, - "inputs": [], - "outputs": [ - { - "name": "CLIP", - "type": "CLIP", - "links": [ - 236 - ], - "slot_index": 0, - "shape": 3 - } - ], - "properties": { - "Node name for S&R": "DualCLIPLoader" - }, - "widgets_values": [ - "clip_l.safetensors", - "llava_llama3_fp8_scaled.safetensors", - "hunyuan_video" - ] - }, - { - "id": 10, - "type": "VAELoader", - "pos": [ - -206.71307373046875, - 546.1136474609375 - ], - "size": [ - 350, - 60 - ], - "flags": {}, - "order": 5, - "mode": 4, - "inputs": [], - "outputs": [ - { - "name": "VAE", - "type": "VAE", - "links": [ - 238 - ], - "slot_index": 0, - "shape": 3 - } - ], - "properties": { - "Node name for S&R": "VAELoader" - }, - "widgets_values": [ - "hunyuan_video_vae_bf16.safetensors" - ] - }, - { - "id": 12, - "type": "UNETLoader", - "pos": [ - -198.3746795654297, - 211.21337890625 - ], - "size": [ - 350, - 82 - ], - "flags": {}, - "order": 6, - "mode": 4, - "inputs": [], - "outputs": [ - { - "name": "MODEL", - "type": "MODEL", - "links": [ - 234 - ], - "slot_index": 0, - "shape": 3 - } - ], - "properties": { - "Node name for S&R": "UNETLoader" - }, - "widgets_values": [ - "hunyuan_video_720_cfgdistill_fp8_e4m3fn.safetensors", - "default" - ], - "color": "#223", - "bgcolor": "#335" - }, - { - "id": 87, - "type": "DualCLIPLoaderGGUFMultiGPU", - "pos": [ - -936.0441284179688, - 344.2503662109375 - ], - "size": [ - 327.5999755859375, - 130 - ], - "flags": {}, - "order": 7, - "mode": 0, - "inputs": [], - "outputs": [ - { - "name": "CLIP", - "type": "CLIP", - "links": [ - 241 - ], - "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", - "cuda:1" - ], - "color": "#332922", - "bgcolor": "#593930" - }, - { - "id": 103, - "type": "Note", - "pos": [ - -952.0836791992188, - -89.37448120117188 - ], - "size": [ - 353.56494140625, - 190.77996826171875 - ], - "flags": {}, - "order": 8, - "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": 81, - "type": "Any Switch (rgthree)", - "pos": [ - 180.00851440429688, - 565.62353515625 - ], - "size": [ - 140, - 106 - ], - "flags": { - "collapsed": true - }, - "order": 15, - "mode": 0, - "inputs": [ - { - "name": "any_01", - "type": "VAE", - "link": 242, - "dir": 3 - }, - { - "name": "any_02", - "type": "VAE", - "link": 239, - "dir": 3 - }, - { - "name": "any_03", - "type": "VAE", - "link": 238, - "dir": 3 - }, - { - "name": "any_04", - "type": "VAE", - "link": null, - "dir": 3 - }, - { - "name": "any_05", - "type": "VAE", - "link": null - } - ], - "outputs": [ - { - "name": "*", - "type": "VAE", - "links": [ - 226 - ], - "slot_index": 0, - "shape": 3, - "dir": 4, - "label": "VAE" - } - ], - "title": "VAE Switch", - "properties": { - "Node name for S&R": "Any Switch (rgthree)" - }, - "widgets_values": [], - "color": "#941414", - "bgcolor": "#800000" - }, - { - "id": 86, - "type": "UnetLoaderGGUFMultiGPU", - "pos": [ - -927.6819458007812, - 195.3961944580078 - ], - "size": [ - 315, - 82 - ], - "flags": {}, - "order": 9, - "mode": 0, - "inputs": [], - "outputs": [ - { - "name": "MODEL", - "type": "MODEL", - "links": [ - 240 - ], - "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": 82, - "type": "Any Switch (rgthree)", - "pos": [ - 185.0726776123047, - 375.7745361328125 - ], - "size": [ - 140, - 106 - ], - "flags": { - "collapsed": true - }, - "order": 16, - "mode": 0, - "inputs": [ - { - "name": "any_01", - "type": "CLIP", - "link": 241, - "dir": 3 - }, - { - "name": "any_02", - "type": "CLIP", - "link": 237, - "dir": 3 - }, - { - "name": "any_03", - "type": "CLIP", - "link": 236, - "dir": 3 - }, - { - "name": "any_04", - "type": "CLIP", - "link": null, - "dir": 3 - }, - { - "name": "any_05", - "type": "CLIP", - "link": null, - "dir": 3 - } - ], - "outputs": [ - { - "name": "*", - "type": "CLIP", - "links": [ - 265 - ], - "slot_index": 0, - "shape": 3, - "dir": 4, - "label": "CLIP" - } - ], - "title": "CLIP Switch", - "properties": { - "Node name for S&R": "Any Switch (rgthree)" - }, - "widgets_values": [], - "color": "#432", - "bgcolor": "#653" - }, - { - "id": 22, - "type": "BasicGuider", - "pos": [ - 596.327880859375, - 186.22683715820312 - ], - "size": [ - 222.3482666015625, - 46 - ], - "flags": { - "collapsed": true - }, - "order": 22, - "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": 45, - "type": "EmptyHunyuanLatentVideo", - "pos": [ - 362.15252685546875, - 427.1428527832031 - ], - "size": [ - 210, - 130 - ], - "flags": {}, - "order": 10, - "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": 17, - "type": "BasicScheduler", - "pos": [ - 578.1046142578125, - 433.7712707519531 - ], - "size": [ - 210, - 109.8011474609375 - ], - "flags": {}, - "order": 20, - "mode": 0, - "inputs": [ - { - "name": "model", - "type": "MODEL", - "link": 267, - "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": 44, - "type": "CLIPTextEncode", - "pos": [ - 354.07879638671875, - 223.81649780273438 - ], - "size": [ - 422.84503173828125, - 164.31304931640625 - ], - "flags": {}, - "order": 18, - "mode": 0, - "inputs": [ - { - "name": "clip", - "type": "CLIP", - "link": 265 - } - ], - "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": 25, - "type": "RandomNoise", - "pos": [ - 540.6160888671875, - 97.0975570678711 - ], - "size": [ - 250.37998962402344, - 82 - ], - "flags": {}, - "order": 11, - "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": 16, - "type": "KSamplerSelect", - "pos": [ - 820.9358520507812, - 114.4560546875 - ], - "size": [ - 210, - 58 - ], - "flags": {}, - "order": 12, - "mode": 0, - "inputs": [], - "outputs": [ - { - "name": "SAMPLER", - "type": "SAMPLER", - "links": [ - 19 - ], - "shape": 3 - } - ], - "properties": { - "Node name for S&R": "KSamplerSelect" - }, - "widgets_values": [ - "euler" - ] - }, - { - "id": 102, - "type": "VHS_VideoCombine", - "pos": [ - 1125.0836181640625, - 102.98095703125 - ], - "size": [ - 580.7774658203125, - 665.4212036132812 - ], - "flags": {}, - "order": 25, - "mode": 0, - "inputs": [ - { - "name": "images", - "type": "IMAGE", - "link": 268 - }, - { - "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_00057.mp4", - "subfolder": "", - "type": "output", - "format": "video/h264-mp4", - "frame_rate": 24, - "workflow": "HunyuanVideo_00057.png", - "fullpath": "/home/johnj/ComfyUI/output/HunyuanVideo_00057.mp4" - }, - "muted": false - } - } - }, - { - "id": 89, - "type": "Fast Groups Bypasser (rgthree)", - "pos": [ - -397.3174743652344, - -10.415107727050781 - ], - "size": [ - 373.6060485839844, - 106 - ], - "flags": {}, - "order": 13, - "mode": 0, - "inputs": [], - "outputs": [ - { - "name": "OPT_CONNECTION", - "type": "*", - "links": [], - "slot_index": 0 - } - ], - "properties": { - "matchColors": "", - "matchTitle": "", - "showNav": true, - "sort": "position", - "customSortAlphabet": "", - "toggleRestriction": "default" - }, - "color": "#233", - "bgcolor": "#355" - }, - { - "id": 77, - "type": "Note", - "pos": [ - -235.55711364746094, - -189.51280212402344 - ], - "size": [ - 210, - 121.95851135253906 - ], - "flags": {}, - "order": 14, - "mode": 0, - "inputs": [], - "outputs": [], - "properties": {}, - "widgets_values": [ - "The switches take the first enabled loader in this order:\n\n1. GGUFMultiGPU\n2. MultiGPU\n3. Standard Loaders" - ], - "color": "#233", - "bgcolor": "#355" - }, - { - "id": 85, - "type": "Any Switch (rgthree)", - "pos": [ - 190.27281188964844, - 241.24795532226562 - ], - "size": [ - 140, - 106 - ], - "flags": { - "collapsed": true - }, - "order": 17, - "mode": 0, - "inputs": [ - { - "name": "any_01", - "type": "MODEL", - "link": 240, - "dir": 3 - }, - { - "name": "any_02", - "type": "MODEL", - "link": 251, - "dir": 3 - }, - { - "name": "any_03", - "type": "MODEL", - "link": 234, - "dir": 3 - }, - { - "name": "any_04", - "type": "MODEL", - "link": null, - "dir": 3 - }, - { - "name": "any_05", - "type": "MODEL", - "link": null, - "dir": 3 - } - ], - "outputs": [ - { - "name": "*", - "type": "MODEL", - "links": [ - 266, - 267 - ], - "slot_index": 0, - "shape": 3, - "dir": 4, - "label": "MODEL" - } - ], - "title": "UNet Switch", - "properties": { - "Node name for S&R": "Any Switch (rgthree)" - }, - "widgets_values": [], - "color": "#323", - "bgcolor": "#535" - }, - { - "id": 26, - "type": "FluxGuidance", - "pos": [ - 339.6404113769531, - 124.61022186279297 - ], - "size": [ - 211.60000610351562, - 58 - ], - "flags": {}, - "order": 21, - "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": 67, - "type": "ModelSamplingSD3", - "pos": [ - 358.3191833496094, - 608.4481201171875 - ], - "size": [ - 210, - 58 - ], - "flags": {}, - "order": 19, - "mode": 0, - "inputs": [ - { - "name": "model", - "type": "MODEL", - "link": 266 - } - ], - "outputs": [ - { - "name": "MODEL", - "type": "MODEL", - "links": [ - 252 - ], - "slot_index": 0 - } - ], - "properties": { - "Node name for S&R": "ModelSamplingSD3" - }, - "widgets_values": [ - 7 - ] - }, - { - "id": 73, - "type": "VAEDecodeTiled", - "pos": [ - 573.7927856445312, - 583.8195190429688 - ], - "size": [ - 210, - 150 - ], - "flags": {}, - "order": 24, - "mode": 0, - "inputs": [ - { - "name": "samples", - "type": "LATENT", - "link": 210 - }, - { - "name": "vae", - "type": "VAE", - "link": 226 - } - ], - "outputs": [ - { - "name": "IMAGE", - "type": "IMAGE", - "links": [ - 268 - ], - "slot_index": 0 - } - ], - "properties": { - "Node name for S&R": "VAEDecodeTiled" - }, - "widgets_values": [ - 256, - 64, - 64, - 8 - ] - }, - { - "id": 13, - "type": "SamplerCustomAdvanced", - "pos": [ - 815.8301391601562, - 241.12867736816406 - ], - "size": [ - 292.4319763183594, - 479.03521728515625 - ], - "flags": { - "collapsed": false - }, - "order": 23, - "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": [ - 210 - ], - "slot_index": 0, - "shape": 3 - }, - { - "name": "denoised_output", - "type": "LATENT", - "links": null, - "shape": 3 - } - ], - "properties": { - "Node name for S&R": "SamplerCustomAdvanced" - }, - "widgets_values": [] - } - ], - "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" - ], - [ - 210, - 13, - 0, - 73, - 0, - "LATENT" - ], - [ - 226, - 81, - 0, - 73, - 1, - "VAE" - ], - [ - 234, - 12, - 0, - 85, - 2, - "MODEL" - ], - [ - 236, - 11, - 0, - 82, - 2, - "CLIP" - ], - [ - 237, - 79, - 0, - 82, - 1, - "CLIP" - ], - [ - 238, - 10, - 0, - 81, - 2, - "VAE" - ], - [ - 239, - 80, - 0, - 81, - 1, - "VAE" - ], - [ - 240, - 86, - 0, - 85, - 0, - "MODEL" - ], - [ - 241, - 87, - 0, - 82, - 0, - "CLIP" - ], - [ - 242, - 88, - 0, - 81, - 0, - "VAE" - ], - [ - 251, - 97, - 0, - 85, - 1, - "MODEL" - ], - [ - 252, - 67, - 0, - 22, - 0, - "MODEL" - ], - [ - 265, - 82, - 0, - 44, - 0, - "CLIP" - ], - [ - 266, - 85, - 0, - 67, - 0, - "MODEL" - ], - [ - 267, - 85, - 0, - 17, - 0, - "MODEL" - ], - [ - 268, - 73, - 0, - 102, - 0, - "IMAGE" - ] - ], - "groups": [ - { - "id": 1, - "title": "MultiGPU", - "bounding": [ - -588.5792846679688, - 109.26154327392578, - 369.9709167480469, - 504.81884765625 - ], - "color": "#3f789e", - "font_size": 24, - "flags": {} - }, - { - "id": 2, - "title": "GGUFMultiGPU", - "bounding": [ - -956.1146850585938, - 105.08057403564453, - 359.0994567871094, - 514.8541259765625 - ], - "color": "#b06634", - "font_size": 24, - "flags": {} - }, - { - "id": 3, - "title": "Standard Loaders", - "bounding": [ - -214.26190185546875, - 114.71418762207031, - 372.4795227050781, - 510.67266845703125 - ], - "color": "#A88", - "font_size": 24, - "flags": {} - } - ], - "config": {}, - "extra": { - "ds": { - "scale": 0.7972024500001058, - "offset": [ - 1178.4994559657323, - 395.63671832414315 - ] - }, - "groupNodes": {}, - "ue_links": [], - "VHS_latentpreview": false, - "VHS_latentpreviewrate": 0 - }, - "version": 0.4 -} \ No newline at end of file diff --git a/examples/gguf/hunyuan_cpu_1gpu_gguf.json b/examples/gguf/hunyuan_cpu_1gpu_gguf.json deleted file mode 100644 index 223a9eb..0000000 --- a/examples/gguf/hunyuan_cpu_1gpu_gguf.json +++ /dev/null @@ -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 -} \ No newline at end of file diff --git a/examples/gguf/hunyuan_gguf_MultiGPU.json b/examples/gguf/hunyuan_gguf_MultiGPU.json deleted file mode 100755 index c5e2e22..0000000 --- a/examples/gguf/hunyuan_gguf_MultiGPU.json +++ /dev/null @@ -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 šŸŽ„šŸ…„šŸ…—šŸ…¢" - } - } -} \ No newline at end of file diff --git a/examples/gguf/hunyuan_gguf_distorch.json b/examples/gguf/hunyuan_gguf_distorch.json deleted file mode 100755 index 68f6bd1..0000000 --- a/examples/gguf/hunyuan_gguf_distorch.json +++ /dev/null @@ -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 -} \ No newline at end of file diff --git a/examples/multiGPU/sd15_2gpu_advanced.json b/examples/multiGPU/sd15_2gpu_advanced.json deleted file mode 100755 index a3727f8..0000000 --- a/examples/multiGPU/sd15_2gpu_advanced.json +++ /dev/null @@ -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 -} \ No newline at end of file diff --git a/examples/multiGPU/sdxl_2gpu.json b/examples/multiGPU/sdxl_2gpu.json deleted file mode 100644 index 6f357af..0000000 --- a/examples/multiGPU/sdxl_2gpu.json +++ /dev/null @@ -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 -} \ No newline at end of file diff --git a/nodes.py b/nodes.py index 822d059..4a75b78 100644 --- a/nodes.py +++ b/nodes.py @@ -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 diff --git a/pyproject.toml b/pyproject.toml index fa61829..49edddb 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -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] diff --git a/web/docs/CLIPLoaderGGUFDisTorchMultiGPU.md b/web/docs/CLIPLoaderGGUFDisTorchMultiGPU.md new file mode 100644 index 0000000..37869d2 --- /dev/null +++ b/web/docs/CLIPLoaderGGUFDisTorchMultiGPU.md @@ -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. diff --git a/web/docs/CheckpointLoaderNF4MultiGPU.md b/web/docs/CheckpointLoaderNF4MultiGPU.md new file mode 100644 index 0000000..be36d16 --- /dev/null +++ b/web/docs/CheckpointLoaderNF4MultiGPU.md @@ -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. | diff --git a/web/docs/DownloadAndLoadFlorence2ModelMultiGPU.md b/web/docs/DownloadAndLoadFlorence2ModelMultiGPU.md new file mode 100644 index 0000000..3dc02ac --- /dev/null +++ b/web/docs/DownloadAndLoadFlorence2ModelMultiGPU.md @@ -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. diff --git a/web/docs/DownloadAndLoadWav2VecModelMultiGPU.md b/web/docs/DownloadAndLoadWav2VecModelMultiGPU.md new file mode 100644 index 0000000..3d44ce8 --- /dev/null +++ b/web/docs/DownloadAndLoadWav2VecModelMultiGPU.md @@ -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. | diff --git a/web/docs/DualCLIPLoaderGGUFDisTorchMultiGPU.md b/web/docs/DualCLIPLoaderGGUFDisTorchMultiGPU.md new file mode 100644 index 0000000..fe30791 --- /dev/null +++ b/web/docs/DualCLIPLoaderGGUFDisTorchMultiGPU.md @@ -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. diff --git a/web/docs/FantasyTalkingModelLoaderMultiGPU.md b/web/docs/FantasyTalkingModelLoaderMultiGPU.md new file mode 100644 index 0000000..f93a5fb --- /dev/null +++ b/web/docs/FantasyTalkingModelLoaderMultiGPU.md @@ -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. | diff --git a/web/docs/Florence2ModelLoaderMultiGPU.md b/web/docs/Florence2ModelLoaderMultiGPU.md new file mode 100644 index 0000000..4aa3fca --- /dev/null +++ b/web/docs/Florence2ModelLoaderMultiGPU.md @@ -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. diff --git a/web/docs/LTXVLoaderMultiGPU.md b/web/docs/LTXVLoaderMultiGPU.md new file mode 100644 index 0000000..93a5fd8 --- /dev/null +++ b/web/docs/LTXVLoaderMultiGPU.md @@ -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. diff --git a/web/docs/LoadFluxControlNetMultiGPU.md b/web/docs/LoadFluxControlNetMultiGPU.md new file mode 100644 index 0000000..b17de02 --- /dev/null +++ b/web/docs/LoadFluxControlNetMultiGPU.md @@ -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. diff --git a/web/docs/LoadWanVideoClipTextEncoderMultiGPU.md b/web/docs/LoadWanVideoClipTextEncoderMultiGPU.md new file mode 100644 index 0000000..7050b2e --- /dev/null +++ b/web/docs/LoadWanVideoClipTextEncoderMultiGPU.md @@ -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`. | diff --git a/web/docs/LoadWanVideoT5TextEncoderMultiGPU.md b/web/docs/LoadWanVideoT5TextEncoderMultiGPU.md new file mode 100644 index 0000000..dc114c5 --- /dev/null +++ b/web/docs/LoadWanVideoT5TextEncoderMultiGPU.md @@ -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. | diff --git a/web/docs/MMAudioFeatureUtilsLoaderMultiGPU.md b/web/docs/MMAudioFeatureUtilsLoaderMultiGPU.md new file mode 100644 index 0000000..8020801 --- /dev/null +++ b/web/docs/MMAudioFeatureUtilsLoaderMultiGPU.md @@ -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. | diff --git a/web/docs/MMAudioModelLoaderMultiGPU.md b/web/docs/MMAudioModelLoaderMultiGPU.md new file mode 100644 index 0000000..44b6f57 --- /dev/null +++ b/web/docs/MMAudioModelLoaderMultiGPU.md @@ -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. | diff --git a/web/docs/MMAudioSamplerMultiGPU.md b/web/docs/MMAudioSamplerMultiGPU.md new file mode 100644 index 0000000..6c4b0b7 --- /dev/null +++ b/web/docs/MMAudioSamplerMultiGPU.md @@ -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. | diff --git a/web/docs/PulidEvaClipLoaderMultiGPU.md b/web/docs/PulidEvaClipLoaderMultiGPU.md new file mode 100644 index 0000000..e7696b8 --- /dev/null +++ b/web/docs/PulidEvaClipLoaderMultiGPU.md @@ -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. | diff --git a/web/docs/PulidInsightFaceLoaderMultiGPU.md b/web/docs/PulidInsightFaceLoaderMultiGPU.md new file mode 100644 index 0000000..1e297dc --- /dev/null +++ b/web/docs/PulidInsightFaceLoaderMultiGPU.md @@ -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. | diff --git a/web/docs/PulidModelLoaderMultiGPU.md b/web/docs/PulidModelLoaderMultiGPU.md new file mode 100644 index 0000000..96d372c --- /dev/null +++ b/web/docs/PulidModelLoaderMultiGPU.md @@ -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. | diff --git a/web/docs/QuadrupleCLIPLoaderGGUFDisTorchMultiGPU.md b/web/docs/QuadrupleCLIPLoaderGGUFDisTorchMultiGPU.md new file mode 100644 index 0000000..a3ab557 --- /dev/null +++ b/web/docs/QuadrupleCLIPLoaderGGUFDisTorchMultiGPU.md @@ -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. diff --git a/web/docs/TripleCLIPLoaderGGUFDisTorchMultiGPU.md b/web/docs/TripleCLIPLoaderGGUFDisTorchMultiGPU.md new file mode 100644 index 0000000..8bac893 --- /dev/null +++ b/web/docs/TripleCLIPLoaderGGUFDisTorchMultiGPU.md @@ -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. diff --git a/web/docs/UNetLoaderLP.md b/web/docs/UNetLoaderLP.md new file mode 100644 index 0000000..13f7c25 --- /dev/null +++ b/web/docs/UNetLoaderLP.md @@ -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. | diff --git a/web/docs/UnetLoaderGGUFAdvancedDisTorchMultiGPU.md b/web/docs/UnetLoaderGGUFAdvancedDisTorchMultiGPU.md new file mode 100644 index 0000000..74f3a49 --- /dev/null +++ b/web/docs/UnetLoaderGGUFAdvancedDisTorchMultiGPU.md @@ -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. diff --git a/web/docs/UnetLoaderGGUFDisTorchMultiGPU.md b/web/docs/UnetLoaderGGUFDisTorchMultiGPU.md new file mode 100644 index 0000000..f909c2d --- /dev/null +++ b/web/docs/UnetLoaderGGUFDisTorchMultiGPU.md @@ -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. diff --git a/web/docs/WanVideoBlockSwapMultiGPU.md b/web/docs/WanVideoBlockSwapMultiGPU.md new file mode 100644 index 0000000..db0dd25 --- /dev/null +++ b/web/docs/WanVideoBlockSwapMultiGPU.md @@ -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. | diff --git a/web/docs/WanVideoClipVisionEncodeMultiGPU.md b/web/docs/WanVideoClipVisionEncodeMultiGPU.md new file mode 100644 index 0000000..baa0330 --- /dev/null +++ b/web/docs/WanVideoClipVisionEncodeMultiGPU.md @@ -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. | diff --git a/web/docs/WanVideoControlnetLoaderMultiGPU.md b/web/docs/WanVideoControlnetLoaderMultiGPU.md new file mode 100644 index 0000000..4218dc2 --- /dev/null +++ b/web/docs/WanVideoControlnetLoaderMultiGPU.md @@ -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. | diff --git a/web/docs/WanVideoDecodeMultiGPU.md b/web/docs/WanVideoDecodeMultiGPU.md new file mode 100644 index 0000000..4828fcd --- /dev/null +++ b/web/docs/WanVideoDecodeMultiGPU.md @@ -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. | diff --git a/web/docs/WanVideoEncodeMultiGPU.md b/web/docs/WanVideoEncodeMultiGPU.md new file mode 100644 index 0000000..59978eb --- /dev/null +++ b/web/docs/WanVideoEncodeMultiGPU.md @@ -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. | diff --git a/web/docs/WanVideoImageToVideoEncodeMultiGPU.md b/web/docs/WanVideoImageToVideoEncodeMultiGPU.md new file mode 100644 index 0000000..8128c91 --- /dev/null +++ b/web/docs/WanVideoImageToVideoEncodeMultiGPU.md @@ -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. | diff --git a/web/docs/WanVideoModelLoaderMultiGPU.md b/web/docs/WanVideoModelLoaderMultiGPU.md new file mode 100644 index 0000000..09eb565 --- /dev/null +++ b/web/docs/WanVideoModelLoaderMultiGPU.md @@ -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. | diff --git a/web/docs/WanVideoSamplerMultiGPU.md b/web/docs/WanVideoSamplerMultiGPU.md new file mode 100644 index 0000000..feba211 --- /dev/null +++ b/web/docs/WanVideoSamplerMultiGPU.md @@ -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. | diff --git a/web/docs/WanVideoTextEncodeCachedMultiGPU.md b/web/docs/WanVideoTextEncodeCachedMultiGPU.md new file mode 100644 index 0000000..feacd8d --- /dev/null +++ b/web/docs/WanVideoTextEncodeCachedMultiGPU.md @@ -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). | diff --git a/web/docs/WanVideoTextEncodeMultiGPU.md b/web/docs/WanVideoTextEncodeMultiGPU.md new file mode 100644 index 0000000..aa8f7dc --- /dev/null +++ b/web/docs/WanVideoTextEncodeMultiGPU.md @@ -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`. | diff --git a/web/docs/WanVideoTextEncodeSingleMultiGPU.md b/web/docs/WanVideoTextEncodeSingleMultiGPU.md new file mode 100644 index 0000000..7782525 --- /dev/null +++ b/web/docs/WanVideoTextEncodeSingleMultiGPU.md @@ -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. | diff --git a/web/docs/WanVideoTinyVAELoaderMultiGPU.md b/web/docs/WanVideoTinyVAELoaderMultiGPU.md new file mode 100644 index 0000000..f37ee06 --- /dev/null +++ b/web/docs/WanVideoTinyVAELoaderMultiGPU.md @@ -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. | diff --git a/web/docs/WanVideoUni3C_ControlnetLoaderMultiGPU.md b/web/docs/WanVideoUni3C_ControlnetLoaderMultiGPU.md new file mode 100644 index 0000000..f4fa2ca --- /dev/null +++ b/web/docs/WanVideoUni3C_ControlnetLoaderMultiGPU.md @@ -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. | diff --git a/web/docs/WanVideoVACEEncodeMultiGPU.md b/web/docs/WanVideoVACEEncodeMultiGPU.md new file mode 100644 index 0000000..9624ad9 --- /dev/null +++ b/web/docs/WanVideoVACEEncodeMultiGPU.md @@ -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. | diff --git a/web/docs/WanVideoVAELoaderMultiGPU.md b/web/docs/WanVideoVAELoaderMultiGPU.md new file mode 100644 index 0000000..4ca01d5 --- /dev/null +++ b/web/docs/WanVideoVAELoaderMultiGPU.md @@ -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. | diff --git a/web/docs/Wav2VecModelLoaderMultiGPU.md b/web/docs/Wav2VecModelLoaderMultiGPU.md new file mode 100644 index 0000000..b4603b1 --- /dev/null +++ b/web/docs/Wav2VecModelLoaderMultiGPU.md @@ -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. | diff --git a/wrappers.py b/wrappers.py index 9abf9bf..42ab83c 100644 --- a/wrappers.py +++ b/wrappers.py @@ -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)"""