Triton 推論サーバーUltralytics YOLOv8
Triton Inference Server(旧名:TensorRT Inference Server)は、NVIDIAが開発したオープンソースのソフトウェアソリューションです。これは、NVIDIA GPU用に最適化されたクラウド推論ソリューションを提供します。Triton は、本番環境におけるAIモデルの大規模展開を簡素化します。Ultralytics YOLOv8 をTriton Inference Server と統合することで、スケーラブルで高性能なディープラーニング推論ワークロードを展開することができます。このガイドでは、統合のセットアップとテストの手順を説明します。
見るんだ: NVIDIATriton Inference Serverを使い始める。
Triton 推論サーバーとは?
Triton Inference Serverは、様々なAIモデルを本番環境で展開するために設計されている。TensorFlow 、PyTorch 、ONNX Runtime、その他多くのディープラーニングや機械学習フレームワークを幅広くサポートしています。主なユースケースは以下の通り:
- 単一のサーバーインスタンスから複数のモデルを提供する。
- サーバーを再起動することなく、モデルの動的なロードとアンロードが可能。
- アンサンブル推論。複数のモデルを一緒に使用して結果を得ることができる。
- A/Bテストとローリングアップデートのためのモデルのバージョニング。
前提条件
先に進む前に、以下の前提条件が揃っていることを確認してください:
- あなたのマシンにインストールされているDocker。
- インストール
tritonclient
:
YOLOv8 からONNX 形式へのエクスポート
モデルをTriton にデプロイする前に、ONNX フォーマットにエクスポートする必要がある。ONNX (Open Neural Network Exchange)は、異なるディープラーニング・フレームワーク間でモデルを転送できるフォーマットです。を使用する。 export
関数から YOLO
クラスである:
from ultralytics import YOLO
# Load a model
model = YOLO('yolov8n.pt') # load an official model
# Export the model
onnx_file = model.export(format='onnx', dynamic=True)
Triton モデルリポジトリの設定
Triton モデル・リポジトリーは、Triton がモデルにアクセスし、ロードできる保存場所です。
-
必要なディレクトリ構造を作成する:
-
エクスポートしたONNX モデルをTriton リポジトリに移動します:
Triton 推論サーバーの実行
Docker を使ってTriton Inference Server を実行する:
import subprocess
import time
from tritonclient.http import InferenceServerClient
# Define image https://catalog.ngc.nvidia.com/orgs/nvidia/containers/tritonserver
tag = 'nvcr.io/nvidia/tritonserver:23.09-py3' # 6.4 GB
# Pull the image
subprocess.call(f'docker pull {tag}', shell=True)
# Run the Triton server and capture the container ID
container_id = subprocess.check_output(
f'docker run -d --rm -v {triton_repo_path}:/models -p 8000:8000 {tag} tritonserver --model-repository=/models',
shell=True).decode('utf-8').strip()
# Wait for the Triton server to start
triton_client = InferenceServerClient(url='localhost:8000', verbose=False, ssl=False)
# Wait until model is ready
for _ in range(10):
with contextlib.suppress(Exception):
assert triton_client.is_model_ready(model_name)
break
time.sleep(1)
その後、Triton Server モデルを使って推論を実行する:
from ultralytics import YOLO
# Load the Triton Server model
model = YOLO(f'http://localhost:8000/yolo', task='detect')
# Run inference on the server
results = model('path/to/image.jpg')
容器を片付ける:
# Kill and remove the container at the end of the test
subprocess.call(f'docker kill {container_id}', shell=True)
上記のステップに従うことで、Ultralytics YOLOv8 モデルをTriton Inference Server 上で効率的にデプロイして実行することができ、ディープラーニングの推論タスクにスケーラブルで高性能なソリューションを提供することができます。何か問題に直面したり、さらに質問がある場合は、 Triton 公式ドキュメントを参照するか、Ultralytics コミュニティにサポートを求めてください。