Ubuntu+GPUでAI推論サーバーを自作する完全ガイド

用途別

自宅のPCやVPSにAI推論サーバーを自作すると、ChatGPT のような会話AIを完全ローカルで動かせるようになります。クラウドAPIの料金を気にせず、手元のデータをインターネットに送らずに済む点が最大の魅力です。

このガイドでは Ubuntu 24.04 LTS + Docker + Ollama + Open WebUI を組み合わせたAI推論スタックを一から構築する手順を解説します。結論から言うと、必要なソフトはほぼ apt と Docker の数コマンドで揃います。本記事の数値は Ubuntu 24.04.4 LTS 公式Dockerイメージで実際にコマンドを実行した実測値(2026-06-15 時点)です。GPU推論についても触れますが、検証ホストはGPU非搭載のため、GPUの速度は「目安」として正直にラベルしています。

この記事のポイント

  • Ubuntu 24.04 LTS では aptdocker.io 29.1.3python3 3.12.3 がそのまま入ることを実測で確認
  • GPUをDockerから使う nvidia-container-toolkit は標準リポジトリに入っておらず、NVIDIA公式リポジトリの追加が必須(実測で確認した詰まりポイント)
  • Ollama(ランタイム 0.30.8)+ Open WebUI(0.9.6)の組み合わせで、ブラウザから ChatGPT 風のUIでLLMと会話できる
  • CPUのみのDocker環境でも tinyllama:1.1b は warm平均 80.6 tokens/sec で動いた(実測)。7Bクラスを快適に使うなら VRAM 8GB 以上のGPUを推奨
  • Grafana を足せばGPU/CPU/メモリ使用率をブラウザで可視化できる

このガイドで作るAIサーバーの全体像

完成後の構成は次のようになります。Ubuntu をベースに、Docker の上へサービスを順番に積み上げていくイメージです。

自作AI推論サーバーの全体構成(概念図)
自作AI推論サーバーの全体構成(概念図)
レイヤー ソフトウェア 役割 アクセス先
OS Ubuntu 24.04 LTS ベース環境
コンテナ基盤 Docker (docker.io 29.1.3) 各サービスの隔離実行
LLMランタイム Ollama モデル管理・推論API localhost:11434
WebUI Open WebUI ブラウザからチャット localhost:8080
モニタリング Grafana GPU/CPU使用率の可視化 localhost:3000

まず本記事の検証環境を確認しておきます。Ubuntu 24.04.4 LTS(Noble Numbat) の公式Dockerイメージで、各種コマンドの実出力を取得しました。

Ubuntu 24.04.4 LTS 検証環境(実測)
Ubuntu 24.04.4 LTS 検証環境(実測)

検証環境について

本記事の実測は Apple Silicon ホスト上の Ubuntu 24.04.4 LTS 公式Dockerイメージで行っています。そのためカーネルは 5.10.76(Docker仮想マシンのもの)、GPUは非搭載です。実機にUbuntuをインストールした場合のカーネルは 6.8.0-generic 系になります。GPU関連の実行例(nvidia-smi 等)はGPU搭載機での一般的な出力として示し、実測値とは区別しています。

必要なハードウェアと推奨スペック

AI推論サーバーに必要なスペックは、動かすモデルの規模で大きく変わります。まずは下の表を目安にしてください。

用途 CPU RAM GPU VRAM ストレージ 目安モデル
お試し(CPU推論) 4コア以上 8GB 不要 50GB tinyllama / llama3.2:3b
軽量GPU運用 6コア以上 16GB 8GB(RTX 3060等) 100GB llama3.1:8b
本格運用(推奨) 8コア以上 32GB 24GB(RTX 4090等) 500GB llama3.3:70b、Mixtral:8x7b
VPS(クラウドGPU) プロバイダ依存 24GB〜 A100 / H100等 100GB〜 最大規模モデル

VPSでGPUを借りる選択肢

自宅にGPUがない場合、GPU付きVPSを使う方法があります。Vultr・DigitalOcean・Lambda Labs などがコスパの高い選択肢です。月額契約よりも時間課金の方が、AI推論の試験用途には向いています。「まず動かしてみてから機材を買う」順序がおすすめです。

