Optimized Attention Benchmark
마지막 수정:
이 카드의 목표는 attention 최적화를 하나의 숫자로 끝내지 않는 것이다.
비교 대상은 세 가지다.
1. manual PyTorch attention
2. PyTorch SDPA
3. optimized attention backend
처음에는 optimized backend를 직접 CUDA로 만들 필요는 없다. PyTorch SDPA의 FlashAttention 계열 backend, torch.compile, 또는 별도 optimized implementation을 비교 대상으로 둘 수 있다.
비교표는 prefill-like와 decode-like를 나눠 작성한다.
workload | B | H | T | Dh | dtype | implementation | latency | memory
prefill | | | | | | manual | |
prefill | | | | | | SDPA | |
prefill | | | | | | optimized | |
decode | | | | | | manual | |
decode | | | | | | SDPA | |
decode | | | | | | optimized | |
이 실험은 나중에 custom inference kernel과 nano-vLLM으로 이어지는 다리 역할을 한다.
확인
- Attention 최적화 benchmark를 prefill과 decode로 나눠야 하는 이유는 무엇인가?
- optimized backend가 prefill에서는 빠르지만 decode에서는 덜 유리할 수 있는 이유는 무엇인가?
- 이 비교가 nano-vLLM의 어떤 부분으로 이어지는가?