Stable Diffusionのモデルデータの拡張子は?safetensors形式とckpt形式の違いを解説

「Stable Diffusionモデルの拡張子って何があるの?」、「safetensors形式とckpt形式、この二つの違いって何?」 このような疑問を抱えている方も多いかもしれません。

今回PROMPTYでは、Stable Diffusionモデルについて、拡張子の詳細や違いを詳しく解説いたします。

Stable Diffusionのモデルをダウンロードする方法

Stable Diffusionのモデルは、主に次の2つのサイトからダウンロードできます。

①Civitai

Civitai」は、Stable Diffusionのための学習データ、例えば各種モデルやLoRAなどを網羅的に扱っているプラットフォームです。

各モデルが生成する画像がサムネイル形式で直感的に確認できるUI設計のため、画像の情報から自分の目的にぴったりのモデルを簡単に見つけ出すことが可能です。

②Hugging Face

Hugging Face」は、「Civitai」と同じくStable Diffusionのモデルをダウンロードすることができるプラットフォームですが、UIが異なります。

具体的には、「Hugging Face」では、モデル名がテキスト形式で一覧されており、特定のモデル名やその一部を用いて検索することが可能です。また、技術的な説明が見やすいことも特徴です。

関連記事

「Stable Diffusionのモデルは何を使えばいい?」「リアルな画像やアニメ風の画像を生成できるモデルを知りたい!」 このような疑問をお持ちの方は多いのではないでしょうか? Stable Diffusionのモデルとは[…]

Stable Diffusionのモデルデータの拡張子と種類

ディスクリプションの確認

Stable Diffusionの各モデルには独自の特徴が存在します。そのため、各モデルの詳細(ディスクリプション)の確認が不可欠です。

Hugging Faceの”Model card”から、それぞれのモデルの特性を確認することができます。

モデルで生成した画像の商用利用についても詳しく確認することができます。

関連記事

「Stable Diffusionの商用利用できるの?」「画像生成AIを商用利用する上で注意することは?」そう思う方もいるのではないでしょうか。 今回PROMPTYでは、Stable Diffusionの商用利用についてのライセンス[…]

safetensorsとckptの違い

Stable Diffusionのモデルデータの拡張子として、safetensorsとckptという2つの形式が存在します。

一般的に、safetensorsはckptより安全性が高く、読み込み速度も速いとされています。

Stable Diffusionなどの画像生成AIでよく使われるckptは、Pythonのモジュール「pickle」を利用して直列化されたデータの拡張子です。

データを直列化(バイト列に変換する)ことを「pickle化」、バイト列からデータを復元することを「非pickle化」といいます。

警告

pickle モジュールは 安全ではありません 。信頼できるデータのみを非 pickle 化してください。

非 pickle 化の過程で任意のコードを実行する ような、悪意ある pickle オブジェクトを生成することが可能です。信頼できない提供元からのデータや、改竄された可能性のあるデータの非 pickle 化は絶対に行わないでください。

データが改竄されていないことを保証したい場合は、 hmac による鍵付きハッシュ化を検討してください。

信頼できないデータを処理する場合 json のようなより安全な直列化形式の方が適切でしょう。 json との比較 を参照してください。

引用元:https://docs.python.org/ja/3/library/pickle.html

公式のドキュメントでも、信頼性に欠けるデータ源からのデータや、改ざんされた可能性のあるデータの非pickle化は避けるべきと警告されています。

よって、不正なckptファイルの利用は、コンピュータを危険にさらす恐れがあります。

こちらは、色々なデータの保存形式の特徴を項目ごとに比較した表です。

出典:https://github.com/huggingface/safetensors

特に「Safe」という項目と、SafeTensorsに関する「Flexibility」の評価に注目します。

「Safe」という項目は、ダウンロードしたファイルを使用した場合、予期せぬコードが実行されるリスクがどれだけあるかを示しています。

一方、「Flexibility」はカスタムコードを保存し、後から追加のコード無しでそのコードを活用できるかを示しており、こちらの項目では「基本的なテンソル以上の情報は保存できるが、特定のカスタムコードは保存不可」という結果となっています。

これらの情報をもとに解釈すると、safetensors形式を用いれば、ネットから取得した不明なファイルでも使用時のリスクは低いこと、そしてckpt形式からsafetensors形式への変換を行えば、品質の劣化なく同じモデルを安全に使用できることになります。

つまり、ckptとsafetensorsの両方の拡張子を選べる場合、safetensorsがおすすめであり、最近のStable Diffusionではsafetensorsの方が多く使われています。

モデルデータの名前の違い

多くのモデルデータはsafeTensors単体ではなく、様々な種類が提供されています。

その中でも「pruned」という名前のファイルは特によく使用されています。「pruned」は英語で「切り取る」という意味で、このファイルは余分な部分を取り除いた軽量版です。

一般的にモデルファイルは数ギガバイトのサイズであるため、多数のモデルをインストールするとPCのストレージが圧迫されてしまいます。そのため、ストレージを節約したい場合は「pruned」ファイルの使用がおすすめです。

  • safetensors:フルサイズの
  • pruned.safetensors:pruned版(フルサイズから不要な部分を除いた軽量版)
  • pruned.ckpt:pruned版のチェックポイントファイル
  • pruned-fp32.ckpt:fp32(単精度浮動小数点演算)
  • pruned-fp16.ckpt:fp16(半精度浮動小数点演算)

Hugging Faceの場合は、”Files and versions”からそれぞれのファイルの名前と形式を確認できます。

Civitaiの場合は、ダウンロードボタン下部の「i」マークをクリックします。

ファイルのサイズとその他の情報が示されたタブが開かれます。

人気のある実写系モデル「Beautiful Realistic Asians V5」はsafetensors形式、半精度浮動小数点演算・Prunedの軽量版であることがわかります。

まとめ

今回PROMPTYでは、Stable Diffusionモデルの拡張子、特にsafetensors形式とckpt形式の特性や違いについて詳しく解説しました。

この知識を手に入れることで、モデルの取り扱いや適切な利用方法がより明確になるでしょう。

PROMPTYでは、他にもStable Diffusionを始めとした画像生成AIの記事を取り扱っているので、是非ご覧ください。

~Stable Diffusionで素早く画像生成するには~

Stable Diffusionの画像生成スピードや画像サイズは、グラフィックボード(GPU)の性能によって大きく変わります。

このため、より効率的かつ快適な画像生成を望むユーザーにとって、最適なグラフィックボードの選択が重要となります。

推論処理やLoRAなどの追加学習処理といった大量の計算を効率よく行うためには、12GB以上のVRAMを持つグラフィックボードを選ぶことを強くおすすめします。

2GBや4GBのVRAMを持つグラフィックボードでは、学習プロセスや高解像度の画像生成に支障が出る可能性が高いです。

コスパを重視する方は、RTX 3060を選ぶと良いでしょう。

このグラフィックボードを使えば、Stable Diffusionの画像生成機能を最大限に活用することが可能となります。