InvestigaciónCódigo Abierto 🇺🇸 29.07.2026 23:03

Perfilado en PyTorch (Parte 3): La atención es todo lo que perfilas

PyTorchPyTorch NVIDIANVIDIA
Este artículo perfila los mecanismos de atención en PyTorch, comparando la atención ingenua, la optimización in-place y los backends de Atención de Producto Punto Escalado (SDPA). Revela que el backend matemático de SDPA es más lento que la atención ingenua debido a la infrautilización de Tensor Core, la reconstrucción de máscaras y la sobrecarga de softmax seguro.
La tercera publicación de la serie sobre perfiles en PyTorch se centra en los mecanismos de atención. Comienza con un módulo de atención ingenuo (matmul, escalado, enmascaramiento, softmax, matmul) y su seguimiento muestra 5 núcleos de GPU por paso hacia adelante. Reemplazar masked_fill no in situ con masked_fill_ in situ elimina un núcleo de copia de memoria, ahorrando tiempo y memoria. A continuación, se presenta la Atención de Producto Puntual Escalado (SDPA por sus siglas en inglés); su backend matemático, aunque más seguro (maneja casos de NaN) y más preciso (FP32), es 3,7 veces más lento que la atención ingenua porque lanza 20 núcleos de GPU, no utiliza Núcleos Tensores (usa sgemm en lugar de matmul con Núcleo Tensor bf16), reconstruye la máscara causal en cada llamada y usa _safe_softmax. La publicación señala que SDPA normalmente selecciona automáticamente el backend más rápido.
Fuente: Hugging Face blog — original
Nuestros artículos anteriores sobre este tema ↓
Noticias frescas