본문 바로가기

LLM/Serving

[조사] NVIDIA Triton Inference Server

개요

- 훈련된 모든 ML, Deep Learning 모델을 모든 프레임워크(e.g. ONNX, Tensorflow, Pytorch, TensorRT)에서 GPU, CPU를 통해 실행하는 것을 돕는다(?)

- NVIDIA AI 플랫폼의 일부이며,  NVIDIA AI Enterprise와 함께 제공되는 Triton Inference Server는 모든 워크 로드에 걸쳐 AI 모델 배포 및 실행을 표준화 하는 오픈소스이다.

--> NIVIDIA의 AI 솔루션에 사용되는 기술인가 보다. 

--> NVIDIA AI Enterprise와 함께 제공된다. 말 그대로 전 솔루션 공통적으로 사용되는 배포/실행 모듈이다.

 

 

장점

모든 학습 및 추론 프레임워크 지원
Triton Inference Server를 사용하여 TensorFlow, PyTorch, Python, ONNX, NVIDIA® TensorRT™, RAPIDS™ cuML, XGBoost, scikit-learn RandomForest, OpenVINO, 사용자 정의 C++ 등 주요 프레임워크에서 AI 모델을 배포할 수 있습니다.

모든 플랫폼에서의 고성능 추론
동적 배치, 병행 실행, 최적 구성, 스트리밍 오디오 및 비디오를 통해 처리량과 활용도를 극대화합니다. Triton Inference Server는 모든 NVIDIA GPU, x86 및 Arm CPU, AWS Inferentia를 지원합니다.

오픈 소스 및 DevOps/MLOps에 최적화
Triton Inference Server를 Kubernetes와 같은 DevOps 및 MLOps 솔루션에 통합하여 확장성과 Prometheus를 통한 모니터링이 가능합니다. 주요 클라우드 및 온프레미스 AI와 MLOps 플랫폼에서도 사용할 수 있습니다.

기업 수준의 보안 및 API 안정성
NVIDIA AI Enterprise는 NVIDIA Triton Inference Server를 포함하여, 지원, 보안 및 API 안정성이 보장된 안전하고 생산 준비가 완료된 AI 소프트웨어 플랫폼으로, 가치를 빠르게 실현할 수 있도록 설계되었습니다.
--> 
- Triton Inference Server는 거의 모든 프레임워크에서 AI 모델을 배포할 수 있다? 그 말은 학습 된 모델을

XXX 프레임워크 <-> Triton 추론 모델 로 상호 호환 가능하다는 의미로 들린다.

- Triton 추론 모델은 최적화 되어 있어, 속도가 빠르고 메모리 용량이 적으며 k8s와도 호환이 된다(어떻게?)

- 보안이 강화 되어 있다.

 

주요 기능

대형 언어 모델 추론
Triton은 대형 언어 모델(LLM) 추론을 위한 낮은 대기시간과 높은 처리량을 제공합니다. 이는 LLM 생산 환경에서 추론을 위해 정의, 최적화 및 실행하는 오픈 소스 라이브러리인 TensorRT-LLM을 지원합니다.

모든 플랫폼에서의 고성능 추론
모델 앙상블
Triton 모델 앙상블을 사용하면 여러 모델, 파이프라인 및 전처리와 후처리 단계를 포함한 AI 작업 부하를 실행할 수 있습니다. 앙상블의 다양한 부분을 CPU 또는 GPU에서 실행할 수 있으며, 앙상블 내에서 여러 프레임워크를 지원합니다.

오픈 소스 및 DevOps/MLOps에 최적화
NVIDIA PyTriton
PyTriton은 Python 개발자가 한 줄의 코드로 Triton을 설정하고, 모델 또는 간단한 처리 기능, 전체 추론 파이프라인을 제공하여 프로토타입 및 테스트를 가속화할 수 있도록 지원합니다.

기업 수준의 보안 및 API 안정성
NVIDIA Triton 모델 분석기
모델 분석기는 최적의 모델 배포 구성(예: 배치 크기, 정밀도, 병행 실행 인스턴스)을 찾는 데 필요한 시간을 단축합니다. 이는 애플리케이션의 대기시간, 처리량 및 메모리 요구 사항을 충족하는 최적의 구성을 선택하는 데 도움을 줍니다.
-->
- Triton 내부에 TensorRT-LLM을 포함하는 것으로 이해함

