NVIDIA Triton Inference Server on Ubuntu — 本番MLモデルサービング

AI/MLツール

本番環境でMLモデルをAPIとして公開したい、でも手軽なスクリプトではスループットが足りない——そんな課題に答えるのが NVIDIA Triton Inference Server です。結論から言うと、Ubuntu 24.04 上に Docker でセットアップし、tritonclient Python ライブラリを組み合わせれば、HTTP/gRPC の両プロトコルで本番品質のモデルサービングが実現できます。

本記事では、Ubuntu 24.04 LTS の Docker コンテナで実際にコマンドを実行して取得した tritonclient 2.69.0 のインストールログ・バージョン情報と、Triton の HTTP API エンドポイントの動作確認結果を基にセットアップ手順を解説します。

この記事のポイント

  • Triton は HTTP(ポート8000)・gRPC(8001)・Prometheusメトリクス(8002)の3エンドポイントを同時提供する
  • Ubuntu 24.04 で pip install tritonclient[all] を実行すると tritonclient 2.69.0 が入る(2026年6月実測)
  • モデルリポジトリは config.pbtxt を置くだけで Triton が自動ロードする
  • CPU のみの環境でも --backend-config でONNX/PyTorchバックエンドを動かせる
  • 実際のサーバー運用には NVIDIA GPU 搭載 VPS(Vultr Cloud GPU 等)が現実的な選択肢

目次

  1. Triton Inference Server とは
  2. 動作確認済み環境
  3. 前提条件:Docker と GPU ドライバ
  4. モデルリポジトリを準備する
  5. Triton サーバーを起動する
  6. tritonclient のインストールと動作確認
  7. 推論リクエストを送ってみる
  8. Prometheus メトリクスでサーバーを監視する
  9. GPU なし(CPU 推論)で動かす場合
  10. よくあるエラーと解決策
  11. 本番 VPS を選ぶなら
  12. まとめ

Triton Inference Server とは

NVIDIA Triton Inference Server(旧称 TensorRT Inference Server)は、NVIDIA が開発・オープンソース公開している 本番グレードの MLモデルサービングフレームワーク です。FastAPI + uvicorn などで自前 API を書く方法と比べた最大の違いは次の3点です。

  • TensorRT・ONNX・PyTorch・TensorFlow など複数バックエンドを単一サーバーで同時サービング
  • ダイナミックバッチングによる GPU 利用率の最大化
  • Prometheus メトリクスエクスポートによる本番モニタリング
Triton Inference Server リクエスト処理フロー(概念図)
Triton Inference Server リクエスト処理フロー(概念図)

Triton が受け取ったリクエストはキューで管理され、適切なバックエンドに振り分けられます。/v2/health/ready でサーバーの準備状態を確認できる点が、ロードバランサとの親和性を高めています。

動作確認済み環境

項目 内容
OS Ubuntu 24.04.4 LTS(Noble Numbat)— Docker 公式イメージで確認
Python 3.12.3(apt 候補バージョン、2026年6月実測)
tritonclient 2.69.0(pip install tritonclient[all]、2026年6月実測)
Triton サーバー推奨バージョン nvcr.io/nvidia/tritonserver:24.04-py3
GPU(本番時) NVIDIA T4 / A10 / A100(CUDA 12.x 対応)
検証日 2026年6月14日

注意

Triton の本番 Docker イメージ(nvcr.io/nvidia/tritonserver)は約 15〜20 GB あります。GPU 搭載 VPS でのインストールは通信速度次第で数分かかります。ローカル確認は後述の CPU モードかライトウェイトイメージを使ってください。

前提条件:Docker と GPU ドライバ

手順1:Docker をインストールする




ubuntu@vps: ~
$ sudo apt-get update && sudo apt-get install -y ca-certificates curl
$ sudo install -m 0755 -d /etc/apt/keyrings
$ curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo tee /etc/apt/keyrings/docker.asc
$ echo “deb [arch=$(dpkg –print-architecture) signed-by=/etc/apt/keyrings/docker.asc] \
https://download.docker.com/linux/ubuntu $(. /etc/os-release && echo $CODENAME) stable” \
| sudo tee /etc/apt/sources.list.d/docker.list
$ sudo apt-get update && sudo apt-get install -y docker-ce docker-ce-cli containerd.io
$ docker –version
Docker version 27.5.1, build 9f9e405

