nano-vLLM Attention Serving Swap Lab

마지막 수정:

inferencenano-vllmattentionsdpabenchmark

Attention은 nano-vLLM kernel optimization의 중심 실험이다.

lab에서는 두 backend를 비교한다.

manual:
score matrix를 직접 만들고 softmax를 수행하는 reference path

sdpa:
torch.nn.functional.scaled_dot_product_attention path

실행은 다음과 같다.

python3 labs/nano-vllm/optimization/benchmark.py --rmsnorm-backend torch --attention-backend manual
python3 labs/nano-vllm/optimization/benchmark.py --rmsnorm-backend torch --attention-backend sdpa

결과를 볼 때는 전체 elapsed time만 보지 않는다.

prefill_step_ms:
prompt 전체를 처리하는 단계

decode_step_ms:
running request batch에서 다음 token을 만드는 단계

작은 lab에서는 실제 paged attention kernel을 구현하지 않는다. 대신 “attention backend가 model runner boundary에서 어떻게 교체되는가”를 먼저 익힌다. 이 경험이 있어야 vLLM의 PagedAttention backend와 KV cache layout을 읽을 때 책임 경계가 보인다.

확인

  • manual attention은 왜 좋은 reference backend인가?
  • SDPA가 빨라져도 PagedAttention 문제가 따로 남는 이유는 무엇인가?
  • attention backend 비교를 prefill/decode로 나눠야 하는 이유는 무엇인가?