Stable Diffusionの「RuntimeError: shape is invalid for VAE」エラーの修正方法

intermediate🧠 AI Tools2026-05-17| Stable Diffusion WebUI (A1111)、ComfyUI、またはSD-Forge。Windows 10/11またはLinux。NVIDIA RTXまたはGTX 16シリーズGPU。

Error Message

RuntimeError: shape is invalid for VAE
#stable-diffusion#vaeエラー#gpuトラブルシューティング#aiアート

問題の概要高解像度のアップスケールが終わるのを数分間待ち、プログレスバーが100%に達して結果を確認しようとした瞬間、突然ターミナルにRuntimeError: shape is invalid for VAEというエラーが表示されることがあります。このエラーはまさにゴールの直前で発生します。これは、VAE(Variational Autoencoder)が潜在表現(latent representation)を閲覧可能な画像にデコードしようとした際に、データの次元に不一致が生じた場合に起こります。

本質的には、計算が合わないということです。モデルによって生成された潜在ノイズが、VAEが用意した「枠」に収まっていないのです。通常はアップスケール中に発生しますが、設定がわずかにずれている場合は標準的な生成時にも発生することがあります。

クラッシュのデバッグ方法パニックになって環境を丸ごと再インストールする必要はありません。この問題のほとんどは、特定の設定やファイルの破損に関連しています。エラーが表示されたら、ターミナルウィンドウを確認してください。おそらく、modules/sd_vae.pytorch/nn/functional.pyを指し示すスタックトレースが表示されているはずです。原因を絞り込むためのチェックリストは以下の通りです:

  • 計算の確認: 画像の解像度は8の倍数になっていますか?Stable Diffusionは画像を8x8のブロック単位で処理します。端数があることが、最も一般的な原因です。- VRAMの監視: GPUメモリが100%一杯になると、サンプラーからVAEへの受け渡しの際にテンソル(tensors)が壊れてしまうことがあります。- ファイルの確認: VAEは正しくダウンロードされましたか?335MBのファイルが300MBで止まっていた場合、必ずシェイプエラーが発生します。- 精度の問題: GTX 1660や1650を使用していますか?これらのカードでは、半精度(FP16)でのVAE計算に失敗することがよくあります。## 実証済みの解決策### 1. 8ピクセルグリッドを守るStable Diffusionは、そのダウンサンプリング構造上、8で割り切れる寸法を必要とします。WebUIは通常これらの値に自動調整されますが、特定の拡張機能や手動での上書きによってこれが無視されることがあります。例えば513x513でレンダリングしようとすると、VAEは失敗します。幅と高さが512、768、1024などのように、厳密に8の倍数であることを確認してください。Ultimate SD Upscaleを使用している場合は、ターゲット解像度が互換性のない数値に丸められていないか確認してください。

2. VAEファイルの整合性を確認する破損したVAEは、よくある隠れた原因です。内部テンソルが不完全な場合、デコード段階で期待される形状と一致しなくなります。私は常に、VAEファイルのSHA-256ハッシュをHuggingFaceやCivitaiのソースと比較して確認するようにしています。

ローカルファイルを素早くチェックするために、ToolCraftのHash Generatorを使用しています。例えば、人気の高いvae-ft-mse-840000-ema-pruned.safetensorsには特定のハッシュ値があります。もし手元のファイルのハッシュが異なる場合は、削除して再ダウンロードしてください。不完全なダウンロードでもUIは起動しますが、画像の生成を完了させるには不十分な場合があります。

3. --no-half-vaeフラグを追加する古いNVIDIAカード、特にGTX 16シリーズを使用している場合、VAEはFP16モードで「NaN」(非数)エラーを頻繁に生成します。これが無効なシェイプエラー(invalid shape error)の原因となります。メモリ節約のために生成の大部分をFP16に保ちつつ、VAEの実行だけをフル精度(FP32)に強制することができます。

Automatic1111の場合は、webui-user.batファイルを編集し、COMMANDLINE_ARGSの行を更新します:

set COMMANDLINE_ARGS=--xformers --no-half-vae

このフラグ一つで、ミドルレンジのハードウェアにおけるVAE関連のクラッシュの約90%が解決します。

4. Tiled VAEの設定を調整するTiled VAE拡張機能(MultiDiffusionの一部)は、少ないVRAMで4K画像を生成するのに非常に役立ちます。しかし、「Tile Size」が大きすぎる場合(例:8GBのカードで1536など)、VAEがタイルの再構成に失敗することがあります。Encoder Tile Sizeを512または768に下げてみてください。また、シェイプエラーが続く場合は「Fast Encoder」を無効にしてください。特定のカスタムチェックポイントでは安定性が低下するためです。

5. VAEキャッシュをリセットするUIがVRAMキャッシュ内に破損したテンソルを保持し続けてしまうことがあります。設定(Settings)タブに移動し、VAEセクションを見つけて、VAEを「None」に切り替えてください。「Apply Settings」を押し、少し待ってから、目的のVAE(blessed2.vae.ptなど)に切り戻します。これにより一時バッファがクリアされ、強制的に再読み込みが行われます。

修正のテスト解決策を適用したら、以下の手順で確認してください:

  • 再起動: ターミナルを完全に閉じ、WebUIを再起動して、新しいフラグが有効になっていることを確認します。- ベースラインテスト: アップスケールなしでシンプルな512x512の画像を生成します。これが機能すれば、VAEファイルはおそらく正常です。- ストレステスト: クラッシュの原因となったのと全く同じ高解像度アップスケールを再実行します。100%を通過して画像が表示されれば、解決です。## 重要なポイント- 8ピクセルのルール: 潜在空間の計算を正常に保つため、解像度は常に8で割り切れるようにしてください。- 精度が重要: GTX 16xxシリーズのカードを使用している場合や、画像が真っ黒になる場合は、--no-half-vaeを使用してください。- ダウンロードの確認: 大きなモデルファイルは頻繁に破損します。「Tensor Mismatch」エラーが発生した場合は、必ずハッシュを確認してください。

Related Error Notes