LLM Serving 시리즈
vLLM의 동작 원리로부터 이해하는 LLM 서빙과 추론 최적화. 9편을 읽는 순서대로 정리했습니다.
Prefill과 Decode로 이해하는 LLM 추론 과정
Prefill은 프롬프트 전체를 한 번의 forward pass로 병렬 처리해 KV Cache와 첫 토큰을 만드는 단계이고, Decode는 그 캐시를 읽으며 토큰을 하나씩 생성하는 단계입니다. compute-bound와 memory-bound로 갈리는 두 단계의 비대칭이 왜 서빙 최적화의 출발점인지 정리합니다.
LLM Serving
KV Cache가 LLM 서빙을 바꾸는 방식
KV Cache가 왜 필요하고 어떻게 동작하는지, 그리고 이것이 LLM 서빙을 매 요청이 상태를 들고 다니는 문제로 바꿔놓는 과정을 정리합니다.
LLM Serving
vLLM의 핵심 원리 PagedAttention 파헤치기
vLLM 이전의 서빙 시스템이 KV Cache 메모리의 60~80%를 낭비하던 이유와, PagedAttention이 운영체제의 페이징을 빌려 그 낭비를 4% 밑으로 줄인 원리를 파헤칩니다.
LLM Serving
Continuous Batching과 Chunked Prefill 완전 이해
static batching이 GPU를 놀리는 이유부터, vLLM V1이 continuous batching과 chunked prefill을 하나의 토큰 예산 스케줄러로 묶어 처리량과 응답 지연을 함께 잡는 원리를 정리합니다.
LLM Serving
Prefix Caching과 RadixAttention으로 보는 vLLM과 SGLang
끝난 요청의 KV Cache를 다음 요청이 재사용하는 prefix caching의 원리를 vLLM의 블록 해시 체인으로 파헤치고, SGLang의 RadixAttention과 비교합니다. 두 엔진이 사실상 같은 구조에 도달했다는 점과, 진짜 차이는 자료구조가 아니라 스케줄링에 있다는 점을 정리합니다.
LLM Serving
서빙을 위한 양자화 가이드 FP8, AWQ, GPTQ
AWQ와 GPTQ는 가중치만 4비트로 줄이는 W4A16, FP8은 보통 가중치와 활성값을 모두 8비트로 줄이는 W8A8 양자화입니다. 무엇을 줄이느냐에 따라 빨라지는 경로가 달라서 배치 크기와 GPU 세대에 따라 고를 기법이 갈립니다. KV Cache FP8 양자화와 QAT까지 정리합니다.
LLM Serving
Speculative Decoding으로 LLM 추론 속도 높이기
작은 모델이 미리 그려놓은 토큰들을 큰 모델이 forward 한 번으로 검증하는 speculative decoding의 원리를 살펴봅니다. rejection sampling이 품질을 지키는 수학, draft를 구하는 네 가지 방법(draft 모델, n-gram, EAGLE, MTP), 배치 크기에 따라 이득이 달라지는 이유를 vLLM 설정 방법과 함께 정리합니다.
LLM Serving
vLLM 실전 서빙 가이드
vLLM V1 엔진의 프로세스 구조부터 gpu_memory_utilization, max_model_len, CUDA graph, Structured Output, Tensor Parallelism까지 서빙 핵심 인자를 엔진 동작 원리로부터 설명합니다.
LLM Serving
LLM 서빙 성능 지표와 튜닝
TTFT, TPOT, ITL과 지연 목표(SLO)를 정의하고 대역폭과 KV 용량이라는 두 하드웨어 천장을 계산한 뒤, vllm bench로 측정한 지표를 근거로 서빙 인자를 조정하는 방법을 정리합니다.
LLM Serving