模型库按文件名去重会删错真模型:40 个文件名里有 17 个重名
对模型库做「按文件名去重」是危险的:diffusers 目录里每个模型都有一份 unet/diffusion_pytorch_model.safetensors、text_encoder/model.safetensors,压平成一层后槽位名就撞了。本机 57 个条目去重后 40 个文件名、17 个重名,分两类:6 组「同名同字节」可删共 43.70 GiB;4 组「同名异字节」不可删、涉及 45.03 GiB,最坏误删 43.95 GiB。正确判据是「大小 + 至少一个结构指纹」,不是文件名。
模型库权重管理去重diffusers同名文件磁盘空间ComfyUI安全删除safetensors文件指纹模型管理这条适用于
- 能在模型库目录上执行列目录 + 读文件大小(不需要管理员权限)
- 权重以本地文件形式存在(diffusers 目录或单文件 safetensors 均可)
- 删任何文件前已确认加载器不引用它(或已备份 / 已改名验证)
版本指纹
Windows 11 / ComfyUI 0.33.0 / D:\models + ComfyUI models/ 全量扫描 / RTX 5090 D 32607 MiB / diffusers 目录结构规范(unet·vae·text_encoder 固定槽位名)
具体做法
本机实测环境:Windows 11 / ComfyUI 0.33.0 / D:\models(extra_model_paths.yaml)+ ComfyUI 自带 models/ 全量扫描 / RTX 5090 D 32607 MiB。
【扫描结果】
· 57 个文件条目 → 去重后 40 个文件名 → 17 个条目是重名
· 合计体积 259.46 GiB
【六组「同名同字节」= 可删(合计可释放 43.70 GiB)】
· sd_xl_base_1.0.safetensors:2 份 × 6.46 GiB → 多占 6.46 GiB
· wan2.2_ti2v_5B_fp16.safetensors:2 份 × 9.31 GiB → 多占 9.31 GiB
· wan2.2_vae.safetensors:2 份 × 1.31 GiB → 多占 1.31 GiB
· diffusion_pytorch_model-00001-of-00003.safetensors:2 份 × 9.28 GiB
· diffusion_pytorch_model-00002-of-00003.safetensors:2 份 × 9.21 GiB
· diffusion_pytorch_model-00003-of-00003.safetensors:2 份 × 8.12 GiB
(后三组是同一模型的三个分片,一起重复,必须整组处理)
【四组「同名异字节」= 不可删(涉及 45.03 GiB)】
· diffusion_pytorch_model.safetensors × 5:9.56 / 0.31 / 9.31 / 1.31 / 0.24 GiB
→ 分别是 SDXL UNet / 小 VAE / Wan2.2 transformer / Wan2.2 VAE / 另一套小 VAE
· diffusion_pytorch_model.fp16.safetensors × 4:4.78 / 0.16 / 2.84 / 0.18 GiB
· model.safetensors × 3:0.46 / 2.59 / 10.59 GiB(三套 diffusers 的 text_encoder)
· model.fp16.safetensors × 3:0.23 / 1.29 / 1.18 GiB
· 按文件名去重会在每组随机留一个删其余 → 最坏误删 43.95 GiB 真模型,且不报错
【重复的账】
· 43.70 GiB ÷ 4.56 MB/s = 2.73 小时重下时间;70W × 2.73h ≈ 0.11 元电费
· 43.70 GiB ÷ 1516.5 GiB 空闲 = 2.9% —— 删了毫无感觉
· 结论:重复文件的成本不是空间,是每次盘库都要重新判断「这个和那个是不是同一个」
【两笔账加起来】
· 可删重复 43.70 GiB + 加载器看不见的 diffusers 目录 76.65 GiB = 120.35 GiB
· 占 259.46 GiB 的 46.4% —— 接近一半的存量既没被用上、也没被算清
· D 盘容量 1788.5 GiB / 已用 272.0 GiB / 空闲 1516.5 GiB
【为什么名字会撞】
· diffusers 目录规范:每个模型目录都有 unet/diffusion_pytorch_model.safetensors、vae/diffusion_pytorch_model.safetensors、text_encoder/model.safetensors
· 这是规定,不是人的疏忽 —— 目录才是身份,文件名只是目录内部的槽位名
· 拍平成一层后名字就撞了:这不是重复,是丢了一层索引
四点必须说清:① 重复判定仅用「文件名相同 + 字节数完全相同」,未做哈希校验,所以「可删」结论只针对字节数一致的六组;四组同名异字节的判定同样只基于字节数差异。② 电费按 0.55 元/kWh、下载机 70W 估算,非实测功耗与账单。③ 重下时间 2.73 小时用的是本机镜像线路 4.56 MB/s 单次采样,换线路或换时段差异可能很大。④ 删文件有风险:动手前先备份或先改名验证,确认加载器仍能跑通再真删。