SD WebUI --medvram と --lowvram はどちらを使う?VRAM別の選び方

SD WebUI --medvram と --lowvram はどちらを使う?VRAM別の選び方

※本記事にはプロモーション(広告・アフィリエイトリンク)を含みます。

VRAMが足りなくてStable Diffusion WebUIが起動できない、または生成中にメモリエラーが出る——そんなとき検索で見つかるのが--medvramと--lowvramの2つの起動オプションです。名前が似ているため「どちらでも同じ」と思われがちですが、内部動作も適切なVRAM帯もまったく異なります。この記事では2つのフラグが何をしているかを先に整理し、VRAMの容量ごとにどちらを選ぶべきかを表でまとめます。

2つのフラグが内部で何をしているか

Stable Diffusionの推論パイプラインは、役割の異なる3つのコンポーネントで構成されています。

  1. CLIPテキストエンコーダー: プロンプトを数値ベクトルに変換する。生成の最初に1回だけ実行される。
  2. U-Net: 拡散ステップ(ノイズ除去)を繰り返し実行するモデルの中核。サンプリングステップ数だけ繰り返し動く。
  3. VAEデコーダー: 潜在空間の表現を最終的な画像に変換する。生成の最後に1回実行される。

何も指定しなければ3つすべてがGPU VRAMに常駐します。SD 1.5系で約4〜5GB、SDXLで約10〜12GBが必要になります(半精度・バッチ1枚の目安。解像度やバッチサイズによって異なります)。

--medvramの動作

CLIPテキストエンコーダーとVAEを「使わない時間帯にCPU RAMへ退避」させます。U-Netは生成中ずっとVRAMに残ります。

ポイントはU-NetがVRAMに留まるという点です。U-Netはサンプリングステップごとに実行されるため、ここをCPUに落とすと速度への影響が大きくなります。--medvramはU-Netを触らず、使用頻度の低いCLIPとVAEだけを退避させるため、速度低下を比較的小さく抑えられます。

--lowvramの動作

CLIPとVAEの退避は--medvramと同様に行いつつ、さらにU-Net自体を複数のサブブロックに分割し、実行タイミングに合わせて1ブロックずつVRAMに乗せては降ろす処理を繰り返します。

扱えるVRAMの下限はぐっと下がりますが、サンプリングステップのたびにGPU↔CPU転送が発生するため、生成時間は大幅に延びます。倍率はモデルのサイズ・ステップ数・PCのCPUとRAMの速度に依存しますが、--medvramと比べて数倍の時間がかかる場合もあると考えられます。

比較表

項目 デフォルト --medvram --lowvram
CLIPの置き場 VRAM常駐 未使用時CPUへ 未使用時CPUへ
U-Netの置き場 VRAM常駐 VRAM常駐 ブロック単位でCPU↔GPU
VAEの置き場 VRAM常駐 未使用時CPUへ 未使用時CPUへ
速度への影響 基準 小〜中 大(数倍になる場合も)
SD 1.5の目安VRAM 4〜5GB 2.5〜3.5GB 1.5〜2.5GB
SDXLの目安VRAM 10〜12GB 6〜8GB 4〜6GB

⚠️ VRAMの数値は1枚生成時の目安です。--medvram・--lowvram列の数値は公式ドキュメントに記載のない経験的な推定値であり、環境・解像度・LoRA・ControlNet・バッチサイズによって大きく異なります。

VRAM容量別の選び方

12GB以上(RTX 3060 12GB・3080・4080など)

SD 1.5系はオプションなしで問題ありません。SDXLも通常は不要です。Hires fix + ControlNet + ADetailerを同時使用するなど特殊な構成でVRAM不足になった場合に、--medvramを試す程度で十分です。--lowvramを使う場面はほぼないと考えてよいでしょう。

8GB(RTX 3070・3070 Ti・4060 Tiなど)

SD 1.5はオプションなしで動きます。SDXLはギリギリのラインで、Hires fixやControlNetを重ねるとVRAMエラーになることがあります。その場合は--medvramから試してください。8GB環境で--lowvramまで下げると速度コストが割に合わない場合が多いです。

6GB(RTX 3060 Ti・RTX 4060など)

SD 1.5は--medvramで安定します。SDXLは--medvramでも厳しいことが多く、--lowvramが必要になる場合があります。

