見出し画像

【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

このMacについて

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」をクリックして実行します。

出力できましたね!!!

Positive Prompt: beautiful scenery nature glass bottle landscape, , purple galaxy bottle
Negative Prompt: text, watermark(デフォルト)


まとめ

いかがでしょうか?
簡単に導入できておりましたら幸いです。

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


Phoenix, flies, night, sky


更新

20240219.0:初版


おまけ

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