見出し画像

ComfyUIを手動インストールしてSDXLモデルを使用する手順(Windows)

Last update 08-12-2023




▼ 本記事について

概要

 ComfyUIはStable Diffusionモデルから画像を生成する、Webブラウザベースのツールです。最近ではSDXLモデルでの生成速度の早さ、消費VRAM量の少なさ(1304x768の生成時で6GB程度)から注目を浴びています。

 本記事では手動でインストールを行い、SDXLモデルで画像生成を行う手順を説明します。敢えて手動である理由は、gitで管理を行いたいからです。

動作環境(推定)

 Geforce RTX 2xxx以降(VRAM 8GB以上)、Python 3.10、CUDA Toolkit 11.8、Git、なるべく高速なSSD、なるべく高速なインターネット回線、このあたりがそろっていれば大丈夫だと思います。

ComfyUIの公式リポジトリ

https://github.com/comfyanonymous/ComfyUI

通常の利用方法(ポータブル版)

 公式リポジトリにアクセスして、「Installing」→「Windows」にある「Direct link to download」からアーカイブファイルをダウンロードしてください。これを適当なディレクトリに解凍(7z形式に対応したツールが必要)して、「run_nvidia_gpu.bat」を実行してください。アップデートの手順も備わっていますので、通常はこの方法が良いでしょう。



▼ インストール

 基本的には、公式リポジトリにある「Manual Install (Windows, Linux)」の手順に従います。なお、他のリポジトリの仮想環境に相乗りする方法もあるようですが、これは行わずにComfyUI専用の仮想環境を作成します。

ダウンロードと仮想環境の作成

 作業ディレクトリを「C:\aiwork」としていますので、適宜読み替えてください。コマンド プロンプトを開いて、ディレクトリ「C:\aiwork\ComfyUI」が無い状態で下記のコマンドを順に実行してください。

cd \aiwork

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

python -m venv venv
venv\Scripts\activate
(ここで行頭に (venv) が付いていることを確認する)

python -m pip install --upgrade pip

PyTorchとxFormersのインストール

 下記のコマンドを実行してください。パッケージのダウンロード等でしばらくかかります。

pip install torch torchvision torchaudio --extra-index-url https://download.pytorch.org/whl/cu118 xformers

 実行終了時に「Successfully installed …  torch-2.0.1+cu118 …」と表示されることを確認してください。cu118のような記述が無い場合はCPU版のtorchがインストールされているため、GPUを使うことができません。

必要なパッケージのインストール

 下記のコマンドを実行してください。少しだけ時間がかかるかもしれません。

pip install -r requirements.txt

モデルと設定ファイルのダウンロード

 本記事では例として、Linaqruf氏のAnimagine XLを使用することにします。他のモデルでも構いませんが、ワークフロー(拡張子がjson)またはComfyUIで出力された画像(拡張子がpng)が必要です。

 まずは https://huggingface.co/Linaqruf/animagine-xl へアクセスしてください。「Files and versions」→「animagine-xl.safetensors」の順でダウンロードを行い、「C:\aiwork\ComfyUI\models\checkpoints」へ移動してください。また、「animagine_xl_workflow.json」もダウンロードしてください。こちらは後で使用します。



▼ 実行(動作確認)

起動

 まずは起動して動作を確認してみます。先ほどの手順から続けて、下記のコマンドを実行してください。

python main.py

 起動には時間はかからず、下記の表示で止まります。Webブラウザで指示されたURLへアクセスしてください。

Total VRAM 12287 MB, total RAM 32691 MB
xformers version: 0.0.20
Set vram state to: NORMAL_VRAM
Device: cuda:0 NVIDIA GeForce RTX 3060 : cudaMallocAsync
Using xformers cross attention
Starting server

To see the GUI go to: http://127.0.0.1:8188

 アクセスすると、下記の画面が表示されました。低解像度では少し扱いづらいかもしれません。各ボックスや全体は、ドラッグ操作で動かすことができます。

初回の起動画面

ワークフローの読み込み

 前の手順でダウンロードした「animagine_xl_workflow.json」を読み込みます。「Load」をクリックしてファイルを選択するか、ファイルをUIの画面に直接ドラッグ&ドロップしてください。

ワークフローが読み込まれた

推論(画像の生成)

 推論を実行するため、「Queue Prompt」をクリックしてください。進捗が視覚的に示され、少し待つと生成された画像が表示されます。

画像が生成された

 画像の保存先は「C:\aiwork\ComfyUI\output」ですので、確認してください。

生成した画像が保存された

画像からワークフローを読み込んで生成する

 ComfyUIで生成された画像には、ワークフローを含む設定が記録されています。動作確認の続きとして、これを読み込んでみることにします。

 まずは「Clear」「OK」の順にクリックして、ワークフローを消してください。この手順は視覚的分かりやすくするために行うのみですので、今後は必要ありません。

 次に「Load」をクリックして画像を選択するか、画像をUIの画面に直接ドラッグ&ドロップしてください。ワークフローが構築され、プロンプトや「seed」等の設定まで再現されます。

 それでは改めて「Queue Prompt」をクリックしてください。今回は異なる画像が生成されました。これは「Ksampler」の「control_after_generate」が「randomize」になっていて、seedが変更されるためです。左矢印を何度かクリックして「fixed」にしておくと、seedが変わらずに同じ画像が生成されます。

終了する

 コマンド プロンプトのウインドウで「Ctrl + C」を押すか、おもむろにコマンド プロンプトの画面を閉じてください。作業のためコマンド プロンプトの画面を残した場合は必要に応じて、下記のコマンドを実行して仮想環境から抜けてください。行頭の「(venv)」の表示が消えます。

deactivate



▼ 起動等を簡単にする

 ComfyUIの起動が若干の手間なので、省力化することにします。また、更新(アップデート)の手順も用意しておきます。

起動用バッチファイルの作成

 新規ファイル「C:\aiwork\comfy.bat」を下記の内容で作成してください。

@echo off
cd \aiwork\ComfyUI
call venv\Scripts\activate.bat
python main.py
cd ..
deactivate

 これ以降にComfyUIを起動したい場合は、コマンド プロンプトを開いて、下記のコマンドを順に実行してください。

cd \aiwork
comfy

 終了したい場合は、コマンド プロンプトのウインドウで「Ctrl + C」を押して、「バッチ ジョブを終了しますか (Y/N)」で「N」と答えるか、おもむろにウインドウを閉じてください。

 なお、このバッチファイルは「deactivate」が最後に書いてあり、これが実行されるとバッチファイルの処理が終了します(後ろに何を書いても無効)。続けて処理を行いたい方は、deactivate.batをcallするように書き換える等、工夫してください。

更新用バッチファイルの作成

 新規ファイル「C:\aiwork\gpc.bat」を下記の内容で作成してください。ファイル名はgpcでなくても構いません。

@echo off
cd \aiwork\ComfyUI
git pull
cd ..

 このバッチファイルを実行すると、最新版への更新が行われるか、更新が無ければ下記の表示が出ます。

Already up to date.



▼ メモ

アンインストールの手順

 もし、必要なファイルがあれば移動してください。その後、実行を終了した状態で「ComfyUI」のディレクトリを削除してください。

補足

 本記事では最小限の手順しか行っていません。機能を増やすためにはワークフローを入手するか、自分で作る必要があります。



▼ その他

 私が書いた他の記事は、メニューよりたどってください。

 noteのアカウントはメインの@Mayu_Hiraizumiに紐付けていますが、記事に関することはサブアカウントの@riddi0908までお願いします。

この記事が気に入ったらサポートをしてみませんか?