【Stable Diffusion】WebUI ForgeとA1111の違い・移行手順と「RuntimeError」などのエラー解決法

問題の概要:ForgeとA1111の混同によるエラーと移行の課題

Stable DiffusionのWebUIとして広く使われてきた「Automatic1111 WebUI」(通称A1111)に代わり、新たに「Stable Diffusion WebUI Forge」(通称Forge)が登場しました。多くのユーザーがパフォーマンス向上を期待してForgeへの移行を試みますが、両者の根本的な違いを理解せずに移行を進めると、以下のような典型的なエラーに遭遇します。

  • RuntimeError: Expected all tensors to be on the same device, but found at least two devices, cpu and cuda!
  • 拡張機能(Extensions)が読み込まれない、または動作しない
  • モデルファイル(.safetensors)は読み込めるが、LoRAやControlNetが適用できない
  • 起動コマンドや引数がA1111と異なり、実行に失敗する
  • 生成された画像の画質やスタイルがA1111時代と明らかに異なる

これらの問題は、Forgeが単なる「A1111のアップデート版」ではなく、内部アーキテクチャから大きく作り直された「別のソフトウェア」であることを理解していないことに起因します。本記事では、両者の違いを明確にし、安全に移行するための手順と、遭遇する可能性の高いエラーの解決策を詳しく解説します。

原因の解説:ForgeとA1111の根本的な違い

Forgeは、A1111のコードベースを引き継ぎつつも、特にパフォーマンスとメモリ効率に焦点を当てて「再構築(Forge)」されたプロジェクトです。この根本的な変更が、移行時に問題を引き起こす主な原因です。

1. コアエンジンの最適化と非互換性

A1111は柔軟性を重視した設計であったのに対し、Forgeは推論速度とVRAM使用量の削減を最優先しています。そのため、内部のテンソル操作やメモリ管理のロジックが大きく変更されています。これが、RuntimeError: Expected all tensors to be on the same device... のようなデバイス(CPU/GPU)関連のエラーの直接的な原因です。Forgeは計算グラフを最適化する過程で、A1111では許容されていた一部の非効率な処理を排除しています。

2. 拡張機能(Extensions)の互換性

ForgeはA1111用の拡張機能の多くを「互換モード」でサポートしていますが、すべてが完全に動作するわけではありません。特に、低レベルなPyTorch関数やA1111特有の内部APIに深く依存している拡張機能は、読み込みに失敗したり、予期せぬ動作をしたりする可能性が高くなります。

3. モデルと設定ファイルの扱い

モデルファイル(Stable Diffusion 1.5, XL, LoRA等)自体の形式は互換性があります。しかし、設定ファイル(ui-config.jsonconfig.json)や起動引数は完全には互換ではありません。A1111の環境をそのままコピーしてForgeで使おうとすると、設定の不整合が起きる可能性があります。

解決方法:安全な移行のためのステップバイステップガイド

既存のA1111環境を壊さず、Forgeを並行してセットアップし、段階的に移行することを強く推奨します。

ステップ1:新規環境でのForgeのセットアップ

A1111とは完全に別のディレクトリにForgeをインストールします。これにより、既存環境を汚染するリスクを回避できます。

# A1111が `~/stable-diffusion-webui` にある場合、Forgeは別の場所に
cd ~
git clone https://github.com/lllyasviel/stable-diffusion-webui-forge.git sd-webui-forge
cd sd-webui-forge

ステップ2:モデルファイルのシンボリックリンク作成(ディスク容量節約)

大容量のモデルファイルを二重に保存する必要はありません。A1111のモデルディレクトリへのシンボリックリンクをForge側に作成します。

# Forgeディレクトリ内で実行
# models/Stable-diffusion ディレクトリがなければ作成
mkdir -p models
cd models

# A1111のモデルディレクトリへのシンボリックリンクを作成
# 例: A1111のパスが `/home/user/stable-diffusion-webui/models/Stable-diffusion` の場合
ln -s /home/user/stable-diffusion-webui/models/Stable-diffusion Stable-diffusion

