v05 Paged KV Cache

마지막 수정:

inferencenano-vllmkv-cachepaged-attention

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 구조로 넘어갈 수 있다.