본문으로 건너뛰기

[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 분산 로직을 연결하는 것이 주 내용이다.

왜 이게 좋은가

  1. 메모리 효율: KV cache를 분산하여 단일 GPU 메모리 한계 극복
  2. 긴 컨텍스트 지원: 100K~1M 토큰의 초장문 처리가 실용적으로 가능
  3. V2 Runner 통합: 최신 모델 러너의 비동기 파이프라인과 자연스럽게 통합
  4. 최소 변경: 기존 코드 3줄만 수정하고 114줄 추가로 구현, 영향 범위 최소

정리

DCP는 긴 컨텍스트 LLM 서빙의 핵심 기능이다. 117줄의 코드로 V2 Model Runner에 통합되어, GPU Model Runner V2(#25266)의 아키텍처적 이점을 잘 활용한 사례다.

참고 자료


이 글은 AI(Claude)의 도움을 받아 작성되었습니다. 코드 분석 내용은 실제 PR diff를 기반으로 합니다.

댓글

관련 포스트

PR Analysis 의 다른글