Triton Inference Serverとは
Triton
NVIDIAが提供する、複数のフレームワークで学習したモデルを統一的にデプロイ・実行できるオープンソースの推論サーバー
ひとことで言うと
違う仕組みで作られたAIモデルたちを、まとめて同じサーバーで動かして配れるようにする道具。
概要
Triton Inference Serverは、NVIDIAが提供するオープンソースの推論サーバー。 PyTorch・TensorFlow・ONNX・TensorRTなど異なるフレームワークで学習された複数のモデルを、統一されたAPI(HTTP/gRPC)を通じて同時にデプロイ・実行できるようにする。 複数のリクエストをまとめて処理する動的バッチング、複数のモデルやモデルバージョンを同一サーバー上で並行稼働させるマルチモデル管理、GPUリソースの利用効率を高めるモデル同時実行など、大規模な推論基盤の運用に必要な機能を備える。 モデルの実装フレームワークを問わず共通のインターフェースでサービングできるため、複数チームが異なるフレームワークで開発したモデルを混在させて運用する企業のMLインフラで広く採用されている。 LLM向けにはvLLMやTensorRT-LLMといった専用の推論エンジンをバックエンドとして組み込むことも可能で、汎用的な推論サービング基盤としての役割を担っている。
背景
機械学習モデルの運用では、フレームワークごとに異なる実行環境やAPIを用意する必要があり、モデルの種類が増えるほど運用の複雑さが増していた。 Triton Inference Serverは、フレームワークを問わない共通のサービング基盤を提供することで、この運用上の複雑さを解消する目的で開発された。
歴史
2018年: NVIDIAが「TensorRT Inference Server」として最初のバージョンを公開。 2019年: 複数フレームワーク対応を強化し「Triton Inference Server」へ改称。 2020年代: LLM向け推論エンジン(TensorRT-LLM等)との統合が進み、大規模言語モデルのサービング基盤としても採用が拡大。
コード例
Pythonクライアントによる推論リクエスト例
import tritonclient.http as httpclient
import numpy as np
client = httpclient.InferenceServerClient(url="localhost:8000")
inputs = [httpclient.InferInput("INPUT0", [1, 16], "FP32")]
inputs[0].set_data_from_numpy(np.random.rand(1, 16).astype(np.float32))
response = client.infer(model_name="my_model", inputs=inputs)利点
欠点
- 設定項目が多く、モデルごとの最適な構成(バッチサイズやインスタンス数など)を見極めるための学習コストがかかる
- 小規模でシンプルな用途では、Triton単体の運用負荷がオーバースペックになることがある
- GPUを前提とした機能が多く、CPUのみの環境ではメリットを十分に活かしにくい