triton inference server를 사용해보자
https://catalog.ngc.nvidia.com/orgs/nvidia/containers/tritonserver
트리톤 서버에 대해서 문서를 참조하면 좋을것 같다.
사용에 맞는 도커 컨테이너 뿐만 아니라 헬름차트토 함께 배포 한다.
Triton 추론 서버란 무엇인가요?
Triton Inference Server는 CPU와 GPU에 최적화된 클라우드 및 에지 추론 솔루션을 제공합니다. Triton은 원격 클라이언트가 서버에서 관리하는 모든 모델에 대한 추론을 요청할 수 있도록 하는 HTTP/REST 및 GRPC 프로토콜을 지원합니다. 에지 배포의 경우 Triton은 C API가 있는 공유 라이브러리로 제공되어 Triton의 모든 기능을 애플리케이션에 직접 포함할 수 있습니다. 다음 Docker 이미지를 사용할 수 있습니다.
- xx.yy-py3 이미지에는 Tensorflow, PyTorch, TensorRT, ONNX 및 OpenVINO 모델을 지원하는 Triton 추론 서버가 포함되어 있습니다.
- xx.yy-py3-sdk 이미지에는 Python 및 C++ 클라이언트 라이브러리, 클라이언트 예제, GenAI-Perf, 성능 분석기 및 모델 분석기가 포함되어 있습니다.
- xx.yy-py3-min 이미지는 Customize Triton Container에서 설명한 대로 사용자 정의 Triton 서버 컨테이너를 만드는 기반으로 사용됩니다 .
- xx.yy-pyt-python-py3 이미지에는 PyTorch 및 Python 백엔드만 지원하는 Triton Inference Server가 포함되어 있습니다.
- xx.yy-tf2-python-py3 이미지에는 TensorFlow 2.x 및 Python 백엔드만 지원하는 Triton 추론 서버가 포함되어 있습니다.
- xx.yy-py3-igpu 이미지에는 Jetson Orin 장치를 지원하는 Triton Inference Server가 포함되어 있습니다. 어떤 iGPU 하드웨어/소프트웨어가 어떤 컨테이너에서 지원되는지에 대한 정보는 Frameworks Support Matrix 를 참조하십시오.
- xx.yy-py3-igpu-sdk 이미지에는 Python 및 C++ 클라이언트 라이브러리, 클라이언트 예제 및 Perf Analyzer가 포함되어 있습니다.
- xx.yy-py3-igpu-min 이미지는 사용자 정의 iGPU Triton 서버 컨테이너를 만드는 기반으로 사용됩니다.
- xx.yy-vllm-python-py3 이미지에는 vLLM 및 Python 백엔드만 지원하는 Triton Inference Server가 포함되어 있습니다.
- xx.yy-trtllm-python-py3 이미지에는 TensorRT-LLM 및 Python 백엔드만 지원하는 Triton 추론 서버가 포함되어 있습니다.
자세한 내용은 Triton Inference Server GitHub 을 참조하세요 .
엔터프라이즈 지원이 필요하세요? NVIDIA AI Enterprise 소프트웨어 제품군을 통해 Triton Inference Server에 대한 NVIDIA 글로벌 지원이 제공됩니다 . NVIDIA LaunchPad 에서 NVIDIA 인프라에 호스팅된 Triton Inference Server를 사용한 일련의 핸즈온 랩에 무료로 액세스하세요.
Triton 추론 서버 실행
NGC 딥 러닝 프레임워크 컨테이너를 실행하려면 Docker 환경이 NVIDIA GPU를 지원해야 합니다. 컨테이너를 실행하려면 NVIDIA 컨테이너 및 프레임워크 사용자 가이드 의 컨테이너 실행 장에서 설명한 대로 적절한 명령을 실행하고 레지스트리, 리포지토리 및 태그를 지정합니다. NGC 사용에 대한 자세한 내용은 NGC 사용자 가이드 를 참조하세요 .
시스템에 구현된 방법은 설치된 DGX OS 버전(DGX 시스템의 경우), 클라우드 서비스 공급자가 제공한 특정 NGC 클라우드 이미지, TITAN PC, Quadro PC 또는 vGPU에서 NGC 컨테이너를 실행하기 위해 설치한 소프트웨어에 따라 달라집니다.
절차
- 태그 탭을 선택 하고 실행하려는 컨테이너 이미지 릴리스를 찾습니다.
- 태그 가져오기 열 에서 아이콘을 클릭하여
docker pull
명령을 복사합니다. - 명령 프롬프트를 열고 pull 명령을 붙여넣습니다. 컨테이너 이미지 pull이 시작됩니다. 다음 단계로 진행하기 전에 pull이 성공적으로 완료되었는지 확인합니다.
- Triton Inference Server 빠른 시작 가이드 의 지시에 따라 컨테이너 이미지를 실행합니다 .
추천 독서
최신 릴리스 노트를 보려면 Triton Inference Server 릴리스 노트를 참조하세요 .
컨테이너 이미지를 기반으로 이 프레임워크와 함께 패키지로 제공되는 지원 소프트웨어 및 특정 버전의 전체 목록을 보려면 프레임워크 지원 매트릭스를 참조하세요 .
Triton Inference Server에 대한 자세한 내용은 다음을 참조하세요.
< triton inference server Docs >
https://docs.nvidia.com/deeplearning/triton-inference-server/user-guide/docs/index.html
이번 예제에서는 xx.yy-vllm-python-py3를 이용하여 작은 사이즈의 라마 모델을 배포하고 추론을 실행 해 볼 예정이다.
트리톤 주요 특징
주요 기능은 다음과 같습니다.
- 다양한 딥러닝 프레임워크 지원
- 다양한 머신 러닝 프레임워크 지원
- 동시 모델 실행
- 동적 배칭
- 상태 저장 모델을 위한 시퀀스 배칭 및 암묵적 상태 관리
- 사용자 정의 백엔드 및 사전/사후 처리 작업을 추가할 수 있는 백엔드 API를 제공합니다 .
- Ensembling 또는 Business Logic Scripting(BLS)을 사용하여 파이프라인 모델링
- 커뮤니티에서 개발한 KServe 프로토콜을 기반으로 하는 HTTP/REST 및 GRPC 추론 프로토콜
- C API 및 Java API를 사용하면 Triton이 에지 및 기타 프로세스 내 사용 사례에 대해 애플리케이션에 직접 연결할 수 있습니다.
- GPU 활용도, 서버 처리량, 서버 대기 시간 등을 나타내는 메트릭
로컬에서 테스트 해보고 추후 프로젝트가 있을때 사용 할 예정
.evn / dockerfile / docker-compose로 가상환경을 만들어 컨테이너간 통신을 할 예정
** 수정이 아직 필요함 **
# dockerfile 작성
## .env
#jupyter
JUPYTER_PORT = 8888
JUPYTER_DIR_VOLUME = ./notebooks:/app/jupyter-workspace
JUPYTER_PASSWORD=1234
JUPYTER_APP_ALLOW_ORIGIN = *
JUPYTER_APP_IP = 0.0.0.0
#triton
TRITON_PORT_HTTP_gRPC_API = 8000
TRITON_PORT_gRPC_API = 8001
TRITON_PORT_Prometheus_metrics = 8002
TRITON_DIR_VOLUME = ./model:/app/TRITON/model
TRITON_DIR_MODEL_DIR = /app/TRITON/model
#DL & GPU & CUDA &ETC
PYTORCH = 2.4.1+cu124
TORCHAUDIO = 2.4.1+cu124
## docker-compose.yml
# docker-compose -f docker-compose.yml --env-file .env up -d --build
services:
triton:
build:
context: .
dockerfile: Dockerfile.triton
ports:
#TRITON
- "${TRITON_PORT_HTTP_gRPC_API}:${TRITON_PORT_HTTP_gRPC_API}"
- "${TRITON_PORT_gRPC_API}:${TRITON_PORT_gRPC_API}"
- "${TRITON_PORT_Prometheus_metrics}:${TRITON_PORT_Prometheus_metrics}"
volumes:
- ${TRITON_DIR_VOLUME}
environment:
# TRITON
TRITON_PORT_HTTP_gRPC_API : ${TRITON_PORT_HTTP_gRPC_API}
TRITON_PORT_gRPC_API : ${TRITON_PORT_gRPC_API}
TRITON_PORT_Prometheus_metrics : ${TRITON_PORT_Prometheus_metrics}
TRITON_MODEL_DIR : ${TRITON_MODEL_DIR}
deploy:
resources:
reservations:
devices:
- driver: nvidia
count: all
capabilities: [gpu]
## Dockerfile.triton
# Base Image
FROM nvcr.io/nvidia/tritonserver:24.11-vllm-python-py3
WORKDIR /app
COPY ./model /app
RUN apt update
ARG TRITON_DIR_MODEL_DIR
ENV NVIDIA_VISIBLE_DEVICES all
ENV NVIDIA_DRIVER_CAPABILITIES compute,utility
ENV TRITON_MODEL_REPOSITORY=${TRITON_DIR_MODEL_DIR}
CMD ["tritonserver", "--model-repository=${TRITON_DIR_MODEL_DIR}"]
자세한 예제
https://github.com/triton-inference-server/tutorials/tree/main/Quick_Deploy/HuggingFaceTransformers
예제를 보고 글 수정 및 보완 해야함