Calculadora de Memória da Atenção
Entradas
| Comprimento da sequência | 4.096 |
|---|---|
| Cabeças de atenção | 32 |
| Tamanho do lote | 1 |
| Precisão | FP16 / BF16 (2 bytes) |
Calculadora de Memória da Atenção
Estime a memória da matriz de scores de atenção materializada na atenção padrão de transformers, a partir do comprimento da sequência, número de cabeças, tamanho do lote e bytes por elemento — o termo quadrático que o FlashAttention elimina.
Entradas
Carga de trabalho
Resultados
Insira um valor para ver os resultados.
Memória da atenção
A atenção padrão de transformers compara cada token com todos os outros tokens, construindo uma matriz de scores antes do softmax. Essa matriz é quadrada no comprimento da sequência, então sua memória cresce com o quadrado do contexto — o famoso custo quadrático da atenção. Esta calculadora estima o tamanho dessa matriz materializada a partir do comprimento da sequência, do número de cabeças de atenção, do tamanho do lote e dos bytes usados por score. É precisamente a memória que o FlashAttention evita armazenar.
O termo quadrático
Para uma sequência de tokens, a atenção forma uma matriz de scores : a linha , coluna guarda o quanto o token atende ao token . Armazená-la exige memória proporcional a . Isso difere dos pesos do modelo ou do cache de chave-valor, que crescem linearmente com o contexto — a matriz de scores cresce com o quadrado, então, em contextos longos, ela se torna o buffer intermediário dominante e a razão pela qual a atenção ingênua esgota a memória.
A fórmula
Cada cabeça constrói sua própria matriz de scores e cada sequência do lote carrega sua própria cópia, então a memória em bytes é
Abytes=B⋅H⋅s2⋅eonde é o tamanho do lote, o número de cabeças de atenção, o comprimento da sequência e os bytes por score armazenado. Dividir por resulta em gigabytes. O quadrado em é o que torna o contexto longo custoso: o número de cabeças e o lote multiplicam apenas linearmente.
O que é essa memória
O valor mede a matriz de scores materializada que a atenção padrão escreve na memória entre o produto consulta-chave e a soma ponderada pelo softmax sobre os valores. É o buffer de ativação que uma implementação ingênua precisa manter. Se ele persiste depende do cenário: em uma passagem direta simples, é transitório e pode ser reutilizado entre as camadas, enquanto os frameworks de treinamento podem manter uma cópia por camada para a passagem reversa, a menos que o checkpointing ou um kernel fundido intervenha.
FlashAttention
O FlashAttention calcula a saída idêntica sem nunca escrever a matriz completa. Ele percorre as chaves e os valores em pequenos blocos, mantendo estatísticas correntes do softmax, de modo que só precisa de um bloco na memória por vez, o que transforma o armazenamento de quadrático em linear no comprimento da sequência. A matriz cujo tamanho esta calculadora mede é exatamente o que o FlashAttention se recusa a armazenar — então o resultado aqui é um bom indicador da memória que um kernel de atenção fundido economiza em um dado comprimento de contexto.
Exemplo resolvido
Considere uma única sequência de 4.096 tokens com 32 cabeças de atenção em precisão de 16 bits:
Abytes=1×32×40962×2=1073741824cerca de 1,07 GB para a matriz de scores de uma camada. Dobre o contexto para 8.192 tokens e o termo quadrático assume o controle: a mesma expressão dá aproximadamente 4,29 GB, quatro vezes mais para o dobro do comprimento. O lado de chave-valor do mesmo orçamento de atenção é coberto na Calculadora de Tamanho do Cache KV, e a parte dos pesos do modelo na Calculadora de VRAM para Inferência de LLM.
Perguntas frequentes (FAQ)
Por que a memória da atenção é quadrática no comprimento da sequência?
A atenção compara cada token com todos os outros tokens, produzindo uma matriz de scores cujas dimensões são ambas o comprimento da sequência. Armazenar essa matriz completa exige, portanto, memória proporcional ao quadrado do comprimento da sequência.
Dobrar o contexto quadruplica a matriz de scores, e é por isso que a atenção padrão se torna limitada pela memória em contextos longos — o termo quadrático supera o custo linear dos pesos e das ativações.
Como o FlashAttention reduz essa memória?
O FlashAttention calcula o mesmo resultado sem nunca materializar a matriz de scores completa. Ele percorre a atenção em pequenos blocos de chaves e valores, mantendo estatísticas correntes do softmax, de modo que só retém um bloco por vez.
A matriz quadrática que esta calculadora mede é exatamente a memória que o FlashAttention evita armazenar, o que lhe permite escalar para sequências muito mais longas. A aritmética não muda; apenas o armazenamento intermediário encolhe de quadrático para linear.
Essa memória é por camada ou para o modelo inteiro?
Depende da implementação. O valor aqui é o tamanho da matriz de scores de uma camada. Em uma passagem direta ingênua, esse buffer pode ser liberado e reutilizado entre as camadas, sendo transitório em vez de multiplicado pelo número de camadas.
Durante o treinamento, porém, os frameworks podem reter os tensores de atenção de cada camada para a passagem reversa, a menos que se use checkpointing de gradiente ou FlashAttention, caso em que o total pode escalar com o número de camadas.
Aviso legal
Esta estimativa cobre apenas a matriz de scores materializada na precisão indicada; exclui os tensores de consulta, chave e valor, a projeção de saída e outras ativações. Descreve a atenção padrão — kernels como o FlashAttention não armazenam essa matriz.