ComfyUI 的模型系统负责加载、管理和执行扩散模型及其相关组件(VAE、CLIP、ControlNet 等)。该系统处理内存优化、模型打补丁(通过 LoRA 等技术)并确保在不同硬件配置下的高效执行。
有关在工作流中执行模型的更多信息,请参阅执行系统。有关模型内存管理方式的详细信息,请参阅内存管理。
模型系统围绕几个关键组件构建,这些组件协同工作以处理模型加载、管理和执行的各个方面。
来源: comfy/model_patcher.py comfy/model_management.py comfy/model_base.py comfy/lora.py nodes.py534-571
ModelPatcher 类是管理模型和应用各种补丁的核心组件。
ModelPatcher 封装了模型,并提供了几个关键功能:
当通过像 CheckpointLoaderSimple 这样的节点加载检查点时,会创建一个 ModelPatcher 实例来管理该模型。
来源: comfy/model_patcher.py nodes.py551-571
BaseModel 类为 ComfyUI 中的不同类型的扩散模型提供了基础。
不同的模型类型使用不同的采样策略和计算。ModelType 枚举定义了可用的类型:
BaseModel 实现的主要方法是 apply_model,该方法负责运行扩散过程的单个步骤。
来源: comfy/model_base.py comfy/model_base.py
ComfyUI 会根据可用 VRAM 智能地管理模型的加载和卸载。
模型管理系统通过以下主要功能工作:
load_models_gpu():将模型加载到 GPU,决定每个模型的 VRAM 占用量free_memory():在需要 VRAM 来加载新模型时卸载模型该系统还根据硬件功能和用户设置处理不同的模型精度模式(fp32、fp16、bf16)。
来源: comfy/model_management.py comfy/model_management.py comfy/model_management.py
ComfyUI 通过配置系统支持各种模型架构。
每个模型架构类定义了:
加载检查点时,ComfyUI 会检测架构类型并创建适当的模型实例。
来源: comfy/supported_models.py comfy/supported_models.py comfy/supported_models_base.py
除了主要的扩散 UNet 之外,模型系统还管理着几个重要的模型组件。
这些组件在生成过程中协同工作:
每个组件都有自己的加载器节点,并在 ModelPatcher 系统中进行管理。
来源: comfy/sd.py comfy/sd.py nodes.py nodes.py776-791
LoRA(Low-Rank Adaptation)系统允许在不更改模型原始权重的情况下修改模型。
LoRA 打补丁过程包括:
ComfyUI 支持各种 LoRA 格式,并提供可调节的强度参数来控制 LoRA 对模型的强大程度。
来源: comfy/lora.py comfy/model_patcher.py nodes.py631-671
模型执行时,会经历以下过程:
执行过程处理:
这种协调流程使 ComfyUI 能够有效地管理生成过程中的模型资源。
来源: comfy/model_base.py comfy/model_patcher.py execution.py266-392
模型可以通过多种影响其行为的选项进行配置
这些选项允许
诸如区域提示、交叉注意力控制和注意力精炼等高级技术通过这些选项实现。
来源: comfy/model_patcher.py51-83 comfy/model_base.py146-161
ComfyUI 可以自动从检查点文件中检测模型类型
模型检测系统会检查状态字典的键和配置以确定
这使得 ComfyUI 能够以最少的用户配置加载检查点。
来源: comfy/model_detection.py9-34 comfy/model_detection.py37-79 comfy/sd.py566-605
ComfyUI 中的模型系统是一个复杂的框架,用于管理不同架构和硬件约束下的 AI 模型。它提供
通过理解模型系统,用户和开发人员可以更好地利用 ComfyUI 的能力来创建和微调 AI 图像生成工作流程。
来源: comfy/model_patcher.py comfy/model_base.py comfy/model_management.py comfy/sd.py comfy/lora.py