CATHODE COASTaccess to tools
— 15 min read

Mac(Apple Silicon)に ComfyUI を手動で入れて、SDXL で最初の1枚を出すまで

Apple Silicon の Mac に ComfyUI を手動インストールし、SDXL で1枚生成するまでのハンズオン。仮想環境・再起動・テンプレート切り替えなど詰まりやすい点と、必要スペックの目安もまとめました。

shareB!

はじめに

Mac のターミナルから ComfyUI をインストールして、SDXL で最初の1枚を生成するまでの手順をまとめます。最終的な目的は Qwen-Image を動かすことですが、いきなり大きなモデルに進むと、どこで失敗したのか切り分けにくくなります。そこでこの記事では、その手前の「ComfyUI が正しく動く状態を作る」ところまでを扱います。

手順は実際に手を動かして確認し、詰まったところはその場で書き足しました。特に次の3点は、手順どおりに進めたつもりでも引っかかりやすいところです。

  • ComfyUI を起動したあとは、別のターミナルで作業することになる(そして、そのターミナルでは仮想環境が外れている)
  • 「ComfyUI を再起動する」が、具体的に何をすることなのか分かりにくい
  • モデルを置いただけでは生成できず、SDXL 用のテンプレートに切り替える必要がある

動作環境

項目内容
マシンMacBook Pro(Apple M5 Max / メモリ 48GB)
Python3.12(Homebrew)
ComfyUIGitHub から取得した最新版(執筆時点: 2026年10月)
画面表示日本語

ComfyUI は更新が速く、メニューやボタンの名前は変わることがあります。この記事の画面表示は 2026年10月時点のものです。

SDXL だけなら、ここまでのスペックは要りません

私の環境は M5 Max / 48GB ですが、これは Qwen-Image のような大きなモデルを見据えた構成です。この記事のゴールである SDXL の生成だけなら、もっと控えめな Mac で足ります。

  • SDXL のベースモデルは約 6.9GB です。Stability AI の発表でも「8GB の VRAM を持つコンシューマ向け GPU で動作する」とされています(SDXL 1.0 のアナウンス)。
  • ただし Apple Silicon はユニファイドメモリで、GPU 用のメモリを macOS やブラウザと分け合います。そのため「メモリ 8GB の Mac なら動く」という意味にはなりません。Mac 向けの解説では、8GB ではスワップが発生して1枚に数分かかり実用的ではない、16GB あれば快適に動く、とされています(Stable Diffusion on Mac のガイド)。
  • 私の手元には 16GB の Mac がないので、ここは自分では確かめていません。目安として読んでください。
やりたいことモデルファイルの大きさメモリの目安
SDXL で生成(この記事の範囲)約 6.9GB16GB 以上
Qwen-Image で生成(次のステップ)合計 25〜30GB 前後(量子化版の場合)大容量メモリが活きるのはここから

ディスクは、SDXL のモデルだけで約 7GB 使います。余裕を見て 15GB ほど空けておくと安心です。なお、この記事の手順は Apple Silicon(M1 以降)の Mac が前提です。

手順1. 事前準備(Homebrew・Python)

ターミナル(アプリケーション › ユーティリティ › ターミナル)を開いて、順番に実行します。

1-1. コマンドラインツール

git などを使うために必要です。すでに入っていれば「already installed」と出るだけなので、そのまま進んで大丈夫です。

xcode-select --install

1-2. Homebrew

Mac 用のパッケージ管理ツールです。入っているか確認します。

brew --version

「command not found」と出たら、以下でインストールします(画面の指示に従って Enter とパスワードを入力)。

/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"

補足: インストール後に「Next steps」として echo ... >> ~/.zprofile のようなコマンドが表示されたら、それもコピーして実行してください。

1-3. Python

ComfyUI は Python 3.12 で安定して動きます。Homebrew で入れます。

brew install python@3.12
python3.12 --version

Python 3.12.x と表示されれば OK です。

手順2. ComfyUI を取得する

ホームフォルダ直下に ComfyUI フォルダとして取得します。場所は好みで変えて構いません。

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

補足: 以降の手順は、すべてこの ~/ComfyUI フォルダの中で実行します。ターミナルを開き直したときは cd ~/ComfyUI で戻ってください。

手順3. 仮想環境を作る

ComfyUI 専用の Python 環境を作ります。ほかのツールとライブラリが混ざらないようにするためです。

python3.12 -m venv venv
source venv/bin/activate

プロンプトの先頭に (venv) と付けば有効になっています。

