Hugging Face Safetensors 安全审计与默认采用

Safetensors 向默认模型格式的转变

Hugging Face 与 EleutherAI 和 Stability AI 合作,正致力于将 safetensors 库设为已保存模型的默认格式。此决定是在 Trail of Bits 进行的外部安全审计之后作出的,审计确认该库安全且已准备好广泛采用。

PyTorch pickle 的安全漏洞

safetensors 的开发旨在取代 PyTorch 中对 pickle 的使用,后者本质上不安全。由于 pickle 允许执行任意代码,伪装成模型的恶意文件可以在用户不知情的情况下让攻击者完全控制其计算机。

虽然该漏洞在计算机安全领域已有充分文档记录,并在 PyTorch 文档中得到承认,但在更广泛的机器学习社区中并不为人所熟知。这对像 Hugging Face Hub 这样任何用户都可以上传和分享模型的平台构成了重大风险。

safetensors 的技术优势

除了安全性之外,safetensors 相较于现有格式提供了多项技术优势:

  • 框架无关: 该库支持在多个框架之间保存和加载张量,包括 PyTorch、TensorFlow、JAX、PaddlePaddle 和 NumPy。
  • 性能: 加载通常更快,在 CPU 上相较于其他格式可提升至 100 倍的速度。
  • 惰性加载: safetensors 支持高效的惰性加载,仅加载张量的特定部分。这对高效推理库(如 text-generation-inference)在不同硬件配置下通过任意分片加载大型语言模型(LLM),如 LLaMA 和 StarCoder,至关重要。

Trail of Bits 安全审计结果

为验证该库的安全保证,Trail of Bits 进行了一次外部审计。主要发现包括:

  • 无关键缺陷: 未发现导致任意代码执行的关键安全缺陷。
  • 规范修正: 审计发现并修正了规范格式中的不精确之处。
  • 验证改进: 通过改进验证,识别并解决了可能导致“多语言文件”的问题。
  • 测试套件增强: 审计带来了对库的测试套件的众多改进。

该库使用 Rust 实现,提供了语言本身固有的额外安全层。

实施路线图

safetensors 作为默认格式的转变将通过以下步骤执行:

在 Transformers 中的集成

transformers 库中,Hugging Face 正在实施以下顺序:

  1. 创建与验证: 确保该格式在惰性加载、跨框架兼容性和加载速度方面兑现承诺。
  2. 安全验证: 通过外部审计确认安全性。
  3. 核心依赖:safetensors 设为 transformers 库的核心依赖。
  4. 默认保存格式: 在几个月内将 safetensors 迁移为默认保存格式,以将影响降至最低。

生态系统采纳

EleutherAI 已在其 LM Evaluation Harness 中加入了对 safetensors 的支持,并正在将其集成到 GPT-NeoX 分布式训练库中。该格式已被其他生态系统工具使用,包括 Civitai、Stable Diffusion Web UI、dfdx 和 LLaMA.cpp.

Sources