Safetensors は、高速、効率的、安全、使いやすい新しいディープラーニングツールです。

Safetensors は、高速、効率的、安全、使いやすい新しいディープラーニングツールです。

Safetensor とは何ですか?

【セーフテンソル】:https://huggingface.co/docs/safetensors/index

Hugging Face は、大規模で複雑なテンソルの保存と読み込みを簡素化および効率化することを目的とした、Safetensors と呼ばれる新しいシリアル化形式を開発しました。テンソルはディープラーニングで使用される主要なデータ構造であり、そのサイズが効率性の面で課題となる可能性があります。

Safetensors は、効率的なシリアル化と圧縮アルゴリズムの組み合わせを使用して大きなテンソルのサイズを縮小し、pickle などの他のシリアル化形式よりも高速かつ効率的になります。つまり、SafeTensors は、従来の PyTorch シリアル化形式 pytorch_model.bin および model.safetensors と比較して、CPU で 76.6 倍、GPU で 2 倍高速になります。速度の比較をご覧ください。

Safetensorsを使用する利点

使いやすさ

Safetensors には、Python でテンソルをシリアル化およびデシリアル化するためのシンプルで直感的な API があります。つまり、開発者はシリアル化とデシリアル化に時間を費やすのではなく、ディープラーニング モデルの構築に集中できるようになります。

クロスプラットフォームの互換性

Python でシリアル化し、C++、Java、JavaScript などのさまざまなプログラミング言語やプラットフォームを使用して結果のファイルを簡単に読み込むことができます。これにより、さまざまなプログラミング環境間でモデルをシームレスに共有できるようになります。

スピード

Safetensor は速度が最適化されており、大きなテンソルのシリアル化と逆シリアル化を効率的に処理できます。したがって、大規模な言語モデルを使用するアプリケーションに最適です。

サイズの最適化

効率的なシリアル化と圧縮アルゴリズムを組み合わせて大きなテンソルのサイズを縮小し、pickle などの他のシリアル化形式よりも高速で効率的なパフォーマンスを実現します。

安全性

シリアル化されたテンソルが保存中または転送中に破損するのを防ぐために、Safetensors はチェックサム メカニズムを使用します。これにより、セキュリティがさらに強化され、Safetensors に保存されているすべてのデータが正確で信頼できるものになります。さらに、DOS 攻撃を防ぐこともできます。

遅延読み込み

複数のノードまたは GPU を使用する分散環境で作業する場合は、各モデルにテンソルのサブセットのみをロードすると便利です。 BLOOM はこの形式を使用して、8 つの GPU にモデルをわずか 45 秒でロードしますが、通常の PyTorch の重み付けでは 10 分かかります。

Safetensors を使い始める

このセクションでは、safetensors API と、テンソル ファイルを保存および読み込む方法について説明します。

SafeTensors は pip マネージャーを使用してインストールできます。

 pip install safetensors

この記事では、Torch 共有テンソルの例を使用して、単純なニューラル ネットワークを構築し、PyTorch の safetensors.torch API を使用してモデルを保存します。

 from torch import nn class Model(nn.Module): def __init__(self): super().__init__() self.a = nn.Linear(100, 100) self.b = self.a def forward(self, x): return self.b(self.a(x)) model = Model() print(model.state_dict())

