[生成AI] ComfyUI をローカル環境導入(ざっくり説明)

生成AI

ComfyUI とは、画像生成 AI である Stable Diffusion を Web 画面で利用できるツールのひとつ。Stable Diffusion の Web UI というと AUTOMATIC1111 の Stable Diffusion Web UI が有名だが、ComfyUI では ノードベース UI という AUTOMATIC1111 とは違った操作性を提供している。以下は、その ComfyUI を Windows PC に導入する手順。

GitHub - comfyanonymous/ComfyUI: A powerful and modular stable diffusion GUI with a graph/nodes interface.
A powerful and modular stable diffusion GUI with a graph/nodes interface. - GitHub - comfyanonymous/ComfyUI: A powerful ...

前提条件

一応、Stable Diffusion が動作するための推奨スペックとしては NVIDIA製 GeForce RTX 以降の GPU で VRAM 8GB 以上とされている。ただ ComfyUI については GPU を搭載していない(CPU のみの)PC でも動作可能とのことで、AUTOMATIC1111 の Web UI よりも軽量に動作できるのかもしれない。ちなみに、私の PC は GTX 8GB である(SD の最低要件を満たしていない)ということも付記しておく。

PC に搭載されている GPU についてはタスクマネージャで確認できる。Ctrl + Shift + ESC を同時押しするとタスクマネージャが起動するので、左メニューから「パフォーマンス」→「GPU」と選択すれば、GPU の種類と VRAM(専用メモリ)の容量が確認できる。

NVIDIA ドライバを更新

NVIDIA製 GPU を使用する場合は、まずドライバを最新化しておいた方が良い。そもそも NVIDIA製 GPU を使用しない場合は、この手順はスキップで OK。

AUTOMATIC1111 は古いドライバでも不思議と何となく動作するのだけど、ComfyUI の場合はドライバが古いと「API call is not supported in the installed CUDA driver(インストールされてるドライバはAPIがサポートされてないよ!)」というようなエラーが発出されて、うまく動作しなかったりする。

「API call is not supported in the installed CUDA driver」というエラーが出て処理が停止する

ということで、まず PC にインストールされている NVIDIA ドライバのバージョンを確認する。デスクトップ画面の何もないところを Shift キーを押しながら右クリックするとコンテキストメニューが表示されるので、その中から「NVIDIA コントロールパネル」を選択する。(このメニューがない場合は Microsoft Store からインストールできるので、まずそちらをインストール)

NVIDIA コントロールパネルを開くと、そこに現在使用中のドライバのバージョンが表示される。

このバージョンが、使用する CUDA が要求する条件を満たしているか確認する。NVIDIA の技術資料 によると、CUDA 11.x の場合は 452.39 以上CUDA 12.x の場合は 527.41 以上のバージョンである必要がありそう。

NVIDIA Data Center GPU Driver Documentation より

最新情報は CUDA Toolkit のリリースノートで確認できる。

CUDA 12.2 Release Notes — cuda-toolkit-release-notes 12.2 documentation
The Release Notes for the CUDA Toolkit.

これを満たしてない場合は、ドライバを最新化、若しくは要求されるバージョン以上に更新する必要がある。条件を満たしている場合は、以下の作業は不要。

まず NVIDIA のページを開く。

AI コンピューティングで世界をリードする
NVIDIA は世界最速のスーパーコンピューターと世界最大のゲーミング プラットフォームを開発しています。

画面右上の「ドライバー」というリンクをクリック。

ドライバのダウンロードページ が開くので、ドロップダウンの選択項目を上から自身の PC に合うように選択して「探す」をクリックする。ちなみに「ダウンロードタイプ」は「Game Rady」と「Studio」が選べるが、これはどちらでも良い(一応その違いとしては「Studio」は Maya とか 3dsMax など主要なモデリングソフトで動作確認されている、ということらしい)

ドライバのダウンロードページに移動するので、そのままダウンロードする。

実行形式のインストーラがダウンロードされるので、あとは画面の指示に従ってインストールすれば OK。

