Files
CavinHuang-comfyui-nodes-docs/docs/Diffusers Hub Model Down-Loader.md
2024-05-26 20:35:16 +08:00

3.5 KiB

Documentation

WAS_Diffusers_Hub_Model_Loader节点旨在方便从Hugging Face模型中心加载高级机器学习模型。它简化了下载和初始化模型、clips和VAEs的过程,使用户能够快速将这些组件集成到他们的工作流程中。此节点对于需要复杂模型能力的自然语言处理和生成性AI等任务至关重要。

Input types

Required

  • repo_id
    • repo_id参数对于识别Hugging Face hub上的具体模型存储库至关重要。它在节点的执行中起着关键作用,通过将下载过程指向正确的来源,确保准确检索所需的模型。
    • Comfy dtype: STRING
    • Python dtype: str

Optional

  • revision
    • revision参数允许指定存储库中模型的特定版本。对于需要特定模型迭代以完成其任务的用户来说,它很重要,确保了模型性能的可重复性和一致性。
    • Comfy dtype: STRING
    • Python dtype: Union[str, None]

Output types

  • model
    • 模型输出提供了加载的机器学习模型,可供推理或进一步处理使用。它是节点功能的核心组件,为用户提供了直接访问模型预测能力的机会。
    • Comfy dtype: MODEL
    • Python dtype: Any
  • clip
    • clip输出是通常与模型一起使用的组件,用于涉及文本和图像交互的任务。对于利用该节点进行高级自然语言处理应用的用户来说,它非常重要。
    • Comfy dtype: CLIP
    • Python dtype: Any
  • vae
    • vae输出是一种变分自编码器,用于生成任务的神经网络类型。对于希望基于学习到的数据集分布生成新数据实例的用户来说,它是一个宝贵的资产。
    • Comfy dtype: VAE
    • Python dtype: Any
  • name_string
    • name_string输出以字符串形式返回存储库ID,为加载的模型提供人类可读的标识符。它在工作流中的引用和记录目的中非常有用。
    • Comfy dtype: TEXT_TYPE
    • Python dtype: str

Usage tips

  • Infra type: CPU

Source code

class WAS_Diffusers_Hub_Model_Loader:

    @classmethod
    def INPUT_TYPES(s):
        return {'required': {'repo_id': ('STRING', {'multiline': False}), 'revision': ('STRING', {'default': 'None', 'multiline': False})}}
    RETURN_TYPES = ('MODEL', 'CLIP', 'VAE', TEXT_TYPE)
    RETURN_NAMES = ('MODEL', 'CLIP', 'VAE', 'NAME_STRING')
    FUNCTION = 'load_hub_checkpoint'
    CATEGORY = 'WAS Suite/Loaders/Advanced'

    def load_hub_checkpoint(self, repo_id=None, revision=None):
        if revision in ['', 'None', 'none', None]:
            revision = None
        model_path = comfy_paths.get_folder_paths('diffusers')[0]
        self.download_diffusers_model(repo_id, model_path, revision)
        diffusersLoader = nodes.DiffusersLoader()
        (model, clip, vae) = diffusersLoader.load_checkpoint(os.path.join(model_path, repo_id))
        return (model, clip, vae, repo_id)

    def download_diffusers_model(self, repo_id, local_dir, revision=None):
        if 'huggingface-hub' not in packages():
            install_package('huggingface_hub')
        from huggingface_hub import snapshot_download
        model_path = os.path.join(local_dir, repo_id)
        ignore_patterns = ['*.ckpt', '*.safetensors', '*.onnx']
        snapshot_download(repo_id=repo_id, repo_type='model', local_dir=model_path, revision=revision, use_auth_token=False, ignore_patterns=ignore_patterns)