v04 Continuous Batching

마지막 수정:

inferencenano-vllmschedulerbatching

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로만 다루면 낭비가 커진다.