ComfyUI をインストール

ComfyUI は、あらかじめ Windows 上で動作するようにビルド済みのポータブル環境が用意されている。これを使用するのが一番手っ取り早いが、一部これが動作しない場合もあるようなので、プロジェクト一式を取得して自分で仮想環境を作成する方法も以下に併記しておく。

ポータブル環境を使用する場合

まず ComfyUI の GitHub ページを開く。

GitHub - comfyanonymous/ComfyUI: A powerful and modular stable diffusion GUI with a graph/nodes interface.
A powerful and modular stable diffusion GUI with a graph/nodes interface. - GitHub - comfyanonymous/ComfyUI: A powerful ...

Installing の項にある「Direct link to download」というリンクをクリックすると、現時点における最新ビルドがダウンロードされる。

ComfyUI_windows_portable_nvidia_cu118_or_cpu.7z という圧縮ファイルがダウンロードできるので、これを適当な場所に展開する。なお、7z 形式のアーカイブファイルは、最新の Windows 11 であれば標準で展開できるようだが、Windows 10 などの場合は、以下のページなどから 7-zip という 7z に対応したアーカイバを入手する。

圧縮・解凍ソフト 7-Zip
圧縮・解凍ソフト7-Zipは、7z、ZIP、RAR、LZH、ISO、TAR、DMG、MSIなど、さまざまなデータフォーマットに1つで対応している世界的にデファクトのフリーソフトウェアです。AES256による暗号化(パスワード圧縮および解凍)...

次に、学習済みモデルを入手する。モデルについては、Hugging FaceCIVITAI などのサイトでいろいろ公開されているが、よくわからなければ、下記のページから v1-5-pruned-emaonly.safetensors を入手する。

runwayml/stable-diffusion-v1-5 at main
We’re on a journey to advance and democratize artificial intelligence through open source and open science.

ダウンロードしたら ComfyUI\models\checkpoints というディレクトリに移動(コピー)しておく。

あと、VAE も入手しておく。こちらは必須ではないが、これがあると生成画像のノイズを除去したりぼやけを防止したり品質を上げることができる。下記のページから vae-ft-mse-840000-ema-pruned.safetensors を入手する。

stabilityai/sd-vae-ft-mse-original at main
We’re on a journey to advance and democratize artificial intelligence through open source and open science.

VAE は ComfyUI\models\vae というディレクトリに移動(コピー)しておく。

これで run_nvidia_gpu.bat というバッチファイル(NVIDIA製 GPU でない場合は run_cpu.bat)を実行すると、まず ComfyUI のサーバが起動する。

続いて、自動的にブラウザ画面が開く。

これでインストール完了。

プロジェクトを取得して構築する場合

上記のポータブル環境が動作すれば、こちらの手順は不要。ダメだった場合、こちらの手順を試してみてください。

なお、プロジェクトから環境構築する場合、最初に Python をインストールしておく必要がある。ここでその手順は省略するが、バージョンにこだわりがない場合は Microsoft Store からインストールするのが最もお手軽。特定のバージョンを使用したい場合は、Python 公式サイトからインストーラを入手してインストールすれば OK。

Download Python
The official home of the Python Programming Language

以下、Python はインストール済みとして説明する。

まず、適当なディレクトリにプロジェクトを git clone で取得する。

git clone https://github.com/comfyanonymous/ComfyUI.git

ComfyUI ディレクトリに移動する。

cd ComfyUI

仮想環境を作成する。

python -m venv venv

仮想環境を起動する。「(venv)」というプロンプトが表示される。

venv\Scripts\activate

pip を更新しておく。

python -m pip install --upgrade pip

PyTorch と依存関係をインストールする。なお、下記は CUDA 11.8 をインストールするコマンドとなっているので、 CUDA 11.7 をインストールする場合は「cu118」の部分を「cu117」に書き換える。よくわからなければ、このままで。

