checkpoint / safetensors / lora / vae / controlnet 等)通常很大(几 GB 甚至十几 GB)。压缩体积一般从 模型格式、精度、拆分、清理冗余 几个方向入手。下面按实用程度给你一套方案。safetensors 替代 ckptckpt 包含 Python pickle,体积大且有安全风险safetensors 通常 更小、更安全、加载更快转换方式:
python -m safetensors.torch.convert ckpt model.ckpt model.safetensorsfp16 或 bf16大多数模型用 fp32 存储,实际用 fp16 几乎无画质损失。
常见体积对比:
| 精度 | 体积 |
|---|---|
| fp32 | 100% |
| fp16 | ~50% |
| bf16 | ~50% |
转换示例(diffusers → safetensors fp16)
python -m torch.distributed.launch \
convert_diffusers_to_safetensors.py \
--model_path ./model \
--half或用 ComfyUI 自带脚本:
python tools/convert_weights.py \
--input model.safetensors \
--output model_fp16.safetensors \
--halfmodel + vae + clipComfyUI 原生支持:
model/
├── model.safetensors
├── vae.safetensors
└── clip.safetensors好处:
拆分工具:
ComfyUI/tools/split_tensors.pysd-webui 的 checkpoint splitter很多模型里包含:
清理手段:
unet / vae / text_encoder*.json / optimizer / epochs 等训练残留safetensors + fp16推荐做法:
safetensorsln -s /models/SD15/model.safetensors ./ComfyUI/models/checkpoints/❌ ZIP / 7z 压缩模型
❌ 过度量化(int8)
✅ safetensors + fp16 + 拆分 + 共享 VAE/CLIP
一般可做到:
如果你愿意,可以告诉我:
我可以直接给你针对性压缩命令。