05-模型加载与使用¶
⚠️ 时效性说明:本章涉及前沿模型/价格/榜单等信息,可能随版本快速变化;请以论文原文、官方发布页和 API 文档为准。
🎯 学习目标¶
- 了解 Stable Diffusion 模型家族及各代特点
- 掌握 Checkpoint、LoRA、ControlNet、IP-Adapter 等模型的加载与使用
- 理解模型文件格式与安全性差异
- 学会多模型组合与权重调节
- 了解模型下载的常用资源站
5.1 Stable Diffusion 模型家族¶
5.1.1 模型代际概览¶
| 模型 | 发布时间 | 基础分辨率 | 参数量 | 架构特点 | 推荐显存 |
|---|---|---|---|---|---|
| SD 1.5 | 2022.10 | 512×512 | ~983M | 经典 UNet + CLIP | 4GB+ |
| SD 2.1 | 2022.12 | 512/768 | 865M | OpenCLIP 编码器 | 6GB+ |
| SDXL | 2023.07 | 1024×1024 | ~6.6B(3.5B Base + 3.1B Refiner) | 双编码器+Refiner | 8GB+ |
| SD3 | 2024.06 | 1024×1024 | 2B/8B | MMDiT 架构、三编码器 | 8GB+ |
| Flux.1 | 2024.08 | 1024×1024 | 12B | DiT 架构、超强文字理解 | 12GB+ |
5.1.2 SD 1.5¶
经典入门模型。生态最成熟,拥有最丰富的 LoRA、ControlNet 和衍生模型(如 RealisticVision、DreamShaper)。
优点: - 显存要求低,4GB 即可运行 - 模型生态丰富(数万个 LoRA 和衍生 Checkpoint) - 速度快,适合快速迭代
局限: - 原生分辨率 512×512,高分辨率需要 Hires Fix - 对复杂提示词理解能力有限 - 人体解剖学偶尔出错
5.1.3 SDXL¶
高分辨率主力模型。原生 1024×1024,画质大幅提升。
特点: - 双 CLIP 编码器(CLIP-ViT-L + OpenCLIP-ViT-G) - 可选 Refiner 模型进行精修 - 更好的构图和细节表现
ComfyUI 中的 SDXL 节点:
CheckpointLoaderSimple (加载 SDXL Base)
├── MODEL
├── CLIP (双编码器融合)
└── VAE
CLIPTextEncodeSDXL (SDXL 专用编码器)
├── text_g (对应 OpenCLIP-ViT-G)
├── text_l (对应 CLIP-ViT-L)
├── width, height (目标尺寸)
└── crop_w, crop_h (裁剪偏移)
💡 提示:大多数情况下可以直接用普通的 CLIPTextEncode 节点配合 SDXL 模型,它会自动处理双编码器。使用 CLIPTextEncodeSDXL 可以获得更精细的控制。
5.1.4 SD3 / SD3.5¶
新一代架构(MMDiT — Multimodal Diffusion Transformer):
- 使用 Transformer 替代传统 UNet
- 三个文本编码器(CLIP-L + CLIP-G + T5-XXL)
- 改进的文本理解能力
- 更好的构图和手部表现
5.1.5 Flux.1¶
当前最强开源模型之一(由 Black Forest Labs 开发):
| 版本 | 许可 | 特点 | 推荐步数 |
|---|---|---|---|
| Flux.1 Dev | 开源(非商用) | 高质量,支持 Guidance | 20-30 |
| Flux.1 Schnell | Apache 2.0 | 4步快速生成 | 4 |
| Flux.1 Pro | 商用API | 最高质量 | - |
Flux 在 ComfyUI 中的加载:
方式一:合并 Checkpoint(推荐,简单)
CheckpointLoaderSimple → 加载 flux1-dev-fp8.safetensors
直接使用 KSampler,设置 cfg: 3.5(dev)或 cfg: 1.0(schnell)
方式二:分体加载(灵活,可单独替换组件)
UNETLoader → 加载 Flux UNet 模型
DualCLIPLoader → 加载 clip_l + t5xxl 双编码器
VAELoader → 加载 Flux VAE (ae.safetensors)
⚠️ 注意:Flux 使用 Rectified Flow 而非传统 Classifier-Free Guidance,CFG 值通常设置得较低(dev: 3-5,schnell: 1.0)。负向提示词对 Flux 效果有限,建议专注于优化正向提示词。
5.2 模型文件格式¶
5.2.1 .safetensors vs .ckpt¶
| 特性 | .safetensors | .ckpt |
|---|---|---|
| 安全性 | ✅ 安全(仅包含张量数据) | ⚠️ 可能包含恶意代码(使用 pickle) |
| 加载速度 | 更快(零拷贝反序列化) | 较慢 |
| 文件大小 | 相同或略小 | 相同或略大 |
| 兼容性 | 现代标准 | 传统格式 |
| 推荐度 | ⭐⭐⭐⭐⭐ 强烈推荐 | ⭐⭐ 尽量避免 |
⚠️ 注意:永远优先使用 .safetensors 格式。.ckpt 文件可能包含恶意 Python 代码,加载时可能执行任意代码。避免从不可信来源下载 .ckpt 文件。
5.2.2 其他格式¶
- .bin:PyTorch 原生格式,较少使用
- .gguf:量化格式,用于降低模型大小和显存需求
- .pt:PyTorch 模型格式
5.3 Checkpoint 模型加载与切换¶
5.3.1 基本加载¶
将模型文件放入 ComfyUI/models/checkpoints/ 目录,然后在 CheckpointLoaderSimple 节点的下拉菜单中选择:
CheckpointLoaderSimple
├── ckpt_name: [选择模型文件]
├── 输出 MODEL ● ─→ 连接到采样器
├── 输出 CLIP ● ─→ 连接到文本编码器
└── 输出 VAE ● ─→ 连接到 VAE 解码器
5.3.2 模型切换技巧¶
- 目录组织:将不同类别的模型放入子目录以便管理
checkpoints/
├── sd15/
│ ├── v1-5-pruned-emaonly.safetensors
│ └── realisticVision_v51.safetensors
├── sdxl/
│ ├── sd_xl_base_1.0.safetensors
│ └── juggernautXL_v9.safetensors
└── flux/
└── flux1-dev.safetensors
```
- **外部路径链接**:在 `extra_model_paths.yaml` 中配置外部模型目录,避免重复存储
```yaml
# ComfyUI/extra_model_paths.yaml
other_ui:
base_path: D:/AI-Models/
checkpoints: checkpoints/
loras: loras/
vae: vae/
controlnet: controlnet/
```
> 💡 **提示**:配置 `extra_model_paths.yaml` 可以让 ComfyUI 和其他 SD 前端共享同一份模型文件,节省磁盘空间。
---
## 5.4 LoRA 模型
### 5.4.1 什么是 LoRA
**LoRA(Low-Rank Adaptation,低秩适配)** 是一种高效的模型微调技术。它不修改原始模型权重,而是训练一组小的适配层(通常只有几十 MB),在推理时与基础模型动态合并。
```text
┌─────────────────────────────────────────┐
│ 原始模型权重(冻结,不修改) │
│ ┌──────────────────────────────┐ │
│ │ 原始权重矩阵 W (d×d) │ │
│ │ │ │ │
│ │ ┌────┴────┐ │ │
│ │ │ LoRA │ │ │
│ │ │ A (d×r) × B (r×d) │ │
│ │ │ r << d (低秩) │ │
│ │ └─────────┘ │ │
│ │ │ │
│ │ 最终权重 = W + α × A × B │ │
│ └──────────────────────────────┘ │
└─────────────────────────────────────────┘
优势: - 文件小(通常 10-200MB) - 可叠加多个 LoRA - 可调节强度 - 种类丰富(风格、角色、概念、姿势等)
5.4.2 如何下载和使用 LoRA¶
下载源: - Civitai:最大的 LoRA 社区 - LiblibAI:国内模型社区 - Hugging Face:开源模型平台
安装:将 .safetensors 文件放入 ComfyUI/models/loras/ 目录。
使用节点:
CheckpointLoaderSimple
├── MODEL ──→ LoraLoader.model
└── CLIP ───→ LoraLoader.clip
LoraLoader
├── lora_name: [选择 LoRA 文件]
├── strength_model: 0.8 (模型权重)
├── strength_clip: 0.8 (CLIP 权重)
├── 输出 MODEL ──→ KSampler.model
└── 输出 CLIP ───→ CLIPTextEncode.clip
5.4.3 LoRA 权重调节¶
| strength_model | 效果 |
|---|---|
| 0.0 | 完全不应用 LoRA |
| 0.3-0.5 | 微弱影响,适合风格微调 |
| 0.6-0.8 | 中等影响,推荐起始值 |
| 0.9-1.0 | 强烈影响,完全应用 |
| 1.0+ | 过度应用,可能导致过拟合/失真 |
💡 提示:
strength_model和strength_clip可以设置为不同的值。通常建议两者保持一致,但某些 LoRA 可能需要分别调节。
5.4.4 多 LoRA 叠加使用¶
通过串联多个 LoRALoader 节点实现叠加:
CheckpointLoader
├── MODEL ──→ LoraLoader_1.model ──→ LoraLoader_2.model ──→ KSampler
└── CLIP ───→ LoraLoader_1.clip ──→ LoraLoader_2.clip ──→ CLIPTextEncode
LoraLoader_1: style_lora.safetensors (strength: 0.7)
LoraLoader_2: character_lora.safetensors (strength: 0.6)
叠加注意事项: - 多个 LoRA 叠加时,建议适当降低每个 LoRA 的权重 - 同类 LoRA(如两个风格 LoRA)叠加可能冲突 - 互补型 LoRA(风格 + 角色)叠加效果通常较好 - 建议不超过 3-4 个 LoRA 同时使用
5.5 ControlNet¶
5.5.1 ControlNet 原理简介¶
ControlNet 是一种条件控制技术,通过额外的输入图像(如边缘图、深度图、姿态图)来引导图像生成的构图和结构。
┌─────────────┐ ┌──────────────┐ ┌─────────────┐
│ 输入图像 │────▶│ 预处理器 │────▶│ 控制图像 │
│ (参考照片) │ │ (Canny/Depth) │ │ (边缘/深度) │
└─────────────┘ └──────────────┘ └──────┬──────┘
│
┌──────────────┐ │
│ ControlNet │◀────────────┘
│ 模型 │
│ │──── 条件控制 ──→ KSampler
└──────────────┘
5.5.2 预处理器类型¶
| 预处理器 | 检测内容 | 适用场景 | 控制效果 |
|---|---|---|---|
| Canny | 边缘轮廓 | 精确轮廓控制 | 保持物体边缘形状 |
| Depth | 深度信息 | 空间层次控制 | 保持远近关系和构图 |
| OpenPose | 人体骨架 | 人物姿态控制 | 保持人物动作姿态 |
| Scribble | 手绘草图 | 草图创意转化 | 将涂鸦转为成品图 |
| LineArt | 线稿轮廓 | 线稿上色 | 保持精细线稿结构 |
| SoftEdge | 柔和边缘 | 柔和形状控制 | 比 Canny 更自然 |
| NormalMap | 法线方向 | 光影结构控制 | 保持3D光照关系 |
| Segmentation | 语义分割 | 区域语义控制 | 控制图像各区域含义 |
| Tile | 原始细节 | 高分辨率修复 | 保留并增强细节 |
| IP2P | 指令编辑 | 指令式图像编辑 | 通过指令修改图像 |
5.5.3 ControlNet 节点配置¶
ControlNetLoader
└── control_net: [选择 ControlNet 模型]
预处理器节点 (如 CannyEdgePreprocessor)
├── image: [LoadImage 输出]
└── IMAGE: 预处理后的控制图
ControlNetApply / ControlNetApplyAdvanced
├── conditioning: [CLIPTextEncode 输出]
├── control_net: [ControlNetLoader 输出]
├── image: [预处理器输出的控制图]
├── strength: 0.8 (控制强度)
└── CONDITIONING → KSampler.positive
关键参数:
| 参数 | 说明 | 推荐值 |
|---|---|---|
| strength | 控制强度 | 0.5-1.0 |
| start_percent | 开始生效的步数比例 | 0.0 |
| end_percent | 结束生效的步数比例 | 1.0 |
5.5.4 多 ControlNet 组合¶
可以串联多个 ControlNet 实现复合控制:
CLIPTextEncode.CONDITIONING
→ ControlNetApply (Depth, strength=0.6)
→ ControlNetApply (OpenPose, strength=0.8)
→ KSampler.positive
⚠️ 注意:多 ControlNet 叠加时注意控制总强度,过多的控制可能导致模型"困惑",生成质量下降。
5.6 IP-Adapter¶
5.6.1 风格迁移与图像参考¶
IP-Adapter 允许你使用参考图像来引导生成图像的风格、构图或主题:
- 风格参考:让生成图像模仿参考图的美术风格
- 内容参考:让生成图像包含参考图中的元素
- 面部参考:让生成图像的人脸与参考人脸相似
5.6.2 配置与使用方法¶
所需文件: - IP-Adapter 模型文件 → models/ipadapter/ - CLIP Vision 模型 → models/clip_vision/
节点配置:
CLIPVisionLoader
└── clip_name: [CLIP Vision 模型]
CLIPVisionEncode
├── clip_vision: [CLIPVisionLoader 输出]
├── image: [参考图像]
└── CLIP_VISION_OUTPUT
IPAdapterApply
├── model: [CheckpointLoader 的 MODEL]
├── ipadapter: [IPAdapterModelLoader 输出]
├── image: [参考图像]
├── weight: 0.8 (影响强度)
├── weight_type: standard
└── MODEL → KSampler.model
weight 参数调节:
| weight | 效果 |
|---|---|
| 0.3-0.5 | 轻微参考,保持创意空间 |
| 0.6-0.8 | 中等参考,平衡创意与忠实度 |
| 0.9-1.0 | 强参考,高度忠实于参考图 |
| 1.0+ | 过度参考,可能丢失文本控制 |
5.7 VAE 选择与配置¶
5.7.1 什么是 VAE¶
VAE(Variational Autoencoder,变分自编码器) 负责在像素空间和潜空间之间转换:
- 编码(Encode):将像素图像压缩为潜空间表示(用于img2img输入)
- 解码(Decode):将潜空间表示还原为像素图像(最终输出)
5.7.2 常用 VAE¶
| VAE | 适用模型 | 特点 |
|---|---|---|
| vae-ft-mse-840000 | SD 1.5 | 经典 VAE,色彩准确 |
| sdxl_vae | SDXL | SDXL 专用 VAE |
| Checkpoint 自带 | 通用 | 多数 Checkpoint 已内置 VAE |
| ae.safetensors | Flux | Flux 专用 VAE |
5.7.3 何时需要单独加载 VAE¶
- Checkpoint 自带 VAE 效果不理想(色彩偏灰、细节丢失)
- 特定模型推荐使用外部 VAE
- 需要测试不同 VAE 对输出的影响
# 单独加载 VAE
VAELoader
└── vae_name: vae-ft-mse-840000.safetensors
# 将其输出连接到 VAEDecode(替代 CheckpointLoader 自带的 VAE)
VAELoader.VAE → VAEDecode.vae
5.8 模型资源网站¶
| 网站 | 地址 | 特点 |
|---|---|---|
| Civitai | https://civitai.com/ | 最大的 SD 模型社区,模型种类丰富 |
| Hugging Face | https://huggingface.co/ | 开源模型平台,官方模型发布地 |
| LiblibAI | https://www.liblib.art/ | 国内模型社区,中文友好 |
| Tensor.Art | https://tensor.art/ | 在线生成平台兼模型社区 |
| OpenArt | https://openart.ai/ | ComfyUI 工作流分享平台 |
💡 提示:从社区下载模型时,注意查看模型的许可证条款(尤其是商用限制)。推荐关注模型的下载量和社区评价来判断质量。
练习¶
- 下载并加载一个 SD 1.5 Checkpoint 和一个 SDXL Checkpoint,对比同一提示词的生成效果
- 下载两个不同风格的 LoRA,分别测试单独使用和叠加使用的效果
- 使用 ControlNet Canny 和 Depth 分别控制同一张参考图的生成
- 配置
extra_model_paths.yaml,添加一个外部模型目录 - 尝试使用 IP-Adapter 进行风格迁移
延伸阅读¶
- LoRA 论文:Low-Rank Adaptation of Large Language Models
- ControlNet 论文
- IP-Adapter 论文
- Stable Diffusion 模型原理
- Flux.1 技术报告
- safetensors 格式介绍
📌 下一章:06-高级工作流 —— 学习 Hires Fix、放大、视频生成等高级工作流
最后更新日期:2026-02-12 适用版本:ComfyUI实战教程 v2026