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

ブログ    
ブログ    
ブログ    
ブログ    

推薦する

機械学習を拡張するための5つのポイント

Facebook は効果的な人工知能について私たちに多くのことを教えてくれます。最近のガートナー社の...

毎日のアルゴリズム: 文字の繰り返しのない最長の部分文字列

[[421075]]この記事はWeChatの公開アカウント「3分でフロントエンドを学ぶ」から転載した...

...

Google GlassのDIY貧弱版、カスタムジェスチャーコントロール、Raspberry Piがまたもや新しい遊び方を開発

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

...

...

「ブロックチェーン+人工知能」は医療金融やその他の応用シナリオに応用されています

最近、国家インターネット金融セキュリティ技術専門家委員会と上海振聯公司は共同で「ブロックチェーン+A...

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

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

...

完璧な意思決定ツリーを作成する方法

[51CTO.com クイック翻訳] ご存知のとおり、決定木は実生活で多くの実用的なシナリオで利用さ...

英国メディア:シリコンバレーの一部の人々はAIに熱心すぎて「学習は無意味だ」と言っている

6月13日のニュース、人工知能の急速な発展に伴い、シリコンバレーは、人間の行動は予測可能であり、スキ...

AIが「エッジ」に必要である理由

インテリジェンスは急速に増加しており、今日では、新しい生成型人工知能 (gen-AI) と機械学習 ...

スマートコミュニティにおける人工知能応用の5つのシナリオ

モノのインターネット、クラウド コンピューティング、ビッグ データ、人工知能は、概念からアプリケーシ...

画像も感情を伝えることができるのでしょうか?ロチェスター大学のチームが新しいコンピュータービジョンのタスクを提案

画像スタイルの転送?声の感情移入?いいえ、それはイメージの感情的な伝達です。コンピュータビジョンの分...