注意: この (venv) が付いた状態で以降のコマンドを実行してください。仮想環境はターミナルのウィンドウ(タブ)ごとに有効・無効が決まります。ターミナルを開き直したときや、新しいウィンドウ・タブを開いたときは外れているので、そのたびに cd ~/ComfyUI と source venv/bin/activate が必要です。

手順4. PyTorch と依存パッケージを入れる

Apple Silicon の GPU(MPS)に対応した PyTorch を入れます。

pip install --upgrade pip
pip install torch torchvision torchaudio

続いて ComfyUI 本体が必要とするパッケージを入れます。数分かかります。

pip install -r requirements.txt

GPU が認識されているか確認

python -c "import torch; print(torch.backends.mps.is_available())"

True と表示されれば、GPU で生成できる状態です。

手順5. 起動して画面を開く

5-1. 起動する

python main.py

しばらくして、次のような行が出れば起動成功です。

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

ブラウザで http://127.0.0.1:8188 を開くと、ノードが並んだ ComfyUI の画面が表示されます。

便利なオプションもあります。

コマンド効果
python main.py --auto-launch起動時にブラウザを自動で開く
python main.py --listen同じ Wi-Fi 内のほかの端末からもアクセスできるようにする

5-2. ここから先はターミナルを2つ使います

ここが最初のつまずきポイントでした。 python main.py を実行したターミナルは、ComfyUI が動いているあいだ ComfyUI 専用になります。ログが流れ続け、ほかのコマンドは入力できません。このウィンドウを閉じると ComfyUI も一緒に終了します。

そのため、以降の手順に出てくるコマンド(ComfyUI-Manager の取得やモデルのダウンロード)は、別のターミナルを開いて実行します。ターミナルを選んだ状態で ⌘ + N(新規ウィンドウ)または ⌘ + T(新規タブ)を押すと開けます。

この記事での呼び名役割仮想環境
ComfyUI 用ターミナルpython main.py を実行したターミナル。ComfyUI を使っているあいだは開いたままにします。有効((venv) 付き)
作業用ターミナルあとから開いた別のターミナル。git clone や curl などを実行します。無効((venv) なし)

注意: 新しく開いたターミナルでは仮想環境が外れています。git や curl はそのまま使えますが、python や pip を使うと zsh: command not found: python と表示されます。Mac には標準で python というコマンドがなく、仮想環境を有効にしたときだけ使えるようになるためです。

作業用ターミナルで python / pip を使いたいときは、先に次の2行を実行してください。

cd ~/ComfyUI
source venv/bin/activate

5-3. ComfyUI の止め方と再起動のしかた

この記事で「ComfyUI を再起動する」と書いてある場合、ブラウザの再読み込みや Mac の再起動のことではありません。ComfyUI 用ターミナルで動いている本体(python main.py)をいったん止めて、起動し直すことを指します。

  1. ComfyUI 用ターミナルをクリックして選びます(ログが流れているほうです)。
  2. Ctrl + C を押して ComfyUI を止めます(⌘ ではなく control キーです)。(venv) … % という入力待ちの表示に戻れば停止しています。
  3. もう一度 python main.py を実行します。↑ キーを押すと直前のコマンドが出てくるので、そのまま Enter で構いません。
  4. To see the GUI go to: http://127.0.0.1:8188 が表示されたら、ブラウザのタブを再読み込み(⌘ + R)します。

ComfyUI を使い終わったときも、同じく Ctrl + C で止めます。

ComfyUI 用ターミナルを閉じてしまった場合は、新しいターミナルで次の3行を実行すれば起動できます。

cd ~/ComfyUI
source venv/bin/activate
python main.py

再起動が必要な場面と、不要な場面は次のとおりです。

やったことComfyUI の再起動
追加ノード(ComfyUI-Manager、ComfyUI-GGUF など)を入れた必要
モデルファイルを models/ 以下に置いた不要(ブラウザの再読み込みだけで認識されます)

手順6. ComfyUI-Manager を入れる

追加ノード(拡張機能)やモデルを画面から検索・インストールできる定番ツールです。次のステップの Qwen-Image で使う GGUF ノードもこれで入れます。

6-1. 作業用ターミナルで取得する

ComfyUI は起動したままで構いません。手順 5-2 のとおり作業用ターミナル(⌘ + N で開いた別のターミナル)で、次を実行します。git は仮想環境がなくても動くので、(venv) が付いていなくても大丈夫です。

cd ~/ComfyUI/custom_nodes
git clone https://github.com/Comfy-Org/ComfyUI-Manager.git

