v04 Continuous Batching
마지막 수정:
vLLM 계열 engine의 핵심은 continuous batching이다.
모든 request가 같은 길이로 끝날 때까지 기다리지 않는다. 매 step마다 현재 실행 가능한 request들을 모아 batch를 만든다.
읽을 코드:
labs/nano-vllm/versions/v04_continuous_batching/run.py
이번 단계에서 Scheduler가 생긴다.
waiting:
아직 prefill을 시작하지 않은 request
running:
prefill을 마치고 decode 중인 request
schedule()은 다음 engine step에 태울 sequence 목록과 그 step이 prefill인지 decode인지 반환한다.
다음 문제
이제 batch는 생겼지만 KV cache 메모리 관리가 없다.
실제 serving에서는 request마다 prompt/output 길이가 다르기 때문에 KV cache를 고정된 큰 tensor로만 다루면 낭비가 커진다.