前提パッケージの版数を実測で確認する

構築を始める前に、Ubuntu 24.04 の apt でどのバージョンが手に入るかを apt-cache policy で実際に確認しました。22.04 との横断比較も載せます。ここを把握しておくと「バージョンが古くて動かない」というトラブルを避けられます。

前提パッケージの apt 候補バージョン(Ubuntu 24.04 / 22.04 実測)
前提パッケージの apt 候補バージョン(Ubuntu 24.04 / 22.04 実測)

実測の結論はシンプルです。Docker と Python は 24.04 の標準リポジトリでそのまま入りますが、nvidia-container-toolkit だけは候補が無い(標準リポジトリに収録されていない)という点が要注意でした。




ubuntu@your-server: ~
$ apt-cache policy docker.io | head -3
docker.io:
Installed: (none)
Candidate: 29.1.3-0ubuntu3~24.04.2
$ apt-cache policy nvidia-container-toolkit | head -3
nvidia-container-toolkit:
Installed: (none)
Candidate: (none) ← 標準リポジトリに無い

Ubuntu 24.04 LTS のインストールと初期設定

AI推論サーバーのベースにはUbuntu 24.04 LTS(Long Term Support)を選びます。2029年4月までサポートされており、最新のMLフレームワークもひと通り対応済みです。

手順1:Ubuntu バージョンを確認する

既存の Ubuntu 環境、または新規インストール後に、次のコマンドで動作確認します。




ubuntu@your-server: ~
$ cat /etc/os-release | grep VERSION=
VERSION=”24.04.4 LTS (Noble Numbat)”
$ nproc && free -h | grep Mem
5
Mem: 11Gi 3.7Gi 5.4Gi 167Mi 3.0Gi 8.0Gi

24.04.4 LTS (Noble Numbat) が表示されれば準備OKです。上はこの記事の検証環境(割り当て5コア・メモリ11GB)の実測値です。

手順2:システムを最新状態に更新する




ubuntu@your-server: ~
$ sudo apt update && sudo apt upgrade -y
Hit:1 http://archive.ubuntu.com/ubuntu noble InRelease
Get:2 http://archive.ubuntu.com/ubuntu noble-updates InRelease
Reading package lists… Done

正直、ここで apt update を忘れがちですが、これをやらないと古いバージョンが入ったり、後のインストールでつまずきます。

NVIDIA ドライバと CUDA のインストール(GPU搭載機)

GPU推論を行うには NVIDIA ドライバが必要です。Ubuntu 24.04 には ubuntu-drivers というドライバ自動選択ツールが含まれています。以下はGPU搭載機での一般的な実行例です(本記事の検証ホストはGPU非搭載のため、出力例として示します)。

手順3:推奨ドライバを自動インストールする




ubuntu@your-server: ~(GPU搭載機での例)
$ sudo apt install -y ubuntu-drivers-common
$ sudo ubuntu-drivers autoinstall
Selecting previously unselected package nvidia-driver-560
Setting up nvidia-driver-560 …
$ sudo reboot
(再起動後)
$ nvidia-smi
| NVIDIA-SMI 560.35.03 Driver Version: 560.35.03 CUDA Version: 12.6 |
| GPU 0: NVIDIA GeForce RTX 4090 24564MiB |

インストール後は 再起動が必要です。nvidia-smi でGPU名とCUDAバージョンが表示されれば成功です。

手順4:CUDA Toolkit について

Ubuntu 24.04 の標準リポジトリには nvidia-cuda-toolkit 12.0.140 が含まれています(22.04 では 11.5.1 でした。いずれも実測値)。ただし後述の NVIDIA Container Toolkit を入れれば、Dockerコンテナ内からGPUを利用できます。

Ollama + Docker 利用時は CUDA Toolkit の個別インストールは不要

Ollama 自体が CUDA ランタイムを内包しているため、ホスト側に CUDA Toolkit を個別インストールする必要は通常ありません。必要なのはNVIDIAドライバと NVIDIA Container Toolkit です。ただし PyTorch や TensorFlow を直接動かす場合は別途 CUDA が必要になります。

