brief.ing.gg

WIKI

Triton Inference Server

Triton Inference Server

여러 모델을 GPU 서버에서 서비스하기 위한 추론 서버는 어떻게 구성되는가.

Scope

핵심 질문

NVIDIA Triton Inference Server는 다양한 모델 runtime을 하나의 inference API와 scheduling 계층으로 어떻게 제공하는가?

Research

핵심 근거

  • Triton은 HTTP/gRPC inference endpoint와 model repository를 제공한다.
  • TensorRT, PyTorch, ONNX, OpenVINO, Python 등 여러 backend를 지원한다.
  • dynamic batching, concurrent model execution, ensembles 등 serving 최적화 기능을 제공한다.

참고 자료

  • NVIDIA Triton docs: https://docs.nvidia.com/deeplearning/triton-inference-server/user-guide/docs/index.html

Draft

Triton Inference Server는 여러 머신러닝 모델을 HTTP 또는 gRPC API로 서비스하기 위한 NVIDIA의 오픈소스 inference server다.

Model Repository

Triton은 model repository에 모델과 설정을 배치하고 이를 로드해 endpoint로 노출한다. 하나의 서버에서 여러 모델과 버전을 관리할 수 있다.

Backend

TensorRT, PyTorch, ONNX Runtime, OpenVINO, Python backend 등 다양한 실행방식을 지원한다. 따라서 모든 모델을 하나의 runtime으로 변환하기보다 모델에 적합한 backend를 선택할 수 있다.

Scheduling과 Batching

Inference serving에서는 GPU를 요청 하나씩 실행하면 효율이 떨어질 수 있다. Triton은 dynamic batching을 통해 짧은 시간 안에 들어온 요청을 묶어 더 큰 batch로 실행할 수 있다.

여러 model instance를 병렬 실행해 GPU utilization을 높이는 것도 가능하다.

Ensemble

전처리 → 모델 A → 후처리처럼 여러 모델이나 단계를 하나의 inference pipeline으로 연결할 수 있다. Client 입장에서는 하나의 endpoint처럼 호출할 수 있다.

언제 필요한가

단일 모델을 한 사용자에게 제공하는 작은 서비스에는 직접 Python API를 만드는 편이 더 단순할 수 있다.

여러 모델, 높은 QPS, GPU batching, 표준화된 model repository가 필요할수록 Triton의 장점이 커진다.

핵심

Triton은 모델 자체보다 production inference의 공통 문제—API, model lifecycle, batching, scheduling, backend 통합—를 중앙화하는 serving layer다.