はじめに
Mac のターミナルから ComfyUI をインストールして、SDXL で最初の1枚を生成するまでの手順をまとめます。最終的な目的は Qwen-Image を動かすことですが、いきなり大きなモデルに進むと、どこで失敗したのか切り分けにくくなります。そこでこの記事では、その手前の「ComfyUI が正しく動く状態を作る」ところまでを扱います。
手順は実際に手を動かして確認し、詰まったところはその場で書き足しました。特に次の3点は、手順どおりに進めたつもりでも引っかかりやすいところです。
- ComfyUI を起動したあとは、別のターミナルで作業することになる(そして、そのターミナルでは仮想環境が外れている)
- 「ComfyUI を再起動する」が、具体的に何をすることなのか分かりにくい
- モデルを置いただけでは生成できず、SDXL 用のテンプレートに切り替える必要がある
動作環境
| 項目 | 内容 |
|---|---|
| マシン | MacBook Pro(Apple M5 Max / メモリ 48GB) |
| Python | 3.12(Homebrew) |
| ComfyUI | GitHub から取得した最新版(執筆時点: 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.9GB | 16GB 以上 |
| Qwen-Image で生成(次のステップ) | 合計 25〜30GB 前後(量子化版の場合) | 大容量メモリが活きるのはここから |
ディスクは、SDXL のモデルだけで約 7GB 使います。余裕を見て 15GB ほど空けておくと安心です。なお、この記事の手順は Apple Silicon(M1 以降)の Mac が前提です。
手順1. 事前準備(Homebrew・Python)
ターミナル(アプリケーション › ユーティリティ › ターミナル)を開いて、順番に実行します。
1-1. コマンドラインツール
git などを使うために必要です。すでに入っていれば「already installed」と出るだけなので、そのまま進んで大丈夫です。
xcode-select --install1-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 --versionPython 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.txtGPU が認識されているか確認
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/activate5-3. ComfyUI の止め方と再起動のしかた
この記事で「ComfyUI を再起動する」と書いてある場合、ブラウザの再読み込みや Mac の再起動のことではありません。ComfyUI 用ターミナルで動いている本体(python main.py)をいったん止めて、起動し直すことを指します。
- ComfyUI 用ターミナルをクリックして選びます(ログが流れているほうです)。
- Ctrl + C を押して ComfyUI を止めます(⌘
ではなく control キーです)。
(venv) … %という入力待ちの表示に戻れば停止しています。 - もう一度
python main.pyを実行します。↑ キーを押すと直前のコマンドが出てくるので、そのまま Enter で構いません。 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.git6-2. ComfyUI を再起動する
追加ノードは ComfyUI の起動時に読み込まれるため、取得しただけでは反映されません。手順 5-3 の方法で再起動します。
- ComfyUI 用ターミナルに戻り、Ctrl + C で ComfyUI を止めます。
- 同じターミナルで
python main.pyを実行します。 - 起動が終わったら、ブラウザを再読み込み(⌘ + 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.safetensors2. 再開してもうまくいかないときは、消して最初からやり直す。
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.safetensors3. ターミナルで何度も失敗するときは、ブラウザでダウンロードする。 上の URL をブラウザで開くとダウンロードが始まります。終わったら「ダウンロード」フォルダから移動します。
mv ~/Downloads/sd_xl_base_1.0.safetensors ~/ComfyUI/models/checkpoints/ファイルが壊れていないか厳密に確かめたいときは、ハッシュ値を計算します(任意。数十秒かかります)。
shasum -a 256 ~/ComfyUI/models/checkpoints/sd_xl_base_1.0.safetensors表示される英数字が次の値と一致すれば、配布元と完全に同じファイルです。
31e35c80fc4829d14f90153f4c74cd59c90b779f6afe05a74cd6120b893f7e5b7-3. SDXL 用のテンプレートに切り替える
ここが2つ目のつまずきポイントでした。 起動直後に開いているワークフローは、SDXL 用の構成とは限りません。そのままモデルだけ差し替えるのではなく、ComfyUI に用意されている SDXL 用のテンプレートを開いてから生成します。
-
ダウンロードしたモデルを認識させるため、ブラウザを再読み込み(⌘ + R)します。ComfyUI の再起動は不要です。
-
画面左上の ComfyUI ロゴをクリックしてメニューを開き、テンプレートを参照を選びます(英語表示では Browse Templates)。

-
テンプレート一覧が開いたら、右上の検索欄に
SDXLと入力します。
-
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. 生成してみる
- Load Checkpoint(チェックポイントを読み込む)ノードで
sd_xl_base_1.0.safetensorsが選ばれていることを確認します。テンプレートでは最初から指定されています。 - 画像サイズも最初から
1024 × 1024になっているので、そのままで構いません。 - Positive Prompt ノードに英語でプロンプトを書きます。最初から入っている例文のままでも生成できます。例:
a cat sitting on a window sill, soft morning light, photo - 実行するボタン(英語表示では 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.safetensors | models/vae/ | 約 250MB |
| Lightning LoRA(4 or 8 step、任意) | models/loras/ | 約 850MB〜1.7GB |
配布元は Hugging Face の次のリポジトリです。
- city96/Qwen-Image-gguf(本体の GGUF 版)
- Comfy-Org/Qwen-Image_ComfyUI(テキストエンコーダ、VAE)
- lightx2v/Qwen-Image-Lightning(Lightning LoRA)
ターミナルでダウンロードする場合は、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.12 | Homebrew のパスが通っていません。ターミナルを開き直すか、手順 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 を導入します。