Docker のセットアップ

AI関連ツールのほとんどは Docker イメージとして配布されています。Ubuntu 24.04 では apt から docker.io 29.1.3 をそのままインストールできることを実測で確認しました。

docker.io / docker-compose-v2 の apt インストール実ログ(Ubuntu 24.04 実測)
docker.io / docker-compose-v2 の apt インストール実ログ(Ubuntu 24.04 実測)

手順5:Docker をインストールして起動する




ubuntu@your-server: ~
$ sudo apt install -y docker.io docker-compose-v2
Setting up docker-compose-v2 (2.40.3+ds1-0ubuntu1~24.04.1) …
Setting up runc (1.3.4-0ubuntu1~24.04.1) …
Setting up containerd (2.2.1-0ubuntu1~24.04.2) …
Setting up docker.io (29.1.3-0ubuntu3~24.04.2) …
$ sudo systemctl enable –now docker
$ sudo usermod -aG docker $USER
(再ログイン後、sudo なしで docker コマンドを使えます)

上のログはすべて実測です。docker.io 29.1.3containerd 2.2.1runc 1.3.4 が一緒に入ります。

手順6:NVIDIA Container Toolkit をインストールする(GPU搭載機)

ここが今回いちばんの詰まりポイントです。先ほどの実測どおり nvidia-container-toolkitUbuntu標準リポジトリに無いため、NVIDIA公式リポジトリを追加してからインストールします。




ubuntu@your-server: ~(GPU搭載機での例)
$ curl -fsSL https://nvidia.github.io/libnvidia-container/gpgkey | sudo 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’ | sudo tee /etc/apt/sources.list.d/nvidia-container-toolkit.list
$ sudo apt update && sudo apt install -y nvidia-container-toolkit
$ sudo nvidia-ctk runtime configure –runtime=docker
$ sudo systemctl restart docker

設定後、GPUがDockerから見えるかを確認します。




ubuntu@your-server: ~(GPU搭載機での例)
$ docker run –rm –gpus all nvidia/cuda:12.6.0-base-ubuntu24.04 nvidia-smi
| NVIDIA-SMI 560.35.03 Driver Version: 560.35.03 CUDA Version: 12.6 |
| GPU 0: NVIDIA GeForce RTX 4090 24564MiB |

AIパッケージのバージョンを確認する

Python周りのAIライブラリも、どのバージョンが手に入るか実際に確認しました。python3apt で、pip パッケージは PyPI の公式メタデータ(JSON API)から最新版を取得しています。

AIスタック主要パッケージのバージョン(apt + PyPI 実測)
AIスタック主要パッケージのバージョン(apt + PyPI 実測)
パッケージ バージョン(実測) 取得方法 主な用途
python3 3.12.3 apt AIスクリプト実行
ollama(Python SDK) 0.6.2 pip / PyPI Ollama クライアント
langchain 1.3.9 pip / PyPI LLMオーケストレーション
langchain-community 0.4.2 pip / PyPI 外部連携コンポーネント
chromadb 1.5.9 pip / PyPI ベクトルDB(RAG用途)

Ollama でLLMを動かす

Ollama はLLMのダウンロード・管理・推論APIサーバーをワンパッケージで提供するツールです。インストールスクリプトが NVIDIA / AMD / Apple Silicon GPU を自動検出してくれます。

手順7:Ollama をインストールする




ubuntu@your-server: ~
$ curl -fsSL https://ollama.com/install.sh | sh
>>> Installing ollama to /usr/local/bin…
>>> Ollama installed successfully
$ curl -s http://localhost:11434/api/version
{“version”:”0.30.8″}

Dockerで動かす場合は docker run -d -p 11434:11434 ollama/ollama:latest でも起動できます。本記事ではこの方法で起動し、API が version 0.30.8 を返すことを実測しました。

手順8:モデルをダウンロードして動かす

まずは超軽量な tinyllama:1.1b(637MB)で動作確認します。GPUがあれば llama3.1:8bqwen2.5:14b も快適に動きます。




