
Flux.1 を快適に使おう! Stable Diffusion webUI Forge と ComfyUI で GGUF 形式を利用する方法
はじめに
こんにちは、きまま / Easygoing です。
今回は、Flux.1 を快適に動かすことができる GGUF 形式について紹介します。
Flux.1 のモデルは容量が大きい
前回紹介したように、新しい画像生成AI の Flux.1 は、モデルの容量が大きいので、FP16 / FP8 形式で使うには VRAM 16GB が必要でした。
最近になって普及した GGUF 形式 は、量子化圧縮を行うことでメモリの使用量を大きく減らすことができるようになりました。
今回は、GGUF 形式の使い方をご紹介します。
実際のイラストを比較
まずは、実際のイラストを見てみましょう。
image to image
1440 x 1440 → Hires 2576 x 2576
FP16(16bit)

FP8(8bit)

Q8.gguf(8bit)

Q6_K.gguf(6bit)

Q5_K_M.gguf(5bit)

Q4_K_M.gguf(4bit)

Q3_K_L.gguf(3bit)

Q2_K.gguf (2bit)

GGUF形式の特徴
FP8 と Q8.gguf は両方とも 8bit で同じ容量ですが、多くの場合 Q8.gguf 形式の方が精度が高く、画質も良く なります。
GGUF 形式でも bit 数が下がるにつれて画質は低下していき、背景の描き込みと色の深みが失われていきます。
一般的に、GGUF 形式は Q4 ~ Q5 あたりが容量と精度のバランスが良い とされていて、崩壊せずにギリギリ使えるのが Q3 です。
アルファベットの意味は?
Q4 を例にすると、後ろについているアルファベットには次の意味があります。
Q4:オリジナルの方式
Q4_K:K量子化(精度が向上)
Q4_K_S:K量子化した上で、容量が小さく精度が低い
Q4_K_M:K量子化した上で、中間的な形式
Q4_K_L:K量子化した上で、容量が大きく精度が高い
こちらは、下に行くほど精度が高くなります。
実際に使ってみよう!
それでは、実際の GGUF 形式のモデルの使い方をご紹介します。
まずはダウンロード
Flux.1 の GGUF 形式のファイルはこちらで配布されています。
モデル
Flux.1[dev]
Flux.1[shnell] と blue_pencil-flux1 は記事の最後にリンクを置いておきます。
テキストエンコーダー
T5xxl_v1_1
Flan-T5xxl(改良型 T5xxl)も最後にリンクを記載します。
どれを選べば良いの?
GGUF 形式にはいろいろな種類がありますが、私の環境で調べた VRAM の容量に収まる形式は次の通りです。
Stable Diffusion webUI Forge

ComfyUI

上記のモデルを利用して VRAM 使用量が超過した場合は、もう一段階小さい形式 の利用をお勧めします。
なお、ディスプレイモニターを内蔵出力ではなく GPU に接続している場合は、その分 VRAM も利用しているので、さらに小さいサイズが適切になるでしょう。
ダウンロードしたファイルの設置場所
ダウンロードしたファイルは、次の場所に設置します。
Stable Diffusion webUI Forge
モデル
インストールフォルダ/Models/StableDiffusion
テキストエンコーダー
インストールフォルダ/Models/CLIP
ComfyUI
モデル
インストールフォルダ/Models/Unet
テキストエンコーダー
インストールフォルダ/Models/CLIP
なお、EasyForge および Stability Matrix のモデルブラウザを使ってダウンロードした場合は、自動的に該当のフォルダに格納される ので特別な操作は不要です。
実際の使い方!
それでは、GGUF 形式のモデルを実際に使ってみます。
Stable Diffusion webUI Forge:とても簡単!
まずは、Stable Diffusion webUI Forge の生成画面です。

いつもと同じように、モデルの選択画面で gguf 形式 のモデルを選択します。
テキストエンコーダーは、VAE / text encorder の項目で該当の gguf 形式 のファイルを選択します。
選択したものを解除するときは、右側の❌ボタンを押します。
T5xxl(任意の GGUF形式)
clip-l
ae.safetensors
VAE / text encorder に上の3つが選択されていることを確認して、あとはいつも通りプロンプトを入力して Generate を押せば画像が生成されます!
ComfyUI:カスタムノードが必要
ComfyUI で GGUF 形式を利用する場合、ComfyUI-GGUF カスタムノードのインストールが必要です。
ここでは、ComfyUI maneger を利用したインストールの方法を説明します。
まず、ComfyUI を起動して、Manager も起動します。

次に Custom Nodes Manager を選択します。

検索で「gguf」と入力すると ComfyUI-GGUF というカスタムノードが表示されるので、これをインストールします。

再起動するようにメッセージが表示されるので、ComfyUI を再起動します。
次に、ワークフローを作成するときに、Unet Loader (GGUF) と Dual Clip Loader (GGUF) を選択します。

