개요
- 훈련된 모든 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 실행파일을 이용한다
참고)