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

ブログ    
ブログ    
ブログ    

推薦する

...

人工知能1年後:パンデミックはテクノロジーの発展にどのような影響を与えたのでしょうか?

[[389010]]消費者の行動が変化し、企業の業務ニーズが変化するにつれて、人工知能は徐々に企業...

...

畳み込みニューラルネットワークが分かりませんか?怖がらないでください、このかわいい写真を​​見ればわかりますよ!

この記事では、畳み込みニューラル ネットワーク (CNN) の基本原理を、関連する数学理論を省き、最...

...

...

人工知能技術が人の流れにおける個々の感染リスクを迅速に特定し、同済は伝染病予防・制御識別システムを開発

[[315277]]校門に設置されたカメラの前に立つと、システムは顔認識技術と現場での体温検知を組み...

ディープラーニングによる物体検出モデルの包括的なレビュー: 高速 R-CNN、R-FCN、SSD

[[204169]] Faster R-CNN、R-FCN、SSD は、最も人気があり、広く使用さ...

モデルA: おかげさまで0点にならずに済みました。モデルB: 私も同じです。

多種多様なレゴブロックを一つずつ積み重ねて、あらゆる種類の本物そっくりのキャラクターや風景などを作成...

確かな情報です!機械学習で知っておくべき 5 つの回帰アルゴリズム!

回帰アルゴリズムといえば、理解しやすく非常に単純なため、多くの人が線形回帰を思い浮かべると思います。...

Auto-Sklearn と Auto-PyTorch を使用して機械学習を自動化する方法

[[430082]] 【51CTO.com クイック翻訳】はじめに今日、機械学習 (ML) は、ビジ...

Meta Digital Human 2nd Generation が登場! VRヘッドセットはもういらない、iPhoneでスキャンするだけ

Meta のリアルなデジタル ヒューマン 2.0 がさらに進化し、iPhone を使用して生成できる...

...