RotorQuant: Uma Nova Abordagem para Compressão de KV Cache
RotorQuant: Uma Nova Abordagem para Compressão de KV Cache
Introdução ao RotorQuant
O projeto RotorQuant representa um avanço significativo na compressão de KV cache através da rotação block-diagonal. Esta abordagem inovadora supera a TurboQuant da Google em todos os aspetos medidos, oferecendo melhor perplexidade (PPL), 28% mais rápido na decodificação, 5x mais rápido no prefill e 44x menos parâmetros.
O código está disponível no GitHub do scrya-com, proporcionando uma alternativa eficiente para quem necessita de compressão de cache em modelos de linguagem. A técnica baseia-se em rotores do grupo Clifford, especificamente Cl(3,0), implementando um arquitectura de rotor sandwich que reduz drasticamente o número de operações e parâmetros necessários.
Comparação com TurboQuant
Os benchmarks demonstram claramente a superioridade do RotorQuant face ao TurboQuant da Google. Em termos de perplexidade, o método iso3 atinge 6.91 versus 7.07 do turbo3, o que indica qualidade superior na geração de texto.
Na velocidade de decodificação, RotorQuant alcança 119 tokens por segundo comparados com 93 tok/s do TurboQuant, representando um ganho de 28% mais rápido. No prefill, a diferença é ainda mais dramática: 3,822 tok/s versus 722 tok/s, ou seja, 5.3x mais rápido.
O aspeto mais impressionante reside na eficiência de parâmetros. RotorQuant utiliza apenas 128 parâmetros face aos 16,384 do TurboQuant, o que corresponde a 44x menos parâmetros mantendo melhor performance.
- Implementação actual: IsoQuant (Quaternion 4D) com 4 dimensões, 512 FMAs, 128 parâmetros
- Production ready: PlanarQuant (Givens 2D) com 2 dimensões, 256 FMAs, 128 parâmetros
- Research version: Cl(3,0) rotor sandwich com 3 dimensões, 2,400 FMAs, 372 parâmetros
- Google TurboQuant: WHT butterfly com 128 dimensões, 16,384 FMAs, 16,384 parâmetros
Poupança de Armazenamento
A compressão eficiente do RotorQuant traduz-se em poupanças substanciais de memória em diferentes tamanhos de contexto. Para um contexto de 8K, são 260 MB guardados. Com 32K de contexto, a poupança ascende a 1.04 GB.
Em contextos ainda maiores de 128K, RotorQuant permite economizar 4.16 GB de armazenamento. Estas poupanças resultam do processo de rotação que decorrelaciona vetores KV cache antes da quantização escalar.
O método funciona através de quatro passos fundamentais: normalização seguida de armazenamento separado das normas, rotação via block transform para quebrar correlações de coordenadas, quantização de cada coordenada para centroides Lloyd-Max, e inversão da rotação para reconstrução.
A inovação chave reside na decorrelação dos vetores KV cache através de rotação, o que permite quantização mais eficiente sem perda significativa de qualidade. A abordagem do RotorQuant representa um marco importante na otimização de modelos de linguagem para uso em produção.
Mais detalhes em : https://github.com/scrya-com/rotorquant