v05 Paged KV Cache
마지막 수정:
Paged KV cache의 핵심은 request가 연속된 메모리를 직접 소유하지 않는다는 점이다.
각 request는 block id 목록을 가진다.
Sequence.block_table = [3, 8, 9]
읽을 코드:
labs/nano-vllm/versions/v05_paged_kv_cache/run.py
이번 단계에서 BlockManager가 생긴다.
free_block_ids
used_block_ids
allocate()
may_append()
deallocate()
실제 nano-vLLM은 여기에 prefix cache hash와 ref count를 더한다. 이 실습 버전은 먼저 block allocation 감각만 잡는다.
다음 문제
Scheduler가 어떤 request를 실행할지 결정하고, ModelRunner가 그 request를 어떤 tensor input으로 바꿀지 분리해야 한다.
이 경계가 생겨야 실제 vLLM의 engine core / GPU worker 구조로 넘어갈 수 있다.