[vllm] Decode Context Parallel - GPU Model Runner V2용 디코드 단계 컨텍스트 병렬화
PR 링크: vllm-project/vllm#34179 상태: Merged | 변경: +117/-3
들어가며
긴 컨텍스트(100K+ 토큰)를 처리할 때, 디코드 단계에서 단일 GPU의 KV cache 메모리가 병목이 된다. Decode Context Parallel(DCP)은 KV cache를 여러 GPU에 분산하여 이 한계를 극복한다. 이 PR은 GPU Model Runner V2에서 DCP를 지원한다.
핵심 코드 분석
DCP의 핵심은 디코드 단계에서 각 GPU가 KV cache의 일부분만 담당하는 것이다:
- GPU 0: KV cache 블록 0~N/2
- GPU 1: KV cache 블록 N/2~N
각 GPU는 자신이 담당하는 KV cache 부분에 대해서만 attention을 계산하고, 결과를 all-reduce로 합산한다. 이를 통해 단일 GPU 대비 2배(GPU 수 비례)의 컨텍스트 길이를 처리할 수 있다.
117줄의 변경은 V2 Model Runner의 attention 백엔드에 DCP 분기를 추가하고, KV cache 분산 로직을 연결하는 것이 주 내용이다.
왜 이게 좋은가
- 메모리 효율: KV cache를 분산하여 단일 GPU 메모리 한계 극복
- 긴 컨텍스트 지원: 100K~1M 토큰의 초장문 처리가 실용적으로 가능
- V2 Runner 통합: 최신 모델 러너의 비동기 파이프라인과 자연스럽게 통합
- 최소 변경: 기존 코드 3줄만 수정하고 114줄 추가로 구현, 영향 범위 최소
정리
DCP는 긴 컨텍스트 LLM 서빙의 핵심 기능이다. 117줄의 코드로 V2 Model Runner에 통합되어, GPU Model Runner V2(#25266)의 아키텍처적 이점을 잘 활용한 사례다.
참고 자료
이 글은 AI(Claude)의 도움을 받아 작성되었습니다. 코드 분석 내용은 실제 PR diff를 기반으로 합니다.
관련 포스트
PR Analysis 의 다른글
- 이전글 [llm-compressor] DataLoader 최적화와 Single-pass Weight Calibration
- 현재글 : [vllm] Decode Context Parallel - GPU Model Runner V2용 디코드 단계 컨텍스트 병렬화
- 다음글 [Grafana Loki] 프론트엔드 캐시를 리팩터링하고 캐시된 스트림을 요청에서 필터링
댓글