Atenção Causal Mais Rápida em Sequências Longas Através da Atenção Flash Esparsa
Faster Causal Attention Over Large Sequences Through Sparse Flash Attention
June 1, 2023
Autores: Matteo Pagliardini, Daniele Paliotta, Martin Jaggi, François Fleuret
cs.AI
Resumo
Modelos de linguagem baseados em Transformers têm encontrado diversas aplicações que exigem o processamento de sequências de comprimento crescente. Para essas aplicações, a auto-atenção causal — que é o único componente que escala quadraticamente em relação ao comprimento da sequência — torna-se uma preocupação central. Embora muitos trabalhos tenham proposto esquemas para esparsificar os padrões de atenção e reduzir a sobrecarga computacional da auto-atenção, esses métodos frequentemente são limitados por questões de implementação e acabam impondo uma estrutura simples e estática sobre a matriz de atenção. Por outro lado, a implementação de atenções esparsas mais dinâmicas geralmente resulta em tempos de execução significativamente mais lentos do que o cálculo da atenção completa usando a implementação Flash de Dao et al. (2022). Nós estendemos o FlashAttention para acomodar uma grande classe de padrões de esparsidade de atenção que, em particular, englobam o descarte de chaves/consultas e a atenção baseada em hashing. Isso resulta em implementações sem sobrecarga de complexidade computacional e com um aumento múltiplo na velocidade de execução em relação ao FlashAttention. Mesmo com graus relativamente baixos de esparsidade, nosso método melhora visivelmente o desempenho do FlashAttention à medida que o comprimento da sequência aumenta. Sem sacrificar a perplexidade, aumentamos a velocidade de treinamento de um modelo de linguagem Transformer em 2,0 vezes e 3,3 vezes para sequências de, respectivamente, 8k e 16k tokens.
English
Transformer-based language models have found many diverse applications
requiring them to process sequences of increasing length. For these
applications, the causal self-attention -- which is the only component scaling
quadratically w.r.t. the sequence length -- becomes a central concern. While
many works have proposed schemes to sparsify the attention patterns and reduce
the computational overhead of self-attention, those are often limited by
implementations concerns and end up imposing a simple and static structure over
the attention matrix. Conversely, implementing more dynamic sparse attentions
often results in runtimes significantly slower than computing the full
attention using the Flash implementation from Dao et al. (2022). We extend
FlashAttention to accommodate a large class of attention sparsity patterns
that, in particular, encompass key/query dropping and hashing-based attention.
This leads to implementations with no computational complexity overhead and a
multi-fold runtime speedup on top of FlashAttention. Even with relatively low
degrees of sparsity, our method improves visibly upon FlashAttention as the
sequence length increases. Without sacrificing perplexity, we increase the
training speed of a transformer language model by 2.0times and 3.3times
for sequences of respectively 8k and 16k tokens.