v07 Prefix 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 비용 중 어디에 더 직접적으로 영향을 주는가?