一句话定义
ComfyUI 的"弹药库"是一个按类型分目录的 models/ 文件夹:checkpoint、lora、vae、clip、unet、upscale_models、controlnet 各归其位;文件格式首选 safetensors(不可执行代码,更安全)。
为什么重要
模型放错目录 = 加载器列表永远是空的;下载错格式 = 潜在安全风险;组织混乱 = 半年后自己都找不到。这页知识决定你与整个模型生态的"接口"。
前置知识
安装与首次启动:三种途径与硬件对照(已完成安装)。
核心概念
文件格式:
.safetensors—— 推荐格式,纯张量存储,无法携带可执行代码(对比.ckpt/.pt/.pth是 Python pickle,存在代码注入风险,详见 安全:不可信工作流与 pickle 风险)。.gguf—— 量化格式,部分加载器(custom node)支持,大模型省显存的常见选择。
模型类型 → 存放目录对照(以 SD1.5/SDXL checkpoint 为例,大小为数量级参考):
| 模型类型 | 目录 | 是什么 | 典型大小 |
|---|---|---|---|
| checkpoint | models/checkpoints/ | UNet+CLIP+VAE 打包的全能文件 | 2-7 GB |
| unet/diffusion_model | models/unet/ | 单独的主干(Flux 等拆分发布) | 12-24 GB |
| text encoder | models/clip/ / models/text_encoders/ | CLIP / T5 等文本编码器 | 0.25-9.5 GB |
| vae | models/vae/ | 潜↔像素编解码器(见 潜空间与 VAE:压缩的图像世界) | 0.3 GB |
| lora | models/loras/ | 轻量微调插件(见 LoRA:轻量插件的加载与叠加) | 10-500 MB |
| textual inversion | models/embeddings/ | 提示词嵌入 | <1 MB |
| controlnet | models/controlnet/ | 结构控制模型(见 ControlNet:把构图权从模型手里拿回来) | 0.7-5 GB |
| upscale | models/upscale_models/ | ESRGAN 类放大器(见 高清放大(Upscaling):两条路线与取舍) | 20-70 MB |
原理与机制
一个 checkpoint 是三个组件的"压缩包":加载时拆成 MODEL/CLIP/VAE 三路输出(见 第一个文生图工作流解剖)。新家族模型(Flux、SD3)常拆开发布(unet + 两个 text encoder + vae 四个文件),工作流相应改用 UNETLoader + DualCLIPLoader + VAELoader 三件套加载(见 SDXL 与多编码器家族:换模型换什么、Flux 架构与工作流:cfg=1 的新物种)——判断"该用哪个加载器"就看文件是打包还是拆分。
共享模型库:根目录 extra_model_paths.yaml 可把任意已有目录树挂进来(多套安装共用一份模型,避免数十 GB 重复下载),改完重启生效。
直观类比
models/ 是厨房的"食材分格柜":主粮(checkpoint)、调味插件(lora)、色素(vae)、模具(controlnet)分格存放;extra_model_paths.yaml 相当于"告诉后厨仓库在隔壁楼"。
实例与案例
- 从 Civitai 下载一个 SDXL checkpoint 的完整动作链:看模型页标签(SDXL/SD1.5)→ 下载 .safetensors → 放入
models/checkpoints/→ 刷新界面 → Load Checkpoint 下拉出现。** Civitai 资源获取细节见 模型资源获取与社区。 - 命名建议:保留版本信息与来源,如
sdxl_juggernautXL_v9.safetensors,避免全叫model_final(1).safetensors。
常见误区
- LoRA 放进 checkpoints:类型不匹配,加载器看不到或加载报错;严格按上表归位。
- 下载中断的文件也敢用:size mismatch / 无法加载,多为文件不完整;对比官网标注大小,重新下载。
- 把
.pt一律当安全文件:pickle 可执行任意代码,优先.safetensors,来源不明的.pt先读 安全:不可信工作流与 pickle 风险。 - 同一个模型放在多个目录:占用空间还容易版本混乱;用 extra_model_paths 统一管理。
自测题
- 为什么推荐 safetensors 而不是 ckpt?
- 下载了一个"拆分发布"的 Flux,需要几个文件、分别放哪、用什么节点加载?
- checkpoint 与 unet 目录里的文件,结构差异是什么?
- 两台电脑想共用一份模型库,最优雅的做法?
参考答案
- safetensors 只存张量,不经过 Python pickle 反序列化,天然免疫代码注入。
- 四个文件:unet→
models/unet/、clip_l 与 t5xxl→models/clip/(或 text_encoders)、vae(ae.safetensors)→models/vae/;用 UNETLoader+DualCLIPLoader+VAELoader。 - checkpoint = unet+clip+vae 打包;unet 目录只存主干本体,需另行加载编码器与 VAE。
- 一台机器放库,另一台写 extra_model_paths.yaml 指向共享路径(局域网挂载或同一 NAS)。
与其他知识点的关系
- 第一个文生图工作流解剖 的 Load Checkpoint 消费这里的文件。
- SDXL 与多编码器家族:换模型换什么/Flux 架构与工作流:cfg=1 的新物种 解释拆分发布模型的三件套加载。
- 模型资源获取与社区 是本页的"采购指南";安全:不可信工作流与 pickle 风险 是"食品安全"。
延伸阅读
- ComfyUI 官方模型支持说明:github.com/comfyanonymous/ComfyUI 的 README
- Hugging Face 模型库:huggingface.co/models
前置知识
关联知识点
潜空间与 VAE:压缩的图像世界SDXL 与多编码器家族:换模型换什么模型资源获取与社区安全:不可信工作流与 pickle 风险