ubuntu@your-server: ~
$ ollama pull tinyllama:1.1b
pulling manifest
success
$ ollama list
NAME ID SIZE MODIFIED
tinyllama:1.1b 2644915ede35 637 MB Less than a second ago

CPU推論スループットを実測してみた

GPU非搭載のDocker環境で、tinyllama:1.1b がどれくらいの速度で動くかを /api/generatenum_predict=128)を4回叩いて実測しました。warm(2回目以降)3回平均で 80.6 tokens/sec という結果です。1.1Bの小型モデルなら、GPUなしのCPUでも体感では十分実用的に動きました。

Ollama CPU実推論スループット tinyllama:1.1b(実測)
Ollama CPU実推論スループット tinyllama:1.1b(実測)

ただし、これはあくまで1.1Bの小型モデルの話です。7B〜70BクラスになるとCPUでは一気に遅くなるため、実用にはGPUが欲しくなります。下の表は各モデルの規模とVRAM目安です(GPUの速度は一般的な目安で、本記事ホストでは未計測)。

Ollama 主要モデルの規模とVRAM目安(参考)
Ollama 主要モデルの規模とVRAM目安(参考)
モデル サイズ 最低VRAM目安 速度の目安(GPU) 用途
llama3.2:3b 2.0GB 4GB 〜80 tok/s 動作確認・軽量用途
llama3.1:8b 4.7GB 8GB 〜50 tok/s バランス重視
qwen2.5:14b 9.0GB 12GB 〜35 tok/s 多言語・高精度
llama3.3:70b 43GB 48GB(量子化で24GB〜) 〜10 tok/s 最高性能

Open WebUI でブラウザからチャット

CLI だけでは使いにくいので、Open WebUI を使ってブラウザから ChatGPT 風のUIでLLMと会話できるようにします。Docker 1コマンドで起動でき、本記事では open-webui 0.9.6 系(ghcr.io/open-webui/open-webui:main)を実際に起動して画面を撮影しました。

手順9:Open WebUI を Docker で起動する




ubuntu@your-server: ~
$ docker run -d \
–name open-webui \
-p 8080:8080 \
–add-host=host.docker.internal:host-gateway \
-v open-webui:/app/backend/data \
ghcr.io/open-webui/open-webui:main
Status: Downloaded newer image for ghcr.io/open-webui/open-webui:main

起動したら http://localhost:8080(VPSの場合は http://<IPアドレス>:8080)をブラウザで開きます。初回はアカウント作成画面が出ます。

Open WebUI ログイン/サインアップ画面(Playwright 実撮影)
Open WebUI ログイン/サインアップ画面(Playwright 実撮影)

アカウントを作るとメインのチャット画面に入ります。Ollama にプル済みのモデルが自動で認識され、右上のドロップダウンで切り替えながらチャットできます。下は実際に稼働させた画面のスクリーンショットです。

Open WebUI メインチャット画面(Playwright 実撮影)
Open WebUI メインチャット画面(Playwright 実撮影)

左上のモデル名をクリックすると、取得済みモデルの一覧がドロップダウンで表示されます。複数モデルを入れておけば、用途に応じてワンクリックで切り替えられます。

Open WebUI モデル選択ドロップダウン(Playwright 実撮影)
Open WebUI モデル選択ドロップダウン(Playwright 実撮影)

外部公開する場合の注意

Open WebUI をそのまま外部に公開するのはセキュリティリスクがあります。本番運用ではNginx リバースプロキシ + SSL を前段に置き、認証を有効化してください。テスト中はファイアウォールで 8080 ポートをローカル限定にしておくことを強く推奨します。

Grafana でリソースモニタリング

GPU使用率・CPU・メモリを可視化するために Grafana を追加します。AI推論中の GPU 使用率をリアルタイムで確認できると、ボトルネックの特定に役立ちます。

手順10:Grafana を Docker で起動する




ubuntu@your-server: ~
$ docker run -d –name grafana -p 3000:3000 grafana/grafana:latest
Status: Downloaded newer image for grafana/grafana:latest
$ docker ps –format ‘{{.Names}}\t{{.Ports}}’
grafana 0.0.0.0:3000->3000/tcp
open-webui 0.0.0.0:8080->8080/tcp

