ComfyUI 中 `.ckpt` 和 `.safetensors` 模型文件名称由来
以下是对 ComfyUI 中.ckpt和模型文件名称由来的详细解析。
·
以下是对 ComfyUI 中 .ckpt 和 .safetensors 模型文件名称由来的详细解析
🔍 文件名来源解析
📌 .ckpt 文件
-
名称含义
ckpt是 “Checkpoint”(检查点)的缩写,源于深度学习训练过程中的术语。- 设计意图:在模型训练时定期保存进度(如每 1000 步),允许从中断点恢复训练,避免数据丢失。
-
技术背景
- 采用 Python 的
pickle序列化技术,可保存完整训练状态(模型权重、优化器参数、训练代码等)。 - 副作用:
- 采用 Python 的
- ⚠️ 文件体积大(通常 2-7GB),因包含冗余信息。
- ⚠️ 安全风险:
pickle可能嵌入恶意代码,加载时自动执行。
📌 .safetensors 文件
-
名称含义
safe(安全) +tensors(张量) ,直指其核心设计目标:安全存储张量数据。- 由 Hugging Face 团队开发,专为安全推理场景设计。
-
技术革新
- 仅存储模型权重张量(不含代码、优化器状态等)。
- 安全性机制:
- 🛡️ 禁用
pickle,从根源杜绝恶意代码注入。 - 🛡️ 支持内存映射(memory-mapping),加载时无需完整读取文件。
⚖️ 核心差异对比
| 特性 | .ckpt |
.safetensors |
证据来源 |
|---|---|---|---|
| 文件内容 | 权重 + 优化器状态 + 训练代码 | 仅权重张量 | |
| 安全性 | ❌ 高风险(可执行恶意代码) | ✅ 安全(纯数据无代码) | |
| 加载速度 | 较慢(需解析完整文件) | ⚡ 极快(支持内存映射) | |
| 文件体积 | 较大(2-7GB) | 较小(仅保留必要权重) | |
| 典型用途 | 训练中断恢复、模型微调 | 最终部署、安全推理 |
🧩 设计逻辑详解
🔧 .ckpt 的实用性局限
- 历史背景:早期 PyTorch/TensorFlow 依赖
pickle保存模型,但未考虑安全风险。 - 现实问题:用户需信任模型来源(如
Civitai平台),否则可能被恶意代码攻击。
🛡️ .safetensors 的创新点
-
安全优先
- 通过 张量格式标准化(如
numpy存储),隔离代码与数据。 - 社区推动转换工具(如
Ckpt2Safetensors),逐步替代.ckpt。
- 通过 张量格式标准化(如
-
效率优化
- 内存映射技术:文件无需完全加载到内存,大幅提升启动速度。
- 跨平台兼容:脱离 Python 环境依赖,适配更多部署场景。
💡 在 ComfyUI 中的实践建议
- 文件存放路径
- 统一置于
models/Stable-diffusion/目录,系统自动识别。
- 统一置于
- 格式选择
- 优先使用
.safetensors:安全、快速、节省空间。 - 保留
.ckpt:仅需继续训练时使用。
- 优先使用
- 转换工具
- 使用
Hugging Face官方工具转换旧模型。
- 使用
⚠️ 关键提醒
❗ 安全警告:
从非官方渠道下载的.ckpt文件需用 Pickle 扫描器检测恶意代码。
✅ 最佳实践:
在 ComfyUI 中默认使用.safetensors,平衡效率与安全。
通过上述设计逻辑可见,文件名直接反映功能定位:
- 🔄
.ckpt→ 训练检查点(功能全面但风险高); - 🔒
.safetensors→ 安全张量存储(专为部署优化)。
技术演进正推动社区逐步淘汰.ckpt,拥抱更安全的格式。
更多推荐
所有评论(0)