pip install --upgrade torch torchvision torchaudio --extra-index-url https://download.pytorch.org/whl/cu118 xformers -r requirements.txt pygit2

「Installing corrected packages …」というメッセージが表示されたらインストール完了。

モデルと VAE は 前の手順を参照して導入しておくこと。モデルと VAE を導入したら ConfyUI を起動。

python main.py

「To see the GUI go to: http://127.0.0.1:8188」と表示されたら、この URL (http://127.0.0.1:8188)をブラウザで表示する。

これでインストール完了。

AUTOMATIC1111 とモデルを共有する

既に AUTOMATIC1111 の Web UI を導入して使用している場合、モデル や VAE のファイルを AUTOMATIC1111 と ComfyUI で共有したいと思うはず。特にモデルファイルは軒並み 3~8GB ほどあり、ディスク領域をかなり圧迫する。これらを共有する方法はいくつかある。

ComfyUI の extra_model_paths.yaml を使う方法

このやり方が一番簡単でオススメ。ComfyUI ディレクトリの中に extra_model_paths.yaml.example というファイルがあり、これを設定することで AUTOMATIC1111 のモデルなど諸々のファイルを共有できるようになっている。

まず、extra_model_paths.yaml.example を extra_model_paths.yaml という名前に変更(.example を削除)して、これを適当なエディタで開く。そして a111 の base_path という項目を AUTOMATIC1111 の stable-diffusion-webui のパスに書き換える。

これで、ComfyUI が AUTOMATIC1111 のモデルや VAE などを参照するようになる。

AUTOMATIC1111 の起動オプションで ComfyUI のパスを指定する方法

AUTOMATIC1111 はモデルや VAE のパスを起動オプションで指定できるようになっている。なので、AUTOMATIC1111 のモデルと VAE を全て ComfyUI 側に移動して、AUTOMATIC1111 の起動オプションで ComfyUI のモデルや VAE のパスを指定する。

ここでは ConfyUI を C:\Tools\ComfyUI_windows_portable\ComfyUI というディレクトリにインストールしているとする。異なる場所にインストールしている場合は、以下読み替えてください。

まず、AUTOMATIC1111 の models\Stable-Diffusion ディレクトリの中身を、全て C:\Tools\ComfyUI_windows_portable\ComfyUI\models\checkpoints に移動。

次に、AUTOMATIC1111 の models\VAE の中身を、全て C:\Tools\ComfyUI_windows_portable\ComfyUI\models\vae へ移動。

その上で、AUTOMATIC1111 の起動バッチファイル webui-user.bat を開いて COMMANDLINE_ARGS に以下の起動オプションを追記する。

--ckpt-dir="C:\Tools\ComfyUI_windows_portable\ComfyUI\models\checkpoints" --vae-dir="C:\Tools\ComfyUI_windows_portable\ComfyUI\models\vae"

既に他のオプションが設定されているなら、その後ろに追記すれば良い。例えば次のような感じで。

set COMMANDLINE_ARGS=--xformers --listen --autolaunch --no-half --medvram --ckpt-dir="C:\Tools\ComfyUI_windows_portable\ComfyUI\models\checkpoints" --vae-dir="C:\Tools\ComfyUI_windows_portable\ComfyUI\models\vae"

これで AUTOMATIC1111 の Web UI を起動してみて、いつも通り使用できれば OK。なお、AUTOMATIC1111 の 起動オプションは、以下のページで確認できる。

Command Line Arguments and Settings
Stable Diffusion web UI. Contribute to AUTOMATIC1111/stable-diffusion-webui development by creating an account on GitHub...

シンボリックリンクを使う方法

シンボリックリンクというのは、もともと Linux の概念だが、Windows 7 あたりから Windows でも使用できるようになった。その詳細な説明は省くが、要は、別のパスのディレクトリやファイルにリダイレクトするようなファイル。実際に使ってみるとわかりやすいと思うので、ここでは ComfyUI のモデルと VAE のディレクトリをシンボリックリンクに変更して、AUTOMATIC1111 のモデルと VAE のディレクトリを参照するようにしてみる。

