Isto é atenção flash para a frente: `TestPcontig.test_flash_attention` Não há sequer um "fuse" à volta disso, o padrão é óbvio a partir do fluxo de dados. A parte de trás está a faltar duas truques: a saída de q.grad e k.grad juntas e a escolha de recomputar a matriz de pontuação em vez de a guardar.
Uma vez que a atenção de retrocesso automático esteja implementada, imagine os outros padrões que isso irá descobrir. Para velocidade, estamos a trabalhar numa passagem semelhante a thunderkittens que divide tudo em blocos de 16x16. Não há mais raciocínio sobre "locais," que é a oferta do Triton também.
As pessoas sabem como ler esses diagramas? Comparado às publicações com código, essas publicações não têm muito alcance, mas eu acho o diagrama muito mais fácil de entender.
11K