ご覧のとおり、モデルは正常に作成されました。

 OrderedDict([('a.weight', tensor([[-0.0913, 0.0470, -0.0209, ..., -0.0540, -0.0575, -0.0679], [ 0.0268, 0.0765, 0.0952, ..., -0.0616, 0.0146, -0.0343], [ 0.0216, 0.0444, -0.0347, ..., -0.0546, 0.0036, -0.0454], ...,

ここで、モデル オブジェクトとファイル名を指定してモデルを保存します。次に、保存したファイルを nn.Module を使用して作成されたモデル オブジェクトに読み込みます。

 from safetensors.torch import load_model, save_model save_model(model, "model.safetensors") load_model(model, "model.safetensors") print(model.state_dict())
 OrderedDict([('a.weight', tensor([[-0.0913, 0.0470, -0.0209, ..., -0.0540, -0.0575, -0.0679], [ 0.0268, 0.0765, 0.0952, ..., -0.0616, 0.0146, -0.0343], [ 0.0216, 0.0444, -0.0347, ..., -0.0546, 0.0036, -0.0454], ...,

この 2 番目の例では、torch.zeros を使用して作成されたテンソルを保存してみます。これを行うには、 save_file 関数を使用します。

 import torch from safetensors.torch import save_file, load_file tensors = { "weight1": torch.zeros((1024, 1024)), "weight2": torch.zeros((1024, 1024)) } save_file(tensors, "new_model.safetensors")

テンソルをロードするには、load_file 関数を使用します。

 load_file("new_model.safetensors")
 {'weight1': tensor([[0., 0., 0., ..., 0., 0., 0.], [0., 0., 0., ..., 0., 0., 0.], [0., 0., 0., ..., 0., 0., 0.], ..., [0., 0., 0., ..., 0., 0., 0.], [0., 0., 0., ..., 0., 0., 0.], [0., 0., 0., ..., 0., 0., 0.]]), 'weight2': tensor([[0., 0., 0., ..., 0., 0., 0.], [0., 0., 0., ..., 0., 0., 0.], [0., 0., 0., ..., 0., 0., 0.], ..., [0., 0., 0., ..., 0., 0., 0.], [0., 0., 0., ..., 0., 0., 0.], [0., 0., 0., ..., 0., 0., 0.]])}

Safetensors API は、Pytorch、Tensorflow、PaddlePaddle、Flax、Numpy で利用できます。 Safetensors のドキュメントを読むことで、これについて学ぶことができます。

Torch APIからの画像

結論は

つまり、Safetensors は、ディープラーニング アプリケーションで使用される大きなテンソルを保存する新しい方法です。他のテクノロジーと比較して、より高速で、より効率的で、ユーザーフレンドリーです。さらに、さまざまなプログラミング言語とプラットフォームをサポートしながら、データの機密性とセキュリティを確保します。 Safetensors を使用することで、機械学習エンジニアは時間を最適化し、より優れたモデルの開発に集中できます。

プロジェクトでは Safetensor を使用することを強くお勧めします。 Hugging Face、EleutherAI、StabilityAI などのトップ AI 企業の多くが、プロジェクトで Safetensor を使用しています。

参考文献

ドキュメント: セーフテンソル

ブログ: https://medium.com/@zergtant/what-is-safetensors-and-how-to-convert-ckpt-model-to-safetensors-13d36eb94d57

GitHub: https://github.com/huggingface/safetensors

<<:  精度が極めて低いです! OpenAIがAI検出器を削除、ICMLの傑出した論文が非難される

>>:  特大サイズのStable Diffusionが無料で付いてきます!文勝図の最強オープンモデル、プロンプトワードもシンプルに

ブログ    

推薦する

T11 2019データインテリジェンステクノロジーサミット開催 AIは業界の破壊的変化をもたらす

[[283929]] 図: T11 2019 データインテリジェンステクノロジーサミット現在、データ...

生成AIにおける新たな高収入の仕事

クラウドプロバイダーのサービスの需要は2024年まで増加すると予測しています。また、 AI生成技術と...

世界トップジャーナルPNASに掲載されました!科学者たちは理論上のコンピューターに基づく意識モデル「意識のあるチューリングマシン」を提案した。

5月下旬、トップの国際学術誌である米国科学アカデミー紀要(PNAS)は、昨年10月に査読が受理され...

SKU多次元属性状態判定アルゴリズム

問題の説明この問題は、製品属性を選択するシナリオから発生します。たとえば、服や靴を購入するときは、通...

この「水中トランスフォーマー」はNASAによって困難な水中作業のためにテストされている。

[[273668]] ▲写真:アクアノートロボットがNASAの中立実験室で水中浮遊テストを受けてい...

...

法律分野で初の「1対多」の人間と機械の競争が始まり、AI弁護士が契約書審査で人間を上回る

この記事はAI新メディアQuantum Bit(公開アカウントID:QbitAI)より許可を得て転載...

アルゴリズムの問​​題を解決するための Python 3 コード フレームワーク

序文現在インターンシップをしており、仕事量はそれほど多くないので、空き時間を利用してPATのウェブサ...

もし人工知能が人類をリードし、他の惑星で発展したら、その人工知能は人類を支配することになるのでしょうか?

科学者たちは長期にわたる調査により、人類文明の進歩が指数関数的な上昇傾向を示していることを発見した。...

研究者はAIを活用して新型コロナウイルスの理解を深める

[[319373]]新型コロナウイルスが昨年12月に中国・武漢で発生して以来、過去数か月間に2,00...

正規化を放棄することで、ディープラーニングモデルの精度は前例のないレベルに到達しました

データを機械学習モデルに渡すときには、データを正規化する必要があることはわかっています。データの正規...

「人工知能」の発展を合理的に扱う

現在の人工知能の発展は、主にディープラーニングに代表される機械学習技術の恩恵を受けています。ディープ...

人工知能は製造業の未来をどのように変えるのでしょうか?

ある研究機関が最近発表した調査報告によると、2022年までに人工知能が製造業にもたらす価値は23億ド...

クック:人工知能が本当に知的であるためには、人間の価値観を尊重しなければならない

[[247844]]近年、FacebookやGoogleなどのインターネット大手は、ユーザーデータの...

多くのライターがChatGPTを著作権侵害で非難した。OpenAI: 著作権の範囲を誤解している

8月31日、OpenAIは今週、原告に数人の作家を含むほぼ同一の集団訴訟2件に応じた。彼らは、Cha...