v07 Prefix Cache

마지막 수정:

inferencenano-vllmprefix-cachekv-cache

Prefix cache는 같은 system prompt, chat template, RAG prefix를 반복 계산하지 않기 위한 장치다.

읽을 코드:

labs/nano-vllm/versions/v07_prefix_cache/run.py

이번 단계에서 BlockManager는 완성된 block의 hash를 기억한다.

token block -> content hash -> block id

새 request가 들어오면 prompt 앞부분의 complete block을 확인한다. 이미 계산된 block이면 새 block을 만들지 않고 ref count만 올린다.

이 버전은 아직 실제 K/V tensor를 복사하지 않는다. 중요한 것은 Sequence.block_table이 물리 block id를 가리키고, 같은 prefix가 같은 block을 공유할 수 있다는 구조다.

확인

  • 왜 마지막 incomplete block은 prefix cache 대상으로 삼기 어려운가?
  • ref count가 없으면 shared block deallocation에서 어떤 문제가 생기는가?
  • prefix cache는 prefill 비용과 decode 비용 중 어디에 더 직접적으로 영향을 주는가?