http://localhost:3000 を開くとログイン画面が表示されます。初期ユーザー名・パスワードはともに admin で、ログイン後すぐにパスワード変更を求められます。

Grafana ログイン画面(Playwright 実撮影)
Grafana ログイン画面(Playwright 実撮影)

ログインするとホームダッシュボードが表示されます。下は実際に admin でログインした直後の画面です。

Grafana ダッシュボード初期画面(Playwright 実撮影)
Grafana ダッシュボード初期画面(Playwright 実撮影)

ここにデータソースとして Prometheus を追加し、nvidia-dcgm-exporternode_exporter を組み合わせると、GPU/CPU/メモリのメトリクスをリアルタイムで可視化できます。

AIサーバーの土台となるCPU性能を実測

構築した環境の処理能力を把握するために sysbench による CPU ベンチマークも実施しました。GPU推論の速度はGPUに依存しますが、モデルのロードや前後処理はCPUに乗るため、土台のCPU性能は無視できません。

sysbench CPU ベンチマーク 3回実測(Ubuntu 24.04 Docker)
sysbench CPU ベンチマーク 3回実測(Ubuntu 24.04 Docker)

Ubuntu 24.04 Docker 環境での sysbench CPU ベンチ(--threads=2 --time=10、3回実行)の実測結果は、events/sec が 14,519〜15,152、3回平均 14,918 でした。実行環境は ubuntu:24.04(Docker on Apple Silicon)・sysbench 1.0.20 です。お使いのCPUによってこの値は変わるので、自分の環境で同じコマンドを叩いて比較してみてください。

よくあるエラーと解決策

①「docker: permission denied」と出る

sudo usermod -aG docker $USER を実行した後、再ログインが必要です。newgrp docker で一時的に反映させることもできます。

②「nvidia-smi: command not found」と出る

NVIDIA ドライバが未インストールか、再起動が必要です。sudo ubuntu-drivers autoinstall の後は必ず sudo reboot してください。

③ Docker から GPU が見えない(nvidia-container-toolkit)

今回実測で分かったとおり、nvidia-container-toolkit は Ubuntu の標準リポジトリには入っていません。E: Unable to locate package nvidia-container-toolkit が出たら、手順6のとおり NVIDIA公式リポジトリを追加してから apt install し直してください。

④ Ollama と Open WebUI が通信できない

Open WebUI コンテナからホスト側 Ollama(11434番)へ接続するには --add-host=host.docker.internal:host-gateway が必要です。Open WebUI の設定で Ollama API URL を http://host.docker.internal:11434 に設定してください。疎通は次のコマンドで確認できます。




ubuntu@your-server: ~
$ curl http://localhost:11434/api/tags
{“models”:[{“name”:”tinyllama:1.1b”,”model”:”tinyllama:1.1b”,…}]}

まとめ

Ubuntu 24.04 LTS + Docker + Ollama + Open WebUI の組み合わせで、AI推論サーバーを自作する手順を実測ベースで解説しました。

この記事の要点

  • Ubuntu 24.04.4 LTS(Noble Numbat)はAIサーバー構築に安定した選択肢
  • apt で docker.io 29.1.3・python3 3.12.3 がそのまま入る(実測)
  • GPUをDockerで使う nvidia-container-toolkit は標準repoに無く、NVIDIA公式repoの追加が必須
  • Ollama 0.30.8 + tinyllama:1.1b はCPUのみのDockerでも warm平均80.6 tokens/sec で動いた
  • Open WebUI でブラウザチャット、Grafana でリソース可視化まで Docker で組める

GPU を自前で用意するのが難しい場合は、GPU付きのクラウドVPSを使う方法もあります。Vultr の Cloud GPU や DigitalOcean の GPU Droplets は時間課金で試せるため、まず動作確認してから機材を購入するという順序がおすすめです。

次のステップとして、LangChain + ChromaDB(ベクトルDB)を組み合わせた RAG(検索拡張生成) パイプラインの構築もおすすめです。詳しい手順はこちらの記事も参考にしてください。

コメント

タイトルとURLをコピーしました