2
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

ConoHa VPS の GPU フレーバーで Gemma 4 + Open WebUI をワンコマンドデプロイ

2
Posted at

はじめに

「自前のサーバーでローカル LLM を動かしたい、でも Claude や OpenAI API の料金が気になる」という方も多いのではないでしょうか。

本記事では、ConoHa VPS の NVIDIA L4 GPU フレーバーに Gemma 4(31B) + Open WebUI をデプロイした実録をまとめます。conoha-cli を使えばインフラからアプリまで CLI だけで完結できます。

Gemma 4 とは

2025年に Google が公開したオープンウェイトモデルのシリーズです。Gemma 3 の後継にあたり、マルチモーダル(テキスト+画像)に対応しています。

モデル パラメータ ファイルサイズ 特徴
gemma4:e2b 2.3B(実効) 7.2GB エッジデバイス向け
gemma4:e4b 4.5B(実効) 9.6GB バランス型
gemma4:26b 26B MoE 18GB 高精度・効率的
gemma4:31b 31B Dense 20GB ローカル最高クラス

注意: 記事執筆時点では gemma4:28b という tag は存在しません。近い大きさのモデルは gemma4:26b(MoE)か gemma4:31b(Dense)です。

必要な ConoHa フレーバー

Gemma 4 の大きなモデルは GPU が必須です。ConoHa VPS では L4 フレーバー を選ぶ必要があります。

conoha flavor list | grep l4
4      16G   0      1ff846c5-...  g2l-t-c4m16g1-l4
4      16G   0      9a21ce94-...  g2l-p-c4m16g1-l4
20     128G  0      214643c8-...  g2l-p-c20m128g1-l4
20     128G  0      b5d0e377-...  g2l-t-c20m128g1-l4

今回は g2l-t-c20m128g1-l4(20 vCPU, 128GB RAM, NVIDIA L4 24GB VRAM)を使用しました。

ポイント: L4 フレーバーの disk 表示は 0 ですが、サーバー作成時にブートボリューム(100GB)が自動生成されます。--yes フラグが必要です(後述)。

ファイル構成

ollama-webui/
├── compose.yml
└── .dockerignore

シンプルに 2 ファイルだけです。

compose.yml

services:
  ollama:
    image: ollama/ollama:latest
    volumes:
      - ollama_data:/root/.ollama
    entrypoint: ["/bin/sh", "-c", "ollama serve & sleep 10 && ollama pull gemma4:31b && wait"]
    healthcheck:
      test: ["CMD", "ollama", "list"]
      interval: 30s
      timeout: 10s
      retries: 20
      start_period: 600s
    deploy:
      resources:
        reservations:
          devices:
            - driver: nvidia
              count: all
              capabilities: [gpu]

  webui:
    image: ghcr.io/open-webui/open-webui:main
    ports:
      - "3000:8080"
    environment:
      - OLLAMA_BASE_URL=http://ollama:11434
      - WEBUI_AUTH=false
    volumes:
      - webui_data:/app/backend/data
    depends_on:
      ollama:
        condition: service_healthy

volumes:
  ollama_data:
  webui_data:

設定のポイント

設定 説明
deploy.resources.reservations.devices GPU パススルーの設定。L4 フレーバーで必須
healthcheck: test: ["CMD", "ollama", "list"] ollama コンテナには curl が入っていないため ollama list を使用
start_period: 600s 初回起動時に 20GB のモデル pull が走るため長めに設定
WEBUI_AUTH=false 認証なしで即アクセス可能(必要に応じて true に変更)

デプロイ手順

1. サーバー作成

conoha server create \
  --name l4-gemma4-server \
  --flavor b5d0e377-3440-41c2-a967-15bbde929325 \
  --image 722c231f-3f61-4e79-a5a6-c70d6c9ea908 \
  --key-name <キーペア名> \
  --security-group default \
  --security-group IPv4v6-SSH \
  --no-input --yes --wait

vmi-docker-29.2-ubuntu-24.04-amd64 イメージを使うと Docker が最初から入っています。

2. ポート 3000 の開放

# セキュリティグループ ID を確認する
conoha network sg list | grep default

# ポート 3000 を開放する
conoha network sgr create \
  --security-group-id <default-SG-ID> \
  --direction ingress \
  --protocol tcp \
  --port-min 3000 \
  --port-max 3000 \
  --remote-ip 0.0.0.0/0

3. NVIDIA ドライバー + Container Toolkit のインストール

nvidia-setup.sh を作成します:

#!/bin/bash
set -e

# NVIDIA Container Toolkit のインストール
curl -fsSL https://nvidia.github.io/libnvidia-container/gpgkey | \
  gpg --dearmor -o /usr/share/keyrings/nvidia-container-toolkit-keyring.gpg
curl -s -L https://nvidia.github.io/libnvidia-container/stable/deb/nvidia-container-toolkit.list | \
  sed 's#deb https://#deb [signed-by=/usr/share/keyrings/nvidia-container-toolkit-keyring.gpg] https://#g' | \
  tee /etc/apt/sources.list.d/nvidia-container-toolkit.list

apt-get update -q
apt-get install -y nvidia-container-toolkit
nvidia-ctk runtime configure --runtime=docker
systemctl restart docker

nvidia-driver-setup.sh を作成します:

#!/bin/bash
set -e

# GPU ドライバーのインストール
apt-get install -y ubuntu-drivers-common
ubuntu-drivers install --gpgpu

nvidia-utils-setup.sh を作成します:

#!/bin/bash
set -e

# nvidia-smi を含むユーティリティのインストール
apt-get install -y nvidia-utils-570-server
systemctl restart docker
nvidia-smi

