Deploying Inference Using NVIDIA Dynamo and vLLM
개요
NVIDIA Dynamo는 vLLM 백엔드를 사용하여 대규모 생성 AI 및 추론 모델을 다중 노드, 다중 GPU 환경에 배포하는 고처리량, 저지연 추론 프레임워크로, 집계 및 분리 서빙 패턴을 지원합니다.
주요 내용
* NVIDIA Dynamo: GPU 리소스 관리, 요청 라우팅, 작업자 조정을 위한 오케스트레이션 계층으로, 프런트엔드 서비스, KV 캐시 인식 스마트 라우터, 동적 GPU 할당 GPU 플래너를 포함합니다.
* vLLM 백엔드: GPU에서 모델 연산을 실행하며, 프리필(Prefill) 작업자는 초기 토큰을 생성하고 디코드(Decode) 작업자는 순차적인 토큰 생성을 처리합니다.
* 인프라 서비스:
* etcd: 작업자 레지스트리 및 서비스 검색을 위한 분산 시스템으로, 액티브 작업자와 그 기능을 등록합니다.
* NATS: 컴포넌트 간 메시지 전달, 특히 KV 캐시 이벤트 전파를 처리합니다.
* NIXL (NVIDIA Inter-GPU Exchange Library): 분리 서빙 시 GPU 간 효율적인 데이터 전송을 관리하여 프리필 작업자가 디코드 작업자에게 KV 캐시 데이터를 최소 지연 시간으로 전송할 수 있도록 합니다.
* 배포 절차:
1. Dynamo 리포지토리 클론 및 최신 릴리스로 전환.
2. Docker Compose를 사용하여 etcd 및 NATS 인프라 서비스 시작.
3. 호스트 CUDA 버전과 일치하는 vLLM 런타임 컨테이너 이미지 풀링 또는 빌드.
4. 컨테이너가 모델 다운로드를 위해 Hugging Face 캐시 디렉토리에 대한 쓰기 접근 권한 설정.
* 집계 서빙 (Aggregated Serving):
* 단일 GPU 환경 또는 응답 시간 최적화에 적합합니다.
* 프리필 및 디코드 단계를 단일 작업자에서 결합하여 GPU 간 KV 캐시 전송을 제거합니다.
* NVIDIA Nemotron 모델을 사용하여 배포 및 채팅 완료 요청 테스트.
* 분리 서빙 (Disaggregated Serving):
* 프리필과 디코드 단계를 별도의 GPU 작업자로 분리하여 독립적인 확장 및 최적화를 가능하게 합니다.
* NIXL을 통해 KV 캐시 데이터를 전송하여 여러 디코드 작업자가 프리필 리소스를 공유하도록 합니다.
* 2개 이상의 GPU가 필요하며, 4개의 GPU를 사용하여 프런트엔드, 2개의 디코드 작업자, 2개의 프리필 작업자 구성으로 배포 및 동시 요청 테스트.
* 테스트: 각 서빙 패턴에서 curl 명령어를 사용하여 채팅 완료 API 엔드포인트에 요청을 보내 배포 상태 확인.
시사점
NVIDIA Dynamo와 vLLM을 통합하면 생성 AI 모델의 추론 효율성을 크게 향상시키고, 집계 및 분리 서빙 패턴을 통해 다양한 인프라 요구사항 및 성능 목표에 맞춰 배포를 최적화할 수 있습니다.
댓글
GitHub Discussions