5
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

safetensorsって何?機械学習モデルを安全・高速に扱う新標準フォーマット

Last updated at Posted at 2024-07-23

はじめに

最近、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での使用手順

  1. モデルのダウンロード

    • CivitAIなどから.safetensors形式のモデルをダウンロード
  2. 適切なフォルダに配置

    stable-diffusion-webui/
    ├── models/
    │   ├── Stable-diffusion/  # ベースモデル(.safetensors)
    │   ├── Lora/             # LoRAモデル
    │   └── VAE/              # VAEモデル
    
  3. Web UIで自動認識される

よくあるトラブルと解決方法

  1. TypeError: __init__() got an unexpected keyword argument 'ensure_ascii'

    • safetensorsのバージョンが古い可能性があります
    • pip install -U safetensors で更新してください
  2. RuntimeError: Couldn't load safetensors

    • ファイル名に特殊文字が含まれていないか確認
    • ファイルが破損していないか確認

主なツールと入手先

モデルの入手先

  • Hugging Face: 機械学習モデルの主要な配布プラットフォーム
  • CivitAI: Stable Diffusion関連のモデルが豊富
  • ModelScope: アジア圏のモデルも充実

変換ツール

既存のモデルをsafetensors形式に変換するツールもあります:

  1. Hugging Face Convert Space

    • ブラウザで簡単に変換できるWebツール
    • セキュリティスキャン付き
  2. Safe and Stable Ckpt2Safetensors

    • Windows/Linux対応のGUIツール
    • バッチ変換にも対応

Stable Diffusion関連の主要ツール

  1. Automatic1111 Web UI

    • 最も人気の高いWebインターフェース
    • 豊富な機能と拡張機能
  2. ComfyUI

    • ノードベースのワークフロー
    • 柔軟なカスタマイズが可能
  3. InvokeAI

    • モダンなUI
    • 統合的な画像編集機能
  4. Fooocus

    • Midjourneyライクな簡単操作
    • SDXL対応の最適化

おわりに

safetensorsは、機械学習モデルを扱う上での新しい標準となりつつあります。特に:

  • セキュリティが重要な実務での利用
  • 大規模モデルを扱う場合
  • 複数のフレームワークを使う場合

に大きなメリットがあります。今後ますます普及が進むと予想されるので、基本的な使い方を押さえておくと良いでしょう。

参考リンク

5
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
5
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?