← Últimos artigos
🤖 machine learning

A JoLT for the KV Cache: Near-Lossless KV Cache Compression via Joint Tucker and JL-Residual Allocation for LLMs

O JoLT alcança uma compressão de 2-3x quase sem perdas do cache KV em grandes modelos de linguagem ao aplicar uma decomposição de Tucker parcial nos eixos de token e de característica e restaurar a informação descartada por meio de um resíduo de baixa precisão rotacionado por Johnson-Lindenstrauss, tudo otimizado sob um orçamento de bytes unificado para manter o desempenho de base em perplexidade e tarefas subsequentes.

Autores originais: Rahul Krishnan, Volker Schulz

Publicado 2026-07-15
📖 6 min de leitura🧠 Leitura aprofundada

Autores originais: Rahul Krishnan, Volker Schulz

Artigo original sob licença CC BY 4.0 (http://creativecommons.org/licenses/by/4.0/). Esta é uma explicação gerada por IA do artigo abaixo. Não foi escrita nem endossada pelos autores. Para precisão técnica, consulte o artigo original. Ler aviso legal completo

Imagine que você está operando um cérebro de robô gigante e superinteligente (um Grande Modelo de Linguagem) tentando contar uma história. Para manter a história fluindo, o robô precisa se lembrar de cada palavra que já disse na conversa atual. Ele mantém essa memória em um "caderno" especial chamado KV Cache.

O problema é que, conforme a história fica mais longa, esse caderno fica enorme. Ele fica tão grande que começa a consumir toda a memória do robô, deixando tudo mais lento. É como tentar carregar uma biblioteca em uma mochila enquanto corre uma maratona; eventualmente, você para.

Cientistas tentaram encolher esse caderno antes. Alguns tentaram esmagar o conteúdo inteiro em uma caixa minúscula (quantização), enquanto outros tentaram resumir as páginas encontrando padrões em linhas ou colunas (métodos de baixo posto/low-rank). Mas os autores deste artigo, Rahul Krishnan e Volker Schulz, perceberam algo que esses outros métodos ignoraram: o caderno não é apenas uma pilha plana de papel. É um bloco 3D com três lados diferentes: Cabeças (diferentes formas de pensar), Tokens (as palavras) e Características (os detalhes).

Eles descobriram que dois desses lados estão repletos de coisas entediantes e repetitivas que podem ser esmagadas facilmente, mas os outros lados são únicos e não podem ser esmagados sem perder a capacidade cerebral do robô.

A Grande Descoberta: O Método "JoLT"

A equipe inventou um novo truque chamado JoLT (alocação conjunta de Tucker e resíduo JL). Pense nisso como um serviço de embalagem superinteligente para sua mochila.

  1. O Aperto Inteligente (Tucker Parcial): Em vez de tentar esmagar todo o bloco 3D, o JoLT olha para os dados e diz: "Ok, as 'Cabeças' e as 'Camadas' são únicas e preciosas; vamos deixá-las em paz. Mas os 'Tokens' e as 'Características' estão cheios de bobagem". Portanto, ele esmaga apenas esses dois lados específicos. É como pegar um travesseiro gigante e fofinho e retirar o ar apenas do meio, deixando as bordas resistentes intactas.
  2. A Rede de Segurança (Resíduo JL): Quando você esmaga um travesseiro, um pouco de ar escapa. Se você apenas deixá-lo assim, o travesseiro ficará achatado e inútil. O JoLT captura esse "ar escapado" (a informação perdida) e o armazena em uma rede de segurança minúscula e supereficiente chamada resíduo JL. Essa rede é tão boa em empacotar que consegue conter os detalhes perdidos em apenas alguns bits.
  3. O Equilíbrio Perfeito (Dual Lagrangiano): Aqui está a parte mágica. O robô tem um orçamento rigoroso de quanto espaço pode usar (digamos, 1 byte). O JoLT usa um "alocador inteligente" matemático para decidir exatamente quanto esmagar o travesseiro versus quanto espaço dar à rede de segurança. Ele percebe que algumas partes da memória (as "Chaves") são fáceis de esmagar, enquanto outras (os "Valores") são teimosas e precisam de mais espaço na rede de segurança. Ele move o orçamento dinamicamente para obter o melhor resultado.

O Que Eles Provaram (e o Que Não Provaram)

Os autores testaram isso em dois cérebros de robôs famosos: Mistral-7B (que usa um estilo de "Consulta Agrupada") e LLaMA-2-13B (que usa um estilo de "Multi-Cabeça").

  • A "Zona Livre": Eles encontraram um ponto ideal onde podiam encolher a memória em 2 a 3 vezes (2–3×) e o desempenho do robô não caía de forma alguma. Foi "quase sem perdas" (near-lossless).

    • Em testes como GSM8K (problemas matemáticos) e RULER (encontrar uma agulha num palheiro de texto), o robô comprimido obteve exatamente a mesma pontuação que o não comprimido, dentro da margem de ruído estatístico.
    • O erro na reconstrução da memória foi minúsculo: cerca de 0,009 para chaves e 0,006 para valores. Isso é aproximadamente 10 vezes melhor (uma ordem de magnitude) do que métodos anteriores, como a quantização de 4 bits ou o SVD entre camadas.
  • O "Abismo": Eles também descobriram um limite. Se você tentar esmagar a memória com muita força (além de 3×), as coisas ficam bagunçadas.

    • O robô Mistral degradou-se gradualmente, perdendo um pouco de desempenho à medida que era esmagado.
    • O robô LLaMA, no entanto, atingiu um "abismo" entre 4× e 5× de compressão. Seu desempenho despencou, caindo de uma pontuação de 5,39 para 9,07 (um salto enorme na perplexidade, o que significa que ele ficou muito pior na previsão de palavras).

A Versão Rápida: FlashJoLT

Calcular o aperto perfeito leva tempo. Para resolver isso, eles criaram o FlashJoLT. Em vez de fazer a matemática pesada perfeitamente todas as vezes, ele usa um atalho "randomizado" que adivinha os principais padrões rapidamente.

  • O Resultado: É de 5 a 13 vezes mais rápido ao comprimir a memória, mas a qualidade permanece exatamente a mesma da versão lenta e perfeita.

O Que Eles Descartaram

O artigo é muito claro sobre o que não funciona bem para este problema específico:

  • Esmagar tudo: Tentar comprimir os três lados (Cabeças, Tokens e Características) é uma má ideia. As "Cabeças" e as "Camadas" são únicas demais; esmagá-las prejudica o cérebro do robô.
  • Quantização de bits fixos: Apenas reduzir o número de bits para cada número (como forçar tudo para 4 bits) não consegue atingir o "ponto ideal" de 2–3× de compressão. Ou não comprime o suficiente ou perde muita qualidade.
  • Solução única para todos: Você não pode tratar "Chaves" e "Valores" da mesma forma. Os "Valores" são muito mais difíceis de comprimir (2–3× mais difíceis), por isso precisam de um orçamento de espaço diferente.

A Conclusão

Os autores mediram isso em hardware real (uma GPU A100) e descobriram que o JoLT cria uma maneira quase sem perdas de encolher a memória em 2–3 vezes sem prejudicar a inteligência do robô.

No entanto, eles são cuidadosos ao dizer que isso não é uma solução mágica para tudo.

  • Funciona muito bem para a "zona livre" (2–3×), mas forçar além disso em certos tipos de robôs (como o LLaMA) causa uma queda brusca na qualidade.
  • Embora o armazenamento da memória seja menor, o robô ainda precisa fazer algum cálculo para "desesmagar" a memória toda vez que fala. Eles sugerem que, para tornar isso verdadeiramente prático para o uso no mundo real, os engenheiros precisam construir chips de computador especiais (kernels fundidos) que possam ler a memória esmagada diretamente sem precisar descompactá-la primeiro.

Em resumo, o JoLT é um truque de empacotamento brilhante e baseado em matemática que economiza muito espaço para conversas longas, mas tem um limite e precisa de uma pequena ajuda do hardware futuro para rodar em velocidade total.

Afogado em artigos na sua área?

Receba digests diários dos artigos mais recentes que correspondam às suas palavras-chave de pesquisa — com resumos técnicos, no seu idioma.

Experimentar Digest →