6-2. ComfyUI を再起動する

追加ノードは ComfyUI の起動時に読み込まれるため、取得しただけでは反映されません。手順 5-3 の方法で再起動します。

  1. ComfyUI 用ターミナルに戻り、Ctrl + C で ComfyUI を止めます。
  2. 同じターミナルで python main.py を実行します。
  3. 起動が終わったら、ブラウザを再読み込み(⌘ + R)します。

画面上部に Manager ボタンが現れていれば成功です。ComfyUI のバージョンによっては、左上のロゴメニューにある「拡張機能の管理」から開く形になっています。

zsh: command not found: python と出たら

私はここで詰まりました。作業用ターミナルのほうで、そのまま python main.py を実行してしまったのが原因です。

zsh: command not found: python

作業用ターミナルは仮想環境が有効になっていないため、python が見つかりません。ComfyUI 用ターミナルに戻って実行するか、そのターミナルで cd ~/ComfyUI と source venv/bin/activate を実行してからやり直してください。

なお、ComfyUI は同時に1つしか起動できません。ComfyUI 用ターミナルで動かしたまま別のターミナルでも起動しようとすると、address already in use というエラーになります。

手順7. 動作確認(SDXL で1枚生成)

いきなり Qwen-Image は重いので、まず軽い SDXL で「ちゃんと動く」ことを確かめます。

7-1. モデルをダウンロード

Hugging Face から SDXL のベースモデル(約 6.9GB)を取得し、models/checkpoints に置きます。ComfyUI は起動したままで構いません。作業用ターミナルで実行します(curl も仮想環境なしで動きます)。

cd ~/ComfyUI/models/checkpoints
curl -L -O https://huggingface.co/stabilityai/stable-diffusion-xl-base-1.0/resolve/main/sd_xl_base_1.0.safetensors

進み具合がパーセントで表示されます。回線によっては数分〜数十分かかるので、終わるまで Mac をスリープさせず、ターミナルも閉じないでください。

補足: ComfyUI-Manager の「Model Manager」から検索してダウンロードしても OK です。

7-2. ダウンロードできたか確認する

サイズが大きいため、Wi-Fi の瞬断や Mac のスリープで途中で止まることがあります。終わったらファイルサイズを確認します。

ls -lh ~/ComfyUI/models/checkpoints/

sd_xl_base_1.0.safetensors のサイズが 6.5G と表示されれば完了です(ls は単位の数え方が違うため、6.9GB のファイルが 6.5G と表示されます)。

ダウンロードが途中で失敗した場合

curl: (18) transfer closed … や curl: (56) Recv failure … のようなエラーで止まった、あるいはサイズが 6.5G より小さい場合は、ファイルが途中までしか保存されていません。そのまま使うとモデルの読み込みでエラーになるので、次の順で対処します。

1. 続きから再開する。 同じフォルダで -C - を付けて実行すると、保存済みの続きからダウンロードします。

cd ~/ComfyUI/models/checkpoints
curl -L -C - -O https://huggingface.co/stabilityai/stable-diffusion-xl-base-1.0/resolve/main/sd_xl_base_1.0.safetensors

2. 再開してもうまくいかないときは、消して最初からやり直す。

cd ~/ComfyUI/models/checkpoints
rm sd_xl_base_1.0.safetensors
curl -L -O https://huggingface.co/stabilityai/stable-diffusion-xl-base-1.0/resolve/main/sd_xl_base_1.0.safetensors

3. ターミナルで何度も失敗するときは、ブラウザでダウンロードする。 上の URL をブラウザで開くとダウンロードが始まります。終わったら「ダウンロード」フォルダから移動します。

mv ~/Downloads/sd_xl_base_1.0.safetensors ~/ComfyUI/models/checkpoints/

ファイルが壊れていないか厳密に確かめたいときは、ハッシュ値を計算します(任意。数十秒かかります)。

shasum -a 256 ~/ComfyUI/models/checkpoints/sd_xl_base_1.0.safetensors

表示される英数字が次の値と一致すれば、配布元と完全に同じファイルです。

31e35c80fc4829d14f90153f4c74cd59c90b779f6afe05a74cd6120b893f7e5b

7-3. SDXL 用のテンプレートに切り替える