スクリプトを順番にデプロイします:

conoha server deploy l4-gemma4-server --script nvidia-setup.sh \
  --identity ~/.ssh/conoha_<キーペア名> --no-input

conoha server deploy l4-gemma4-server --script nvidia-driver-setup.sh \
  --identity ~/.ssh/conoha_<キーペア名> --no-input

4. 再起動(重要)

ドライバーインストール後、カーネルモジュールをロードするために再起動が必要です:

conoha server reboot l4-gemma4-server --wait --no-input --yes

再起動後に nvidia-utils をインストールして GPU を確認します:

conoha server deploy l4-gemma4-server --script nvidia-utils-setup.sh \
  --identity ~/.ssh/conoha_<キーペア名> --no-input

出力例:

+-----------------------------------------------------------------------------------------+
| NVIDIA-SMI 570.211.01    Driver Version: 570.211.01    CUDA Version: 12.8               |
|-----------------------------------------+------------------------+----------------------+
| GPU  Name                Persistence-M  | Bus-Id          Disp.A | Volatile Uncorr. ECC |
|   0  NVIDIA L4                      Off |   00000000:00:06.0 Off |                    0 |
| N/A   39C    P0             28W /   72W |       0MiB /  23034MiB |      0%      Default |
+-----------------------------------------------------------------------------------------+

5. アプリのデプロイ

# アプリ環境を初期化する
conoha app init l4-gemma4-server --app-name ollama-webui \
  --identity ~/.ssh/conoha_<キーペア名> --no-input

# compose.yml があるディレクトリでデプロイする
conoha app deploy l4-gemma4-server --app-name ollama-webui \
  --identity ~/.ssh/conoha_<キーペア名> --no-input

初回は gemma4:31b(約 20GB)のダウンロードが走るため数分かかります。

動作確認

ブラウザで http://<サーバーIP>:3000 にアクセスすると Open WebUI が表示されます。

モデル選択で gemma4:31b を選んで日本語で話しかけてみましょう。

Open WebUI の画面イメージ

ハマりポイント

1. サーバー作成時に --security-group--yes が必要

--no-input だけでは不十分で、以下の 2 つが追加で必要でした。

# NG: セキュリティグループ選択のプロンプトが発生する
conoha server create --name ... --no-input

# OK
conoha server create --name ... \
  --security-group default \
  --security-group IPv4v6-SSH \
  --no-input --yes

L4 フレーバーはブートボリューム作成の確認があるため --yes も必要です。

2. ドライバーインストール後に再起動が必要

ubuntu-drivers install --gpgpu を実行した後、カーネルが更新されていた場合は再起動しないと nvidia-smi が使えません。

conoha server reboot <サーバー名> --wait --no-input --yes

3. nvidia-smi は別パッケージ

ubuntu-drivers install --gpgpu では nvidia-headless-no-dkms 系しかインストールされず、nvidia-smi コマンドが入りません。別途インストールが必要です。

apt-get install -y nvidia-utils-570-server

4. ollama コンテナに curl がない

healthcheck に curl を使うと失敗します。ollama list コマンドを使いましょう。

# NG
healthcheck:
  test: ["CMD-SHELL", "curl -f http://localhost:11434/api/tags || exit 1"]

# OK
healthcheck:
  test: ["CMD", "ollama", "list"]

5. gemma4:28b は存在しない

「28B モデルがほしい」と思っても gemma4:28b タグはありません。近いサイズとして gemma4:26b(MoE・18GB)または gemma4:31b(Dense・20GB)を選びましょう。

パフォーマンスについて

今回は gemma4:31b(20GB)を使いましたが、同じ L4(VRAM 24GB)で動かす場合、gemma4:26b(MoE・18GB)の方がレスポンスが速い可能性があります。MoE(Mixture of Experts)アーキテクチャは推論時に全パラメータを使わないため、体感速度が上がる傾向があります。用途に応じて使い分けると良いでしょう。

モデル VRAM 使用量 推論速度(目安) 精度
gemma4:26b 約 18GB 速め 高い
gemma4:31b 約 20GB やや遅め 高い

コストについて

ConoHa VPS の L4 トライアルプランを使った場合の費用感です(2025年時点・参考値)。

比較対象 月額コスト(目安) 特徴
ConoHa L4 フレーバー 数万円/月 自前サーバー、使い放題
Claude API(Sonnet) 使用量に応じて変動 高品質、従量課金
OpenAI API(GPT-4o) 使用量に応じて変動 高品質、従量課金

ヘビーユーザー(1 日に大量のトークンを消費する場合)やプライバシー重視(データを外部に送りたくない場合)であれば、自前サーバーで Gemma 4 を動かす方がコスト的に有利な場合があります。一方、軽い使い方であれば API の従量課金の方が安上がりです。

まとめ

ステップ コマンド
① サーバー作成 conoha server create --flavor <L4-ID> --security-group default --security-group IPv4v6-SSH --no-input --yes --wait
② ポート開放 conoha network sgr create ... --port-min 3000 --port-max 3000
③ GPU 環境構築 conoha server deploy × 3(Toolkit → Driver → Utils)
④ 再起動 conoha server reboot --wait --no-input --yes
⑤ アプリ初期化 conoha app init ... --app-name ollama-webui
⑥ デプロイ conoha app deploy ... --app-name ollama-webui

ConoHa の L4 フレーバーと conoha-cli を組み合わせることで、GPU 環境の構築からアプリのデプロイまで CLI だけで完結できます。Gemma 4 はマルチモーダル対応の高性能モデルなので、プライベートな LLM 環境としておすすめです。

参考リンク

2
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?