Optimized Attention Benchmark

마지막 수정:

pytorchattentionoptimizationbenchmark

이 카드의 목표는 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의 어떤 부분으로 이어지는가?