- Um conjunto de algoritmos de quantização que resolve de forma fundamental o problema de overhead de memória em vetores de alta dimensão, aplicável tanto à compressão do cache chave-valor de LLMs quanto à busca vetorial
- Estrutura de compressão em 2 etapas: primeiro comprime os dados com alta qualidade usando PolarQuant e depois elimina o erro residual com apenas 1 bit por meio do algoritmo QJL
- Quantiza o cache chave-valor em até 3 bits sem treinamento nem fine-tuning e sem perda de precisão do modelo, alcançando até 8x de ganho de desempenho em GPUs H100
- Também registra taxas de recall ideais em busca vetorial sem grandes codebooks nem tuning por dataset, superando métodos SOTA existentes
- Uma contribuição algorítmica fundamental com eficiência comprovável próxima ao limite teórico inferior, com potencial papel central em modelos como Gemini e em infraestrutura de busca semântica em larga escala
Contexto de vetores e quantização
- Vetores são a forma fundamental pela qual modelos de IA entendem e processam informação, e vetores de alta dimensão representam informações complexas como características de imagem, significado de palavras e atributos de datasets
- Vetores de alta dimensão consomem muita memória, o que cria gargalos no cache chave-valor (uma folha de referência digital rápida que armazena informações frequentes com rótulos simples para recuperação imediata)
- Quantização vetorial é uma técnica clássica de compressão de dados para reduzir o tamanho de vetores de alta dimensão, contribuindo para acelerar a busca vetorial e aliviar gargalos no cache chave-valor
- A quantização vetorial tradicional tem um overhead de memória intrínseco porque precisa calcular e armazenar constantes de quantização com precisão total para cada pequeno bloco de dados, gerando um custo adicional de 1 a 2 bits por número e anulando parcialmente o objetivo da quantização
Como o TurboQuant funciona
- TurboQuant é um método de compressão que alcança grande redução do tamanho do modelo sem perda de precisão, com suporte tanto para compressão de cache chave-valor quanto para busca vetorial
- É composto por duas etapas centrais:
Etapa 1: compressão de alta qualidade (método PolarQuant)
- Faz uma rotação aleatória nos vetores de dados para simplificar a estrutura geométrica dos dados e depois aplica individualmente quantizadores padrão de alta qualidade a cada parte do vetor
- Nessa etapa, a maior parte dos bits é usada para capturar os principais conceitos e magnitudes do vetor original
Etapa 2: eliminação do erro oculto
- Aplica o algoritmo QJL ao pequeno erro remanescente da etapa 1 usando apenas 1 bit de capacidade residual de compressão
- O QJL funciona como um verificador matemático de erros e remove viés, produzindo pontuações de atenção mais precisas
QJL: técnica de 1 bit com overhead zero
- Utiliza a transformação de Johnson-Lindenstrauss para reduzir dados de alta dimensão preservando as distâncias e relações essenciais entre pontos de dados
- Reduz cada número do vetor resultante a um único bit de sinal (+1 ou -1), resultando em overhead de memória zero
- Para manter a precisão, usa um estimador especial que equilibra estrategicamente consultas em alta precisão com dados simplificados em baixa precisão
- Com isso, calcula com precisão as pontuações de atenção que determinam quais partes da entrada o modelo deve considerar importantes ou pode ignorar
PolarQuant: um novo "ângulo" para compressão
- Uma abordagem que resolve o problema de overhead de memória de uma forma completamente diferente
- Em vez de coordenadas padrão (X, Y, Z), converte o vetor em coordenadas polares — semelhante a trocar "3 quarteirões a leste e 4 ao norte" por "5 quarteirões na direção de 37 graus"
- O resultado da conversão é composto por dois tipos de informação: o raio, que representa a intensidade dos dados centrais, e o ângulo, que representa a direção e o significado dos dados
- Como o padrão dos ângulos é conhecido e altamente concentrado, ele mapeia os dados em uma grade fixa "circular" com fronteiras já conhecidas, em vez de uma grade "retangular" com fronteiras sempre variáveis, eliminando a etapa cara de normalização de dados
- Em um vetor de dimensão d, agrupa pares de coordenadas e os mapeia para um sistema polar, reúne os raios em pares e repete transformações polares recursivas até destilar o resultado em um único raio e um conjunto de ângulos descritivos
Experimentos e resultados
Desempenho em benchmarks de contexto longo
- Avaliado com LLMs open source (Gemma, Mistral) em benchmarks padrão de contexto longo como LongBench, Needle In A Haystack, ZeroSCROLLS, RULER e L-Eval
- TurboQuant atingiu pontuação ideal tanto em dot product distortion quanto em recall, ao mesmo tempo em que minimizou a pegada de memória do chave-valor
- No modelo Llama-3.1-8B-Instruct, mostrou desempenho robusto em várias tarefas, como perguntas e respostas, geração de código e sumarização, frente ao baseline KIVI
Tarefa Needle-in-Haystack
- Em testes de encontrar informações específicas em grandes volumes de texto, o TurboQuant alcançou resultados downstream perfeitos em todos os benchmarks
- Reduziu o tamanho da memória chave-valor em pelo menos 6x
- O PolarQuant também ficou em nível quase sem perdas nessa tarefa
Desempenho em runtime
- Quantiza o cache chave-valor em 3 bits sem treinamento nem fine-tuning, sem comprometer a precisão do modelo
- Alcança runtime mais rápido do que o LLM original, com implementação extremamente eficiente e overhead de runtime desprezível
- O TurboQuant de 4 bits entregou até 8x de ganho de desempenho no cálculo de logits de atenção em comparação com chaves não quantizadas em 32 bits, em GPU H100, medido contra um baseline otimizado em JAX
Desempenho em busca vetorial
- Avaliado em busca vetorial de alta dimensão em comparação com métodos SOTA como PQ e RabbiQ
- Usa a taxa de recall 1@k, que mede com que frequência o algoritmo captura, entre os top-k aproximados, o verdadeiro melhor resultado de produto interno
- Em comparação com baselines que usam grandes codebooks ineficientes e tuning por dataset, o TurboQuant registrou taxas de recall consistentemente superiores
- No dataset GloVe (d=200), alcançou a melhor taxa 1@k recall frente a vários baselines modernos de quantização
- Em modo data-oblivious, fornece taxa de distorção quase ótima, preservando a precisão de modelos muito mais pesados com a eficiência de um sistema de 3 bits
Perspectivas futuras
- TurboQuant, QJL e PolarQuant não são apenas soluções práticas de engenharia, mas contribuições algorítmicas fundamentais sustentadas por fortes provas teóricas
- Têm eficiência comprovável e operam próximo ao limite teórico inferior, o que os torna robustos e confiáveis para sistemas críticos em larga escala
- Além de resolver o gargalo do cache chave-valor em modelos como Gemini, o impacto da quantização vetorial online eficiente pode se estender muito além
- À medida que a busca moderna evolui de palavras-chave para entendimento de intenção e significado, a busca vetorial se torna essencial para encontrar os itens semanticamente mais similares em bancos com bilhões de vetores
- O TurboQuant permite construir e consultar índices vetoriais em larga escala com memória mínima, tempo de pré-processamento quase zero e precisão SOTA, tornando a busca semântica em escala Google mais rápida e eficiente
4 comentários
"Rotação é um poder infinito. Acredite nisso."
Presto minha homenagem.
Fiz login por causa deste comentário.
Comentários do Hacker News
A pesquisa sobre compressão de cache KV é realmente um avanço interessante
Ainda assim, é uma pena que faltem citações ao mecanismo matemático central nas pesquisas relacionadas
A técnica de aplicar rotação geométrica para lidar com geometria de alta dimensão e então realizar quantização extrema foi proposta pela primeira vez no artigo da nossa equipe na NeurIPS 2021, “DRIVE”
Com essa abordagem baseada em rotação e um mecanismo de correção de viés, alcançamos estimação ótima da média da variância
Depois, também apresentamos esse conteúdo em um seminário a convite do Google, e considerando a semelhança teórica entre TurboQuant e PolarQuant, espero que versões futuras passem a citar os trabalhos anteriores
Ou seja, quero perguntar se é uma forma de comprimir mais armazenando uma matriz diagonal e uma nova base
Gostaria que explicassem qual é a relação entre este estudo e MHLA
Ideias assim costumam ser redescobertas a cada poucos anos; por exemplo, já havia uma abordagem semelhante neste artigo de 2017
Mas também é possível que os pesquisadores tenham chegado independentemente a uma ideia parecida quando o trabalho já estava bastante avançado
Boas ideias tendem a ser alcançadas naturalmente por quem entende profundamente o problema
Não entendi a explicação de que “o TurboQuant gira os dados aleatoriamente para simplificar a geometria”
Não há garantia de que uma rotação sempre produza uma forma mais simples, certo?
E a parte que diz “reduz dados de alta dimensão com uma transformação Johnson–Lindenstrauss e representa cada vetor com bits de sinal” também não convence, porque é difícil aceitar que um único valor booleano preserve informação relacional
Surgem ativações outlier em algumas dimensões, e pelas características do otimizador Adam esse fenômeno se intensifica
Como artigos relacionados, vale consultar SmoothQuant e Privileged Basis
Isso reduz o aprendizado de regras desnecessárias e estabiliza a otimização
Ou seja, evita que o modelo aprenda regras triviais como “se um determinado dígito em certa posição de uma dimensão específica for 5, então é um gato”
Ao multiplicar pela matriz de rotação, os dados passam a se distribuir de forma mais uniforme, permitindo uma quantização mais eficiente
Depois, o algoritmo Lloyd–Max otimiza os limites e os valores de reconstrução, e o viés (bias) restante é corrigido com 1 bit
Assim, é possível manter alta precisão com poucos bits
Por exemplo, se você converter valores de ponto flutuante para outra unidade (bel → decibel), eles podem ser representados como valores mais parecidos entre si, o que facilita a compressão
Ou seja, é o processo de trazer dados distantes de volta para perto do centro
Além disso, como cada dimensão é codificada individualmente, o vetor inteiro não é reduzido a um único booleano
Este post de blog é de baixa qualidade
Os eixos deste gráfico estão rotulados incorretamente, e esta visualização em vídeo também não transmite em nada o conceito de Polar Quantization
Outro gráfico começa o eixo em 48, exagerando a diferença real
No geral, a confiabilidade do material visual e a qualidade da comunicação deixam a desejar
Alguém já está implementando isso no llama.cpp
Veja este commit relacionado
Espera-se que o teorema de Johnson–Lindenstrauss continue valendo, de modo que a quantização independente de cada coordenada permaneça teoricamente válida
Não tenho muito conhecimento de domínio, mas a estrutura parece clara
Há uma boa chance de isso ser incorporado à branch principal em 4 a 6 semanas
Há uma animação que explica o TurboQuant de forma intuitiva
Aqui vai um resumo organizado em nível de graduação
O ponto central é quantizar o cache KV minimizando a perda de informação
Como a maioria dos vetores se concentra perto do equador de uma esfera de alta dimensão, a rotação uniformiza a distribuição e aumenta a preservação de entropia
O PolarQuant tentou isso com transformação em coordenadas polares, mas o TurboQuant simplifica a ideia e adiciona a correção de viés do QJL
No fim, ele alcança compressão altamente eficiente com PolarQuant + QJL + correções práticas
O post de blog tem muitos erros e é confuso
O codebook de coordenadas hiperpolares do PolarQuant ainda permanece em parte no TurboQuant
Este texto está entre os piores já vistos na explicação de componentes de IA
Quase não há contexto técnico
Menciona o teorema de Johnson–Lindenstrauss, mas não explica concretamente a ligação
Por exemplo, explicar “3 quadras a leste, 4 quadras ao norte” como “ande 5 quadras num ângulo de 37 graus” passa uma impressão de analogia de ensino fundamental
Uma implementação independente em PyTorch já foi publicada
turboquant-pytorch
O blog foi publicado recentemente, mas o artigo foi enviado ao arXiv há quase um ano
Fico curioso se isso já foi aplicado em modelos como o Gemini e, se sim, se também poderá reduzir o custo de RAM em uso pessoal
Impressiona a velocidade com que a pesquisa em compressão está virando aplicação prática
Assim como, em formatos de imagem, AVIF e JPEG XL derivaram de pesquisas em codecs de vídeo, as técnicas de quantização para IA também têm grande chance de chegar em breve a ambientes reais de inferência
Alguns conceitos, como o espaço de cor XYB, são compartilhados, e imagino que nos LLMs também será necessário um tipo semelhante de engenharia sob medida