Repolode
Dao-AILab

Dao-AILab/flash-attention

Implementação oficial do FlashAttention, um kernel de atenção exata e eficiente em memória para treinar e executar inferência de modelos Transformer em GPUs.

Estrelas
25,163
Forks
3,175
Issues abertas
1,382
Último commit
há 13 horas

O que é?

FlashAttention é uma implementação de atenção exata para modelos Transformer que reduz o uso de memória da GPU e acelera o cálculo de atenção. A atenção padrão precisa de memória que cresce quadraticamente com o tamanho da sequência; FlashAttention calcula o mesmo resultado com memória que cresce linearmente, permitindo que sequências muito mais longas caibam na GPU.

O repositório inclui FlashAttention-2 para NVIDIA CUDA (GPUs Ampere, Ada e Hopper) e AMD ROCm, além de FlashAttention-3 para GPUs Hopper e FlashAttention-4, escrito em CuTeDSL para GPUs Hopper e Blackwell. As principais funções Python abrangem atenção padrão, de comprimento variável, com QKV empacotado e inferência com KV cache, com suporte a máscaras causais, atenção com janela deslizante, ALiBi, MQA/GQA, dropout e softcapping.

O pacote é instalado com pip e requer PyTorch e um toolkit CUDA ou ROCm. Linux é a principal plataforma compatível.

Recursos principais

  • 01Calcula atenção exata com uso de memória que cresce linearmente com o tamanho da sequência.
  • 02Oferece suporte a máscaras causais, atenção local com janela deslizante e ALiBi.
  • 03Oferece MQA e GQA por meio de tensores KV com menos heads do que Q.
  • 04Inclui um KV cache paginado e uma atualização in-place do KV cache para decodificação incremental.
  • 05Oferece builds CUDA para GPUs NVIDIA e backends Triton e CK para GPUs AMD.

Casos de uso

  • Treinar modelos de linguagem Transformer grandes com sequências longas em GPUs NVIDIA A100 ou H100.
  • Executar inferência de LLMs com decodificação incremental e KV cache paginado.
  • Executar atenção em GPUs AMD Instinct usando os backends ROCm.

Início rápido

  1. 1

    Instale os pré-requisitos de compilação: packaging, psutil e ninja

  2. 2

    Instale o FlashAttention pelo PyPI

    pip install flash-attn --no-build-isolation

Antes de usar

  • O suporte oficial é apenas para Linux; a compilação no Windows não foi bem testada.
  • É necessário um kit de ferramentas CUDA ou ROCm e uma GPU compatível, como Ampere, Ada ou Hopper para CUDA.
  • A compilação a partir do código-fonte pode ser lenta e consumir muita memória sem ninja e sem limitar as tarefas paralelas.

Tópicos

Perguntas frequentes

O que é flash-attention?
Implementação oficial do FlashAttention, um kernel de atenção exata e eficiente em memória para treinar e executar inferência de modelos Transformer em GPUs. FlashAttention é uma implementação de atenção exata para modelos Transformer que reduz o uso de memória da GPU e acelera o cálculo de atenção. A atenção padrão precisa de memória que cresce quadraticamente com o tamanho da sequência; FlashAttention calcula o mesmo resultado com memória que cresce linearmente, permitindo que sequências muito mais longas caibam na GPU.
flash-attention é gratuito? Qual é a licença?
flash-attention é open source sob a licença BSD-3-Clause. Confira os termos da licença antes de usá-lo em produtos comerciais.
flash-attention ainda é mantido?
Manutenção ativa. O último commit de flash-attention foi em 20 de out. de 2026.
Para que posso usar flash-attention?
Treinar modelos de linguagem Transformer grandes com sequências longas em GPUs NVIDIA A100 ou H100. Executar inferência de LLMs com decodificação incremental e KV cache paginado. Executar atenção em GPUs AMD Instinct usando os backends ROCm.
Como instalar flash-attention?
Instale os pré-requisitos de compilação: packaging, psutil e ninja Instale o FlashAttention pelo PyPI: pip install flash-attn --no-build-isolation
Onde consigo flash-attention?
O código-fonte e as instruções de instalação estão no GitHub: https://github.com/Dao-AILab/flash-attention

Resumo gerado por IA a partir do README do projeto. As estatísticas do GitHub são atualizadas diariamente.

Projetos relacionados