M1 Max 64GBでQwen Image Edit(NSFW版)をローカル実行する
前回の記事ではRunPodでQwen Image Editを動かしたが、今回はM1 Max 64GBのローカル環境で動かしてみた。
SD1.5 + IP-Adapterの限界
最初はComfyUI + SD1.5 + IP-Adapterでキャラのポーズ変更を試みた。

結果は散々だった。IP-Adapterのweightを0.95まで上げても「似た雰囲気のキャラ」しか出ない。


特定のキャラを維持したままポーズを変えるという用途には向いていない。
LoRAを作る選択肢もあるが、以前SeaArtで試したLoRA学習も失敗している。特にサイドポニーのような特徴的な髪型の再現が難しい。
Qwen Image Editに切り替え
RunPodで試した時、Qwen Image Editはキャラ維持能力が高かった。ローカルでも動くか試してみる。
使用モデル
Phr00t/Qwen-Image-Edit-Rapid-AIO の v16 を使用。v18はキャラが変わりやすいのでv16を選択。
- モデルサイズ: 28.4GB
- M1 Max 64GBなら余裕で載る
ダウンロード
ブラウザで直接ダウンロードするのが確実:
https://huggingface.co/Phr00t/Qwen-Image-Edit-Rapid-AIO/tree/main/v16
Qwen-Rapid-AIO-NSFW-v16.safetensors をダウンロードして配置:
mkdir -p ~/ComfyUI/models/checkpoints/v16
mv ~/Downloads/Qwen-Rapid-AIO-NSFW-v16.safetensors ~/ComfyUI/models/checkpoints/v16/
カスタムノード
Phr00t修正版のテキストエンコードノードが必要:
cd ~/ComfyUI/comfy_extras
curl -L -O https://huggingface.co/Phr00t/Qwen-Image-Edit-Rapid-AIO/resolve/main/fixed-textencode-node/nodes_qwen.py
ワークフロー
公式ワークフローをダウンロード:
https://huggingface.co/Phr00t/Qwen-Image-Edit-Rapid-AIO/blob/main/Qwen-Rapid-AIO.json
macOSでの注意点
macOSではシステムPythonに直接 pip install できない。ComfyUIはvenv(仮想環境)内で動かす必要がある。
cd ~/ComfyUI
python3 -m venv venv
source venv/bin/activate
pip install -r requirements.txt
以降、ComfyUIを起動するときは必ず source venv/bin/activate してから実行する。
また、Python 3.14は新しすぎて一部のパッケージが対応していない。Python 3.12を推奨。Homebrewで入れる場合:
brew install python@3.12
/opt/homebrew/opt/python@3.12/bin/python3.12 -m venv venv
M1 Maxでの起動
ここが重要。普通に起動すると真っ黒な画像しか出ない。

cd ~/ComfyUI
source venv/bin/activate
python main.py --fp16-vae
--fp16-vae オプションが必須。
原因
デフォルトだとVAEが torch.bfloat16 で動作するが、Apple SiliconのMPSバックエンドと相性が悪い。VAEの出力がNaN(非数)になり、真っ黒な画像になる。
--fp16-vae でVAEをfp16に強制することで回避できる。
使い方
入力画像は1枚だけ
ワークフローには2枚の画像入力があるが、1枚だけ使う。
2枚入れるとキメラ合成になって使い物にならない。2枚目のLoadImageノードは削除するか、接続を外す。
プロンプト
自然言語でポーズを指示する:
The girl is stretching with arms raised above her head, warming up exercise pose, same character, same outfit
SD系のタグ羅列ではなく、文章で書く。Qwenは言語理解が強いのでプロンプトが効きやすい。
設定
| 項目 | 値 |
|---|---|
| steps | 4 |
| cfg | 1.0 |
| sampler | euler_ancestral |
結果
キャラの造形が維持されたままポーズが変わる。SD1.5 + IP-Adapterとは全然違う。服装・体型・顔がほぼそのまま。

生成速度
約80秒/枚。4ステップでこれなので重い。
| 環境 | 速度 |
|---|---|
| M1 Max 64GB | 約80秒/枚 |
| RTX 5090 (RunPod) | 数秒/枚 |
ローカルは確認・微調整用、大量生成はRunPodという使い分けが現実的。
未解決の問題
サイドポニーの髪型が安定しない。ネガティブプロンプトで対称髪型を除外したり、プロンプトで細かく指定しても完全には再現できない。

twintails, double ponytail, center ponytail, symmetrical hair, pigtails
これはQwenの問題というより、学習データにサイドポニーが少ないのだと思う。
次のステップ
Qwen用のControlNet Union(InstantX/Qwen-Image-ControlNet-Union)を使えば、ポーズをより細かく制御できるらしい。DWPoseでポーズを検出して、ControlNetでポーズを指定する方式。
Phr00t AIO版との互換性は未確認だが、試してみる価値はある。次回はこれを検証する。