search
  1. ComfyUIのモデルのファイル形式と量子化|safetensors・fp8・GGUF

ComfyUI

ComfyUIのモデルのファイル形式と量子化|safetensors・fp8・GGUF

編集部 読了 約7分

*2026年9月29日に確認した内容です。ComfyUI の公式ドキュメント(「モデル」「ワークフローテンプレート」・組み込みのノードの「UNETLoader」)、ComfyUI の公式リポジトリの README と folder_paths.py、PyTorch の公式ドキュメント「Tensor Attributes(torch.dtype)」、ComfyUI-GGUF の README によります。画面は、編集部の PC(Windows 11)のポータブル版(Python ごと1つのフォルダに入った Windows 向けの ComfyUI。ComfyUI v0.37.0・フロントエンド 1.52.7・画面の表示は日本語)で撮りました。

ComfyUI のモデル(画像を作るために学習した内容を入れた重みのファイル)には、.safetensors などのファイル形式があります。ファイル名に付く fp16・bf16・fp8 は、重みの数を何ビットで持っているか(精度)を表します。精度を下げて小さくしたモデルを、量子化したモデルと呼びます。ComfyUI は、拡散モデルを読み込むときに精度を下げることもできます。GGUF という形式のモデルは、ComfyUI 本体では読めず、カスタムノード(ほかの人が作って公開しているノード)の ComfyUI-GGUF などで読みます。

モデルのファイル形式

ComfyUI の公式リポジトリの folder_paths.py(v0.37.0)では、モデルのファイルとして読む拡張子は、次の8つです。

.ckpt  .pt  .pt2  .bin  .pth  .safetensors  .pkl  .sft

公式ドキュメントのテンプレートのページでは、テンプレートに入れられるモデルのファイルを、.safetensors や .sft のような安全な形式に限るとしています。同じページでは、.gguf などの形式は安全でないとみなされ、テンプレートに入れてもリンクが出ないと書かれています。

ComfyUI の README では、SD のチェックポイントを「the huge ckpt/safetensors files」(大きな ckpt・safetensors のファイル)と呼び、models/checkpoints に置くとしています。編集部が使った SD1.5 と dreamshaper_8 は、どちらも .safetensors のファイルでした。

精度を下げて小さくしたモデル

モデルの重みは、たくさんの数の集まりです。1つの数を何ビットで持つかを精度(データの型)と呼び、ビットが少ないほどファイルは小さくなります。

PyTorch(ComfyUI が使っている、AI の計算をする Python の部品)の公式ドキュメントでは、次のように分けています。浮動小数点数は、小数を表す数の持ち方です。

  • float16(fp16):16ビットの浮動小数点数
  • bfloat16(bf16):Brain floating point とも呼ばれる、16ビットの浮動小数点数
  • float8_e4m3fn・float8_e5m2:8ビットの浮動小数点数
    ファイル名の fp16・bf16・fp8 は、この精度を表す名前として使われています(例:編集部の SD1.5 のファイル名は v1-5-pruned-emaonly-fp16.safetensors)。

ComfyUI の README によると、ComfyUI は量子化したモデルに対応しています。

読み込むときに精度を下げる:weight_dtype

「拡散モデルを読み込む」(Load Diffusion Model。画像を作るモデル本体だけのファイルを読むノード)では、「重みdtype」(weight_dtype)の欄で、読み込むときの精度を選べます。

拡散モデルを読み込むのノードの重みdtypeの欄を押し、default・fp8_e4m3fn・fp8_e4m3fn_fast・fp8_e5m2の一覧が出たところ
「重みdtype」の選ぶ欄を押したところ(v0.37.0・フロントエンド 1.52.7)

編集部の PC の選択肢は、次の4つでした。

選択肢意味
default精度を指定せずに読む
fp8_e4m3fn8ビットの浮動小数点数(float8_e4m3fn)で読む
fp8_e4m3fn_fastfp8_e4m3fn で読み、ComfyUI のプログラムでは fp8 の最適化(fp8_optimizations)も入れる(中身の説明は公式ドキュメントに無い)
fp8_e5m28ビットの浮動小数点数(float8_e5m2)で読む

