Spaces:
Configuration error
Configuration error
| import json | |
| import os | |
| import sys | |
| from nodes import MAX_RESOLUTION | |
| import comfy.utils | |
| import shutil | |
| import comfy.samplers | |
| import folder_paths | |
| WEB_DIRECTORY = "./web" | |
| AUTHOR_NAME = u"MinusZone" | |
| CATEGORY_NAME = f"{AUTHOR_NAME} - FluxExt" | |
| import importlib | |
| NODE_CLASS_MAPPINGS = { | |
| } | |
| NODE_DISPLAY_NAME_MAPPINGS = { | |
| } | |
| from . import mz_fluxext_core | |
| import importlib | |
| class MZ_Flux1PartialLoad_Patch: | |
| def INPUT_TYPES(s): | |
| return {"required": { | |
| "model": ("MODEL", ), | |
| "double_blocks_cuda_size": ("INT", {"min": 0, "max": 16, "default": 7}), | |
| "single_blocks_cuda_size": ("INT", {"min": 0, "max": 37, "default": 7}), | |
| }} | |
| RETURN_TYPES = ("MODEL",) | |
| FUNCTION = "load_unet" | |
| CATEGORY = f"{CATEGORY_NAME}" | |
| def load_unet(self, **kwargs): | |
| from . import mz_fluxext_core | |
| importlib.reload(mz_fluxext_core) | |
| return mz_fluxext_core.Flux1PartialLoad_Patch(kwargs) | |
| NODE_CLASS_MAPPINGS["MZ_Flux1PartialLoad_Patch"] = MZ_Flux1PartialLoad_Patch | |
| NODE_DISPLAY_NAME_MAPPINGS["MZ_Flux1PartialLoad_Patch"] = f"{AUTHOR_NAME} - Flux1PartialLoad_Patch" | |
| import nodes | |
| class MZ_Flux1CheckpointLoaderNF4_cpuDynOffload: | |
| def INPUT_TYPES(s): | |
| return {"required": { | |
| "ckpt_name": (folder_paths.get_filename_list("checkpoints"), ), | |
| "double_blocks_cuda_size": ("INT", {"min": 0, "max": 16, "default": 7}), | |
| "single_blocks_cuda_size": ("INT", {"min": 0, "max": 37, "default": 7}), | |
| }} | |
| RETURN_TYPES = ("MODEL", "CLIP", "VAE") | |
| FUNCTION = "load_checkpoint" | |
| CATEGORY = f"{CATEGORY_NAME}" | |
| def load_checkpoint(self, ckpt_name, **kwargs): | |
| CheckpointLoaderNF4 = nodes.NODE_CLASS_MAPPINGS.get( | |
| "CheckpointLoaderNF4", None) | |
| if CheckpointLoaderNF4 is None: | |
| # 必须安装 https://github.com/comfyanonymous/ComfyUI_bitsandbytes_NF4 | |
| raise Exception( | |
| "Please install comfyanonymous/ComfyUI_bitsandbytes_NF4 to use this node.") | |
| model, clip, vae = CheckpointLoaderNF4().load_checkpoint(ckpt_name) | |
| return mz_fluxext_core.Flux1PartialLoad_Patch({ | |
| "model": model, | |
| "double_blocks_cuda_size": kwargs.get("double_blocks_cuda_size", 7), | |
| "single_blocks_cuda_size": kwargs.get("single_blocks_cuda_size", 7), | |
| })[0], clip, vae | |
| NODE_CLASS_MAPPINGS["MZ_Flux1CheckpointLoaderNF4_cpuDynOffload"] = MZ_Flux1CheckpointLoaderNF4_cpuDynOffload | |
| NODE_DISPLAY_NAME_MAPPINGS[ | |
| "MZ_Flux1CheckpointLoaderNF4_cpuDynOffload"] = f"{AUTHOR_NAME} - Flux1CheckpointLoaderNF4_cpuDynOffload" | |
| class MZ_Flux1CheckpointLoader_cpuDynOffload: | |
| def INPUT_TYPES(s): | |
| return {"required": { | |
| "ckpt_name": (folder_paths.get_filename_list("checkpoints"), ), | |
| "double_blocks_cuda_size": ("INT", {"min": 0, "max": 16, "default": 7}), | |
| "single_blocks_cuda_size": ("INT", {"min": 0, "max": 37, "default": 7}), | |
| }} | |
| RETURN_TYPES = ("MODEL", "CLIP", "VAE") | |
| FUNCTION = "load_checkpoint" | |
| CATEGORY = f"{CATEGORY_NAME}" | |
| def load_checkpoint(self, ckpt_name, **kwargs): | |
| model, clip, vae = nodes.CheckpointLoaderSimple().load_checkpoint( | |
| ckpt_name=ckpt_name) | |
| return mz_fluxext_core.Flux1PartialLoad_Patch({ | |
| "model": model, | |
| "double_blocks_cuda_size": kwargs.get("double_blocks_cuda_size", 7), | |
| "single_blocks_cuda_size": kwargs.get("single_blocks_cuda_size", 7), | |
| })[0], clip, vae | |
| NODE_CLASS_MAPPINGS["MZ_Flux1CheckpointLoader_cpuDynOffload"] = MZ_Flux1CheckpointLoader_cpuDynOffload | |
| NODE_DISPLAY_NAME_MAPPINGS[ | |
| "MZ_Flux1CheckpointLoader_cpuDynOffload"] = f"{AUTHOR_NAME} - Flux1CheckpointLoader_cpuDynOffload" | |
| class MZ_Flux1UnetLoader_cpuDynOffload: | |
| def INPUT_TYPES(s): | |
| args = nodes.UNETLoader().INPUT_TYPES() | |
| args["required"]["double_blocks_cuda_size"] = ( | |
| "INT", {"min": 0, "max": 16, "default": 7}) | |
| args["required"]["single_blocks_cuda_size"] = ( | |
| "INT", {"min": 0, "max": 37, "default": 7}) | |
| return args | |
| RETURN_TYPES = ("MODEL",) | |
| FUNCTION = "load_unet" | |
| CATEGORY = f"{CATEGORY_NAME}" | |
| def load_unet(self, **kwargs): | |
| model = nodes.UNETLoader().load_unet( | |
| **{k: v for k, v in kwargs.items() if k != "double_blocks_cuda_size" and k != "single_blocks_cuda_size"})[0] | |
| return mz_fluxext_core.Flux1PartialLoad_Patch({ | |
| "model": model, | |
| "double_blocks_cuda_size": kwargs.get("double_blocks_cuda_size", 7), | |
| "single_blocks_cuda_size": kwargs.get("single_blocks_cuda_size", 7), | |
| }) | |
| NODE_CLASS_MAPPINGS["MZ_Flux1UnetLoader_cpuDynOffload"] = MZ_Flux1UnetLoader_cpuDynOffload | |
| NODE_DISPLAY_NAME_MAPPINGS[ | |
| "MZ_Flux1UnetLoader_cpuDynOffload"] = f"{AUTHOR_NAME} - Flux1UnetLoader_cpuDynOffload" | |