safetensors 跨平台张量存储与部署:1 个文件在 Windows、Linux、macOS 之间通用
【免费下载链接】safetensorsSimple, safe way to store and distribute tensors项目地址: https://gitcode.com/GitHub_Trending/sa/safetensors
模型在 Linux GPU 服务器上训练完,发版前要在 Windows 笔记本上做一轮推理验证。用 pickle 搬运权重,得担心版本不匹配和任意代码执行风险;换成 safetensors——跨平台张量存储格式——同一个文件在三台机器上直接可用,加载时不复制数据,加载代码也完全一样。
三平台安装速查
| 平台 | 最简安装命令 | 最常见的一个坑 |
|---|---|---|
| Windows | pip install safetensors | 想从源码编译,却没装 Visual Studio Build Tools |
| Linux | pip install safetensors | 缺 build-essential,编译时报找不到 gcc |
| macOS | pip install safetensors | 系统 Python 无写权限,报 Permission denied |
注:pip 默认下载的是预编译的 wheel(已编译好的二进制包),上表命令在三台机器上通用。只有从源码编译时,才需要先装 Rust 工具链,并把 cargo 加入 PATH。
跨平台加载模型的最小代码
import torch from safetensors.torch import save_file # 保存入口 from safetensors import safe_open # 加载入口,按上下文打开文件 tensors = {"w": torch.zeros(1024, 1024)} # 示例张量 save_file(tensors, "model.safetensors") # 写盘:头部 + 数据缓冲区 with safe_open("model.safetensors", framework="pt", device="cpu") as f: for key in f.keys(): # 遍历头部里的全部张量名 print(key, f.get_tensor(key)) # 读取时不复制数据这段代码在三平台上原样可用。文件格式统一为 JSON 头部 + 二进制数据缓冲区,字节序统一为小端序——即低位字节排在内存前面的存储方式——任何一台机器存出的文件,在另一台机器上按同一套规则解析即可。
踩坑实录
Windows 上看到 "Microsoft Visual C++ 14.0 or greater is required"原因是你在从源码编译,而机器上没有 C++ 构建工具。解法:安装 Visual Studio Build Tools 并勾选桌面 C++ 开发组件;不想编译的话,跑pip install safetensors直接用预编译包即可绕开。
Linux 上看到 "No such file or directory: 'gcc'" 或 "command 'cc' failed"原因是缺少基础 C/C++ 构建环境。解法:Ubuntu/Debian 跑sudo apt install build-essential,CentOS/RHEL 跑sudo yum groupinstall "Development Tools"。
macOS 上看到 "Permission denied"原因是系统 Python 目录没有写权限。解法:跑pip install --user safetensors,或者先用 venv/conda 建隔离环境再装,后者更干净。
同一文件在生成端能读、在目标端报错原因是两端 safetensors 版本不一致。解法:各节点跑pip show safetensors核对版本号,对齐后再部署。
部署前检查清单
- 每个节点跑
pip show safetensors,确认版本号一致 - 文件搬运后核对大小与源端一致,防止传输截断
- 先在同版本环境用 CPU 试加载,再进 GPU 推理链路
- 用 venv/conda 隔离环境,不混用系统 Python
- 加载后抽查一个张量的 shape 与数值,别只看"没报错"
【免费下载链接】safetensorsSimple, safe way to store and distribute tensors项目地址: https://gitcode.com/GitHub_Trending/sa/safetensors
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考