以下是对 ComfyUI 中 .ckpt.safetensors 模型文件名称由来的详细解析


🔍 文件名来源解析

📌 .ckpt 文件
  1. 名称含义

    • ckpt 是 “Checkpoint”(检查点)的缩写,源于深度学习训练过程中的术语。
    • 设计意图:在模型训练时定期保存进度(如每 1000 步),允许从中断点恢复训练,避免数据丢失。
  2. 技术背景

    • 采用 Python 的 pickle 序列化技术,可保存完整训练状态(模型权重、优化器参数、训练代码等)。
    • 副作用
  • ⚠️ 文件体积大(通常 2-7GB),因包含冗余信息。
  • ⚠️ 安全风险:pickle 可能嵌入恶意代码,加载时自动执行。
📌 .safetensors 文件
  1. 名称含义

    • safe(安全) + tensors(张量) ,直指其核心设计目标:安全存储张量数据
    • Hugging Face 团队开发,专为安全推理场景设计。
  2. 技术革新

    • 仅存储模型权重张量(不含代码、优化器状态等)。
    • 安全性机制
  • 🛡️ 禁用 pickle,从根源杜绝恶意代码注入。
  • 🛡️ 支持内存映射(memory-mapping),加载时无需完整读取文件。

⚖️ 核心差异对比

特性 .ckpt .safetensors 证据来源
文件内容 权重 + 优化器状态 + 训练代码 仅权重张量
安全性 ❌ 高风险(可执行恶意代码) ✅ 安全(纯数据无代码)
加载速度 较慢(需解析完整文件) ⚡ 极快(支持内存映射)
文件体积 较大(2-7GB) 较小(仅保留必要权重)
典型用途 训练中断恢复、模型微调 最终部署、安全推理

🧩 设计逻辑详解

🔧 .ckpt 的实用性局限
  • 历史背景:早期 PyTorch/TensorFlow 依赖 pickle 保存模型,但未考虑安全风险。
  • 现实问题:用户需信任模型来源(如 Civitai 平台),否则可能被恶意代码攻击。
🛡️ .safetensors 的创新点
  1. 安全优先

    • 通过 张量格式标准化(如 numpy 存储),隔离代码与数据。
    • 社区推动转换工具(如 Ckpt2Safetensors),逐步替代 .ckpt
  2. 效率优化

    • 内存映射技术:文件无需完全加载到内存,大幅提升启动速度。
    • 跨平台兼容:脱离 Python 环境依赖,适配更多部署场景。

💡 在 ComfyUI 中的实践建议

  1. 文件存放路径
    • 统一置于 models/Stable-diffusion/ 目录,系统自动识别。
  2. 格式选择
    • 优先使用 .safetensors:安全、快速、节省空间。
    • 保留 .ckpt:仅需继续训练时使用。
  3. 转换工具
    • 使用 Hugging Face 官方工具转换旧模型。

⚠️ 关键提醒

安全警告
从非官方渠道下载的 .ckpt 文件需用 Pickle 扫描器检测恶意代码。
最佳实践
在 ComfyUI 中默认使用 .safetensors,平衡效率与安全。


通过上述设计逻辑可见,文件名直接反映功能定位

  • 🔄 .ckpt → 训练检查点(功能全面但风险高);
  • 🔒 .safetensors安全张量存储(专为部署优化)。
    技术演进正推动社区逐步淘汰 .ckpt,拥抱更安全的格式。
Logo

中国智能体开发者社区,聚焦智能体与大模型开发,提供前沿资讯、实用工具链、开源项目及行业案例。通过技术沙龙、开发者大赛等活动,促进经验交流与协作,助力开发者快速构建创新智能应用。

更多推荐