PagedAttention이 KV 캐시를 블록 단위로 쪼갠 이유를 원 논문(arXiv:2309.06180)과 vLLM 공식 설계 문서로 확인해 정리했습니다. 연속 할당이 만드는 내부·외부 단편화, 블록 테이블이 하는 일, 블록 크기를 키우고 줄일 때의 트레이드오프까지 다룹니다. vLLM 내부 구조 시리즈 2편.
vLLM 성능을 올리는 작업을 코드를 고치지 않고 되는 것부터 순서대로 정리합니다. 배치 관련 인자와 프리픽스 캐싱, 청크드 프리필, 양자화 선택을 먼저 다루고, 그다음 PagedAttention과 연속 배칭 스케줄러가 내부에서 무엇을 결정하는지 실제 소스를 근거로 설명합니다. 실제로 코드를 건드릴 만한 세 지점인 커스텀 로짓 프로세서, 커스텀 어텐션 백엔드, 스케줄러 정책과 그 대가도 짚습니다. 무엇을 고정하고 무엇을 측정하는지, TTFT와 TPOT와 처리량의 트레이드오프를 재는 방법을 반드시 포함했습니다. vLLM v0.26.0 소스를 직접 확인해 작성했습니다.
LLM의 롱 컨텍스트 처리를 가능하게 하는 KV Cache의 원리부터 메모리 소비 분석, MQA·GQA·PagedAttention·슬라이딩 윈도우·Ring Attention 등 최적화 기법, 모델별 컨텍스트 윈도우 비교, Needle-in-a-Haystack 벤치마크까지 실무 관점에서 포괄적으로 다룹니다.