はじめに
最近、Stable DiffusionやLLM(大規模言語モデル)のモデルファイルで、拡張子が .safetensors
のものをよく見かけるようになりました。これは何なのか、なぜ使うべきなのか、具体的にどう使うのか、わかりやすく解説します。
この記事はsafetensors: AIモデルの新しい標準ファイルフォーマットの仕組みと利点を参考に、実践的な観点から再構成したものです。
safetensorsとは?
safetensorsは、機械学習モデルのデータを保存・読み込むための新しいファイル形式です。従来のPyTorchで使われていた.pth
や.pt
(pickleフォーマット)の問題点を解決するために、Hugging Face社が開発しました。
簡単に言うと以下のような特徴があります:
- 🔒 安全: モデルファイルに悪意のあるコードが含まれる心配がありません
- ⚡ 高速: 従来形式と比べて約100倍速く読み込めます
- 💾 効率的: 必要な部分だけを読み込めるので、メモリを効率的に使えます
- 🔄 互換性: PyTorch、TensorFlow、JAXなど、主要なフレームワーク間で互換性があります
なぜsafetensorsが必要なの?
1. セキュリティの問題
従来のpickleフォーマットには大きな問題がありました。モデルファイルを読み込んだ時に、知らないうちに悪意のあるコードが実行される可能性があったのです。
# pickleフォーマットを使う従来の方法
import torch
model = torch.load("model.pth") # ⚠️ 危険!悪意のあるコードが実行される可能性
これに対してsafetensorsは、2024年初頭にセキュリティ専門企業による監査を通過し、安全性が確認されています。
2. 読み込み速度の問題
大規模なAIモデルは、ファイルサイズが数GB~数十GBにもなります。従来の形式では読み込みに時間がかかり過ぎる問題がありました。
safetensorsは以下のような工夫で、読み込みを大幅に高速化しています:
- 効率的なファイル構造の採用
- 必要な部分だけを読み込める設計
- Rust言語による高速な実装
実践:safetensorsの使い方
基本的な使い方(PyTorch)
from safetensors.torch import save_file, load_file
# モデルの保存
model_dict = model.state_dict() # モデルのパラメータを取得
save_file(model_dict, "model.safetensors")
# モデルの読み込み
loaded_dict = load_file("model.safetensors")
model.load_state_dict(loaded_dict)
Transformersライブラリでの使い方
最近のTransformersライブラリでは、特に設定しなくてもsafetensorsが優先的に使われます:
from transformers import AutoModel
# モデルの読み込み(自動的にsafetensorsを使用)
model = AutoModel.from_pretrained("bert-base-uncased")
Stable Diffusionでの実践的な使い方
Stable Diffusionでは、最近ほとんどのモデルがsafetensors形式で配布されています。
Automatic1111 Web UIでの使用手順
-
モデルのダウンロード
- CivitAIなどから
.safetensors
形式のモデルをダウンロード
- CivitAIなどから
-
適切なフォルダに配置
stable-diffusion-webui/ ├── models/ │ ├── Stable-diffusion/ # ベースモデル(.safetensors) │ ├── Lora/ # LoRAモデル │ └── VAE/ # VAEモデル
-
Web UIで自動認識される
よくあるトラブルと解決方法
-
TypeError: __init__() got an unexpected keyword argument 'ensure_ascii'
- safetensorsのバージョンが古い可能性があります
-
pip install -U safetensors
で更新してください
-
RuntimeError: Couldn't load safetensors
- ファイル名に特殊文字が含まれていないか確認
- ファイルが破損していないか確認
主なツールと入手先
モデルの入手先
- Hugging Face: 機械学習モデルの主要な配布プラットフォーム
- CivitAI: Stable Diffusion関連のモデルが豊富
- ModelScope: アジア圏のモデルも充実
変換ツール
既存のモデルをsafetensors形式に変換するツールもあります:
-
- ブラウザで簡単に変換できるWebツール
- セキュリティスキャン付き
-
Safe and Stable Ckpt2Safetensors
- Windows/Linux対応のGUIツール
- バッチ変換にも対応
Stable Diffusion関連の主要ツール
-
- 最も人気の高いWebインターフェース
- 豊富な機能と拡張機能
-
- ノードベースのワークフロー
- 柔軟なカスタマイズが可能
-
- モダンなUI
- 統合的な画像編集機能
-
- Midjourneyライクな簡単操作
- SDXL対応の最適化
おわりに
safetensorsは、機械学習モデルを扱う上での新しい標準となりつつあります。特に:
- セキュリティが重要な実務での利用
- 大規模モデルを扱う場合
- 複数のフレームワークを使う場合
に大きなメリットがあります。今後ますます普及が進むと予想されるので、基本的な使い方を押さえておくと良いでしょう。