以下は AUTOMATIC1111 が C:\Tools\stable-diffusion-webui に、ComfyUI が C:\Tools\ComfyUI_windows_portable にインストールされているとする。これ以外のパスにする場合は、環境にあわせてそれぞれ読み替えてください。

まず Windows キー + R で「cmd」と入力、Ctrl + Shift + Enter とやって管理者モードでコマンドプロンプトを起動して、ComfyUI\models ディレクトリへ移動する。

cd C:\Tools\ComfyUI_windows_portable\ComfyUI\models

そこにある checkpoints というディレクトリと vae というディレクトリの名前を変更、または削除する。ここでは checkpoints → checkpoints_org, vae → vae_org と名前変更することにする。(これはエクスプローラー上でやっても OK)

ren checkpoints checkpoints_org
ren vae vae_org

そして、AUTOMATIC1111 のモデルのディレクトリへのシンボリックリンクを作成する。

mklink /D checkpoints C:\Tools\stable-diffusion-webui\models\Stable-diffusion

同様に、VAE の方もシンボリックリンクを作成する。

mklink /D vae C:\Tools\stable-diffusion-webui\models\VAE

作成されたら、以下のような表示になる。

エクスプローラでみると、ショートカットのようなファイルが作成されている。

これらを開いたら、AUTOMATIC1111 のモデルや VAE のディレクトリが開かれる。これでシンボリックリンクによってモデルと VAE が共有できた。

ComfyUI を使ってみる

ComfyUI のノードベースな UI は、普段 Unreal Engine や Unity などのゲーム制作ツールを使用している人には馴染み深いものだそうだが、そうでない人(例えば、私とか)にとっては、一見何をどう操作すれば良いのか、最初は戸惑うはず。

なので、まずこの画面の基本から。

この画面に並んでいる箱のようなものを「ノード」、そのノード同士を繋いでいる線を「リンク」という。ノードとリンクの結節点(◯ポチのところ)を「ポート」という。ノードはそれぞれ機能を持っていて、例えば「Load Checkpoint」というノードは、モデル(チェックポイント)を読み込む機能を持っている。また「CLIP Text Encode (Prompt)」というノードは、入力されたテキスト(プロンプト)を解釈するという機能を持っている。この2つのノードがリンクで繋がれているので、「モデルを読み込む 」→「テキストを解析する」という順番で処理が遷移していくことになる。テキストの解析が済んだらまた次のノードへ、という感じで、処理全体としてノードからノードへ処理を渡していくというような流れになり、この全体の流れを「ワークフロー」という。

初期設定されているワークフローをざっくりみてみると、「Load Checkpoint」で学習済モデルを読み込んで「CLIP Text Encode (Prompt)」でどんな絵を描くか決めて「KSampler」でゴニョゴニョして「VAE Decode」でムニャムニャして「Save Image」で画像ファイルを保存する、みたいなことなんだろうなーというのが何となくわかるかと。(ゴニョゴニョムニャムニャは説明しだすと論文が書けてしまうので割愛)

要は、画像生成 AI がどんな流れで仕事してるのかが視覚的に分かって楽しいですね、ということです。楽しくないですか。まあそこは人それぞれということで。

簡単に画面操作の説明をすると、

  • ノードをクリック(ホールド)してドラッグすることで移動できる(ノードを移動させるとリンクも追従して動く)
  • リンクの端点をクリック(ホールド)してドラッグすることで、他のノードに繋ぎ変えることができる
  • リンクの端点を何もないところでドロップすると削除される
  • リンクはノードのポートをクリック(ホールド)してドラッグすることで新たにのばすことができる
  • 画面の何もないところでマウスをクリック(ホールド)してドラッグするワークフロー全体を移動(スクロール)できる
  • マウスホイールで画面の拡大、縮小ができる

という感じ。