公式ドキュメントの UNETLoader のページには、この欄の説明がまだ書かれていません(作業中の印だけ)。上の表の意味は、選択肢の名前と、ComfyUI のプログラム(nodes.py の UNETLoader)に書かれている動きによります。読み込みのノードの使い分けは、「ComfyUIのモデルを読み込むノード|Load Checkpoint・Load Diffusion Model・Load CLIP・Load VAE」の記事で解説しています。

GGUF のモデルはカスタムノードで読む

公式ドキュメントによると、ComfyUI 本体は GGUF の形式を読めません。読むには、ComfyUI-GGUF などのコミュニティのカスタムノードが要ります。ComfyUI-GGUF の README では、ComfyUI-GGUF を、ComfyUI が対応しているモデル(native ComfyUI models)を GGUF で量子化して使うためのものとしています。

ComfyUI-GGUF の README では、入れ方を次のように書いています。

  1. ComfyUI のフォルダの中の custom_nodes に、Git(プログラムの版を管理する道具)の git clone のコマンドで ComfyUI-GGUF をダウンロードする
  2. 推論(モデルで画像を作る処理)に要るパッケージ(Python の部品)の gguf を入れる。ポータブル版では、ComfyUI_windows_portable のフォルダで .\python_embeded\python.exe -s -m pip install -r .\ComfyUI\custom_nodes\ComfyUI-GGUF\requirements.txt を実行する
  3. ノードライブラリ(画面の左のサイドバーの「ノード」)の「bootleg」の分類にある「Unet Loader (GGUF)」を使い、.gguf のモデルのファイルを ComfyUI/models/unet のフォルダに置く

編集部は、ComfyUI-GGUF をポータブル版に入れて、読み込みのノードを確かめました(GGUF のモデルは入れていません)。

Unet Loader (GGUF)とCLIPLoader (GGUF)のノード。どちらにもGGUFの札が付き、unet_nameとclip_nameの欄はundefined
ComfyUI-GGUF のノード。ノードの上に、出どころを示す「GGUF」の札が付く。モデルが無いので選ぶ欄は undefined と出た(ComfyUI-GGUF のコミット 6ea2651・v0.37.0・フロントエンド 1.52.7)

編集部の PC では、bootleg の分類に、次の6つのノードが出ました。

  • Unet Loader (GGUF)・Unet Loader (GGUF/Advanced):画像を作るモデル本体を読む
  • CLIPLoader (GGUF)・DualCLIPLoader (GGUF)・TripleCLIPLoader (GGUF)・QuadrupleCLIPLoader (GGUF):テキストエンコーダを読む

ComfyUI-GGUF のプログラムは、.gguf のファイルを、ComfyUI の拡散モデル(diffusion_models・unet)とテキストエンコーダ(text_encoders・clip)と同じフォルダから探します。入れたあと、モデルライブラリには unet_gguf と clip_gguf のフォルダが出ました。

カスタムノードの入れ方と、入れる前の注意は、「ComfyUIのカスタムノードの仕組みと入れ方|入れる前の注意」の記事で解説しています。モデルが大きすぎて読み込めないときの対処は、「ComfyUIのモデルのエラー|形式の違い・見つからないモデル」の記事にあります。VRAM(GPU のメモリ)の考え方は、「VRAM(ビデオメモリ)とは|GPUが使う専用のメモリと足りないときに起きること」の記事で解説します。

会員登録(無料)

記事やテーマのお気に入り・学習履歴・フォローが使えます。

この記事について

PERSC編集部が、建築の制作に関わる知識を実務目線で整理しています。内容は公開・更新日時点の情報にもとづきます。誤りや古い情報にお気づきの場合はお問い合わせよりご連絡ください。

あわせて読みたい