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が無料で付いてきます!文勝図の最強オープンモデル、プロンプトワードもシンプルに

ブログ    
ブログ    

推薦する

従来の AGV と比較した利点は何ですか? AMRロボット業界の状況は変化する

ロボット技術の知能化は、ロボット応用分野の継続的な拡大にプラスの影響を与えています。この傾向を受けて...

音声認識にPythonを使用する方法を教えます

[[282998]]オンラインでいくつかの例を見つけましたが、音声をテキストに変換できる成熟したモデ...

AIと機械学習がSaaS業界にどのような変化をもたらすか

GlobalDots の CTO である Yair Green 氏が、人工知能と機械学習がサービスと...

ビデオメモリを節約する新しい方法: 2 ビット活性化圧縮を使用して PyTorch でニューラル ネットワークをトレーニングする

[[410937]]この記事では、カリフォルニア大学バークレー校の PyTorch をベースにしたア...

Pythonでゲームボーイエミュレーターを作成し、AIモデルをトレーニングする:デンマーク人の大学のプロジェクトが大ヒット

Atari ゲームを使って人工知能を研究するのは、ちょっと現実的ではないと感じますか?これでゲームボ...

AIがクリエイティブな動画を自動生成: ビッグモデルを活用する方法

著者 | 崔昊レビュー | Chonglouまとめこの記事では、大規模な言語モデルと AI ビデオ生...

生成的敵対ネットワークがなぜ必要なのでしょうか?

この記事は、公開アカウント「Reading the Core」(ID: AI_Discovery)か...

2024年の世界モデルによって自動運転ラベリング業界は混乱するでしょうか?

この記事は、Heart of Autonomous Driving の公開アカウントから許可を得て転...

中国のAIチップ「覚醒」の5年

10 種類以上のチップが発売され、多くの合併や買収が行われています。これは、過去 500 日間の中国...

...

AI 転移学習はどのように機能しますか? AI モデルとトレーニング プロセスでどのような役割を果たすのでしょうか?

今日、AI プログラムは、写真やビデオ内の顔や物体を認識し、音声をリアルタイムで書き起こし、X 線ス...

...

...

3万回以上の地震訓練を実施した後、彼らは揺れの強さを素早く予測する新しい方法を発見した。

[[396585]]ビッグデータダイジェスト制作編纂者:朱克進DeepShake ネットワークのト...