import os import folder_paths from .common import get_dtype_by_name class UL_Common_Diffusers_Checkpoint_Loader: @classmethod def INPUT_TYPES(s): return { "required": { "ckpt_name": (['None'] + folder_paths.get_filename_list("checkpoints"), {"tooltip": 'Checkpoints, now for sd1.5 and sdxl (including inpaint model). For inpaint model, model name must contain inpaint.'}), "unet_only": ("BOOLEAN", {"default": False, "label_on": "yes", "label_off": "no", "tooltip": "Decrease resource comsuption."}), "dtype": (["auto","fp16","bf16","fp32", "fp8_e4m3fn", "fp8_e4m3fnuz", "fp8_e5m2", "fp8_e5m2fnuz"],{"default":"auto"}), } } RETURN_TYPES = ("Diffusers_Model", "STRING", ) RETURN_NAMES = ("diffusers_model", "ckpt_name", ) FUNCTION = "UL_Common_Diffusers_Checkpoint_Loader" CATEGORY = "UL Group/Common Loader" TITLE = "Diffusers Load Checkpoint" DESCRIPTION = "Use diffusers library to load single_file checkpoint, now support sd1.5、sd2.1 and sdxl, recognize model type by size (1.5GB < sd1.5 & sd2.1 < 6GB, 6GB < sdxl < 7GB)、inapint (inpaint in ckpt_name) and sd2.1 (sd21 in ckpt_name)." def UL_Common_Diffusers_Checkpoint_Loader(self, ckpt_name, dtype, debug=True, unet_only=False): dtype = get_dtype_by_name(dtype) ckpt_path = folder_paths.get_full_path_or_raise("checkpoints", ckpt_name) if 1610612736 < (os.stat(ckpt_path)).st_size < 6442450944: # 1.5GB