tags : ComfyUI, Apple Silicon, PyTorch
概要
ComfyUI を Apple Silicon Mac(M1 Pro 32GB)でローカル実行するための構成メモ。 環境構築の「なぜそうするのか」を記録する。手順は audio-reactive-visuals-lab の docs/roadmap.md を参照。
構成図
audio-reactive-visuals-lab/ ← プロジェクトリポジトリ
├── scripts/comfyui-start.sh ← 起動スクリプト
├── workflows/ ← ワークフローJSON
└── experiments/ ← 実験記録
$(ghq root)/github.com/
├── Comfy-Org/ComfyUI/ ← ComfyUI 本体(ghq 管理、共有)
│ ├── .venv/ ← Python 仮想環境(uv)
│ ├── models/ ← モデルファイル
│ └── custom_nodes/
│ └── ComfyUI-Manager → (symlink)
└── ltdrdata/ComfyUI-Manager/ ← ghq 管理なぜ ghq で管理するのか
ComfyUI はプロジェクト固有のツールではなく汎用の画像生成基盤。 ghq で管理することで複数プロジェクトから共有でき、ComfyUI 自体のバージョン管理も独立する。 プロジェクト固有のもの(起動スクリプト、ワークフロー、実験記録)だけをプロジェクトリポジトリに置く。
カスタムノードも同様に ghq でクローンし、custom_nodes/ にシンボリックリンクを張る。
なぜ uv + venv なのか
ComfyUI 専用の隔離された Python 環境を .venv/ に作る。 Node.js の node_modules に近い概念で、ここにインストールしたパッケージが他プロジェクトに影響しない。 uv は Rust 製で pip より高速、ロックファイル(uv.lock)による再現性もある。
Apple Silicon(MPS)固有の設定
PYTORCH_MPS_HIGH_WATERMARK_RATIO=0.0
PyTorch が MPS(Metal Performance Shaders = Apple GPU)のメモリを必要な分だけ使えるようにする。 デフォルトだとメモリ上限が保守的に設定されていて、大きなモデル読み込み時にメモリ不足になる。
PYTORCH_ENABLE_MPS_FALLBACK=1
MPS が対応していない演算(一部の複雑な計算)を自動的に CPU で代替実行する。 これがないと未対応の演算でエラーになる。
—force-fp16
16ビット浮動小数点で計算。32ビット(fp32)と比べてメモリ使用量が半分になる。 M1 Pro 32GB で AnimateDiff + IPAdapter + ControlNet の同時使用を可能にするために必須。 画質への影響は実用上無視できる。
—use-split-cross-attention
アテンション計算(画像生成の中核処理)を分割して実行する。 一度に大きなメモリを確保せず、分割して計算することでメモリ消費を抑える。
PyTorch 関連パッケージ
torch : PyTorch 本体。ComfyUI の推論エンジン。画像生成の計算はすべてこれが行う
torchvision : 画像処理ユーティリティ
torchaudio : 音声処理。Yvann-Nodes の音声解析で使用
ComfyUI-Manager
カスタムノードの管理ツール。GUI からワンクリックでカスタムノードをインストール・更新できる。 Yvann-Nodes など必要なカスタムノードを入れるときに使う。