我做了个 ffprobe for .safetensors 的小工具:stprobe

10 阅读2分钟

最近把一个自己高频使用的小工具开源了,名字叫 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,拿来就能跑。

项目地址

如果你平时也会碰 .safetensors、模型排查、远程文件检查这类场景,欢迎试试,也欢迎提 issue / PR / 想法。

如果觉得这个方向有价值,也欢迎点个 Star 支持一下 :)