# LoRA, VAE, ControlNet, Embeddingsについても同様に行う
ln -s /home/user/stable-diffusion-webui/models/Lora Lora
ln -s /home/user/stable-diffusion-webui/models/ControlNet ControlNet
# ... 他のディレクトリも必要に応じて

ステップ3:拡張機能の慎重な移行

拡張機能は一括コピーせず、必要に応じてForgeの「Extensions」タブから再インストールするのが最も安全です。もしA1111からコピーする場合は、sd-webui-forge/extensions/ にコピーした後、Forgeの「Installed」タブで「Check for updates」を実行し、Forge互換版があれば適用してください。

ステップ4:設定の引き継ぎと調整

ui-config.jsonconfig.json はコピーしないことをお勧めします。Forgeを一度起動して新規設定ファイルを生成させ、その後、WebUI上で必要な設定(サンプラー、ステップ数、顔修復など)を手動で再設定してください。これにより、設定の不整合による予期せぬ動作を防ぎます。

ステップ5:Forgeの起動と動作確認

以下のコマンドでForgeを起動します。A1111と同様の引数が使えますが、特に--medvram--lowvramはForgeの最適化により必要性が低くなっている場合があります。

# 基本的な起動コマンド
./webui.sh --listen --port 7861
# A1111が7860番ポートを使っている場合、Forgeは別のポート(例:7861)を指定する

主要エラーとその解決策

エラー1: RuntimeError: Expected all tensors to be on the same device

原因: 互換性のない拡張機能やカスタムスクリプトが、Forgeの最適化された計算グラフと衝突しています。
解決策: エラーメッセージに表示された拡張機能名やスクリプト名を特定し、無効化または更新します。起動コマンドに --disable-extension-prompting を追加して拡張機能を無効化した状態で起動し、問題のある拡張機能を特定する方法もあります。

エラー2: 拡張機能タブが表示されない/読み込まれない

原因: 拡張機能ディレクトリのパス問題や、互換性のない拡張機能が全体の読み込みを阻害しています。
解決策: Forgeを --safe モードで起動し、拡張機能を無効化した状態で基本機能を確認します。その後、settings.json"extension_hard_load": true を設定してみる(強制読み込み)か、問題のある拡張機能を1つずつ削除/再インストールします。

./webui.sh --safe --listen --port 7861

エラー3: LoRAやControlNetの重みが反映されない

原因: Forgeでは、これらの機能を適用するための新しいUIボタンや操作手順が追加されている場合があります。また、モデルキャッシュの不整合も原因となり得ます。
解決策:
1. 生成ボタンの近くにある「Extra Networks」のリロードアイコンをクリックする。
2. Forgeの「Settings」→「Stable Diffusion」で、モデルキャッシュ設定を確認・変更する(例: 「Keep models in VRAM」をオフにする)。
3. ControlNet拡張機能をForge互換の最新版に更新する。

まとめ・補足情報

Stable Diffusion WebUI Forgeは、A1111と比べて高速でメモリ効率に優れ、多くの新機能を備えています。しかし、それは「別のソフトウェア」であるという認識が移行成功の鍵です。

  • 並行運用を基本とせよ: A1111環境は当面そのまま残し、Forgeを新規環境として並行して使い、少しずつ移行しましょう。
  • 拡張機能は慎重に: 拡張機能は互換性の問題の最大の原因です。必須のものから順に、Forgeでの動作を確認しながら導入してください。
  • 設定は手動で再設定: 設定ファイルのコピー&ペーストはトラブルの元です。UI上での再設定が一番安全です。
  • コミュニティを活用: Forgeは開発が活発です。GitHubのIssuesやDiscussions、関連フォーラムで、同じ問題に遭遇したユーザーの解決策を探すことが有効です。

移行初期には戸惑いやエラーも発生しますが、段階的なアプローチを取ることで、Forgeがもたらすパフォーマンス向上と新機能のメリットを確実に享受できるようになります。

この記事は役に立ちましたか?