Início Tecnologia Nvidia diz que pode reduzir a memória LLM em 20x sem alterar...

Nvidia diz que pode reduzir a memória LLM em 20x sem alterar o peso do modelo

12
0

Os pesquisadores da Nvidia introduziram uma nova técnica que reduz drasticamente a quantidade de memória que os modelos de linguagem grandes precisam para rastrear o histórico de conversas – em até 20x – sem modificar o próprio modelo. O método, chamado KV Cache Transform Coding (KVTC)aplica ideias de formatos de compactação de mídia como JPEG para reduzir o cache de valores-chave por trás dos sistemas de IA multivoltas, reduzindo as demandas de memória da GPU e acelerando o tempo até o primeiro token em até 8x.

Para aplicativos empresariais de IA que dependem de agentes e contextos longos, isso se traduz em custos reduzidos de memória da GPU, melhor reutilização imediata e redução de até 8x na latência, evitando a necessidade de recalcular valores de cache KV perdidos.

Servir grandes modelos de linguagem em escala requer o gerenciamento de uma enorme quantidade de dados, especialmente para conversas múltiplas e longas sessões de codificação. Cada vez que um usuário adiciona um immediate, o sistema depende da memória armazenada para evitar recalcular todo o histórico de conversas do zero.

No entanto, esse consumo de memória cresce rapidamente, criando um grave gargalo em termos de latência e custos de infraestrutura.

Por que o cache KV se torna um gargalo em escala

Para potencializar aplicações de IA multivoltas, como assistentes de codificação ou aplicativos de bate-papo, grandes modelos de linguagem contam com um mecanismo conhecido como cache de valor-chave (KV). Este cache armazena as representações numéricas ocultas de cada token anterior em uma conversa. Como o modelo se lembra da conversa anterior, ele não precisa reprocessar de forma redundante todo o histórico do chat cada vez que o usuário envia um novo immediate.

No entanto, para aplicações de IA com tarefas de contexto longas, esse cache pode facilmente atingir vários gigabytes. À medida que os modelos aumentam e geram cadeias de raciocínio cada vez mais longas, o cache KV se torna um gargalo crítico para o rendimento e a latência do sistema.

Isso cria um desafio difícil para os ambientes de produção. Como os LLMs são altamente limitados pela memória durante a inferência, o atendimento a vários usuários simultaneamente é limitado pelo esgotamento da memória da GPU, e não pelo tempo de computação. “O gerenciamento eficaz do cache KV torna-se crítico, pois os caches ociosos devem ser rapidamente descarregados da memória da GPU para acomodar outros usuários e rapidamente restaurados para conversas retomadas”, disse Adrian Lancucki, engenheiro sênior de aprendizado profundo da Nvidia, ao VentureBeat. “Estes custos de infra-estrutura reflectem-se agora nos preços comerciais (por exemplo, como ‘armazenamento em cache imediato’) com encargos adicionais para armazenamento em cache.”

Até mesmo soluções comprometidas, como descarregar o cache para armazenamento de nível inferior, como memória de CPU ou SSDs, introduzem sobrecargas significativas na transferência de dados que podem saturar a largura de banda da rede e criar gargalos.

Uma solução comum é compactar o cache KV para que ele ocupe menos memória. No entanto, as soluções existentes muitas vezes não conseguem resolver o problema de forma holística. Ferramentas projetadas para compactar caches para transmissão em rede alcançam baixas taxas de compactação. Outros métodos de compactação exigem cálculos que consomem muitos recursos em tempo actual para cada solicitação do usuário. Enquanto isso, técnicas populares como quantização ou a esparsificação pode introduzir quedas de latência e precisão ou exigir alterações permanentes nos pesos do modelo, o que limita sua praticidade.

Em seu artigo, os pesquisadores da Nvidia observam que as abordagens existentes “raramente exploram a forte estrutura de baixa classificação dos tensores KV”. Isso significa que, apesar de seu enorme número de dimensões e gigabytes de tamanho, as informações reais subjacentes no cache KV são altamente correlacionadas e podem ser representadas com precisão usando muito menos variáveis. Explorar essa característica é o foco do KVTC.

Emprestando truques de codecs de mídia

Em alto nível, o KVTC aborda o gargalo da memória de IA pegando emprestado um conceito comprovado da mídia clássica: codificação de transformação, a metodologia que alimenta formatos familiares de compactação de imagem e vídeo, como JPEG. A estrutura reduz o espaço ocupado pelo cache por meio de um processo rápido e de várias etapas executado entre as fases de inferência para evitar a lentidão na geração actual do token. “Esta abordagem de ‘compressão de mídia’ é vantajosa para implantação empresarial porque não é intrusiva: não requer alterações nos pesos do modelo ou no código e opera perto da camada de transporte”, disse Lancucki.

Primeiro, o KVTC usa análise de componentes principais (PCA) para alinhar os recursos dos dados do cache KV com base em sua importância. PCA é uma técnica estatística frequentemente usado em aprendizado de máquina para tornar os modelos mais eficientes, isolando os recursos mais críticos dos dados e eliminando redundâncias. Esta parte do processo é realizada apenas uma vez durante uma fase inicial de calibração para cada modelo. Como a matriz de alinhamento do PCA é calculada off-line e reutilizada, ela não retarda o processo de compactação no momento da inferência para prompts individuais do usuário.

KVTC

Estrutura KVTC (fonte: arXiv)

Em seguida, o sistema usa um algoritmo de programação dinâmica para orçamentar automaticamente a quantidade de memória que cada dimensão de dados específica realmente precisa. Os componentes principais mais críticos obtêm alta precisão, enquanto os componentes finais menos importantes recebem menos bits ou recebem zero bits e são totalmente descartados.

