OnderzoekOpen Source 🇺🇸 29.07.2026 23:03

Profiling in PyTorch (Deel 3): Attention is all you profile

PyTorchPyTorch NVIDIANVIDIA
Dit bericht profileert aandachtsmechanismen in PyTorch en vergelijkt naïeve aandacht, optimalisatie ter plaatse en Scaled Dot Product Attention (SDPA)-backends. Het laat zien dat de math-backend van SDPA langzamer is dan naïeve aandacht door onderbenutting van Tensor Cores, maskerherconstructie en overhead van veilige softmax.
Het derde bericht in de serie Profiling in PyTorch profielt aandachtmechanismen. Het begint met een naïeve aandachtsmodule (matmul, schaling, masking, softmax, matmul) en de trace toont 5 GPU-kernels per forward. Het vervangen van out-of-place masked_fill door in-place masked_fill_ elimineert een memory copy-kernel, wat tijd en geheugen bespaart. Vervolgens wordt Scaled Dot Product Attention (SDPA) geïntroduceerd; de math-backend, hoewel veiliger (omgaan met NaN-gevallen) en preciezer (FP32), is 3,7 keer langzamer dan naïeve aandacht omdat het 20 GPU-kernels lanceert, geen Tensor Cores gebruikt (sgemm in plaats van bf16 Tensor Core matmul), elke aanroep het causale mask herbouwt en _safe_softmax gebruikt. Het bericht merkt op dat SDPA normaal gesproken automatisch de snelste backend selecteert.
Bron: Hugging Face blog — origineel
Eerdere berichten over dit onderwerp ↓
Vers nieuws