1. 格式定义与核心用途
.ckpt(Checkpoint)
- 定义:全称为“检查点”(Checkpoint),最初为 TensorFlow/PyTorch 框架中的通用训练存档格式。
- 用途:主要用于保存训练过程中的完整模型状态,包括模型权重参数(生成图像的核心数据)、优化器状态(如梯度、学习率等训练进度信息)、训练元数据(如当前训练步数、超参数等)。
- 适用场景:适用于模型训练、微调或需要从特定节点恢复训练的场景。
.safetensors
- 定义:由 Hugging Face 团队设计的专用格式,专为安全高效存储大模型权重而生。
- 用途:仅保存模型的最终权重参数,不包含任何训练相关的附加信息(如优化器状态或代码)。
- 适用场景:专注于生成图像(推理任务)、模型部署或共享,强调安全性与轻量化。
2. 安全性对比
.ckpt 风险
- 可能包含执行代码(如恶意脚本),存在潜在安全隐患。
- 在非信任来源的模型文件中需谨慎使用。
.safetensors 优势
- 通过纯权重存储避免代码注入风险,安全性更高。
- 文件结构经过加密和校验设计,防止数据篡改。
3. 文件体积与加载效率
文件大小
- .safetensors 比 .ckpt 体积小约 30%-50%(例如 2GB 模型可压缩至 1.4GB 左右)。
- 原因:.safetensors 仅保留必要权重,而 .ckpt 包含冗余训练信息。
加载速度
- .safetensors 支持内存映射(Memory Mapping),加载时无需完全载入显存,速度更快。
- .ckpt 需完整加载所有数据,耗时较长(尤其在大模型场景下)。
4. 框架兼容性
.ckpt
- 广泛应用于 TensorFlow、PyTorch 等主流框架的训练流程。
- 在 Stable Diffusion 生态中仍广泛存在(尤其是早期模型)。
.safetensors
- 主要与 Hugging Face 生态兼容,但已逐渐成为 Stable Diffusion 社区推荐的标准推理格式。
- 支持 PyTorch、TensorFlow 等框架的快速权重加载接口。
5. 实际使用场景建议
训练与微调
- 使用 .ckpt 保存中间训练状态,便于恢复训练或调试模型。
生成与部署
- 优先选择 .safetensors,兼顾安全性、速度和轻量化。
- 例如:Stable Diffusion WebUI 和 ComfyUI 均默认支持 .safetensors 模型加载。
模型共享
- 推荐使用 .safetensors 格式,降低安全风险并减少传输耗时。
总结
特性 | .ckpt | .safetensors |
---|---|---|
核心用途 | 训练存档、恢复 | 推理部署、轻量化生成 |
安全性 | 较低(可能含代码) | 高(纯权重无代码) |
文件体积 | 较大 | 较小(优化压缩) |
加载速度 | 较慢 | 更快(内存映射) |
框架支持 | 广泛(TF/PyTorch) | 专注 Hugging Face 生态 |
在 Stable Diffusion 工作流中,建议根据需求灵活选择格式:训练用 .ckpt,生成用 .safetensors。