初期状態でプロンプトに「綺麗な紫のガラス瓶」みたいなテキストが入力されているので、試しにこのまま「Queue Prompt」ボタンをクリックしてみる。すると、処理中のノード(緑の枠が表示される)が遷移していき、最終的に「Save Image」ノードに画像が出力される。

あとは、モデルを変えてみたり画像サイズやサンプラーを変えてみたりとやっていれば、そのうちそれぞれの機能や設定内容もわかってくると思うので、そんな感じで追々覚えていっていただければと。

なお、この ComfyUI は、一度つくったワークフローをファイルに保存できるので、いい感じに調整できたワークフローは「Save」で保存しておいて、いつでも呼び出せる(「Load」で呼び出せる)ようにしておくと良い。また、以下のようなページにワークフローの作成例も公開されているので、こういうのを使って学習していくのも良いかもしれない。

ComfyUI Examples
Examples of ComfyUI workflows

SDXL な画像を生成してみる

ComfyUI は AUTOMATIC1111 の Web UI よりも軽量ということで、これはワンチャン私の古い PC でも SDXL な画像がつくれるのでは?ということで、ちょっとやってみる。

まず、SDXL のモデル sd_xl_base_1.0.safetensors を以下のページから取得する。

stabilityai/stable-diffusion-xl-base-1.0 at main
We’re on a journey to advance and democratize artificial intelligence through open source and open science.

SDXL の Refiner モデル sd_xl_refiner_1.0.safetensors は以下のページから取得する。

stabilityai/stable-diffusion-xl-refiner-1.0 at main
We’re on a journey to advance and democratize artificial intelligence through open source and open science.

SDXL の VAE sdxl_vae.safetensors はこちらから。

stabilityai/sdxl-vae at main
We’re on a journey to advance and democratize artificial intelligence through open source and open science.

モデルと Refiner は models\Stable-Diffusion へ、VAE は models\VAE へそれぞれ移動する。

次に SDXL のワークフローをつくるのだけど、とりあえず既に誰かがつくったワークフローを使わせてもらうのがはやいので、以下のページからいただくことにする。

SDXL Examples
Examples of ComfyUI workflows

このページの最初の画像(紫の瓶の画像)を右クリックして「名前をつけて画像を保存」でダウンロードする。

この画像を ComfyUI の画面上にドラッグ&ドロップする。すると、この画像を生成したワークフローが作成される。

一度、このまま「Queue Prompt」をクリックして画像生成してみる。

できた!

時間はかかったものの(大体2~3分くらい)途中で落ちること無く画像生成できました。ということは、他の SDXL ベースのモデルも使えるということでしょう。

ということで、次にアニメ調の絵を SDXL で描いてみる。Animagine XL というモデルが SDXL 1.0 ベース かつ アニメ調特化、そして ComfyUI のワークフローまで配布してくれているので、こちらを使わせていただく。

以下のページから animagine-xl.safetensorsanimagine_xl_workflow.json をダウンロードする。

Linaqruf/animagine-xl at main
We’re on a journey to advance and democratize artificial intelligence through open source and open science.

モデルは models\Stable-Diffusion に移動して ComfyUI を再起動したら、「Load」ボタンから animagine_xl_workflow.json を選択して読み込む。

モデル(チェックポイント)に animagine-xl.safetensors が選択されていることを確認したら、そのまま「Queue Prompt」をクリック。

出た!(これも 2~3分ほどかかったけど)

GeForce GTX な PC でも、SDXL ベースのモデルを使用して画像生成できました。AUTOMATIC1111 だと、このサイズ(1304 x 768)の画像を生成しようとしたら –lowvram 指定しても OutOfMemoryError で落ちてたのに。ただ、何となく ComfyUI はAUTOMATIC1111 より生成にかかる時間が気持ち長い気がする。同じ Stable Diffusion を使っていても、処理の仕方が何か違うんでしょうね。

ということで、AUTOMATIC1111 で SDXL ベースの画像がつくれないと嘆いている方、ComfyUI を使えば、もしかするといけるかもしれません。お試しあれ。

タイトルとURLをコピーしました