🐶セーフテンソルは、本当に安全であり、デフォルトの選択肢として採用されました
'SafeTensorは安全であり、デフォルトの選択として使用されました'
Hugging Faceは、EleutherAIとStability AIとの緊密な協力のもと、safetensors
ライブラリの外部セキュリティ監査を依頼しました。その結果、これらの組織はすべてライブラリを保存モデルのデフォルト形式にするために進むことができます。
Trail of Bitsによって実施されたセキュリティ監査の詳細な結果は、こちらでご覧いただけます: レポート。
以下のブログ投稿では、このライブラリの起源、この監査結果の重要性、および次のステップについて説明します。
safetensorsとは何ですか?
🐶 safetensorsは、最も一般的なフレームワーク(PyTorch、TensorFlow、JAX、PaddlePaddle、NumPyなど)でテンソルを保存およびロードするためのライブラリです。
- Hugging FaceとIBMは、AIビルダー向けの次世代エンタープライズスタジオであるwatsonx.aiにおいてパートナーシップを結成しました
- bitsandbytes、4ビットの量子化、そしてQLoRAを使用して、LLMをさらに利用しやすくする
- Intel CPUのNNCFと🤗 Optimumを使用した安定したディフュージョンの最適化
具体的な説明のために、PyTorchを使用します。
import torch
from safetensors.torch import load_file, save_file
weights = {"embeddings": torch.zeros((10, 100))}
save_file(weights, "model.safetensors")
weights2 = load_file("model.safetensors")
このフォーマットには、他のフォーマットと比べていくつかの優れた機能があります。特に、ファイルのロードが安全であるという点が挙げられます。
transformers
を使用している場合、safetensors
がインストールされていると、問題を防ぐためにこれらのファイルが優先的に使用されます。つまり、
pip install safetensors
は、safetensors
ファイルを安全に実行するために必要な唯一のものである可能性があります。
今後、およびこのライブラリの検証により、safetensors
はデフォルトでtransformers
にインストールされるようになります。次のステップは、デフォルトでsafetensors
にモデルを保存することです。
MLエコシステムで既にsafetensors
ライブラリが使用されていることを喜んでいます。具体的な例としては、以下があります:
- Civitai
- Stable Diffusion Web UI
- dfdx
- LLaMA.cpp
なぜ新しいものを作成するのですか?
このライブラリの作成は、PyTorchが内部でpickle
を使用しているため、それが本質的に安全ではないという事実に基づいています。(参考文献: 1, 2, 動画, 3)
pickleを使用すると、ユーザーの知識なしに、ユーザーのコンピュータを完全に制御できる悪意のあるモデルを装ったファイルを書き込むことが可能であり、攻撃者はすべてのビットコインを盗むことができます 😓。
pickleのこの脆弱性は、コンピュータセキュリティの世界では広く知られており(PyTorchのドキュメントでも認識されています)、一般的なMLコミュニティでは一般的な知識ではありません。
Hugging Face Hubは、誰でもモデルをアップロードおよび共有できるプラットフォームであるため、ユーザーがマルウェアに感染するのを防ぐための取り組みを行うことが重要です。
また、既存のPyTorchファイルが悪意のあるものでないことを確認するための措置も講じていますが、怪しいファイルをフラグ付けすることしかできません。
もちろん、他のファイル形式も存在しますが、チームが特定した理想的な要件のすべてを満たすものはありませんでした。
安全であるだけでなく、safetensors
は遅延読み込みと一般的に高速な読み込み(CPUでの約100倍の速さ)が可能です。
遅延読み込みは、効率的な方法でテンソルの一部のみを読み込むことを意味します。この特定の機能により、テキスト生成推論などの効率的な推論ライブラリで任意のシャーディングが可能になり、LLM(LLaMA、StarCoderなど)をさまざまなタイプのハードウェアで最大の効率で読み込むことができます。
非常に高速に読み込まれ、フレームワークに依存しないため、PyTorchまたはTensorFlowの同じファイルからモデルを読み込むためにこの形式を使用することさえできます。
セキュリティ監査
safetensors
の主な目的は安全性を保証することですので、実際にそれが提供できるかどうかを確認するために、Hugging Face、EleutherAI、Stability AIは外部のセキュリティ監査を受けるためにチームを組みました。
重要な調査結果:
- 任意のコードの実行につながる重大なセキュリティ上の欠陥は見つかりませんでした。
- 仕様形式の不正確さが検出され修正されました。
- ポリグロットファイルを許可するいくつかの検証の不足が検出され、修正されました。
- テストスイートの多くの改善が提案され、実装されました。
公開と透明性を重視して、すべての企業は報告書を完全に公開することに同意しました。
完全な報告書
注意すべき重要な点は、このライブラリがRustで書かれているということです。これにより、言語自体から直接的に来る追加のセキュリティレイヤーが追加されます。
欠陥のないことを証明することは不可能ですが、これはが実際に安全に使用できることを保証するための重要な一歩です。
今後の展望
Hugging Face、EleutherAI、およびStability AIにとって、基本計画はこの形式をデフォルトで使用するように切り替えることです。
EleutherAIは、LM評価ハーネスでとして保存されたモデルを評価するサポートを追加し、GPT-NeoX分散トレーニングライブラリでもこの形式をサポートする作業を行っています。
ライブラリでは、以下のことを行っています:
- を作成する。
- それがすべての約束を果たすことを確認する(LLMのための遅延読み込み、すべてのフレームワーク用の単一ファイル、高速な読み込み)。
- それが安全であることを確認する(これが今日の発表です)。
- をコア依存関係にする(これは既に完了しているか、すぐに完了します)。
- をデフォルトの保存形式にする。これは、十分なフィードバックがあり、既存のバージョンでも新しいモデルをロードできるユーザーが十分にいることを確認するため、数ヶ月後に行われます。
自体については、現在の形式にはさまざまな問題があるLLMトレーニング向けの高度な機能を追加することを検討しています。
最後に、の大規模なユーザーベースが最終的なテストステップを提供するため、近い将来にをリリースする予定です。形式とライブラリは、その創設以来ほとんど変更されていないため、安定性の良いサインです。
MLを安全かつ効率的にするために、一歩近づけることができてうれしいです!
We will continue to update VoAGI; if you have any questions or suggestions, please contact us!
Was this article helpful?
93 out of 132 found this helpful
Related articles