Quantização é uma técnica para reduzir a precisão numérica usada para representar os pesos de uma rede neural e, em alguns casos, suas ativações, a fim de diminuir o tamanho do modelo e reduzir o cálculo necessário para executá-lo. Redes neurais são tipicamente treinadas usando números de ponto flutuante de 32 bits ou 16 bits, mas muitos dos valores que um modelo treinado realmente precisa representar bem podem ser aproximados usando formatos de precisão muito menor, como inteiros de 8 bits ou até mesmo de 4 bits, com apenas uma pequena, e muitas vezes aceitável, perda de precisão. Aplicada a um modelo de linguagem de grande porte, a quantização pode reduzir a pegada de memória de um modelo por um fator de quatro ou mais em comparação com sua precisão de treinamento original, tornando possível executar modelos em hardware com muito menos memória do que seria necessário de outra forma.
A quantização como técnica geral em processamento digital de sinais e computação precede em muito o aprendizado profundo, mas sua aplicação a redes neurais, e especificamente a modelos de linguagem de grande porte, tornou-se amplamente praticada a partir do início dos anos 2020, à medida que os tamanhos dos modelos cresceram para dezenas e centenas de bilhões de parâmetros, tornando a implantação em precisão total proibitivamente cara para muitos usuários. O lançamento de grandes modelos de pesos abertos, como o Llama, em 2023, impulsionou um surto de interesse da comunidade especificamente em quantização, pois permitiu que indivíduos executassem modelos com dezenas de bilhões de parâmetros em uma única GPU de consumo ou até mesmo em um laptop, algo inviável de outra forma em precisão total.
Como funciona
A quantização mapeia uma faixa contínua ou de alta precisão de valores de pesos para um conjunto menor e discreto de valores de menor precisão, tipicamente escalando os valores originais para a faixa representável do formato alvo e arredondando. A quantização pós-treinamento aplica essa conversão a um modelo já treinado sem treinamento adicional, sendo a abordagem mais comum e barata; pode ser tão simples quanto converter cada peso independentemente ou mais sofisticada, usando dados de calibração para escolher fatores de escala que minimizem o erro introduzido para o modelo específico e, às vezes, por camada ou por grupo de pesos. O treinamento ciente de quantização, por sua vez, incorpora os efeitos da precisão reduzida durante o próprio processo de treinamento, o que geralmente preserva mais precisão em larguras de bits muito baixas, mas exige acesso à infraestrutura e aos dados de treinamento que a maioria dos usuários de um modelo pré-treinado não possui. Formatos alvo comuns em meados dos anos 2020 incluíam quantização de inteiros de 8 bits, que geralmente produz perda de qualidade desprezível, e formatos mais agressivos de 4 bits e, às vezes, menores, que trocam uma redução maior, embora muitas vezes ainda modesta, de qualidade por um tamanho de modelo substancialmente menor.
Aplicações
A quantização é uma das principais técnicas, juntamente com destilação e abordagens arquiteturais como mistura de especialistas, usadas para tornar grandes modelos práticos de implantar fora de data centers com memória GPU abundante. Ela sustenta a maior parte da implantação local e de IA de borda de modelos de linguagem, permitindo que modelos de pesos abertos sejam executados em hardware de consumo, placas aceleradoras únicas ou até mesmo dispositivos móveis. Também é usada em infraestrutura de serviço de produção em grandes laboratórios de IA para reduzir o custo da inferência em escala, já que o cálculo de menor precisão é geralmente mais rápido e barato em aceleradores modernos, como hardware de GPU construído com unidades aritméticas dedicadas de baixa precisão. Ferramentas de código aberto populares para quantizar e executar grandes modelos localmente, incluindo formatos e bibliotecas construídas em torno de inferência eficiente de inteiros e baixo bit, tornaram-se partes difundidas do ecossistema de pesos abertos, juntamente com repositórios como o Hugging Face.
Compensações e limites
A compensação central na quantização é o equilíbrio entre ganhos de tamanho e velocidade versus perda de precisão, e essa perda não é uniforme: algumas tarefas, particularmente aquelas que exigem aritmética precisa ou raciocínio de granularidade fina, tendem a degradar de forma mais perceptível sob quantização agressiva do que a geração de texto aberto. Larguras de bits extremamente baixas, como 2 bits ou menos, geralmente produzem uma queda substancial e muitas vezes inaceitável de qualidade para a maioria dos casos de uso sem técnicas especializadas para compensar. Como a quantização é tipicamente aplicada após o treinamento e é comparativamente barata e rápida de realizar, ela é frequentemente a primeira e mais fácil alavanca que os praticantes usam quando um modelo precisa ser executado sob restrições mais rígidas de memória ou latência do que a versão original em precisão total permite, frequentemente usada em conjunto com técnicas de ajuste fino baseadas em LoRA, como QLoRA, que combinam pesos base quantizados com um pequeno conjunto de adaptadores treináveis de posto baixo.