解决方案
开放的模型共享使 PyTorch pickle 检查点成为信任的分发渠道。Pickle 很方便,但 Hugging Face 的安全文档说明,反序列化 pickle 可能执行代码,包括 eval 或 exec 等危险的内置函数。
SafeTensors 通过收窄格式来回应。它安全地存储张量,通过零拷贝访问保持快速加载,并允许部分加载,因此大型模型分片不必一次性全部反序列化。其巧妙之处在于做减法:模型权重只作为数据存在。
在 2023 年 Trail of Bits 审计之后,Hugging Face、EleutherAI 和 Stability AI 转向将 SafeTensors 作为默认的保存模型格式。文档列出了广泛的项目支持,而 Hugging Face 的序列化 API 现在出于安全原因推荐安全序列化。
它取得了什么
权重永远不应被执行
为何奏效
它消除了任意代码执行,而不是试图将恶意 pickle 导入列入黑名单。
零拷贝和惰性加载让安全变得更快,而不是更慢。
极小的格式面使外部审计变得可行。
Hub 转换工作流让现有模型得以迁移,而无需等待每位作者学习新工具。
可以借鉴什么
当文件在互联网规模上共享时,消除整个攻击类别胜过试图检查每一个危险文件。
后续影响
随着开放模型的发展,SafeTensors 在 AI 工具栈中传播开来。Hugging Face 文档列出了 Transformers、Diffusers、llama.cpp、ComfyUI 和其他项目的采用情况,而 2023 年的审计文章称 Transformers 将转向默认以 SafeTensors 保存模型。
从这里,追溯依据
参考来源
- Pickle Scanning Hugging Face · huggingface.co
- Audit shows that safetensors is safe and ready to become the default Hugging Face · huggingface.co ·
- Safetensors Hugging Face · huggingface.co