最近把一个自己高频使用的小工具开源了,名字叫 stprobe。
一句话介绍:它是 ffprobe for .safetensors。
平时在 Hugging Face、ComfyUI、Diffusers 这些场景里,拿到一个 .safetensors 文件后,我最常见的需求其实不是“立刻加载模型”,而是先搞清楚:
- 里面到底有多少个 tensor?
- 每个 tensor 的名字、dtype、shape 是什么?
- 总参数量有多少?
- metadata 里写了什么?
- 这个远程文件值不值得下载,还是先看一眼结构?
以前做这件事,通常要么临时写一段 Python / Rust 脚本,要么把整个文件先下下来再看。对大模型来说,这一步挺重,也不够顺手。
所以我做了 stprobe,目标非常明确:只读取 safetensors 的 header 和 metadata,不把 tensor payload 整块加载进内存。
它现在支持:
- 本地
.safetensors文件 http(s)URL- Hugging Face
resolve链接 - 通过 HTTP Range Request 探测超大远程模型文件
也就是说,很多时候你甚至不用把模型下载完,就能先看到文件结构。
它会输出什么
stprobe 会打印一份稳定的纯文本摘要,包括:
- 文件路径 / URL
- 文件大小
- tensor 数量
- metadata
- 每个 tensor 的名称、dtype、shape、参数量、字节数
- 总参数量
- 总 tensor 字节数
- dtype 分布
这种输出很适合:
- shell 里快速看
- 贴到 issue / PR / 群聊里
- 做日志留档
- 配合
grep/diff使用
安装
如果你只想直接用预编译二进制:
curl -L https://github.com/Xyc2016/stprobe/releases/latest/download/stprobe-x86_64-unknown-linux-gnu.tar.gz | tar -xz
./stprobe --version
或者直接从 crates.io 安装:
cargo install stprobe
用法
看本地文件:
stprobe all-MiniLM-L6-v2.safetensors
看远程 Hugging Face 文件,不必整包下载:
stprobe https://huggingface.co/Comfy-Org/flux1-dev/resolve/0f6b956e6e2e041fb73d079b72ec0e761506f601/flux1-dev-fp8.safetensors
为什么我会想做这个
一方面是自己确实有这个高频需求,另一方面我也一直想要一个:
- 没有 Python 环境依赖
- 不用 notebook
- 不用每次都翻旧脚本
- 二进制足够小
- 输出足够稳定
的小工具。
现在 stprobe 是 Rust 写的,预编译发布包大概只有 1.4 MB 到 1.6 MB,拿来就能跑。
项目地址
- GitHub: github.com/Xyc2016/stp…
- crates.io: crates.io/crates/stpr…
- docs.rs: docs.rs/stprobe
如果你平时也会碰 .safetensors、模型排查、远程文件检查这类场景,欢迎试试,也欢迎提 issue / PR / 想法。
如果觉得这个方向有价值,也欢迎点个 Star 支持一下 :)