Porque é que a memória de atenção cresce mais do que os parâmetros dos modelos de IA domésticos?

Eva Wong é a Redatora Técnica e e entusiasta residente na ZimaSpace. Uma geek de longa data com paixão por homelabs e software de código aberto, ela é especialista em traduzir conceitos técnicos complexos em guias acessíveis e práticos . Eva acredita que o auto-hospedagem deve ser divertida, não intimidante. Através dos seus tutoriais, ela capacita a comunidade adesmistificar configurações de hardware , desde a construção do seu primeiro NAS até dominar os contêineres Docker., from building their first NAS to mastering Docker containers.

A memória da atenção pode ultrapassar os parâmetros do modelo porque os pesos permanecem fixos, enquanto as caches, ativações e áreas de trabalho dependentes dos tokens aumentam com o contexto e a concorrência.

Um modelo quantizado pode caber confortavelmente na RAM ou VRAM de um servidor doméstico, mas prompts longos, vários utilizadores em casa, entradas multimodais ou lotes grandes podem ainda causar pressão sobre a memória. O ficheiro do modelo descreve os pesos persistentes, não o conjunto de trabalho completo da inferência. A atenção cria estado específico de cada pedido para todos os tokens retidos e pode exigir buffers temporários cujo pico depende do runtime. As secções abaixo distinguem a memória fixa dos parâmetros da memória dependente da sequência e identificam quando esta última se torna o verdadeiro limite de capacidade.

Os parâmetros do modelo formam uma base fixa após o carregamento

Os pesos do modelo ocupam uma quantidade previsível de memória quando o seu número e formato numérico são conhecidos. Um modelo de quatro bits utiliza menos armazenamento para os parâmetros do que uma versão de oito bits ou de ponto flutuante, embora os metadados do runtime e as escalas acrescentem alguma sobrecarga.

A arquitetura Transformer utiliza os mesmos parâmetros aprendidos para um prompt curto e para um prompt longo. A dimensão ocupada pelos parâmetros não duplica simplesmente porque o utilizador adiciona mais contexto.

Esta base fixa explica por que razão o tamanho do ficheiro do modelo é útil para uma verificação inicial de compatibilidade. Não é uma estimativa completa da memória máxima necessária para a inferência.

A atenção completa pode criar trabalho intermédio que cresce com o quadrado da sequência

A autoatenção convencional compara as posições dos tokens entre si. Se uma implementação materializar grandes matrizes de pontuações e probabilidades de atenção, as suas dimensões crescem com o quadrado do comprimento da sequência.

O FlashAttention identifica a memória de atenção quadrática como um problema central das sequências longas e evita armazenar a matriz completa, calculando a atenção em blocos.

Por isso, os kernels modernos e otimizados de inferência podem utilizar muito menos memória temporária do que a fórmula ingénua sugere. O trabalho de atenção subjacente continua a tornar-se mais exigente com sequências longas, mas a escolha da implementação determina se a matriz completa, com crescimento quadrático, aparece na memória do dispositivo.

A área de trabalho máxima também pode variar consoante a versão do kernel, a forma do lote, a dimensão das cabeças e o facto de o runtime recorrer ou não a um caminho de atenção menos eficiente.

A cache KV acrescenta estado persistente para cada token retido

A descodificação autoregressiva armazena as chaves e os valores dos tokens anteriores para que o modelo não tenha de recalcular todo o prefixo antes de gerar cada token seguinte.

O PagedAttention trata o crescimento da cache KV como uma limitação principal da memória ao servir modelos. A sua capacidade aumenta com os tokens retidos, as camadas que produzem a cache, as dimensões de chave e valor, a precisão e o número de sequências ativas.

Ao contrário de uma matriz de atenção temporária, este estado tem de permanecer disponível durante toda a conversa ativa. Um contexto longo pode, portanto, continuar a consumir memória mesmo quando o modelo produz apenas um novo token de cada vez.

A explicação da ZimaSpace sobre a margem de memória para IA distingue o armazenamento do modelo da capacidade adicional necessária para o contexto e para vários utilizadores em simultâneo.