- 다수의 모델로 부터 결과를 얻고 이를 종합하는 하나의 흐름(앙상블)을 구성할 수 있다

- PyTriton이라는 Wrapper 제공(의존하면 안될 것)

- 모델 분석기는 배포 구성(배치는 얼마나 설정해야 하는지, Precision은 얼마나?, 병렬 실행을 위한 인스턴스 갯수는 얼마나?)를 자동으로 찾아 준다.

 

사용 예시

# Step 1: 모델 레포지토리를 생성
$ git clone -b r24.09 https://github.com/triton-inference-server/server.git
$ cd server/docs/examples
./fetch_models.sh


# Step 2: 엔비디아 GPU 클라우드(NGC) 컨테이너에서 triton 실행
# net=host 호스트 시스템의 네트워크를 공유하도록 설정
$ docker run --gpus=1 --rm --net=host -v ${PWD}/model_repository:/models nvcr.io/nvidia/tritonserver:24.09-py3 tritonserver --model-repository=/models


# Step 3:추론 요청을 보내기
# 컨테이너 안에 있는 /workspace/install/bin/image_client 이용해서 실행
-m densenet_onnx: 사용할 모델을 지정합니다. 이 경우 "densenet_onnx" 모델입니다.
-c 3: 입력 이미지의 채널 수를 지정합니다 (여기서는 3으로, RGB 이미지를 나타냅니다).
-s INCEPTION: 모델의 입력 처리 방법을 지정합니다. 이 예제에서는 "INCEPTION" 방식으로 설정되어 있습니다.

$ docker run -it --rm --net=host nvcr.io/nvidia/tritonserver:24.09-py3-sdk

/workspace/install/bin/image_client
-m densenet_onnx
-c 3
-s INCEPTION /workspace/images/mug.jpg


# Inference should return the following
Image '/workspace/images/mug.jpg':
    15.346230 (504) = COFFEE MUG
    13.224326 (968) = CUP
    10.422965 (505) = COFFEEPOT

사용

- Triton 추론 서버는 빌드가능한 소스이지만, 가장 편한 방법은 NVIDIA 도커 이용하는 것이다

 

1) 모델 저장소 생성

- 모델 레포지토리는 서빙하고자 하는 모델을 위치시키는 곳이다

- 포맷

  <model-repository-path>/
    <model-name>/
      [config.pbtxt]
      [<output-labels-file> ...]
      [configs]/
        [<custom-config-file> ...]
      <version>/
        <model-definition-file>
      <version>/
        <model-definition-file>
      ...
    <model-name>/
      [config.pbtxt]
      [<output-labels-file> ...]
      [configs]/
        [<custom-config-file> ...]
      <version>/
        <model-definition-file>
      <version>/
        <model-definition-file>
      ...
    ...

 

2) Triton 시작하기

- NVIDIA Container Toolkit 도커가 GPU 인식하기 위해서 반드시 설치되어야 한다.

- 아래를 실행하면 콘솔이 등장하는데, 사용가능한 모델 목록이 등장한다.

- 모델이 "READY" 상태가 아니거나, 등장하지 않는다면 레포지토리와 드라이버를 살펴 본다.

$ docker run --gpus=1 --rm -p 8000:8000 -p 8001:8001 -p 8002:8002
-v /full/path/to/docs/examples/model_repository:/models nvcr.io/nvidia/tritonserver:<xx.yy>-py3 tritonserver --model-repository=/models
- 헬스 체크
$ curl -v localhost:8000/v2/health/ready
...
< HTTP/1.1 200 OK
< Content-Length: 0
< Content-Type: text/plain

3)  추론 요청 보내기

- (생략)

 

-->

- 도커 triton_server를 이용하는 것을 추천한다. 아래 참고.

Triton Inference Server | NVIDIA NGC

(버전 호환) Frameworks Support Matrix - NVIDIA Docs

- 컨테이너 실행할 때 실행할 모델도 같이 실행한다 tritonserver 이용해서.

- 컨테이너 내에서 실행은 /workspace/install/bin 실행파일을 이용한다


참고)

Triton Inference Server for Every AI Workload | NVIDIA

반응형