これで GGUF 形式のモデルを選択できるようになります。
なお、EasyForge を利用している場合は、最初から ComfyUI-GGUF カスタムノードはインストールされています!
GGUF 形式のデメリット
GGUF 形式は、RAM と VRAM の節約にメリットが大きいですが、特定のケースではデメリットが存在します。
VRAM に余裕があるなら、あまり速くならない
GGUF 形式のファイルは、元のファイル形式から量子化圧縮して生成されます。
例:FP16 → Q8.gguf
Q8.gguf 形式は、量子化した整数で演算を行うため一般的に元の FP16 形式よりも高速ですが、重要な部分については FP16 形式に再変換 して演算を行っています。

そのため、VRAM に余裕があって元の FP16 形式で演算ができる場合は、gguf 形式を利用しても速くならない場合があります。
ComfyUI で逆に VRAM が超過する!?
ComfyUI は、可能な範囲でモデルを VRAM 保持して処理を高速化しています。
このとき、デフォルト以外のカスタムノードを使用すると、容量が適切にカウントされない場合があり、モデルのアンロードが行われず、逆に VRAM が超過する ことがあります。
このケースでは、VRAM が超過するプロセスの前に Unload All Models ノードを接続すると解決できます。
例:conditioning と Sampler の間に Unload All Models ノードを接続する

Unload All Models カスタムノードは、先ほどと同じくManeger で「ComfyUI-Unload-Model」を検索するとインストールできます。
最近は ComfyUI および ComfyUI-GGUF ともに連日アップデートが入っていて、私の環境では VRAM が超過するときとしない場合と、日によって状況が変わっています。

この問題はいずれ解決すると思いますが、Unload All Models ノードは他の場面でも利用できるので、使えるようになると良いでしょう。
GGUF 形式のファイルを自分で作ろう!
ここまで GGUF形式の使い方について解説しました。
ここからは、GGUF 形式のファイルを自分で作る方法を紹介します。
Flux_tool を使おう!
以前の記事 でも紹介しましたが、Zuntan さんが公開されている EasyForge の flux_tool には、GGUF 変換機能が搭載されています。
flux_tool を利用すると、任意の形式の GGUF ファイルを作成することができます。
EasyForge のインストール方法はこちらをご覧ください。
ConvertGguf.bat の使い方
それでは、flux_tool の ConvertGguf.bat の使い方を紹介します。
まずは、変換する元になるモデルを準備します。
GGUF 形式で量子化圧縮を行うときは、元のファイルが高精度のものほど生成されるファイルの精度が良く なります。
FP32 > FP16 > BF16 > FP8
従って、上の順番でなるべく精度の高いモデルを用意します。
ConvertGguf.bat を実行
次に、EasyForge の flux_tool のフォルダ内にある ConvertGguf.bat を実行します。


するとコマンドプロンプトの黒い画面が表示されるので、ここで変換したいファイルをドラッグ&ドロップします。

あとはメッセージに従って Enter を押せば GGUF 形式のモデルが生成されます!
他の形式を作りたい場合
ConvertGguf.bat を実行すると、デフォルトでは Q8 と Q6_K の2つの形式が作成されます。
ほかの種類の GGUF 形式を作りたい場合は、 flux_tool の env フォルダ内の ConvertGgufFormat.txt を書き換えてから上書き保存して、再度 ConvertGguf.bat を実行します。


記入例
Q8_0
Q6_K
Q5_K_M
Q4_K_M
Q3_K_L など
これで任意の形式の GGUF ファイルを作ることができます!
ComfyUI には --novram オプションもある
ComfyUI で VRAM の少ない環境で高画質のイラストを生成したい場合、--novram オプションを使う方法もあります。
--novram オプションを使うと生成時間は 1.5~2倍に伸びますが、VRAM が 6GB の環境でも高画質のイラストを生成 することができます。
まとめ:GGUF 形式はすごい!
GGUF 形式の使い方についてまとめました。
GGUF 形式でメモリを節約
圧縮形式は VRAM 容量に合ったものを選ぶ
flux_tool で最適な形式を作成する
今回は Flux.1 を例に解説しましたが、GGUF 形式はすでに SD 3.5 や SDXL にも導入されています。

GGUF 形式は画期的な技術で、今後スマホなどの小型端末に対しても AI の普及を後押しするとみられています。
近い将来、誰でもスマホで画像生成ができる時代が来るのかもしれません。
最後までお読みいただきありがとうございます!
クリエイター紹介
さて、今回ご紹介する note クリエイター は hakuro さんです!
hakuro さんは、様々なジャンルの note を執筆されていますが、特にこちらの記事では、歴史小説を AIイラストで紹介する試みをされています。
私は今まで歴史小説にほとんど触れたことはありませんでしたが、きれいなイラストのおかげで、ストーリーを自然と読むことができました。
AIイラストの新しい使い方を感じます。皆様もぜひご覧ください!
GGUF形式のダウンロードサイト
Flux.1[shnell]
blue_pencil-flux.1(アニメモデル)
Flan-T5xxl(T5xxl の改良版)
こちらは、非蒸留モデルなので、通常の T5xxl より容量が大きいです。