
【ComfyUI-Mac】ComfyUIをMacに導入してみたよ
こんにちは、あるいは、こんばんは?
米の国からの記事初投稿です。
先日のAiraloのeSImを無事にアクティベートして、ネット環境も良好です♪
10GBの用量を「半額」+「3$割引」にてお安く使用して、1週間程度の滞在では十分過ぎる(ネット検索の頻度は低いです)と実感しております。
さてさて、今回は「Stable Diffusion」のフローが分かる「ComfyUI」なるものをMacに導入してみましたので、メモしておきます。
参考になれば幸いです。
PCスペック
MacBook Pro 14-inch, 2021
チップ:Apple M1 Max
コア:10(パフォーマンス 8, 効率性: 2)
メモリ:64 GB
macOS:macOS Sonoma 14.3
ComfyUI
ComfyUI自体の説明は省いておりますが、詳細が気になってしまう場合にはcomfyanonymous様のGitHub「ComfyUI」にてご確認いただけますと幸いです。
Apple Macシリコンにインストール
記事の中ほどに、インストール方法が記載されております。
Apple silicon M1に導入してみましたので、ターミナルアプリから以下のコードを実施してみてください。
Install pytorch nightly
以下の記事を参考に、PyTorchを導入します。
要件
・Mac Apple silicon
・macOS 12.3 or later
・Python 3.7 or later
・Xcode command-line tools
Minicondaをインストールして仮想環境を構築して、PyTorchを入れてみました。「ターミナル」アプリから実行すると、Pathなどに起因するエラーが回避できるようでした(わたしはpathの通し方など、基本事項を理解せずに実行しておりますのでご了承ください)。
Minicondaのインストール
ワーキングディレクトリを変更します。デフォルトでも問題ないと思いますが、わたしはDropbox下の「/Users/user/Dropbox/GitHub/local」にダウンロードしてみました。
# ワーキングディレクトリの設定
cd /Users/user/Dropbox/GitHub/local
# Minicondaのインストール
curl -O https://repo.anaconda.com/miniconda/Miniconda3-latest-MacOSX-arm64.sh
sh Miniconda3-latest-MacOSX-arm64.sh
仮想環境「comfy」を構築する
Python 3.7以上を必要とするようでしたので、おなじみのPython 3.10を使用します。
conda create --name comfy python=3.10 -y
conda activate comfy
Xcodeをインストールする
「Xcode command-line tools」が必要になるようでしたので、以下を実行します。インストールするには時間がかかると思います。
xcode-select --install
PyTorchをインストールする
仮想環境「comfy」にPyTorchをインストールしてみます。
以下のコード実行します。
# 仮想環境「comfy」をアクティベートする
conda activate comfy
# condaコマンドにてpytorch-nightlyをインストールする
conda install pytorch torchvision torchaudio -c pytorch-nightly -y
# pipをアップデートする
/Applications/Xcode.app/Contents/Developer/usr/bin/python3 -m pip install --upgrade pip --no-warn-script-location
# torch, torchvision, torchaudioをインストールする
pip3 install --pre torch torchvision torchaudio --extra-index-url https://download.pytorch.org/whl/nightly/cpu
PyTorchが作動するか、以下のコードを実行して確認します。
# 仮想環境「comfy」をアクティベートする
conda activate comfy
# pythonを実行する
python
# PyTorchをテストする
import torch
if torch.backends.mps.is_available():
mps_device = torch.device("mps")
x = torch.ones(1, device=mps_device)
print (x)
else:
print ("MPS device not found.")
# 以下の出力が確認できればOK
# > tensor([1.], device='mps:0')
# Pythonを終了する
exit()
GitHubからComfyUIをダウンロードしてインストールする
「git clone」にて関連ファイルをダウンロードし、セットアップします。
# 仮想環境「comfy」をアクティベートする
conda activate comfy
# ワーキングディレクトリを移動する
cd /Users/user/Dropbox/GitHub/local
git clone https://github.com/comfyanonymous/ComfyUI.git
# ワーキングディレクトリを移動する
cd /Users/user/Dropbox/GitHub/local/ComfyUI
# セットアップする
pip install -r requirements.txt
(オプション)Symbolic Linkの作成
すでにStable Diffusionの環境が構築されていたり、モデルファイルを所有していたりする場合には、シンボリックリンクを作成してみると、モデルファイルをコピーして二重に所有する必要がなくなるかもしれません。
設定の一例をお示しします。
外付けストレージではうまくいかない場合もあるため、デフォルトフォルダにて管理した方が良いかもしれません。
わたしはDropbox下に、2023年8月に作成したstable-diffusion-webuiのフォルダが有り、モデルファイルを格納しておりましたので、リンク元にしてみました。
シンボリックリンクを作成する場所「/Users/user/Dropbox/GitHub/local/ComfyUI/models」には、もともと「checkpoints」フォルダが有るため、削除しておくか名称を変更しておくと良いと思います。
以下のようにコードを実行します。
# ln -s 「シンボリックリンク元のパス(モデルファイルのあるところ)」 「シンボリックリンクを作成する場所のパス」
ln -s /Users/user/Dropbox/GitHub/local/stable-diffusion-webui202308/stable-diffusion-webui/models/Stable-diffusion /Users/user/Dropbox/GitHub/local/ComfyUI/models/checkpoints
ComfyUIを起動する
ComfyUIを起動してみます。最初は時間がかかると思いますが、2回目以降から早くなると思います。
# 仮想環境「comfy」をアクティベートする
conda activate comfy
# ComfyUIを起動する
python /Users/user/Dropbox/GitHub/local/ComfyUI/main.py
問題がなければ、以下のように表示されるかと思います。
(comfy) user@MBP14 ~ % python /Users/user/Dropbox/GitHub/local/ComfyUI/main.py
Total VRAM 65536 MB, total RAM 65536 MB
Set vram state to: SHARED
Device: mps
VAE dtype: torch.float32
Using sub quadratic optimization for cross attention, if you have memory or speed issues try using: --use-split-cross-attention
/Users/user/miniconda3/envs/comfy/lib/python3.10/site-packages/torchvision/io/image.py:13: UserWarning: Failed to load image Python extension: 'dlopen(/Users/user/miniconda3/envs/comfy/lib/python3.10/site-packages/torchvision/image.so, 0x0006): Symbol not found: __ZN3c1017RegisterOperatorsD1Ev
Referenced from: <5AA8DD3D-A2CC-31CA-8060-88B4E9C18B09> /Users/user/miniconda3/envs/comfy/lib/python3.10/site-packages/torchvision/image.so
Expected in: <1703A1AD-4411-3CDB-AA1F-AEF5395A7026> /Users/user/miniconda3/envs/comfy/lib/python3.10/site-packages/torch/lib/libtorch_cpu.dylib'If you don't plan on using image functionality from `torchvision.io`, you can ignore this warning. Otherwise, there might be something wrong with your environment. Did you have `libjpeg` or `libpng` installed before building `torchvision` from source?
warn(
Starting server
To see the GUI go to: http://127.0.0.1:8188
Webブラウザにて「http://127.0.0.1:8188」にアクセスします。

好みのモデルファイルを選択して実行してみます。
デフォルト設定から、少し配置やノードを増やしていますが、同じようにしてみてください。
ちなみに、VAEを読み込むノードの追加は「右クリック > Add Node > loaders > Load VAE」です。
読み込んだら、「VAE Decode」の「vae」と連結します。


「Queue Prompt」をクリックして実行します。

出力できましたね!!!

Negative Prompt: text, watermark(デフォルト)
まとめ
いかがでしょうか?
簡単に導入できておりましたら幸いです。
画面の雰囲気は他のソフトウェア(例えば、Blenderなど)に似ている感じがしますね。
ワークフローを可視化したり、カスタマイズして伝えたりするのに便利な気がします。
拡張機能を導入したり、設定を細かくいじってみたりする必要がありますが、「シンボリックリンク」を活用して見るとよいのかもしれません。

更新
20240219.0:初版
おまけ
