# ComfyUI で Diffusion Image GGUF を実行する方法

ComfyUIは、ノードベース（グラフ/フローチャート）インターフェースを使用するオープンソースの拡散モデル用GUI、API、およびバックエンドです。 [ComfyUI](https://github.com/comfyanonymous/ComfyUI) は、Qwen-Image-EditやFLUXのような画像モデルのワークフローを実行する最も一般的な方法です。

GGUFはローカルで拡散モデルを実行するための最良かつ効率的なフォーマットの一つであり、 [Unsloth Dynamic](https://unsloth.ai/docs/jp/ji-ben/unsloth-dynamic-2.0-ggufs) GGUFは低ビットでも精度を保持するスマートな量子化を使用します。

このステップバイステップのチュートリアルでは、ComfyUI（Windows、Linux、macOS）のインストール、ワークフローの構築、および調整方法を学びます [ハイパーパラメータ](#workflow-and-hyperparameters-1) 。

#### 前提条件と要件

拡散GGUFを実行するためにGPUは必要なく、RAMを搭載したCPUだけで動作します。VRAMは必須ではありませんが、推論を大幅に高速化します。最良の結果を得るには、合計使用可能メモリ（RAM + VRAM / 統一メモリ）がGGUFのサイズよりわずかに大きいことを確認してください。例えば、4ビット（Q4\_K\_M） `unsloth/Qwen-Image-Edit-2511-GGUF` は13.1GBなので、合計で少なくとも約13.2GBのメモリが必要です。すべてのUnsloth拡散GGUFは次で見つけることができます [私たちのコレクション](https://huggingface.co/collections/unsloth/unsloth-diffusion-ggufs).

拡散モデルでは特にビジョンコンポーネントなどの層が量子化に非常に敏感なため、少なくとも3ビットの量子化を推奨します。UnslothのDynamic quantsは重要な層をアップキャストして可能な限り精度を回復します。

## 📖 ComfyUI チュートリアル

ComfyUIは画像生成パイプライン全体を接続されたノードのグラフとして表現します。本ガイドはCUDA搭載マシンに焦点を当てますが、AppleやCPUでのビルド手順も類似しています。

### #1. インストールとセットアップ

ComfyUIをインストールするには、WindowsまたはMacデバイス向けのデスクトップアプリをダウンロードできます [ここ](https://www.comfy.org/download)。それ以外の場合、GGUFモデルを実行するためにComfyUIをセットアップするには次を実行してください:

```bash
mkdir comfy_ggufs
cd comfy_ggufs
python -m venv .venv
source .venv/bin/activate

git clone https://github.com/comfyanonymous/ComfyUI.git
cd ComfyUI
pip install -r requirements.txt

cd custom_nodes
git clone https://github.com/city96/ComfyUI-GGUF
cd ComfyUI-GGUF
pip install -r requirements.txt
cd ../..
```

### #2. モデルのダウンロード

拡散モデルは通常3つのモデルを必要とします。画像のピクセル空間を潜在空間にエンコードする変分オートエンコーダ（VAE）、テキストを入力埋め込みに変換するテキストエンコーダ、そして実際の拡散トランスフォーマーです。すべてのUnsloth拡散GGUFは当社の [コレクションはこちら](https://huggingface.co/collections/unsloth/unsloth-diffusion-ggufs).

拡散モデルとテキストエンコーダーはGGUF形式で、通常VAEにはsafetensorsを使用します。使用するモデルをダウンロードしましょう。

```bash
cd models

curl -L -C - -o vae/flux2-vae.safetensors \
  https://huggingface.co/Comfy-Org/flux2-dev/resolve/main/split_files/vae/flux2-vae.safetensors
  
curl -L -C - -o text_encoders/Mistral-Small-3.2-24B-Instruct-2506-UD-Q4_K_XL.gguf \
  https://huggingface.co/unsloth/Mistral-Small-3.2-24B-Instruct-2506-GGUF/resolve/main/Mistral-Small-3.2-24B-Instruct-2506-UD-Q4_K_XL.gguf

curl -L -C - -o text_encoders/Mistral-Small-3.2-24B-Instruct-2506-mmproj-BF16.gguf \
  https://huggingface.co/unsloth/Mistral-Small-3.2-24B-Instruct-2506-GGUF/resolve/main/mmproj-BF16.gguf
  
curl -L -C - -o unet/flux2-dev-Q4_K_M.gguf \
  https://huggingface.co/unsloth/FLUX.2-dev-GGUF/resolve/main/flux2-dev-Q4_K_M.gguf
```

GGUFアップロードについては以下を参照してください: [Qwen-Image-Edit-2511](https://huggingface.co/unsloth/Qwen-Image-Edit-2511-GGUF), [FLUX.2-dev](https://huggingface.co/unsloth/FLUX.2-dev-GGUF) および [Qwen-Image-Layered](https://huggingface.co/unsloth/Qwen-Image-Layered-GGUF)

{% hint style="warning" %}
VAEと拡散モデルのフォーマットはdiffusersのチェックポイントと異なる場合があります。ComfyUIと互換性のあるチェックポイントのみを使用してください。
{% endhint %}

これらのファイルはComfyUIが認識できる正しいフォルダに配置する必要があります。さらに、mmprojファイル内のビジョンタワーはテキストエンコーダーと同じプレフィックスを使用する必要があります。

後で使用する参照画像もダウンロードしてください。

```bash
curl -L -C - -o ../input/sloth1.jpg \
    https://unsloth.ai/cgi/image/_1d5a5685-2d88-44ca-b50f-ba432cd646ef_9CGCY8lvw4D9JkOdueqsk.jpeg?width=1920&quality=80&format=auto

curl -L -C - -o ../input/sloth2.jpg \
    https://unsloth.ai/cgi/image/UnSloth_GPU_Front_-_Confetti_ArcSk-MR4MMN215UutOFZ.png?width=1920&quality=80&format=auto
```

#### ワークフローとハイパーパラメータ

詳細な [#workflow-and-hyperparameters-1](#workflow-and-hyperparameters-1 "mention") ガイド。

ComfyUIディレクトリに移動して次を実行します:

```bash
python main.py
```

これによりウェブサーバーが起動し、次にアクセスできるようになります `https://127.0.0.1:8188` 。クラウドで実行している場合、ローカルマシンからアクセスするためにポートフォワーディングを設定する必要があります。

ワークフローは出力画像（PNGメタデータ）に埋め込まれたJSONファイルまたは個別の `.json` ファイルとして保存されます。次のことができます:

* 画像をComfyUIにドラッグ＆ドロップしてそのワークフローを読み込む
* メニューからワークフローをエクスポート/インポートする
* ワークフローをJSONファイルとして共有する

以下はダウンロードして使用できるFLUX 2のjsonファイルの2つの例です：

{% file src="<https://735611837-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FxhOjnexMCB3dmuQFQ2Zq%2Fuploads%2FpDft2nBJR3D1ti1zxr9v%2Funsloth_flux2_t2i_gguf.json?alt=media&token=43f65886-0a81-4bad-b6dd-f6d4daa89a9b>" %}

{% file src="<https://735611837-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FxhOjnexMCB3dmuQFQ2Zq%2Fuploads%2FnCcWbaZDgETpESU0jrml%2Funsloth_flux2_i2i_gguf.json?alt=media&token=24c6926e-5b49-4aa5-93d7-9b6a63a0a3fa>" %}

{% columns %}
{% column %}
ワークフローをゼロから設定する代わりに、ここからワークフローをダウンロードできます。

Comfyのロゴ -> ファイル -> 開く をクリックしてブラウザページに読み込み、次にダウンロードした `unsloth_flux2_t2i_gguf.json` ファイルを選択してください。以下のように見えるはずです：
{% endcolumn %}

{% column %}

<figure><img src="https://735611837-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FxhOjnexMCB3dmuQFQ2Zq%2Fuploads%2FqoxBnRlnYrmzLfZshE1Z%2FScreenshot%20from%202025-12-29%2014-37-00.png?alt=media&#x26;token=1b1517b7-d44f-4e95-a5ed-759a4e0f74ec" alt="" width="254"><figcaption></figcaption></figure>
{% endcolumn %}
{% endcolumns %}

<figure><img src="https://735611837-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FxhOjnexMCB3dmuQFQ2Zq%2Fuploads%2FWCVbmRbpijuj78M1rBtK%2FScreenshot%20from%202025-12-29%2021-41-52.png?alt=media&#x26;token=8378c519-1610-4752-bb71-4b95fdf00037" alt="" width="563"><figcaption></figcaption></figure>

このワークフローは公式に公開されたComfyUIのワークフローに基づいていますが、GGUFローダー拡張を使用し、テキストから画像への機能を示すために簡略化されています。&#x20;

### #3. 推論

ComfyUIは非常にカスタマイズ可能です。モデルを混在させて極めて複雑なパイプラインを作成できます。基本的なテキストから画像の設定では、モデルを読み込み、プロンプトと画像の詳細を指定し、サンプリング戦略を決定する必要があります。&#x20;

**モデルのアップロード + プロンプトの設定**

モデルは既にダウンロードしてあるので、正しいものを選ぶだけです。Unetローダーには `flux2-dev-Q4_K_M.gguf`を選び、CLIPLoaderには `Mistral-Small-3.2-24B-Instruct-2506-UD-Q4_K_XL.gguf`を選び、VAEの読み込みには `flux2-vae.safetensors`.&#x20;

任意のプロンプトを設定できます。分類器フリーガイダンスがモデルに組み込まれているため、ネガティブプロンプトを指定する必要はありません。

**画像サイズ + サンプラーパラメータ**

Flux2-devは異なる画像サイズをサポートします。幅と高さの値を設定して長方形を作成できます。サンプラーパラメータでは、euler以外の異なるサンプラーや、ステップ数を増減して試すことができます。出力の違いを確認したい場合は、RandomNoiseの設定をrandomizeからfixedに変更してください。

**実行**

Runをクリックすると、45〜60秒で画像が生成されます。その出力画像は保存できます。興味深い点は、Comfyのワークフロー全体のメタデータが画像に保存されることです。これを共有すれば、他の人がUIに読み込むことでどのように作成されたかを確認できます。

<figure><img src="https://735611837-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FxhOjnexMCB3dmuQFQ2Zq%2Fuploads%2FfSKbmlievhyLzNmQxD88%2Funsloth_flux2_t2i_gguf.png?alt=media&#x26;token=e9e1d8f0-777c-4083-823d-aeb3e77f5cf8" alt="" width="188"><figcaption></figcaption></figure>

**マルチリファレンス生成**

Flux2の重要な機能の一つはマルチリファレンス生成で、生成を制御するために複数の画像を提供できます。今回は `unsloth_flux2_i2i_gguf.json`を読み込みます。同じモデルを使用しますが、今回は参照する画像を選択するための追加ノードがある点だけが異なります（これらは先にダウンロードしました）。プロンプトが両方を参照していることに気づくでしょう `画像1` および `画像2` の両方が参照アンカーとして言及されているのがわかります。読み込んだらRunをクリックすると、2つの独自のナマケモノキャラクターを並べつつ類似性を保った出力が得られます。

<figure><img src="https://735611837-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FxhOjnexMCB3dmuQFQ2Zq%2Fuploads%2FYyWL5368gfbwPAl8bhQ0%2Funsloth_flux2_i2i_gguf.png?alt=media&#x26;token=8857c028-5079-4eae-aec2-b02387bf2b23" alt="" width="188"><figcaption></figcaption></figure>

## 🎯 ワークフローとハイパーパラメータ

テキストから画像へのワークフローでは、プロンプト、サンプリングパラメータ、画像サイズ、ガイダンススケール、および最適化設定を指定する必要があります。

#### **サンプリング**

サンプリング はLLMとは異なる動作をします。1トークンずつサンプリングする代わりに、複数のステップで画像全体をサンプリングします。各ステップで画像が段階的に「デノイズ」されるため、ステップ数を増やすと一般に画像の品質が向上します。また、一階・二階のアルゴリズムから決定論的・確率的アルゴリズムまでさまざまなサンプリング手法があります。本チュートリアルでは、品質と速度のバランスが取れた標準的なサンプラーであるeulerを使用します。

#### **ガイダンス**

ガイダンス は拡散モデルにとってもう一つの重要なハイパーパラメータです。ガイダンスには多くの種類がありますが、最も広く使われている形態の二つは **分類器フリーガイダンス（CFG）** とガイダンス蒸留です。分類器フリーガイダンスの概念は [Classifier-Free Diffusion Guidance](https://arxiv.org/abs/2207.12598)に由来します。従来は入力条件に合わせるために別の分類器モデルが必要でしたが、この論文はCFGがモデルの条件付き予測と無条件予測の差を使ってガイダンス方向を形成することを示しています。

実際にはそれは無条件の予測ではなくネガティブプロンプトの予測であり、つまりこれは絶対に望ましくないプロンプトであり回避すべきものです。CFGを使用する場合、別のモデルは必要ありませんが、無条件またはネガティブプロンプトからの第二の推論ステップが必要です。他のモデルではCFGが訓練中に組み込まれていることもありますが、それでもガイダンスの強さを設定できます。これは第二の推論ステップを必要としないためCFGとは別のものですが、その効果の強さを調整するハイパーパラメータです。

#### **結論**

まとめると、モデルに何を生成するかを指示するプロンプトを設定し、テキストエンコーダーがテキストをエンコードし、VAEが画像をエンコードし、両方の埋め込みがサンプリングパラメータとガイダンスに従って拡散モデルを通過し、最後にVAEが出力をデコードして使用可能な画像が得られます。

### 主要概念と用語集

* **潜在（Latent）**：圧縮された画像表現（モデルが操作する対象）。
* **コンディショニング（Conditioning）**：生成を導くテキスト/画像情報。
* **拡散モデル / UNet**：デノイズを行うニューラルネットワーク。
* **VAE**：ピクセル空間と潜在空間の間のエンコーダ/デコーダ。
* **CLIP（テキストエンコーダ）**：プロンプトを埋め込みに変換する。
* **サンプラー**：潜在を反復的にデノイズするアルゴリズム。
* **スケジューラ**：ステップ間のノイズスケジュールを制御する。
* **ノード**：操作（モデルの読み込み、テキストのエンコード、サンプリング、デコード等）。
* **エッジ**：ノード間を流れるデータ。