Por fim, o pipeline pega esses dados quantizados e otimizados e os compacta em uma matriz de bytes, executando-os por meio de um codificador de entropia chamado DEFLATE. Como esta etapa é executada em paralelo diretamente na GPU usando a biblioteca nvCOMP da Nvidia, ela opera em velocidades muito altas.

Para descompactar os dados quando o usuário retornar, o KVTC simplesmente executa os cálculos ao contrário. Para acelerar o processo, ele realiza o trabalho pesado de descompressão em pedaços, camada por camada. Isso permite que o modelo de IA comece a calcular a próxima resposta antecipadamente, usando o primeiro bloco descompactado, enquanto os blocos subsequentes são descompactados em segundo plano.

Arquitetura de serviço KVTC

Arquitetura de implantação KVTC (fonte: arXiv)

Compressão de 20x, penalidade de precisão inferior a 1%

Os pesquisadores da Nvidia testaram o KVTC em uma lista diversificada de modelos que variam de parâmetros de 1,5B a 70B, incluindo a família Llama 3, Mistral NeMo e os modelos Qwen 2.5 destilados R1 com alto raciocínio. Eles avaliaram esses modelos em uma variedade de benchmarks, incluindo desafios complexos de matemática e codificação, como MATH-500 e LiveCodeBench, bem como tarefas intensivas de recuperação de contexto longo, como “Needle In A Haystack” e recuperação de valores-chave.

Eles compararam o KVTC com várias linhas de base populares: métodos de remoção de tokens (por exemplo, H2O e TOVA), técnicas de quantização pesada (por exemplo, KIVI e GEAR) e xKV (uma técnica de compressão imediata baseada em decomposição de valor singular).

Com uma taxa de compactação efetiva de 20x, o KVTC manteve consistentemente o desempenho com menos de um ponto percentual de penalidade de precisão em comparação com os modelos originais não compactados na maioria das tarefas. Quando os pesquisadores levaram o sistema a limites extremos de compressão de até 32x e 64x, o KVTC manteve-se notavelmente bem.

Por outro lado, linhas de base populares como KIVI e GEAR começaram a sofrer enorme degradação de precisão com uma taxa de compactação de apenas 5x, especialmente em tarefas de contexto longo. Métodos padrão de remoção de cache, como H2O e TOVA, mostraram-se totalmente inadequados como compressores genéricos, quebrando efetivamente quando solicitados a recuperar informações contextuais profundas.

Desempenho do KVTC

O KVTC preserva a precisão nos principais benchmarks enquanto compacta significativamente o cache KV (fonte: arXiv)

Considere a implantação de um modelo de raciocínio menor como Qwen 2.5 1.5B para um assistente de codificação. Normalmente, este modelo requer 29 KB de memória para cada token. Usando uma configuração de compactação de 8x, o KVTC reduziu esse espaço para aproximadamente 3,2 KB por token, enquanto sofreu uma queda insignificante de 0,3 ponto percentual na precisão da codificação.

Para arquitetos corporativos, a decisão de quando implantar essa técnica depende muito do caso de uso. “O KVTC é otimizado para cenários de longo contexto e múltiplas voltas”, disse Lancucki. Ele apontou assistentes de codificação, fluxos de trabalho de raciocínio agente iterativo – especialmente ao aguardar resultados de ferramentas de alta latência – e RAG iterativo como aplicações ideais. “No entanto, os usuários devem ignorar o KVTC para conversas curtas”, acrescentou, porque a janela deslizante não compactada dos tokens mais recentes domina a sequência em interações mais curtas, evitando taxas de compressão significativas.

O KVTC é altamente portátil e uma implementação otimizada será em breve integrada ao KV Block Supervisor (KVBM) dentro da estrutura do Dynamo, tornando-o compatível com mecanismos de inferência de código aberto populares como o vLLM.

Mais importante ainda para a experiência do usuário, o KVTC reduz consideravelmente o tempo até o primeiro token (TTFT), o atraso entre o envio de um immediate e o modelo que gera o token da primeira resposta. Em um immediate de 8.000 tokens, um modelo vanilla 12B rodando em uma GPU Nvidia H100 leva cerca de 3 segundos para recomputar o histórico do zero. Enquanto isso, um sistema pode descompactar o cache KVTC em apenas 380 milissegundos, proporcionando uma redução de até 8x no tempo necessário para gerar o primeiro token.

Como o KVTC não altera a forma como o modelo presta atenção aos tokens, ele é teoricamente compatível com métodos de remoção de tokens como Esparsificação Dinâmica de Memória (DMS), outra técnica de compressão avançada. DMS é um método de remoção de token autorregressivo que otimiza a memória identificando e descartando inteiramente os tokens menos importantes da janela de contexto.

“Em princípio, o KVTC é complementar ao DMS”, afirmou Lancucki. “Enquanto o DMS despeja tokens individuais ao longo do eixo do tempo, o KVTC compacta os dados em cada posição separadamente.” No entanto, ele alertou que, embora tenham como alvo dimensões diferentes, “ainda não foi testado quais taxas de compressão podem ser alcançadas com KVTC em caches esparsos”.

À medida que os modelos continuam a escalar nativamente para janelas de contexto de vários milhões de tokens, a necessidade de um gerenciamento robusto de memória só aumentará. “Dadas as semelhanças estruturais e os padrões recorrentes nos caches KV em várias arquiteturas de modelos, é provável o surgimento de uma camada de compressão padronizada e dedicada”, disse Lancucki. Apoiada por avanços de {hardware}, a infraestrutura de IA poderá em breve tratar a compactação de cache KV como uma camada invisível e padronizada, assim como a compactação de vídeo é para o streaming hoje.

fonte

DEIXE UMA RESPOSTA

Por favor digite seu comentário!
Por favor, digite seu nome aqui