Triton Inference Server로 Hermes-2-Pro-Llama-3-8B 모델 배포하기
Triton Inference Server로 Hermes-2-Pro-Llama-3-8B 모델 배포하기
Hermes-2-Pro-Llama-3-8B는 NousResearch가 만든 고급 언어 모델이에요. Meta-Llama-3-8B를 OpenHermes 2.5 데이터셋과 NousResearch가 새로 만든 Function Calling·JSON Mode 데이터셋으로 파인튜닝해 개선한 모델이죠. 일반 대화 작업과 구조화된 JSON 출력·함수 호출 같은 특수 기능 모두에서 뛰어나 다양한 애플리케이션에 쓸 수 있어요. 모델은 HuggingFace에서 내려받을 수 있습니다.
TensorRT-LLM은 NVIDIA GPU에서 LLM을 실행하기 위한 NVIDIA의 권장 솔루션이에요. 자세한 내용은 TensorRT-LLM과 Triton의 TensorRT-LLM 백엔드를 참고하세요.
참고: 이 튜토리얼의 일부가 동작하지 않는다면
tutorials저장소와tensorrtllm_backend저장소 사이에 버전 불일치가 있을 수 있어요. 필요한 경우 llama.md를 참고해 자세한 수정을 하고, Python에 익숙하다면 LLM API로 LLM 워크플로를 시도해 볼 수도 있어요.
사전 준비: TensorRT-LLM 백엔드
이 튜토리얼은 TensorRT-LLM 백엔드 저장소가 필요해요. 최상의 경험을 위해 tensorrtllm_backend의 최신 릴리스 태그와 최신 Triton Server 컨테이너를 권장합니다.
TensorRT-LLM 백엔드 저장소를 클론하려면 다음 명령 세트를 실행하세요.
git clone https://github.com/triton-inference-server/tensorrtllm_backend.git --branch <release branch>
# 서브모듈 업데이트
cd tensorrtllm_backend
# 필요하면 git-lfs 설치
apt-get update && apt-get install git-lfs -y --no-install-recommends
git lfs install
git submodule update --init --recursive
Triton TensorRT-LLM 컨테이너 실행
TensorRT-LLM 백엔드가 있는 Triton 도커 컨테이너를 실행해요. 단순화를 위해 tensorrtllm_backend를 /tensorrtllm_backend에, Hermes 모델을 /Hermes-2-Pro-Llama-3-8B에 마운트합니다. 엔진을 재사용하려면 도커 밖에 engines 폴더를 만들어 두세요. <xx.yy>는 사용하려는 Triton 버전으로 바꿔야 합니다.
docker run --rm -it --net host --shm-size=2g \
--ulimit memlock=-1 --ulimit stack=67108864 --gpus all \
-v </path/to/tensorrtllm_backend>:/tensorrtllm_backend \
-v </path/to/Hermes/repo>:/Hermes-2-Pro-Llama-3-8B \
-v </path/to/engines>:/engines \
nvcr.io/nvidia/tritonserver:<xx.yy>-trtllm-python-py3
아니면 특수한 컨테이너를 직접 빌드하려면 안내에 따라 TensorRT-LLM 백엔드로 Triton Server를 빌드해도 됩니다. 컨테이너 실행 시 GPU 사용을 허용하는 걸 잊지 마세요.
각 모델의 엔진 생성 [엔진이 이미 있다면 건너뛰세요]
TensorRT-LLM은 실행 전에 각 모델을 필요한 설정으로 컴파일해야 해요. Triton Server에서 처음으로 모델을 실행하기 전에 TensorRT-LLM 엔진을 만들어야 합니다. 이 튜토리얼의 엔진 생성 절차는 TensorRT-LLM llama 가이드를 따릅니다.
엔진을 만들려면 checkpoint 변환과 trtllm-build를 수행해야 해요. 모델 설정에 맞는 더 자세한 명령은 TensorRT-LLM llama 가이드를 참고하세요.
Triton으로 서빙
엔진이 준비되면 Triton 모델 저장소를 설정해야 해요. 이 튜토리얼은 model_repository/ 아래에 필요한 모든 Triton 관련 파일을 제공합니다. config.pbtxt에 TensorRT-LLM 엔진 위치를 지정하면 돼요.
함수 호출·JSON 모드와 같은 고급 기능을 최대한 활용하려면, 이 예시를 기반으로 한 Feature Guide 튜토리얼을 함께 보는 걸 추천해요.
- 제약 디코딩(Constrained Decoding): 구조화된 JSON 출력을 강제하는 방법.
- 함수 호출(Function Calling): LLM을 외부 도구와 연결하는 방법.
이 두 튜토리얼 모두 이 Hermes-2-Pro-Llama-3-8B 모델을 전제로 하므로, 모델 배포가 끝나면 그대로 이어서 실습할 수 있어요.
참고
서빙 흐름을 검증하는 샘플 클라이언트와 더 자세한 설정은 Triton tutorials 저장소를 참고하세요.