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 は既存のフォーマットに対していくつかの技術的利点を提供します:

  • Framework Agnostic: ライブラリは、PyTorch、TensorFlow、JAX、PaddlePaddle、NumPy など、複数のフレームワーク間でテンソルの保存とロードをサポートします。
  • Performance: ロードは一般的に高速で、他のフォーマットと比較して CPU 上で最大 100 倍の速度向上があります。
  • Lazy Loading: safetensors は効率的な遅延ロードを可能にし、テンソルの特定部分だけをロードできます。これは、text-generation-inference のような効率的な推論ライブラリが、任意のシャーディングを用いてさまざまなハードウェア構成で LLaMA や StarCoder といった大規模言語モデル(LLM)をロードする際に重要です。

Trail of Bits のセキュリティ監査結果

ライブラリの安全性保証を検証するため、Trail of Bits による外部監査が実施されました。主な所見は以下の通りです:

  • No Critical Flaws: 任意のコード実行につながる重大なセキュリティ欠陥は見つかりませんでした。
  • Specification Fixes: 監査により仕様フォーマットの不正確さが特定され、修正されました。
  • Validation Improvements: 「ポリグロットファイル」を許す問題が特定され、検証の改善により解決されました。
  • Test Suite Enhancements: 監査によりライブラリのテストスイートが多数改善されました。

Rust で実装されたこのライブラリは、言語自体が持つ追加のセキュリティ層を提供します。

実装ロードマップ

safetensors をデフォルト形式に移行する作業は、以下のステップで実施されます:

Transformers への統合

transformers ライブラリ内で、Hugging Face は以下のシーケンスを実装しています:

  1. Creation and Verification: 遅延ロード、クロスフレームワーク互換性、ロード速度に関する約束が実現されていることを確認します。
  2. Security Validation: 外部監査による安全性の確認を行います。
  3. Core Dependency: safetensorstransformers ライブラリのコア依存関係にします。
  4. Default Saving Format: 影響を最小限に抑えるため、数か月以内に safetensors をデフォルトの保存形式へ移行します。

エコシステムでの採用

EleutherAI は既に LM Evaluation Harness に safetensors のサポートを追加しており、GPT-NeoX 分散トレーニングライブラリへの統合にも取り組んでいます。このフォーマットは、Civitai、Stable Diffusion Web UI、dfdx、LLaMA.cpp など、他のエコシステムツールでもすでに利用されています。

Sources