-15% OFF

Os pedidos simultâneos multiplicam o estado dinâmico da atenção

Vários utilizadores podem partilhar uma única cópia dos pesos do modelo, mas os seus prompts privados, tokens gerados e ramificações da cache KV permanecem normalmente separados.

O vAttention utiliza alocação física dinâmica porque os comprimentos dos pedidos e os tempos de conclusão não são conhecidos quando o serviço começa.

Um servidor que suporta uma conversa de 32 000 tokens pode não suportar quatro conversas desse tipo em simultâneo. O tamanho do lote e o número de utilizadores multiplicam o estado dependente dos tokens, embora o total de parâmetros do modelo permaneça inalterado.

A partilha de prefixos pode reduzir a duplicação quando os pedidos têm um prefixo em cache idêntico, mas as conversas domésticas divergentes continuam a exigir um estado de continuação independente.

As ativações e as reservas do runtime aumentam ainda mais o pico

O pré-preenchimento do prompt, a projeção multimodal, a descodificação especulativa, a captura de grafos, a conversão temporária de tensores e as áreas de trabalho das bibliotecas podem alocar memória para além dos pesos e da cache KV.

O FlashAttention-2 observa que a atenção continua a ser um gargalo para sequências longas, mesmo quando kernels melhores eliminam grandes intermediários materializados.

Os alocadores de memória com cache das frameworks podem manter blocos libertados para reutilização, pelo que as ferramentas do dispositivo podem apresentar uma grande ocupação do processo depois de concluído um pedido de pico. Essa reserva é diferente da memória dos tensores ativos, mas continua a limitar outro processo.

A memória mais elevada observada pode, por isso, ocorrer durante o pré-preenchimento ou a mudança de modelo, e não durante a descodificação estável de um token de cada vez.

As otimizações da atenção deslocam o limite, mas não o eliminam

A atenção Flash reduz a E/S temporária e o armazenamento de matrizes, a alocação paginada reduz a fragmentação da cache KV, uma precisão inferior da cache reduz os bytes por token e a atenção com consultas agrupadas utiliza menos cabeças de chave e valor.

A atenção com consultas agrupadas reduz a memória das cabeças de chave e valor, mantendo mais capacidade do que uma única cabeça de múltiplas consultas.

Janelas deslizantes, expulsão da cache, transferência para outro dispositivo e recuperação podem limitar ou deslocar o estado da atenção, mas cada uma destas opções altera a latência, o contexto acessível ou o comportamento das respostas.

Faça testes com toda a carga de trabalho prevista: precisão do modelo, comprimento real do prompt, limite de saída, tamanho do lote, utilizadores, tokens de visão e outros serviços locais. A memória da atenção ultrapassou a dos parâmetros quando reduzir o estado dos tokens ou a concorrência restaura a estabilidade sem alterar os pesos do modelo.

FAQ

A memória da atenção ultrapassa sempre a memória dos pesos do modelo?

Não. Prompts curtos de um único utilizador deixam frequentemente os pesos como o componente dominante. O estado da atenção torna-se dominante apenas quando o contexto, o processamento em lote ou a concorrência ultrapassam um limiar específico do modelo e do runtime.

O FlashAttention elimina a memória da cache KV?

Não. Reduz a computação da atenção e o tráfego temporário de memória. O serviço autoregressivo continua a precisar do estado retido de chaves e valores, a menos que o runtime o recalcule, expulse ou transfira.

A RAM do sistema pode resolver uma falta de memória para a atenção?

Pode suportar a inferência no CPU ou a transferência para outro dispositivo em runtimes compatíveis, mas mover o estado ativo através de uma ligação mais lenta pode aumentar a latência e reduzir a velocidade de geração.

Centro de Tecnologia e IA

Mais para Ler

Get More Builds Like This

Stay in the Loop

Get updates from Zima - new products, exclusive deals, and real builds from the community.

Stay in the Loop preferences

We respect your inbox. Unsubscribe anytime.