Stable Diffusion自前運用の必要スペック
ComfyUIでStable Diffusionを自前運用するための現実的な構成を解説します。CPU VPSでの生成時間、SDXLに必要なVRAM、6.94 GBのモデル容量、インストールコマンドとディスク容量を確認できます。
セルフホスト型AI画像生成に必要なもの
セルフホスト型のAI画像生成環境は、1つのWebアプリケーションと1つのモデルファイルで構成されます。アプリケーションには ComfyUI を使用し、任意の Linux サーバー上で動作させます。ハードウェアの要件を決定するのはモデルです。SDXL クラスのチェックポイントは 6.94 GB の単一ファイルであり、GPU メモリ上に配置されることを想定しています。この事実が予算全体を左右するため、サーバーを借りる前に以下のハードウェア要件を確認してください。
率直なまとめとして、CPU のみの VPS でもソフトウェアのインストールと実行は可能であり、古い Stable Diffusion 1.5 モデルを使用すれば 512x512 の画像を 1 分から 2 分程度で生成できます。同じ環境で SDXL を使用して 1024x1024 の画像を生成する場合、1 枚あたり 10 分から 20 分を要します。これは設定の不備ではなく、計算上の結果です。本ガイドではその理由を解説します。
モデルサイズがマシンを決める
画像生成は、ノイズ除去ループを実行します。30 ステップのレンダリングでは、ノイズ除去器である SDXL の UNet が画像全体を 30 回処理し、各パスで UNet のすべての重みを読み取ります。2 つのテキストエンコーダーはループの前に 1 回だけ実行し、VAE はループの後に 1 回だけデコードするため、ステップごとのコストには含まれません。SDXL の UNet は半精度で 5.14 GB の重みを持つため、この単純化した見方では、画像が表示されるまでに 30 ステップのレンダリングで約 154 GB の重みをメモリ上で移動させます。中間テンソルによって、さらにメモリ使用量が増えます。
24 GB のビデオメモリ(VRAM、グラフィックスチップの隣に実装されたメモリ)を搭載した GPU は、毎秒数百 GB の速度で読み取り、6.9 GB 全体を一度に保持できます。CPU VPS はシステム RAM を毎秒数十 GB の速度で読み取り、畳み込み用の行列演算ハードウェアを持たないため、同じループの実行速度は 1 桁から 2 桁遅くなります。これはテキストモデルの性能を左右するメモリ帯域幅と同じ議論であり、GPU 付き VPS に費用をかける価値が実際にある場合 と併せて読むとよいでしょう。
画像生成には、テキスト生成と異なる重要な点があります。チャットモデルはトークンをストリーミングするため、低速なマシンでも読み進めている間に単語が表示され、使い続けられます。画像は最後のステップが完了するまで表示されません。遅いということは、進行状況バーを見続けるということです。
ハードウェアの段階と実測値
以下の表は、2026年7月時点で、1024x1024、30 steps、Euler samplerを使用してSDXL画像を1枚生成した場合の一般的な値です。桁の目安として扱ってください。sampler、step数、解像度によって変わります。
このグラフのデータ
[
{
"label": "8 vCPU VPS, no GPU",
"seconds_per_image": 780
},
{
"label": "8GB VRAM GPU",
"seconds_per_image": 32
},
{
"label": "12GB VRAM GPU",
"seconds_per_image": 18
},
{
"label": "24GB VRAM GPU",
"seconds_per_image": 9
}
]CPUの値は 780 秒で、約13分です。24 GBのカードでは9秒です。購入によって得られる差はこの範囲です。
この段階表は、次のように読みます。VRAMが8 GB未満でもSDXLは動作します。ComfyUIがVRAMとシステムRAMをまとめて管理し、モデルの重みを自動的にオフロードするためです。2026年10月時点で、プロジェクトのREADMEでは、非同期の重みストリーミングを使用する場合の下限を、VRAM 4 GBとシステムRAM 8 GBとしています。オフロードは各stepで時間を消費するため、6 GBのカードでは、1画像あたり30秒よりも1分に近い時間がかかります。8 GBあればベースモデルを収容でき、快適に生成できます。12 GBあれば、オフロードせずにチェックポイントとともにControlNetを1つまたは2つ保持できます。24 GBあれば、1つのworkflowでSDXL、refiner、アップスケーリングを実行でき、余裕を持ってLoRAアダプターも学習できます。学習に必要な容量はこれより少なくて済みます。kohya-ss sd-scripts trainerのSDXL training guideでは、LoRA trainingはGPU memory 8 GBで実行でき、10 GBを推奨しています。そのために、U-Netのみを学習し、gradient checkpointingを有効にし、text encoderの出力とlatentをキャッシュし、8-bit optimizerまたはAdafactorを使用し、8 GBのカードではLoRA dimを4から8に下げるよう説明しています。これらのscriptをラップするkohya_ss GUIのLoRA guideは、より慎重です。LoRA trainingには、memoryが少なくとも12 GBのGPUを使用するよう記載しています。
CPU VPSでできることとできないこと
CPU VPSは、多くの人が想定する以上の処理を実行できます。一方で、宣伝から受ける印象ほど万能ではありません。どこまでできるかを具体的に把握してください。
CPU VPSでは、ComfyUIをインストールし、Webインターフェースを提供し、モデルライブラリを保持し、キューを実行できます。GPUがまったくなくても画像を生成できます。Stable Diffusion 1.5を512x512、20 stepsで実行する場合、16 GBのRAMを搭載した8基の最新vCPUでは、1枚あたりおよそ60から150秒かかります。夜間に実行するバッチ処理や、キューの背後に置く低頻度の画像エンドポイントであれば、十分に実用的です。
CPU VPSでは、対話的な作業はできません。プロンプトの反復では1時間に20回レンダリングすることになりますが、1回に13分かかると4回しか実行できません。また、学習にも適しません。CPUでのLoRAファインチューニングは数時間ではなく数日単位になるため、利用できないものとして扱ってください。
CPUのみで運用する場合、メモリの判断基準はGPUの場合と異なります。重みはシステムRAMに読み込まれるため、モデルサイズに加えて作業領域が必要です。SDXLには約16 GBのRAM、SD 1.5には約8 GBのRAMが必要です。4 GBのサーバーではComfyUIは起動しても、最初のレンダリングの途中でout-of-memory killerに強制終了されます。この場合、プロセスがKilledとともに消え、dmesgにはPython tracebackが表示されません。
GPU マシンに ComfyUI をインストールする
以下は upstream のコマンドです。NVIDIA driver が導入済みのクリーンな Ubuntu 24.04 環境から開始します。最初に driver を確認してください。この確認を省くと、その後のすべての障害が同じように見えるためです。
nvidia-smiカードと CUDA version を含む表が表示されます。command not found または NVIDIA-SMI has failed because it couldn't communicate with the NVIDIA driver が表示された場合は、driver がないか、upgrade 後に kernel module が読み込まれていません。続行する前に修正してください。修正しないと ComfyUI は黙って CPU にフォールバックし、ソフトウェアが原因だと誤認することになります。
sudo apt update
sudo apt install -y git python3-venv python3-pip wget
git clone https://github.com/comfyanonymous/ComfyUI.git
cd ComfyUI
python3 -m venv venv
. venv/bin/activate
pip install torch torchvision torchaudio --extra-index-url https://download.pytorch.org/whl/cu130
pip install -r requirements.txtvirtual environment は任意の助言ではありません。PyTorch は多数の依存関係を導入します。ほかのソフトウェアも動作するマシンに system-wide でインストールすると、別のソフトウェアを壊す原因になります。先に進む前に、PyTorch がカードを認識できることを確認してください。
python -c "import torch; print(torch.cuda.is_available(), torch.cuda.get_device_name(0))"True とカード名が表示されれば、stack は正常に動作しています。False が表示された場合は、インストールした wheel と driver が一致していません。通常は CPU-only の torch wheel がすでに cache されています。上記の index URL を指定して再インストールしてください。
モデルを取得し、ディスク容量を計画する
ComfyUI には重みが含まれていません。チェックポイントは models/checkpoints に、VAE ファイルは models/vae に、LoRA アダプターは models/loras に配置します。
cd ~/ComfyUI/models/checkpoints
wget https://huggingface.co/stabilityai/stable-diffusion-xl-base-1.0/resolve/main/sd_xl_base_1.0.safetensors常に .ckpt より .safetensors を優先してください。.ckpt ファイルは pickle 化された Python オブジェクトであり、読み込むと作成者が含めたコードが実行されます。safetensors 形式にはテンソルだけが含まれるため、悪意のあるファイルでも何かを実行することはできません。
ストレージ容量は忘れられがちなコストです。SDXL のベースチェックポイントは 1 つで 6.94 GB です。リファイナーにはさらに 6 GB 必要です。SDXL ControlNet モデルは、軽量な Canny モデルなら 320 MB、half precision のフルモデルなら 2.5 GB です。アップスケーラーは小容量です。標準の Real-ESRGAN x4plus モデルは 67 MB、anime モデルは 17.9 MB、anime video モデルは 2.5 MB です。LoRA は数十 MB から、ByteDance の Hyper-SDXL アダプターでは 787 MB まであります。この用途を気に入った人は、1 週間以内に 2 つ目、3 つ目のベースモデルをダウンロードします。実用的なインストールには 100 GB のディスク容量を割り当て、outputs ディレクトリも監視してください。1024x1024 の PNG ファイルは 1 つあたり 1〜2 MB あり、 unattended なバッチ処理によって小容量のディスクが気付かないうちに満杯になります。models/ と output/ は拡張可能なボリュームに配置し、ワークフローの JSON ファイルは オブジェクトストレージへの暗号化された増分バックアップ などでバックアップしてください。重みは再ダウンロードできます。調整したワークフローは再現できません。
実行して安全にアクセスする
cd ~/ComfyUI
. venv/bin/activate
python main.py --listen 127.0.0.1 --port 8188ComfyUI はポート 8188 で接続を待ち受けます。CPU のみのサーバーでは --cpu を追加してください。CUDA デバイスがない場合でも失敗せず、CPU の処理経路を強制的に使用できます。
0.0.0.0 ではなく 127.0.0.1 にバインドしてください。現在の ComfyUI にはアカウント機能がありますが、いずれもサーバーを保護する認証ではありません。Settings の User セクションにあるログインは Comfy アカウントへのサインインであり、ローカルインストールからも使用できます。Comfy のドキュメントには、メールアドレス、Google、GitHub、API key によるサインインが記載されています。ドキュメントでは、このアカウントを partner nodes と Comfy Cloud のサブスクリプションにアクセスするためのものとして説明しており、自分のサーバーをパスワードで保護する方法とは説明していません。--multi-user フラグが有効にするのはユーザーごとのストレージだけです。2026 年 10 月時点では、サーバーは comfy-user リクエストヘッダーからユーザー名を取得するだけで、パスワードは確認しません。ポートに到達できる相手は、キューにジョブを追加し、生成したすべての画像を読み取れます。さらに --enable-manager を指定して起動していた場合は、custom nodes をインストールできます。これはサーバー上で任意のコードを実行される可能性があるということです。代わりに、ノート PC から SSH トンネル経由でアクセスしてください。
ssh -N -L 8188:127.0.0.1:8188 you@your-server続いて、ローカルで http://127.0.0.1:8188 を開きます。実際に複数ユーザーからアクセスさせる必要がある場合は、認証機能を備えたリバースプロキシを前段に置き、アプリは localhost にバインドしたままにしてください。同じ考え方は、認証機能のない自己ホスト型サービス全般に当てはまります。これは VPS での Docker Compose のデプロイでも標準的な構成です。
systemd で実行を継続する
SSH セッションを閉じると停止するレンダリングキューは、サービスとはいえません。自分のアカウントではなく、ログインできない comfy ユーザーとして実行してください。カスタムノードはコードであり、そのコードからホームディレクトリにアクセスできないようにする必要があります。ユーザーを作成し、インストールをそのホームディレクトリに移動します。
sudo useradd --system --create-home --home-dir /home/comfy --shell /usr/sbin/nologin comfy
sudo mv ~/ComfyUI /home/comfy/
sudo chown -R comfy:comfy /home/comfy/ComfyUIunit は仮想環境内の python を直接呼び出すため、移動後も仮想環境は動作します。次に /etc/systemd/system/comfyui.service を記述します。
[Unit]
Description=ComfyUI
After=network-online.target
[Service]
User=comfy
WorkingDirectory=/home/comfy/ComfyUI
ExecStart=/home/comfy/ComfyUI/venv/bin/python main.py --listen 127.0.0.1 --port 8188
Restart=on-failure
RestartSec=5
[Install]
WantedBy=multi-user.targetsudo systemctl daemon-reload
sudo systemctl enable --now comfyui
systemctl status comfyuiactive (running) と、To see the GUI go to: http://127.0.0.1:8188 と記録されたログ行が表示されれば、起動しています。ExecStart は仮想環境内のインタープリターを直接指定しています。systemd はシェルのプロファイルを実行せず、activate も発生しないためです。
予算別の現実的な推奨
画像生成を試したいが速度よりコストを重視する場合は、RAM 16 GB の CPU VPS を選び、SD 1.5 を 512x512 で実行します。1 枚あたり 1〜2 分かかることを受け入れてください。これが現実的な入門構成です。GPU 付きの構成と比べて、費用を大幅に抑えられます。導入するモデルやワークフローを決めるまでのホスト先としても適しています。
毎日プロンプトを試行する場合は、GPU cloud から VRAM 12 GB 以上の GPU を時間単位で借り、使い終わったら停止します。画像生成は断続的な処理です。使用していない GPU を月額で契約し続けることが、ここで最もよくある過剰支出の原因です。チェックポイントは安価な block storage に保存し、マウントして使用します。
他のユーザーにサービスを提供する場合や、LoRA adapter を定期的に学習する場合は、VRAM 24 GB と常時稼働させるマシンを想定してください。sd-scripts の SDXL guide では、メモリ節約設定を使えば LoRA training は 8 GB で実行でき、10 GB を推奨しています。また、kohya_ss GUI の LoRA guide では、少なくとも 12 GB を求めています。sd-scripts guide にある 24 GB という値は、batch size 1 で SDXL の full fine-tuning を行う場合のものです。そのため、VRAM 24 GB のカードなら LoRA work に対応しつつ、fine-tuning も実行可能な範囲に収まります。この段階では、同じマシンで local language model も実行すると、通常は導入費用を回収しやすくなります。この構成については、Ollama を使った LLM のセルフホスティングで説明しています。
どの構成を選ぶ場合でも、公開されている数値を信じる前に、自分のマシンで測定してください。同じプロンプトを 5 回キューに入れ、ComfyUI がコンソールに出力する 1 iteration あたりの秒数を確認します。その数値が、実際の構成の性能を示します。
FAQ
GPU なしで Stable Diffusion を実行できますか?
はい。ComfyUI は python main.py --cpu で動作し、グラフィックスカードがなくても実際の画像を生成できます。8 個の最新 vCPU では、Stable Diffusion 1.5 を 512x512 で実行すると、1 枚あたりおよそ 60 から 150 秒かかります。SDXL を 1024x1024 で実行すると、10 分から 20 分ほどかかります。夜間のバッチ処理や、処理量の少ないエンドポイントには適しています。プロンプトを反復して調整する用途には向きません。トレーニングは完全に現実的ではありません。
SDXL にはどの程度の VRAM が必要ですか?
8 GB あれば、SDXL を 1024x1024 で無理なく実行できます。それ未満の場合、ComfyUI はモデルの重みを自動的にシステム RAM へオフロードし、それでも動作します。2026 年 10 月時点で、README には最低要件として 4 GB の VRAM と 8 GB のシステム RAM が記載されています。ただし、オフロードする各ステップで処理時間が増加します。12 GB あれば、チェックポイントとともに ControlNet を保持できます。24 GB あれば、1 つのワークフローでベースモデル、リファイナー、アップスケーリングを処理できます。kohya-ss sd-scripts のガイドでは、メモリ節約設定を使用すれば SDXL LoRA トレーニングは 8 GB で可能とされ、10 GB が推奨されています。一方、kohya_ss GUI の LoRA ガイドでは、少なくとも 12 GB が求められています。SDXL のフルファインチューニングには、バッチサイズ 1 で 24 GB が必要です。
モデルにはどの程度のディスク容量が必要ですか?
SDXL のベースチェックポイントだけで 6.94 GB あり、リファイナーでさらに約 6 GB 増えます。SDXL ControlNet モデルは、半精度で 1 個あたり 320 MB から 2.5 GB です。LoRA アダプターは数十 MB から 787 MB、Real-ESRGAN のアップスケーラーは 2.5 MB から 67 MB です。ベースモデルを数個含む実用的なインストールには 100 GB を見込んでください。1024x1024 の PNG ファイルは 1 個あたり 1 から 2 MB になるため、出力ディレクトリは別途監視します。
ComfyUI をパブリックインターネットに公開しても安全ですか?
いいえ。ComfyUI の設定にある Comfy アカウントのログインはローカルインストールから使用できます。ただし、Comfy のパートナーノードとクラウドサブスクリプションにアクセスできるだけであり、Comfy のドキュメントにはサーバーを保護する機能として説明されていません。--multi-user フラグは、パスワードを確認せずにユーザーごとのストレージを分離するだけです。ComfyUI-Manager を有効にすると、インターフェースからカスタムノードをインストールできます。カスタムノードはサーバー上で実行される Python コードです。そのため、ポートを開放するとリモートコード実行につながります。127.0.0.1 にバインドし、ssh -N -L 8188:127.0.0.1:8188 you@your-server を使用した SSH トンネル経由でアクセスしてください。複数のユーザーがアクセスする場合は、認証機能を持つリバースプロキシを前段に配置します。
エラーメッセージなしでレンダリングが強制終了されたのはなぜですか?
dmesg に Killed が表示されてプロセスが消え、Python のトレースバックもない場合は、ComfyUI のバグではなく Linux の out-of-memory killer です。CPU のみの環境では重みがシステム RAM に格納されるため、SDXL には約 16 GB、SD 1.5 には約 8 GB に加えて作業領域が必要です。RAM または swap を追加するか、より小さいモデルと低い解像度を使用してください。