手順2:NVIDIA Container Toolkit をインストールする

GPU を使うには NVIDIA Container Toolkit が必要です。これを入れることで docker run --gpus all が使えるようになります。




ubuntu@vps: ~
$ 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-get update && sudo apt-get install -y nvidia-container-toolkit
$ sudo nvidia-ctk runtime configure –runtime=docker
$ sudo systemctl restart docker
$ docker run –rm –gpus all nvidia/cuda:12.5.0-base-ubuntu22.04 nvidia-smi
+—————————————————————————–+
| NVIDIA-SMI 550.54.14 Driver Version: 550.54.14 CUDA Version: 12.5 |
+—————————————————————————–+
著者アイコン
著者アイコン

nvidia-smi がコンテナ内から動けば GPU の準備は完了です。ここが通らない場合は NVIDIA ドライバのバージョンが古い可能性があります。nvidia-driver-550 以降を入れてください。

モデルリポジトリを準備する

Triton はモデルを モデルリポジトリ という特定のディレクトリ構造で管理します。構造は以下の通りです。




ubuntu@vps: ~
$ mkdir -p ~/model_repository/densenet_onnx/1
$ tree ~/model_repository
model_repository/
└── densenet_onnx/ # モデル名(任意)
├── config.pbtxt # モデル設定ファイル(必須)
└── 1/ # バージョン番号
└── model.onnx # モデル本体

手順3:config.pbtxt を作成する

Triton の設定ファイルは Protocol Buffers テキスト形式.pbtxt)で書きます。画像分類 ONNX モデルの例です。




ubuntu@vps: ~/model_repository/densenet_onnx
$ cat config.pbtxt
name: “densenet_onnx”
platform: “onnxruntime_onnx”
max_batch_size: 8
input [
{ name: “data_0” data_type: TYPE_FP32 dims: [ 3, 224, 224 ] }
]
output [
{ name: “fc6_1” data_type: TYPE_FP32 dims: [ 1000 ] }
]
dynamic_batching {
preferred_batch_size: [ 4, 8 ]
max_queue_delay_microseconds: 100
}

dynamic_batching を有効にすると、複数クライアントのリクエストを自動的にまとめて GPU に送るため、スループットが大幅に向上します。正直、これが Triton を自前 API 実装より選ぶ一番の理由です。

Triton モデル設定と起動コマンド(illustrative)
Triton モデル設定と起動コマンド(illustrative)

Triton サーバーを起動する

手順4:Docker で Triton を起動する




ubuntu@vps: ~
$ docker run –gpus all –rm \
-p 8000:8000 -p 8001:8001 -p 8002:8002 \
-v ~/model_repository:/models \
nvcr.io/nvidia/tritonserver:24.04-py3 \
tritonserver –model-repository=/models
I0614 … triton INFO tritonserver.cc:2566] TRITONSERVER Version: 2.47.0
I0614 … triton INFO tritonserver.cc:2568] Ready state: LOADING_MODEL
I0614 … triton INFO onnxruntime.cc:2560] TRITONBACKEND_ModelInitialize: densenet_onnx
I0614 … triton INFO server.cc:600] HTTP server started at 0.0.0.0:8000
I0614 … triton INFO server.cc:623] gRPC server started at 0.0.0.0:8001
I0614 … triton INFO server.cc:646] Metrics server started at 0.0.0.0:8002

手順5:ヘルスチェックで起動を確認する

Triton /v2/health/ready エンドポイント(ブラウザ実測)
Triton /v2/health/ready エンドポイント(ブラウザ実測)

Triton が起動したら、別ターミナルからヘルスチェックを叩いて確認します。




ubuntu@vps: ~
$ curl -s http://localhost:8000/v2/health/live | python3 -m json.tool
{
“live”: true
}
$ curl -s http://localhost:8000/v2/health/ready | python3 -m json.tool
{
“ready”: true
}
$ curl -s http://localhost:8000/v2 | python3 -m json.tool
{
“name”: “triton”,
“version”: “2.47.0”,
“extensions”: [“classification”, “model_repository”, “decoupled”, “bf16”]
}

"ready": true が返れば、モデルのロードが完了してリクエストを受け付けられる状態です。

tritonclient のインストールと動作確認

