はじめに
運用中の Web サービスに画像生成機能を組み込むにあたり、API 課金型のマネージドサービスと自前 GPU の EC2 とを比較したくなりました。そこで「EC2 の GPU インスタンスで FLUX.1 schnell が実用速度で回るか」を実機で確かめた記録です。結論から言うと性能は文句なしでしたが、起動までに想定外のつまずきが6つありました。同じ構成を組む人(と未来の自分)のために、間違った手順と正解の両方を残します。
検証環境(2026年8月時点):
- EC2 g6.xlarge(NVIDIA L4 24GB / RAM 16GB / vCPU 4、東京リージョン、約$1.2/時)
- AMI: Canonical Ubuntu Server 24.04(SSM パラメータ
/aws/service/canonical/ubuntu/server/24.04/stable/current/amd64/hvm/ebs-gp3/ami-idで取れる最新版) - ディスク: ルート 30GB gp3 + モデル用 50GB gp3(
/mnt/modelsにマウント)+ インスタンスストア 232.8GB を swap に - NVIDIA ドライバ 595.71.05(CUDA 13.2)/ uv + Python 3.12 / PyTorch cu130 / ComfyUI 最新 / FLUX.1 schnell FP8(約17GB)
先にまとめ
- L4 で 1024×1024・4 steps が 7〜8秒/枚(2回目以降の実測: 7.15 / 8.08 / 7.21 秒)。初回のみモデルロード込みで116秒
- いちばんの罠は2つ。Ubuntu Server 24.04 の AMI には開発系ツールがほぼ入っていないこと(
ubuntu-driversすら無い)と、ubuntu-drivers install --gpgpuは headless ドライバのみでnvidia-smiを含まないこと - RAM 16GB でも swap はほぼ使われず、OOM なし。保険で用意した 232GB swap は出番なし
これが最終的に動いた最短手順です(SSH 接続後):
# --- NVIDIA ドライバ ---
sudo apt update
# 最小構成 AMI に無い開発ツール一式を先に入れる(罠1・3・4の予防)
sudo apt install -y ubuntu-drivers-common build-essential python3.12-dev
sudo ubuntu-drivers install --gpgpu
# --gpgpu は headless のみで nvidia-smi を含まない(罠2)ので utils を追加
VER=$(dpkg -l | grep -oP 'nvidia-headless-no-dkms-\K[0-9]+(-server)?' | head -1)
sudo apt install -y nvidia-utils-$VER
sudo reboot# --- ComfyUI + FLUX.1 schnell FP8 ---
curl -LsSf https://astral.sh/uv/install.sh | sh
source ~/.local/bin/env
git clone https://github.com/comfyanonymous/ComfyUI.git ~/ComfyUI
cd ~/ComfyUI
uv venv --python 3.12
source .venv/bin/activate
# torch は3点セットを同じ index から入れて CUDA 版を揃える(罠5)
uv pip install torch torchvision torchaudio --index-url https://download.pytorch.org/whl/cu130
uv pip install -r requirements.txt
wget -O /mnt/models/flux1-schnell-fp8.safetensors \
"https://huggingface.co/Comfy-Org/flux1-schnell/resolve/main/flux1-schnell-fp8.safetensors"
ln -s /mnt/models/flux1-schnell-fp8.safetensors ~/ComfyUI/models/checkpoints/
python main.py --listen 127.0.0.1
# ローカルからは ssh -N -L 8188:localhost:8188 で 8188 をトンネルして使う実際にやったこと
罠1: ubuntu-drivers コマンドが存在しない
まずは定番の GPU ドライバ導入から。ところが1行目で止まりました。
$ sudo ubuntu-drivers install --gpgpu
sudo: ubuntu-drivers: command not foundubuntu-drivers は ubuntu-drivers-common パッケージのコマンドで、Ubuntu Server 24.04 の AMI にはプリインストールされていません。sudo apt install -y ubuntu-drivers-common で解決。ここが「このAMI、思った以上に何も入っていないぞ」に気づく最初のサインでした。
罠2: ドライバを入れて再起動しても nvidia-smi が無い
ubuntu-drivers install --gpgpu は成功し、再起動。ところが動作確認の nvidia-smi が「Command not found」で、apt が候補パッケージをずらずら提案してきます。
壊れたのかと思いきや、dpkg -l | grep nvidia を見ると nvidia-headless-no-dkms-595-server-open などドライバ本体はきちんと入っていました。--gpgpu オプションはサーバー向けの headless ドライバ(カーネルモジュールのみ)を入れる仕様で、nvidia-smi を含む nvidia-utils-XXX-server は別枠なのです。入った版番号に合わせて追加します。
VER=$(dpkg -l | grep -oP 'nvidia-headless-no-dkms-\K[0-9]+(-server)?' | head -1)
sudo apt install -y nvidia-utils-$VER # 今回は nvidia-utils-595-serverこれで nvidia-smi に NVIDIA L4(23034MiB)が表示されました。再起動は不要です。
罠3・4: ComfyUI 起動で「gcc が無い」「Python.h が無い」
uv で仮想環境を作り、依存を入れて python main.py を実行。すると今度は ComfyUI の依存ライブラリ triton が起動時にエラーを吐きます。
RuntimeError: Failed to find C compiler. Please specify via CC environment variable.triton は実行時に C コードをコンパイルする設計で、gcc が必要です。sudo apt install -y build-essential を入れて再実行すると、次はこれ。
/tmp/tmpXXXX/main.c:5:10: fatal error: Python.h: No such file or directoryPython の開発ヘッダも要るので sudo apt install -y python3.12-dev を追加。罠1と根は同じで、最小構成 AMI に開発ツールが無いことが原因です。先に3つまとめて入れておけば踏まずに済みます。
罠5: libcudart.so.13 が無い — torch と torchaudio の CUDA 版ズレ
これがいちばん厄介でした。起動がさらに進んだところで torchaudio のロードに失敗します。
OSError: libcudart.so.13: cannot open shared object file: No such file or directory原因は CUDA 版の不一致です。当初 torch と torchvision だけを cu124 の index から入れており、その後の pip install -r requirements.txt で torchaudio が PyPI から入りました。PyPI の最新 torchaudio は CUDA 13 ビルドなので、CUDA 12.4 の torch 環境には libcudart.so.13 が存在せず落ちる、という構図でした。ComfyUI 自体も起動ログで「cu130 以上を推奨」と警告していたので、3点セットを cu130 で揃え直すことにしました。
さらにここで小さな二段目の罠。uv pip install torch torchvision torchaudio --index-url .../cu130 を実行しても、バージョン指定なしだと「既にインストール済み」としてスキップされ、何も変わりません。起動ログの pytorch version: 2.6.0+cu124 が動かぬ証拠でした。強制的に入れ替えます。
uv pip install -U --force-reinstall torch torchvision torchaudio \
--index-url https://download.pytorch.org/whl/cu130これで起動ログが通り、「To see the GUI go to: http://127.0.0.1:8188」まで到達しました。
罠6: テンプレートの「Missing Models」で SD1.5 をダウンロードさせられそうになる
ComfyUI の GUI(SSH トンネル経由で localhost:8188)でテンプレート「画像生成」を開くと、「Missing Models — v1-5-pruned-emaonly-fp16.safetensors / Download all (1.99 GB)」というエラーが出ます。テンプレートの既定モデルが SD1.5 だからで、ここで Download を押す必要はありません。Load Checkpoint ノードのモデル名欄をクリックして、自分で置いた flux1-schnell-fp8.safetensors に差し替えるだけで解決です(候補に出ないときは R キーでノード定義を再読み込み)。
なお KSampler の既定値は steps 4 / cfg 1.0 / euler / simple と、schnell 向けの設定が最初から入っていました。
計測結果
1024×1024・4 steps・英語プロンプトで4回生成した結果です(ComfyUI のサーバーログ Prompt executed in XX seconds から)。
| 回 | 生成時間 |
|---|---|
| 1回目(モデルロード込み) | 116.35 秒 |
| 2回目 | 7.15 秒 |
| 3回目 | 8.08 秒 |
| 4回目 | 7.21 秒 |
生成中も swap の累計使用量は 1.5MiB のままで、実質未使用。FP8 チェックポイント(17GB)は RAM 16GB + 動的 VRAM ローディングで問題なく回りました。
ハマりどころまとめ
| 症状 | 原因 | 対処 |
|---|---|---|
ubuntu-drivers: command not found | 最小AMIに未収録 | apt install ubuntu-drivers-common |
ドライバ導入後も nvidia-smi 無し | --gpgpu は headless のみ | apt install nvidia-utils-<版>-server |
Failed to find C compiler | triton が実行時に gcc 要求 | apt install build-essential |
Python.h: No such file | 開発ヘッダ無し | apt install python3.12-dev |
libcudart.so.13 が無い | torch cu124 × torchaudio CUDA13 の混在 | 3点セットを cu130 で統一 |
| ↑の入れ替えが効かない | バージョン指定なしは既存でスキップ | uv pip install -U --force-reinstall |
| Missing Models(SD1.5) | テンプレート既定が SD1.5 | Download せずチェックポイント差し替え |
やってみての所感
7〜8秒/枚は想定よりだいぶ速く、体感としては「待たされない」水準です。g6.xlarge は約$1.2/時なので、まとめて生成するバッチ用途なら1枚あたりのコストはかなり安くなります。一方で時間課金なので、リクエストが散発的な用途では起動・停止の運用設計とセットで考える必要があります。
つまずきの大半は「Ubuntu Server の AMI は本当に最小構成」という一点に集約されます。ML 系のツールチェーンは gcc や Python ヘッダの存在を暗黙に仮定しがちなので、GPU 用途なら ubuntu-drivers-common build-essential python3.12-dev を最初に入れてしまうのが正解でした。もう一つの教訓は、pip/uv で CUDA 系パッケージを扱うときは同系列の index に統一すること。torch だけ index 指定して残りを PyPI に任せると、今回のような版ズレが起きます。
検証が終わったらインスタンスの停止を忘れずに。停止中も EBS 分の課金(今回の構成で月$7〜8程度)は残ります。
まとめ
- g6.xlarge(NVIDIA L4)+ ComfyUI + FLUX.1 schnell FP8 は、1024×1024 が7〜8秒/枚で実用十分
- ただし素の Ubuntu 24.04 AMI では、ドライバ周りと triton のために apt install が4つ必要
- torch / torchvision / torchaudio は必ず同じ CUDA index で。入れ替え時は
-U --force-reinstall - ComfyUI テンプレートの Missing Models は、モデル差し替えで解決するならダウンロード不要
参考リンク: