Huawei apresenta o SINQ: quantização de código aberto para LLMs mais eficientes

11 min de leitura
Huawei apresenta o SINQ: quantização de código aberto para LLMs mais eficientes

Por que o SINQ importa para a implantação de LLMs no dia a dia

Modelos de linguagem de grande porte consomem muita memória. Essa é uma das razões pelas quais a execução de modelos avançados costuma exigir GPUs premium de data centers e nós de nuvem caros. O Laboratório de Sistemas de Computação da Huawei, em Zurique, apresentou o SINQ, um novo método de quantização que busca mudar esse cenário. A abordagem, chamada de Sinkhorn Normalized Quantization, reduz o uso de memória com perda mínima na qualidade das respostas e foi disponibilizada como código aberto sob a licença Apache 2.0. A equipe apresenta o SINQ como rápido, sem necessidade de calibração e simples de integrar aos fluxos de trabalho existentes com modelos.

Conteúdo
  1. Por que o SINQ importa para a implantação de LLMs no dia a dia
  2. O que diferencia o SINQ dos métodos de quantização anteriores
  3. Economia de memória, velocidade e qualidade nos testes
  4. Impacto nos custos de hardware e nuvem
  5. O que os desenvolvedores podem usar hoje
  6. Aspectos técnicos em detalhes
  7. Escalonamento em dois eixos
  8. Normalização de Sinkhorn-Knopp
  9. Projeto sem calibração
  10. Limitações e considerações práticas
  11. Por que isso importa para além de uma empresa
  12. Principais pontos

A quantização reduz o número de bits usados para representar os pesos do modelo. Passar de números de ponto flutuante de 16 ou 8 bits para inteiros de 4 bits pode reduzir a memória em mais da metade. É difícil conseguir essa economia sem prejudicar a precisão, especialmente abaixo de 8 bits. A principal proposta do SINQ é manter a qualidade em níveis baixos de precisão, inclusive com 4 bits e, em alguns casos, 3 bits, além de ser mais rápido de aplicar do que muitos métodos conhecidos.

Nos modelos e arquiteturas testados pelos autores, o SINQ reduz o uso de memória em cerca de 60% a 70%. Essa redução permite executar muitos modelos em uma única GPU de consumo, como uma Nvidia GeForce RTX 4090 com 24 GB de memória, sem precisar de GPUs corporativas como A100 ou H100. Em cargas de trabalho na nuvem, instâncias mais baratas podem dar conta de tarefas de inferência de longa duração, o que pode representar uma economia de milhares de dólares ao longo do tempo. Para laboratórios, startups e entusiastas, fica mais fácil executar modelos capazes em uma estação de trabalho.

Publicidade

O que diferencia o SINQ dos métodos de quantização anteriores

A maioria dos métodos de quantização de LLMs em uso se aplica apenas aos pesos. Os pesos são os parâmetros aprendidos em cada camada e representam a maior parte do tamanho do modelo. Também é possível quantizar as ativações, mas isso costuma acrescentar complexidade e pode afetar o tempo de execução. Muitas abordagens amplamente usadas trocam tempo de computação durante uma etapa de preparação, chamada calibração, pela busca de fatores de escala que minimizem o erro introduzido pela quantização. Essa calibração usa uma amostra de dados e passagens adicionais pelo modelo. Ela pode melhorar a qualidade, mas leva tempo, exige uma seleção cuidadosa de prompts e complica os fluxos de processamento.

O SINQ segue outro caminho. Ele introduz duas ideias interligadas que buscam manter a distribuição dos pesos bem comportada antes de arredondá-los para uma precisão menor. Primeiro, o escalonamento em dois eixos aplica vetores de escala distintos às linhas e às colunas de uma matriz de pesos. Isso oferece um controle mais preciso do que usar uma única escala por tensor ou por canal. A técnica distribui o erro de modo a reduzir o impacto de valores atípicos e desequilíbrios locais.

Em segundo lugar, o SINQ usa um procedimento inspirado na normalização de Sinkhorn-Knopp. O algoritmo alterna normalizações simples para equilibrar as estatísticas das linhas e colunas. No SINQ, o método normaliza o desvio padrão das linhas e colunas para que nenhuma parte da matriz de pesos domine. Essa etapa de equilíbrio melhora a resposta dos pesos à quantização e reduz o erro geral sem exigir dados de calibração por camada, que são custosos.

Publicidade

Economia de memória, velocidade e qualidade nos testes

Os autores relatam uma economia consistente de memória, entre 60% e 70% em comparação com pesos de precisão total, com uma precisão próxima à do modelo original em diversas arquiteturas. Na prática, isso pode reduzir o uso de memória de um modelo que antes precisava de mais de 60 GB para cerca de 20 GB. Em GPUs convencionais, essa diferença pode determinar se o modelo cabe na memória ou se precisa recorrer à lenta RAM do sistema.

A velocidade de quantização importa tanto na pesquisa quanto na produção. Nos testes relatados, o SINQ quantiza modelos aproximadamente duas vezes mais rápido que o HQQ e mais de 30 vezes mais rápido que o AWQ. Para equipes que fazem iterações com modelos, essa diferença pode transformar um pré-processamento de várias horas em uma etapa mais rápida, que cabe no ciclo de desenvolvimento.

A qualidade é acompanhada por métricas como perplexidade e taxa de alterações (flip rate). A perplexidade mede a capacidade de um modelo de linguagem de prever textos. A taxa de alterações conta com que frequência os principais tokens mudam após a quantização. Em diferentes benchmarks, o SINQ reduz a perplexidade em comparação com outros métodos de referência sem calibração e diminui a taxa de alterações, o que indica respostas mais estáveis. O método também funciona com esquemas de quantização não uniformes e pode ser combinado com calibração caso um projeto queira aumentar ainda mais a precisão.

Publicidade

Impacto nos custos de hardware e nuvem

O custo da inferência aumenta com o uso de memória. Um modelo que cabe em uma única GPU dispensa configurações caras de paralelismo de modelos e a sobrecarga de rede. As reduções do SINQ permitem executar muitos modelos de médio e grande porte em uma única placa de consumo com bastante memória. Para operadores que antes dependiam de nós com A100 ou H100, a possibilidade de atender às demandas usando GPUs mais acessíveis pode reduzir as contas mensais e liberar placas de ponta para treinamento.

Usuários de nuvem podem escolher instâncias menores com GPU ou executar mais modelos simultaneamente por nó. Em tarefas de longa duração, como assistentes de chat ou serviços de geração aumentada por recuperação, o uso de GPUs mais baratas pode economizar milhares de dólares ao longo de semanas e meses. Clusters locais menores também se tornam viáveis para equipes que preferem manter os dados dentro da organização.

Há ainda benefícios secundários em latência e consumo de energia. Menos dispositivos, menos chamadas entre nós e menos tráfego de memória entre o host e o dispositivo podem reduzir o tempo de resposta e o consumo de energia. O efeito acumulado é uma estrutura de atendimento mais enxuta, com menos componentes.

Publicidade

O que os desenvolvedores podem usar hoje

O SINQ está disponível como código aberto sob a licença Apache 2.0. A versão inclui o código de implementação, instruções para quantizar modelos de repositórios populares e ferramentas para salvar e carregar pesos quantizados. O pacote oferece recursos de avaliação para que as equipes meçam a perplexidade e a taxa de alterações antes da implantação. Também disponibiliza parâmetros para que os profissionais ajustem o método a diferentes hardwares e metas de precisão.

Os autores afirmam que planejam lançar modelos pré-quantizados e pretendem integrar a ferramenta ao ecossistema Hugging Face Transformers. Isso simplificaria a adoção, permitindo que os desenvolvedores carreguem um ponto de verificação quantizado usando APIs conhecidas. Equipes que gerenciam suas próprias estruturas de inferência podem começar quantizando os pesos e, em seguida, conectar os resultados a kernels compatíveis com formatos de armazenamento de 4 ou 3 bits no ambiente de execução escolhido.

Aspectos técnicos em detalhes

O SINQ foi projetado para funcionar como uma etapa plug and play no fluxo de preparação de modelos. O objetivo é ajustar as matrizes de pesos para que uma representação de baixa precisão preserve a estrutura importante para a inferência e, depois, converter esses pesos ajustados em formatos compactos de números inteiros.

Escalonamento em dois eixos

O escalonamento tradicional por tensor ou por canal aplica um único fator em uma direção. O escalonamento em dois eixos aplica um vetor às linhas e outro às colunas de cada matriz de pesos. Essa separação ajuda quando algumas linhas contêm valores atípicos ou quando certas colunas apresentam maior variância. Ao normalizar as duas direções, o método distribui o erro de quantização de maneira mais uniforme pela matriz. O resultado são menos picos acentuados de erro e uma preservação maior das magnitudes relativas dos pesos.

Normalização de Sinkhorn-Knopp

Sinkhorn-Knopp é um procedimento iterativo clássico que alterna normalizações simples até atingir um estado de equilíbrio. No SINQ, o objetivo não é obter uma matriz duplamente estocástica, mas equilibrar os desvios padrão das linhas e colunas. O algoritmo redimensiona repetidamente linhas e colunas para alinhar seus desvios padrão a valores-alvo. Quando a matriz está equilibrada nesse sentido, a quantização opera sobre uma distribuição de pesos com menos extremos, o que reduz o erro de arredondamento. O procedimento é rápido, acrescenta pouca sobrecarga em comparação com etapas de calibração mais longas e dispensa um conjunto de dados para calibração.

Projeto sem calibração

As etapas de calibração exigem selecionar um conjunto de prompts, executar o modelo para coletar estatísticas e, então, calcular as escalas. Isso acrescenta complexidade e pode enviesar os resultados caso o conjunto de calibração não corresponda ao uso em produção. O SINQ dispensa essa etapa ao trabalhar diretamente com as estatísticas dos pesos. Para muitas equipes, eliminar a calibração simplifica a automação e a reprodutibilidade. Se um projeto ainda precisar de calibração, o ajuste feito pelo SINQ pode ser combinado com uma busca de calibração, oferecendo outra forma de maximizar a precisão.

Limitações e considerações práticas

A maior parte dos ganhos relatados vem da quantização apenas dos pesos. As ativações e o cache de chave e valor (KV) ainda consomem memória durante a geração, especialmente com prompts e respostas longos. Alguns ambientes de execução oferecem quantização de ativações e compactação do cache KV, mas essas etapas trazem suas próprias desvantagens. As equipes devem medir o uso de memória e a latência de ponta a ponta, não apenas o tamanho do modelo em disco.

O suporte do ambiente de execução é importante. Para obter ganhos de velocidade durante a inferência, os kernels precisam ler com eficiência pesos compactados de 4 ou 3 bits. Mecanismos populares, como llama.cpp, TensorRT LLM, vLLM e outros, evoluem rapidamente, mas nem todas as combinações de precisão, kernel de atenção e arquitetura de GPU estão igualmente maduras. Antes de levar um serviço à produção, teste a vazão, a latência e a estabilidade na configuração exata, incluindo o tamanho do lote e o comprimento do contexto.

Uma precisão muito baixa pode ser um desafio para determinadas tarefas. Geração de código, uso de ferramentas e saídas estruturadas podem ser mais sensíveis do que conversas informais. Métricas como perplexidade são úteis, mas os testes em produção devem incluir a precisão nas tarefas, o estilo das respostas e verificações de segurança. Se um caso de uso estiver no limite, o uso de precisão mista ou de maior precisão em camadas específicas pode preservar a qualidade e manter boa parte da economia de memória.

Por que isso importa para além de uma empresa

A quantização se tornou um alicerce para a implantação prática de LLMs. Um método de código aberto que seja rápido, dispense calibração e funcione bem com baixa precisão beneficia todo o ecossistema. Uma menor ocupação de memória amplia o acesso a modelos capazes para a educação, projetos cívicos e pequenas empresas. A abordagem também reduz a pressão sobre as escassas GPUs de ponta, liberando capacidade para treinamento e pesquisa.

A competição em ferramentas de inferência está se acelerando. Métodos como o SINQ podem ser combinados com kernels de atenção eficientes, caches KV paginados e escalonadores otimizados para gerar mais tokens por segundo por dólar. O resultado não é apenas um serviço mais barato. Também há mais opções para equipes que valorizam a privacidade, o processamento local e o controle sobre sua estrutura tecnológica.

Principais pontos

  • O SINQ, da Huawei, é um método de quantização de pesos de LLMs disponibilizado como código aberto sob a licença Apache 2.0
  • Segundo os resultados divulgados, o SINQ reduz o uso de memória entre 60% e 70%, mantendo boa qualidade com 4 bits e, em alguns casos, 3 bits
  • O método dispensa calibração e busca simplificar a integração aos fluxos de trabalho existentes
  • O SINQ usa escalonamento em dois eixos e uma normalização no estilo Sinkhorn-Knopp para equilibrar as matrizes de pesos
  • Nos testes relatados, a quantização é cerca de duas vezes mais rápida que no HQQ e mais de 30 vezes mais rápida que no AWQ
  • As métricas de qualidade melhoram em relação aos métodos de referência sem calibração, com menor perplexidade e taxa de alterações
  • Modelos que antes precisavam de mais de 60 GB podem ser executados com cerca de 20 GB, permitindo implantação em uma única GPU de consumo, como a RTX 4090
  • As atualizações planejadas incluem integração ao Hugging Face Transformers e o lançamento de modelos pré-quantizados
Compartilhar esta matéria

Você também pode gostar