なお、執筆時点のAUTOMATIC1111(v1.6以降)には--medvram-sdxlというSDXL専用フラグが追加されています(公式READMEに記載あり)。SD 1.5には作用せず、6〜8GB環境でSDXLを動かす場合は--medvramよりこちらを先に試す価値があります。

4GB(GTX 1650・RTX 3050など)

SD 1.5を--medvramでギリギリ動かせる場合と、--lowvramが必要な場合に分かれます。解像度は512×512を基本にし、バッチサイズは1にしてください。SDXLは--lowvramでも不安定になりやすく、動かせない可能性があります。

2〜3GB(内蔵グラフィックスなど)

SD 1.5を--lowvramで動かすのが現実的な上限です。512×512・バッチ1枚に限定し、Hires fixはVRAMを大幅に消費するため使わないものとして計画してください。SDXLは対応が難しいと考えておく方が安全です。

起動コマンドの書き方

Windowsの場合はwebui-user.batを編集します。

:: --medvramを使う場合
set COMMANDLINE_ARGS=--medvram

:: --lowvramを使う場合
set COMMANDLINE_ARGS=--lowvram

Linux / macOSの場合はwebui-user.shを編集します。

# --medvramを使う場合
export COMMANDLINE_ARGS="--medvram"

# --lowvramを使う場合
export COMMANDLINE_ARGS="--lowvram"

他のオプションと組み合わせる場合はスペース区切りで並べます。--apiフラグと同時に使うなら次のようになります。

export COMMANDLINE_ARGS="--medvram --api"

それでもエラーが続くときの追加オプション

--medvramを付けてもVRAMエラーが出る場合、次のオプションと組み合わせてみてください。

  • --xformers: xFormersがインストール済みであれば、アテンション計算を効率化してVRAM使用量を削減できます。
  • --opt-sdp-attention または --opt-split-attention: アテンション計算方式の変更。バックエンドとの相性があるため、どちらかがエラーになった場合はもう一方を試してください。私自身、Apple SiliconのMac環境で--opt-sdp-attentionを指定したところバッファ確保エラーになり、--opt-split-attentionに変更することで回避できた経験があります。
  • 解像度を下げる: 解像度の二乗でVRAM消費が増えるため、まず512×512で動作確認してください。
  • 拡張機能の同時使用を減らす: LoRA・ControlNet・ADetailerを同時に使うとVRAMが積み重なります。数を絞ってから試してください。

まとめ

VRAM SD 1.5 SDXL
12GB以上 オプション不要 オプション不要
8GB オプション不要 --medvram
6GB --medvram --medvram-sdxl または --lowvram
4GB --medvram または --lowvram 不安定・困難
2〜3GB --lowvram 非対応

--medvramと--lowvramの根本的な違いは「U-NetをVRAMに残すかどうか」です。速度を最小限の犠牲でVRAMを節約したいなら--medvram、それでも足りなければ--lowvram、という順番で試すのが鉄則です。

次の行動: まず自分のGPUのVRAM搭載量を確認してください(LinuxとWindowsではnvidia-smiコマンドで確認できます。Windowsはタスクマネージャー→パフォーマンス→GPUでも確認可能です)。上の表から対応するオプションを1つ選んでwebui-user.batまたはwebui-user.shに追記し、起動してみてください。それでもエラーが出るなら、解像度を512×512に落としてから再試行するのが次のステップです。

この記事で触れたもの

よくある質問

--medvramと--lowvramを同時に指定したらどうなりますか?

同時に指定した場合、--lowvramの設定が優先されます。組み合わせても--lowvram単独と動作は変わらないため、どちらか一方を選んで指定してください。

VRAM 8GBでSDXLのHires fixを使いたい場合はどうすればよいですか?

--medvramを指定した上で、Hires fixのアップスケール倍率を1.5以下にする、またはtxt2imgで小さめに生成してからアップスケーラーで拡大する方法が現実的です。それでも不安定な場合はControlNetやLoRAの同時使用を減らしてください。

--lowvramにすると生成時間はどれくらい増えますか?

モデルサイズ・ステップ数・CPUやRAMの速度に依存するため一概には言えません。--medvramと比べて数倍の時間がかかる場合もあると考えられます。正確な数値は実際に計測して確認するのが確実です。