ここが2つ目のつまずきポイントでした。 起動直後に開いているワークフローは、SDXL 用の構成とは限りません。そのままモデルだけ差し替えるのではなく、ComfyUI に用意されている SDXL 用のテンプレートを開いてから生成します。

  1. ダウンロードしたモデルを認識させるため、ブラウザを再読み込み(⌘ + R)します。ComfyUI の再起動は不要です。

  2. 画面左上の ComfyUI ロゴをクリックしてメニューを開き、テンプレートを参照を選びます(英語表示では Browse Templates)。

    ComfyUI 左上のロゴメニュー。「テンプレートを参照」を選ぶ

  3. テンプレート一覧が開いたら、右上の検索欄に SDXL と入力します。

    テンプレート一覧を SDXL で検索した画面。左上の「SDXL1.0: テキストから画像へ(シンプル)」を選ぶ

  4. SDXL1.0: テキストから画像へ(シンプル) をクリックします(一覧では名前が途中で省略されて「SDXL1.0: テキストから画像へ(シ…」と表示されます)。新しいワークフローとして開き、SDXL 用のノード一式が配置されます。

注意: 似た名前のテンプレートがあります。7-1 でダウンロードしたベースモデルだけで動くのは「SDXL1.0: テキストから画像へ(シンプル)」です。「SDXLシンプル」「SDXL Refiner プロンプト」は Refiner という別のモデル(約 6GB)が、「SDXLターボ」は Turbo 用のモデルが追加で必要になり、開くとモデル不足の案内が表示されます。

テンプレートを開いたときにモデルが不足しているという案内が出た場合は、sd_xl_base_1.0.safetensors が ~/ComfyUI/models/checkpoints/ にあるか、ファイル名が変わっていないか、7-2 のサイズになっているかを確認してください。

7-4. 生成してみる

  1. Load Checkpoint(チェックポイントを読み込む)ノードで sd_xl_base_1.0.safetensors が選ばれていることを確認します。テンプレートでは最初から指定されています。
  2. 画像サイズも最初から 1024 × 1024 になっているので、そのままで構いません。
  3. Positive Prompt ノードに英語でプロンプトを書きます。最初から入っている例文のままでも生成できます。例: a cat sitting on a window sill, soft morning light, photo
  4. 実行するボタン(英語表示では Run)を押します(⌘ + Enter でも実行できます)。

初回はモデルの読み込みに少し時間がかかります。Save Image ノードに画像が出れば導入完了です。生成した画像は ~/ComfyUI/output に保存されます。進み具合は ComfyUI 用ターミナルのログでも確認できます。

次のステップ: Qwen-Image の準備(未検証の予習メモ)

ここから先は、私自身がまだ実行していません。次回の記事で実際に試す予定なので、この章は「何が必要になるか」の予習メモとして読んでください。

Qwen-Image は SDXL よりずっと大きなモデルです。本体だけで、ComfyUI 公式が配布している fp8 版が約 20GB、量子化していない BF16 版は約 41GB あります。メモリに余裕を持たせるため、GGUF 形式の量子化版を使う予定です。なお、ComfyUI 公式のチュートリアルは fp8 版と標準ノードの組み合わせで説明されています。

必要な追加ノード

Manager › Custom Nodes Manager で ComfyUI-GGUF を検索してインストールし、ComfyUI を再起動します(手順 5-3。Manager の画面に再起動ボタンが表示された場合は、それを押しても構いません)。

必要なファイルと置き場所

ファイル置き場所目安サイズ
Qwen-Image 本体(GGUF、Q6_K や Q8_0 など)models/unet/約 17〜22GB
テキストエンコーダ Qwen2.5-VL 7B(GGUF または fp8)models/text_encoders/約 5〜9GB
qwen_image_vae.safetensorsmodels/vae/約 250MB
Lightning LoRA(4 or 8 step、任意)models/loras/約 850MB〜1.7GB

配布元は Hugging Face の次のリポジトリです。

ターミナルでダウンロードする場合は、SDXL のときと同じく作業用ターミナルで実行します。どれもサイズが大きいので、途中で止まったときは手順 7 と同じ方法(curl -L -C - -O …)で再開できます。

ワークフロー

SDXL のときと同じく、左上のロゴ › テンプレートを参照で Qwen と検索すると、Qwen-Image 用のテンプレートがあります。それを開き、Load Diffusion Model ノードを Unet Loader (GGUF) に、CLIP Loader を CLIPLoader (GGUF) に差し替えると、量子化版で動かせます。

注意: モデルファイルの合計で 25〜30GB ほどメモリを使う見込みです。生成中はブラウザのタブや重いアプリを閉じておくと安定します。まずは Lightning LoRA + 8 ステップ + 768px で試すつもりです。

困ったときは

症状対処
command not found: python3.12Homebrew のパスが通っていません。ターミナルを開き直すか、手順 1-2 の「Next steps」を実行してください。
command not found: python(または pip)仮想環境が有効になっていません。新しく開いたターミナルでは外れています。cd ~/ComfyUI と source venv/bin/activate を実行し、先頭に (venv) が付いたことを確認してからやり直してください(手順 5-2)。
起動時に address already in use別のターミナルですでに ComfyUI が動いています。そちらをそのまま使うか、Ctrl + C で止めてから起動し直してください。
mps.is_available() が False仮想環境が有効か((venv) が付いているか)確認し、手順 4 の PyTorch インストールをやり直してください。
モデルのダウンロードが途中で止まったcurl -L -C - -O (URL) で続きから再開できます。詳しくは手順 7 の「ダウンロードが途中で失敗した場合」。
生成時に MetadataIncompleteBuffer や HeaderTooLarge などモデル読み込みのエラーが出るモデルファイルが途中までしかダウンロードされていない可能性があります。手順 7-2 でサイズを確認し、足りなければダウンロードし直してください。
Load Checkpoint の一覧にモデルが出てこないファイルが ~/ComfyUI/models/checkpoints/ にあるか確認し、ブラウザを再読み込みしてください。
実行するとモデルが見つからない、ノードが赤くなる開いているワークフローが SDXL 用ではない可能性があります。手順 7-3 の SDXL 用テンプレートを開き直してください。
NotImplementedError: ... not implemented for MPS一部の処理が GPU 未対応です。環境変数を付けて起動します。PYTORCH_ENABLE_MPS_FALLBACK=1 python main.py
画像が真っ黒になるpython main.py --force-fp16 または --fp32-vae を試してください。
メモリ不足で落ちる解像度を下げる、より小さい量子化版(Q4 など)にする、ほかのアプリを閉じる。
Manager ボタンが出ない~/ComfyUI/custom_nodes/ComfyUI-Manager フォルダが存在するか確認し、手順 5-3 の方法で ComfyUI を再起動してからブラウザを再読み込みしてください。ブラウザの再読み込みだけでは反映されません。
ComfyUI を最新にしたいComfyUI を止めてから、仮想環境を有効にしたターミナルで cd ~/ComfyUI && git pull && pip install -r requirements.txt を実行します。

2回目以降の起動方法

毎回必要なのはこの3行だけです。

cd ~/ComfyUI
source venv/bin/activate
python main.py --auto-launch

止めるときは、このターミナルで Ctrl + C を押します。

ワンコマンドにする(任意)

起動用スクリプトを作っておくと楽です。

cat > ~/ComfyUI/start.sh << 'EOF'
#!/bin/bash
cd ~/ComfyUI
source venv/bin/activate
python main.py --auto-launch
EOF
chmod +x ~/ComfyUI/start.sh

以降は ~/ComfyUI/start.sh だけで起動できます。

フォルダ構成のおさらい

~/ComfyUI/
├── main.py            ← 起動ファイル
├── venv/              ← Python 仮想環境
├── custom_nodes/      ← 追加ノード(Manager, GGUF など)
├── models/
│   ├── checkpoints/   ← SD1.5 / SDXL のモデル
│   ├── unet/          ← Qwen-Image, FLUX の本体(GGUF)
│   ├── text_encoders/ ← テキストエンコーダ
│   ├── vae/           ← VAE
│   └── loras/         ← LoRA
├── input/             ← img2img 用の入力画像
└── output/            ← 生成した画像

まとめ

  • Apple Silicon の Mac なら、Homebrew と Python 3.12 があれば ComfyUI を手動でインストールできます。
  • 起動後は「ComfyUI 用」と「作業用」の2つのターミナルを使い分けます。command not found: python が出たら、仮想環境が外れていないかを最初に疑ってください。
  • 追加ノードを入れたら ComfyUI の再起動が必要、モデルを置いただけならブラウザの再読み込みで足ります。
  • SDXL で生成するときは、テンプレートから「SDXL1.0: テキストから画像へ(シンプル)」を開きます。
  • SDXL までなら、48GB のような大容量メモリは必要ありません(目安は 16GB 以上)。

ターミナル操作なしで使える公式のアプリ版 ComfyUI Desktop もあります。手軽ですが、仕組みを学ぶ目的なら、今回の手動インストールのほうが「どこに何があるか」が分かりやすいです。

次回は、この環境に Qwen-Image を導入します。

参考リンク