解決策
オープンなモデル共有は、PyTorchのpickleチェックポイントを信頼の配布経路にしてしまった。pickleは便利だったが、Hugging Faceのセキュリティドキュメントは、pickleのデシリアライズがコードを実行し得ること、それにはevalやexecといった危険な組み込み関数も含まれると説明している。
SafeTensorsは形式を狭めることでこれに応えた。テンソルを安全に保存し、ゼロコピーアクセスによって読み込みを高速に保ち、部分的な読み込みを可能にして、大きなモデルのシャードを一度にすべてデシリアライズしなくて済むようにした。その賢さは引き算にある。モデルの重みはデータだけになる。
2023年のTrail of Bitsによる監査の後、Hugging Face、EleutherAI、Stability AIはSafeTensorsをデフォルトの保存モデル形式にする方向へ動いた。ドキュメントは幅広いプロジェクトでのサポートを挙げており、Hugging FaceのシリアライズAPIは現在、セキュリティ上の理由から安全なシリアライズを推奨している。
達成したこと
重みは決して実行されるべきではない
うまくいった理由
悪意あるpickleのインポートをブラックリスト化しようとするのではなく、任意コード実行そのものを取り除いた。
ゼロコピーと遅延読み込みにより、安全性は遅くなるどころか速くなった。
形式の表面が小さいことで、外部監査が現実的になった。
ハブの変換ワークフローにより、すべての作者が新しいツールを学ぶのを待たずに既存モデルを移行できた。
応用できること
ファイルがインターネット規模で共有される場合、危険なファイルをいちいち検査しようとするよりも、攻撃クラス全体を取り除く方が勝る。
その後
オープンモデルが成長するにつれ、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