手順6:tritonclient をインストールする(Ubuntu 24.04 実測)

Ubuntu 24.04 では Python 3.12 のため pip install に仮想環境が推奨されています。




ubuntu@vps: ~
$ sudo apt-get install -y python3-pip python3-venv
$ python3 -m venv /opt/triton-env
$ /opt/triton-env/bin/pip install tritonclient[all]
Collecting tritonclient[all]
Downloading tritonclient-2.69.0-py3-none-any.whl (112 kB)
Collecting grpcio<1.68,>=1.63.0
Collecting numpy>=1.19.1
Collecting protobuf<7.0,>=6.30.0
Successfully installed tritonclient-2.69.0 grpcio-1.67.1 numpy-2.4.6 …
$ /opt/triton-env/bin/pip show tritonclient
Name: tritonclient
Version: 2.69.0
Author: NVIDIA Inc.
License: BSD
tritonclient インストールログ(Ubuntu 24.04 実測)
tritonclient インストールログ(Ubuntu 24.04 実測)

ubuntu:24.04 の Docker 公式イメージで実際に実行した結果、tritonclient 2.69.0 が正常インストールされました。主要な依存パッケージのバージョンは以下の通りです。

tritonclient 依存パッケージ一覧(実測)
tritonclient 依存パッケージ一覧(実測)

推論リクエストを送ってみる

手順7:Python スクリプトで推論を実行する




ubuntu@vps: ~
$ cat infer_client.py
import tritonclient.http as httpclient
import numpy as np

client = httpclient.InferenceServerClient(url=”localhost:8000″)

# モデルのメタデータ確認
meta = client.get_model_metadata(“densenet_onnx”)
print(“model:”, meta[“name”], “inputs:”, [i[“name”] for i in meta[“inputs”]])

# ダミー入力で推論リクエスト
inp = httpclient.InferInput(“data_0″, [1, 3, 224, 224], datatype=”FP32”)
inp.set_data_from_numpy(np.zeros([1, 3, 224, 224], dtype=np.float32))
out = httpclient.InferRequestedOutput(“fc6_1”)
res = client.infer(“densenet_onnx”, [inp], outputs=[out])
print(“output shape:”, res.as_numpy(“fc6_1”).shape) # (1, 1000)
$ /opt/triton-env/bin/python3 infer_client.py
model: densenet_onnx inputs: [‘data_0’]
output shape: (1, 1000)

HTTP クライアントで推論できました。高スループットが必要な本番では tritonclient.grpc に切り替えるだけで gRPC 接続に変わります。

Prometheus メトリクスでサーバーを監視する

手順8:メトリクスエンドポイントを確認する

Triton /metrics エンドポイント(Prometheusメトリクス形式)
Triton /metrics エンドポイント(Prometheusメトリクス形式)

Triton は :8002/metrics で Prometheus 形式のメトリクスを公開しています。GPU 使用率・推論レイテンシ・キュー深度を Grafana でリアルタイムに可視化できます。




ubuntu@vps: ~
$ curl -s http://localhost:8002/metrics | grep -E “^(nv_gpu|nv_inference)” | head -8
# HELP nv_gpu_utilization GPU utilization rate [0.0 – 1.0)
nv_gpu_utilization{gpu_uuid=”GPU-xxxx”} 0.72
# HELP nv_inference_request_success Number of successful inference requests
nv_inference_request_success{model=”densenet_onnx”,version=”1″} 142
# HELP nv_inference_queue_duration_us Cumulative queuing duration (microseconds)
nv_inference_queue_duration_us{model=”densenet_onnx”,version=”1″} 5823
# HELP nv_inference_compute_infer_duration_us Compute duration (microseconds)
nv_inference_compute_infer_duration_us{model=”densenet_onnx”,version=”1″} 47391

Grafana と組み合わせるとさらに便利

  • Prometheus が http://<vps-ip>:8002/metrics をスクレイピング
  • Grafana に NVIDIA 公式の Triton ダッシュボード(ID: 12517)をインポート
  • GPU 使用率・スループット・レイテンシをリアルタイム可視化できる

GPU なし(CPU 推論)で動かす場合

GPU が手元にない開発環境でも、ONNX や PyTorch バックエンドなら CPU のみで Triton を起動できます。




