v06 ModelRunner Split
마지막 수정:
이 단계에서 engine core와 worker의 경계가 보이기 시작한다.
읽을 코드:
labs/nano-vllm/versions/v06_model_runner_split/run.py
Scheduler는 무엇을 실행할지 결정한다.
seqs, is_prefill = scheduler.schedule()
ModelRunner는 그것을 model input으로 바꾼다.
prepare_prefill(seqs)
prepare_decode(seqs)
run(seqs, is_prefill)
이 경계가 중요하다.
실제 vLLM이나 nano-vLLM에서는 이 boundary 뒤에 CUDA tensor, KV cache slot mapping, block table, attention backend, CUDA graph가 붙는다.
다음 문제
이제 원본 nano-vLLM 코드와 대응시킬 수 있다.
LLMEngine, Scheduler, BlockManager, ModelRunner가 각각 어떤 파일과 함수로 확장되는지 읽으면 된다.