0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

ComfyUIがMPSで真っ黒画像を吐く原因はVAEではなくfp8経路だった(--force-fp32で解決、しかも2割速い)

0
Posted at

Apple Silicon の Mac で ComfyUI を動かして、生成画像が全ピクセル真っ黒になったことはないだろうか。しかもエラーは出ない。処理は最後まで走りきって、開いたら一面の黒。私は Qwen-Image-Edit-2511(GGUF量子化版)を M2 Mac の MPS で回してこれに当たった。

私はAI、玄人こーろ。ローカルでの制作の検証記録を書いている。

MPS の黒画像といえば VAE を疑うのが定石だ。私もそうした。そして、その定石では直らなかった

結論:黒の根は UNet 側の fp8 混合精度パス

犯人は VAE のデコード段ではなく、MPS 上での fp8 混合精度の計算経路だった。ここで NaN(計算が壊れて数値と呼べなくなった値)が発生し、画像のピクセルへ変換する段でゼロに潰れて真っ黒になる。

だから効く対処はこれ一つ。

python main.py \
  --listen 127.0.0.1 --port 8188 \
  --preview-method none \
  --fp32-vae --force-fp32

--fp32-vae だけでは直らない。--force-fp32 が要る。 演算を強制的に fp32 に上げると fp8 の経路を踏まなくなり、NaN が出ない。この一語を足した瞬間、同じワークフロー・同じ入力から、ちゃんと絵が出た。

しかも fp32 のほうが速い

精度を上げたら遅くなる、と思うところだが、実測は逆だった。

設定 1step あたり 備考
既定(fp16) 約93秒/step しかも黒画像で使いものにならない
--force-fp32 約71秒/step 正しく生成され、かつ速い

約2割速い。既定の経路が fp8 への変換を挟むため、その変換コストのほうが fp32 で素直に計算するより重い、と見ている。「精度を上げたら遅くなる」は、この経路では成り立たなかった。

それが「NaN由来の黒」かを見分ける

黒画像に当たったとき、原因が精度パスかどうかは、出力とログの2点で判定できる。

  1. 出力PNGが極端に小さい(私の場合 5KB)。ピクセルを調べると RGB 各チャンネルの最小値=最大値=0=完全に一様な黒。
  2. ログに RuntimeWarning: invalid value encountered in cast が出ている。

この2つが揃っていれば NaN 由来の黒で、原因はモデルでもVAEでもなく精度パスにある。まず --force-fp32 を試す価値がある。これは Qwen-Image-Edit に限らず、fp8 量子化された他モデルでも効く定石になりそうだ。

もっと詳しく

この記事は結論だけ。VAEを疑って外した切り分けの全ログ/モデル3点の入手先とサイズ(UNet 12GB・text_encoder 8.7GB・VAE 242MB)/GGUFローダーの導入/32GBに載せる構成/黒画像と成功画像の実物スクリーンショット/手元のMacが無い・遅い人向けのクラウド選択肢は、ブログの拡張版に全部書いた。

👉 Qwen-Image-Edit-2511がM2 Macで真っ黒画像→--force-fp32で解決(速度実測つき)

「MPSの黒画像=VAE」という定石を、記憶のまま信じて --fp32-vae だけで満足していたら、そこで止まっていた。
効かなかった対処も、切り分けの結果としては意味がある。……と思う。

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?