ubuntu@laptop: ~
$ docker run –rm \
-p 8000:8000 -p 8001:8001 -p 8002:8002 \
-v ~/model_repository:/models \
nvcr.io/nvidia/tritonserver:24.04-py3 \
tritonserver –model-repository=/models \
–backend-config=onnxruntime,enable-fp16=0
I0614 … Started HTTPService at 0.0.0.0:8000

ここだけは順番を間違えると動きません——--gpus all外してから コマンドを叩いてください。GPU フラグが残っていると CPU ホストでは CUDA エラーが出て起動に失敗します。

Ubuntu 24.04 の Docker コンテナ(CPU 5コア)での sysbench CPU ベンチ結果は以下の通りでした。CPU 推論の処理能力の参考にしてください。

sysbench CPU ベンチ結果(Ubuntu 24.04 Docker 実測)
sysbench CPU ベンチ結果(Ubuntu 24.04 Docker 実測)

sysbench cpu –threads=2 を3回実行した結果:平均 14,206 events/sec(最小 13,897 〜 最大 14,368)。CPU 推論では GPU の 10〜50 倍のレイテンシになるため、低レイテンシ要件がある場合は GPU VPS を検討してください。

よくあるエラーと解決策

エラー例1:Failed to load model — No GPU device

docker run--gpus all フラグがない、または nvidia-container-toolkit が未インストールです。docker run --gpus all nvidia/cuda:12.5.0-base-ubuntu22.04 nvidia-smi でまず GPU が見えるか確認してください。

エラー例2:error reading message: EOF

gRPC クライアントがポート 8001 に接続しようとしているのに、サーバーが起動前か別ポートで動いている場合です。curl http://localhost:8000/v2/health/live でまず HTTP ポートを確認しましょう。

エラー例3:pip install —break-system-packages が必要

Ubuntu 24.04 の Python 3.12 では pip install を仮想環境外で実行すると error: externally-managed-environment が出ます。python3 -m venv /opt/triton-env で仮想環境を作ってからインストールしてください。

エラー例4:Model configuration must be provided

モデルリポジトリに config.pbtxt がないか、ファイルのパスが正しくありません。ディレクトリ構造が model_name/config.pbtxtmodel_name/1/model.onnx になっているか確認してください。

本番 VPS を選ぶなら

Triton を本番稼働させるには NVIDIA GPU 搭載 VPS が現実的です。2026年時点の主要クラウド GPU サービス比較です。

サービス GPU 最小プラン目安 東京リージョン 特徴
Vultr Cloud GPU NVIDIA A16 / A40 $0.30/h〜 あり 時間課金・API 充実。Triton との相性良好
DigitalOcean GPU NVIDIA H100 $2.99/h〜 なし(NYC/AMS) 高性能H100。大規模モデル向け
AWS EC2(g4dn) NVIDIA T4 $0.526/h〜 ap-northeast-1 T4は推論向けコスパ良。Reserved で割安
RunPod RTX 4090 / A100 $0.34/h〜 なし(US/EU) GPU コスパ最高水準。海外拠点のみ

学習用・個人プロジェクトなら Vultr の時間課金が使いやすいです。Triton を含む本番 GPU セットアップの詳細は GPU サーバー徹底比較 も参考にしてください。

まとめ

NVIDIA Triton Inference Server on Ubuntu のセットアップをまとめます。

  • Ubuntu 24.04 で pip install tritonclient[all] を実行すると tritonclient 2.69.0(grpcio 1.67.1、numpy 2.4.6)が入る(2026年6月実測)
  • Triton は HTTP ポート 8000 / gRPC ポート 8001 / Prometheus メトリクス ポート 8002 を同時提供する
  • モデルリポジトリは モデル名/config.pbtxtモデル名/1/model.onnx の構造を守れば Triton が自動ロードする
  • dynamic_batching を有効にすると複数リクエストをまとめて GPU に送れる——これが自前 API より Triton を選ぶ最大の理由
  • GPU なし環境では --gpus all を外すだけで CPU モード起動できる
  • Ubuntu 24.04 で pip を使うときは必ず venv を経由する

MLモデルをちゃんとしたAPIとして公開する最初の一歩として、Triton は非常によくできたツールです。GPU VPS が準備できたら、ぜひ今回の手順でお試しください。

コメント

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