AI
최대 24배 빠른 vLLM의 비밀 파헤치기
두줄요약
vLLM의 PagedAttention과 Continuous Batching을 코드 흐름 중심으로 분석했습니다.\nKV 캐시 블록 관리, 스케줄링, CUDA 기반 Single Query Attention을 설명합니다.
구조와 흐름
LLM.generate()요청 추가부터LLMEngine.step()반복 실행까지의 생성 경로- 스케줄러의 Waiting·Running·Swapped 큐 관리와 Worker의 캐시 이동·모델 포워딩
- PagedAttention의 논리 블록·물리 블록 매핑 및 블록 테이블 기반 KV 캐시 관리
선택 이유
- OS 가상 메모리와 유사한 블록 단위 KV 캐시 관리로 메모리 단편화 완화
- Continuous Batching으로 프롬프트·생성 토큰을 빈 공간 없이 묶는 추론 배치 구성
- 캐시된 KV와 마지막 Query만 사용하는 Single Query Attention 기반 계산 축소
성능/운영 포인트
- 모델 포워딩 메모리 프로파일링 후 남은 GPU 메모리에서 사용 가능한 캐시 블록 수 산정
- 메모리 부족 시 단일 시퀀스는 재계산, 복수 시퀀스 그룹은 CPU 스왑으로 선점 처리
- CUDA 커널의 워프·스레드 그룹 분할, 벡터화, 리덕션을 통한 KV 캐시 저장과 어텐션 병렬화
주의할 점
- 분석 대상 구현체가 초기 vLLM v0.1.2 기반이어서 현재 구현과 차이 가능성
- CUDA 구현 일부 해석에 추측성 내용 포함



