Stable Diffusion XLのチェックポイントなどとしても配布されることの多いsafetensorsは、Hugging Faceコミュニティが開発した新しいシリアライゼーションフォーマットで、深層学習で重要なテンソルと呼ばれる大規模で複雑なデータチャンクを安全かつ効率的に保存・取得するために設計されています。
safetensorsとは
safetensorsは、Stable Diffusionのようなテキストから画像を生成する機械学習モデルで使用されるアルゴリズムを格納するファイル形式です。このフォーマットは、.CKPTファイルと類似していますが、悪意のあるコードを含む可能性がないため、より安全であると考えられています。実際、Stability AIの公式スタッフは、特にSDXLモデルに関して、safetensorsフォーマットの排他的な使用を強く推奨しています。
テンソルは、物理学やコンピュータサイエンスなど様々な分野で使用される数学的概念です。深層学習や人工知能の文脈では、テンソルはデータを整理し操作するための基本的なデータ構造として使用されます。ベクトル(1次元配列)、行列(2次元配列)、またはそれ以上の次元を持つことができ、ニューラルネットワークの学習プロセス中に行われる操作において重要な役割を果たします。
Stable Diffusion XLでのsafetensorsの利点
Stable Diffusion XLは、Stability AIによって開発されたAIベースの画像生成アプリケーションです。ユーザーがテキストを入力すると、それに基づいて画像を生成(または編集)することができます。safetensorsフォーマットを使用することで、以下の利点があります:
-
セキュリティの向上:safetensorsファイルは基本的に数値の集合であり、マルウェアやスパイウェアなどの悪意のあるプログラムを含むことが不可能です。最近の外部セキュリティ監査により、その安全性が確認されました。
-
高速なロード:safetensorsは.CKPTファイルよりもモデルの読み込みが速いため、作業効率が向上します。特に、ゼロコピー機能を実装することで、テンソルのロード時間を最小限に抑えています。CPU上で約100倍高速なロードが可能です。
-
互換性:最新のStable Diffusionモデル、特にSDXLモデルとの互換性が高くなっています。また、PyTorch、TensorFlow、JAX、PaddlePaddle、NumPyなど、主要な機械学習フレームワークをサポートしています。
-
メモリ効率:safetensorsは、モデルのパラメータをより効率的に保存し、メモリ使用量を最適化します。
-
コンパクトさと移植性:safetensorsは必要不可欠なモデルの重みのみを含むため、よりコンパクトで移植性が高くなっています。
-
遅延ロード:大規模な言語モデル(LLM)に対して効率的な遅延ロードをサポートしています。
Stable Diffusion XLでのsafetensorsの利用
Stable Diffusion XLでsafetensorsファイルを使用するには、Stable Diffusionがモデルをロードするディレクトリにsafetensorsファイルを配置する必要があります。具体的な手順は以下の通りです:
- File Explorerを開きます(Windows + Eキーを押す)。
- safetensorsファイルを選択し、コピーまたは切り取ります。
- Stable Diffusionがインストールされているフォルダに移動します。
- 'models'フォルダを開きます。
- safetensorsファイルの種類に応じて、適切なサブフォルダ(例:VAEモデルの場合は'VAE'フォルダ)にファイルを貼り付けます。
- 変更を反映させるために、アプリケーションを再起動します。
これらの手順を完了すると、Stable Diffusion WebUIを起動した際に、新しく追加したsafetensorsファイルが適切な場所に表示され、他のStable Diffusionモデルと同様に使用可能になります。
safetensorsファイルの生成方法
safetensorsファイルを生成するには、Pythonと必要なライブラリを使用します。以下は、safetensorsファイルを生成する基本的な手順です:
- まず、Pythonの環境を整えます。必要なライブラリ(torch、safetensors)をインストールしてください。
pip install torch safetensors
- 学習済みのモデルをロードし、safetensorsファイルとして保存します。
import torch
from safetensors.torch import save_file
# モデルのロード
model = torch.load('path/to/your/model.pth')
# モデルの状態辞書(state dict)を取得
state_dict = model.state_dict()
# safetensorsファイルとして保存
save_file(state_dict, 'path/to/save/model.safetensors')
このプロセスにより、モデルの学習状態がsafetensorsファイルとして保存されます。このファイルは、Stable Diffusion XLで直接使用することができ、効率的なモデルの読み込みと安全な保存が可能になります。
テンソルのロードと部分的なロード
safetensorsは、テンソルの効率的なロードと部分的なロードをサポートしています。以下は、safetensorsファイルからテンソルをロードする例です:
from safetensors import safe_open
tensors = {}
with safe_open("model.safetensors", framework="pt", device=0) as f:
for k in f.keys():
tensors[k] = f.get_tensor(k)
また、大規模なモデルを扱う場合や、特定の部分のみを必要とする場合は、テンソルの一部のみをロードすることも可能です:
from safetensors import safe_open
tensors = {}
with safe_open("model.safetensors", framework="pt", device=0) as f:
tensor_slice = f.get_slice("embedding")
vocab_size, hidden_dim = tensor_slice.get_shape()
tensor = tensor_slice[:, :hidden_dim]
これらの機能により、メモリ使用量を最適化し、大規模なモデルでも効率的に作業することができます。
.CKPTから.safetensorsへの変換
既存の.CKPTファイルを持っている場合、それらを.safetensorsフォーマットに変換することができます。ただし、モデルによっては変換が常に成功するとは限らないことに注意してください。変換には、Safe and Stable Ckpt2Safetensors Conversion Tool GUIなどのツールを使用できます。
最近の開発では、多くのモデル開発者が直接safetensorsフォーマットでモデルを公開するようになっており、変換の必要性は減少しています。しかし、古いモデルや特定のカスタムモデルでは、まだ変換が必要な場合があります。
safetensorsの最新動向
safetensorsファイルの使用は増加傾向にあり、多くの研究者や開発者がこのフォーマットの利点を認識し始めています。特に、SDXLモデルのリリース以降、新しいモデルの大多数がsafetensorsフォーマットを優先しています。
最新の開発では、safetensorsがより広範なAIフレームワークやツールでサポートされるようになっています。例えば、PyTorch、TensorFlow、PaddlePaddle、Flax、NumPyなどの主要な深層学習フレームワークでも、safetensorsとの互換性が向上しています。
また、safetensorsの利点を活かした新しいツールやライブラリも開発されています。例えば、モデルの部分的なロードや、大規模モデルの効率的な管理を可能にするツールが登場しています。
最近の外部セキュリティ監査により、safetensorsの安全性が確認され、Hugging Face、EleutherAI、Stability AIなどの主要な組織がsafetensorsをデフォルトのモデル保存フォーマットとして採用する動きが加速しています。
ただし、一部のプログラムではまだsafetensorsファイルの直接的なサポートが限られている可能性があるため、使用する際は互換性を確認することが重要です。また、古いSDモデルを使用する場合は、.CKPTファイルを使用する必要があるかもしれません。その場合、ファイルの安全性を十分に確認してから使用することが重要です。
Rでのsafetensorsの利用
最近、Rプログラミングでもsafetensorsファイルフォーマットをサポートするライブラリが開発されました。これにより、Rユーザーもsafetensorsの利点を活用できるようになりました。以下は、Rでsafetensorsを使用する基本的な例です:
library(torch)
library(safetensors)
# テンソルの作成
tensors <- list(
x = torch_randn(10, 10),
y = torch_ones(10, 10)
)
# safetensorsファイルとして保存
tmp <- tempfile()
safe_save_file(tensors, tmp)
# safetensorsファイルの読み込み
loaded_tensors <- safe_load_file(tmp)
このRパッケージは、safetensorsファイルの読み書きをサポートしており、Rを使用した機械学習プロジェクトでもsafetensorsの利点を活用することができます。
まとめ
safetensorsフォーマットは、Stable Diffusion XLを含む最新の深層学習モデルにおいて、効率的で安全なデータ管理を実現する重要なツールとなっています。その高速なロード時間、セキュリティ、そしてメモリ効率の良さから、多くの開発者や研究者に採用されています。
最近の外部セキュリティ監査により、safetensorsの安全性が確認され、主要な組織がこのフォーマットを採用する動きが加速しています。また、様々なプログラミング言語やフレームワークでのサポートが拡大しており、より多くの開発者がsafetensorsの利点を活用できるようになっています。
今後も、AIと機械学習の分野が発展するにつれて、safetensorsの重要性はさらに増していくと予想されます。モデルの大規模化と複雑化が進む中、効率的なデータ管理と安全性の確保は不可欠であり、safetensorsはこれらの要求に応える優れたソリューションとなっています。
参考文献
- Hugging Face - safetensors (アクセス日: 2024-07-23)
- CKPT vs SafeTensors for Stable Diffusion - Easy With AI (アクセス日: 2024-07-23)
- SAFETENSORS File - What is it and how do I open it? (アクセス日: 2024-07-23)
- SAFETENSORS - Stable Diffusion Model - What is SAFETENSORS and how to open it? (アクセス日: 2024-07-23)
- Where To Put Safetensors Stable Diffusion - Pttrns (アクセス日: 2024-07-23)
- Safe and Stable Ckpt2Safetensors Conversion Tool GUI (アクセス日: 2024-07-23)
- How to create .safetensors file for my trained model? - DeepLearning.AI Community (アクセス日: 2024-07-23)
- Easy Guide to Safetensors & Stable Diffusion - Novita.ai (アクセス日: 2024-07-23)
- What Are Safetensors in Stable Diffusion? - Watcher Guru (アクセス日: 2024-07-23)
- Safetensors File Format • safetensors (アクセス日: 2024-07-23)
- Safetensors audited as really safe and becoming the default | EleutherAI Blog (アクセス日: 2024-07-23)