Minha IBM Efetue login Inscreva-se

O que é quantização?

29 de julho de 2024

Autores

Bryan Clark

Senior Technology Advocate

O que é quantização?

Quantização é o processo de redução da precisão de um sinal digital, geralmente de um formato de maior precisão para um formato de menor precisão. Essa técnica é amplamente utilizada em vários campos, incluindo processamento de sinais, compactação de dados e aprendizado de máquina.

A quantização é uma técnica utilizada em grandes modelos de linguagem (LLMs) para converter pesos e valores de ativação de dados de alta precisão, geralmente de ponto flutuante de 32 bits (FP32) ou ponto flutuante de 16 bits (FP16), em dados de precisão mais baixa, como números inteiros de oito bits (INT8).

Os dados de alta precisão (em relação ao FP32 e FP16) recebem esse nome porque os modelos que usam esses tipos de dados geralmente têm maior precisão. Isso ocorre porque quando os dados são compactados em algo como INT8, eles são “espremidos” em um tamanho menor. Na prática, isso resulta em uma menor precisão, também chamada de erro de quantização. Um valor de ativação é um número (entre zero e um) atribuído ao neurônio artificial da rede neural. Esse número atribuído é chamado de valor de ativação.

A quantização de oito bits geralmente é o objetivo, mas dados quantizados de números inteiros de quatro bits (INT4) e menores já foram alcançados com êxito. Essencialmente, o processo de quantização usa técnicas de compactação em uma rede neural para converter um grande número de bits em um pequeno número de bits. 1

Os requisitos computacionais para operar um LLM usando o FP32 podem ser imensos. Concomitantemente ao aumento dos requisitos computacionais, também pode ocorrer a diminuição da velocidade de inferência (o processo de geração da resposta à consulta do usuário pelo LLM).

A quantização pode ser uma ótima ferramenta de otimização para reduzir a carga computacional e também aumentar a velocidade de inferência do LLM. O processo de quantização gira em torno da premissa de converter os pesos em um tipo de dados de precisão mais baixa, embora o desempenho do modelo permaneça quase idêntico. A conversão dos pesos para um tipo de dados de precisão menor resultará em menos custos computacionais, pois há um número menor de bits a serem processados cada vez que o modelo é executado. Menos bits em processamento também se traduz em mais rapidez no processamento das consultas ao LLM.

Projeto 3D de bolas rolando em uma pista

As últimas notícias e insights sobre IA 


Descubra insights selecionadas por especialistas sobre IA, nuvem e outros assuntos no boletim informativo semanal Think. 

Por que implementar a quantização em modelos de IA?

Inferência mais rápida

Ao utilizar a quantização para converter os tipos de dados de ponto flutuante em números inteiros, é possível aumentar a rapidez na realização dos cálculos. Isso diminui a latência geral do modelo e leva a uma melhoria na velocidade de inferência em relação à precisão. Essa gestão das desvantagens é crucial em qualquer aplicação em tempo real, especialmente quando executada em CPUs móveis. 2

Eficiência

A quantização é crucial ao tentar executar modelos de aprendizado de máquina em dispositivos que não conseguem lidar com requisitos computacionais maiores. Quando a quantização converte a representação de ponto flutuante em número inteiro, ela reduz as demandas computacionais do modelo de aprendizado de máquina. Isso possibilita a utilização desses modelos quantizados em aplicações do mundo real em notebooks, tablets e smartphones. 2

Menor consumo de energia

Normalmente, os modelos quantizados têm requisitos computacionais menores. Portanto, a quantização resulta em maior eficiência energética, o que é fundamental para executar esses modelos em notebooks, tablets e telefones celulares. 3

Compatibilidade

A utilização da quantização permite que os modelos atuais de aprendizado de máquina sejam executados usando operações com números inteiros. Isso torna os modelos quantizados compatíveis com plataformas mais antigas sem suporte a operações de ponto flutuante. Isso também torna esses modelos muito mais acessíveis, possibilitando sua execução em GPUs comuns. 4

Como funciona a quantização na tecnologia?

Há cerca de 4 bilhões de valores dentro do conjunto de valores possíveis do FP32, variando de -3,4 1038 a 3,4 1038. Com o INT8, por sua vez, temos apenas 256 valores dentro do conjunto de valores possíveis, que vão de -128 a 128.

Devido à quantidade significativamente menor de valores no último conjunto, a multiplicação de matrizes pode ocorrer muito mais rápido. Devido ao imenso custo computacional dos modelos baseados em deep learning, é essencial ter algoritmos precisos e eficientes.

O processo de quantização ocorre primeiro determinando-se a rota ideal da projeção dos valores de ponto flutuante de 32 bits no campo INT8. Para isso, há vários algoritmos para quantizar o modelo. Daremos uma olhada em dois métodos de quantização: quantização máxima absoluta e afim.

Quantização máxima absoluta

Para calcular o mapeamento entre o número de ponto flutuante e seu número INT8 correspondente na quantização máxima absoluta, você deve primeiro dividir pelo valor máximo absoluto do tensor e, em seguida, multiplicar pelo intervalo total do tipo de dados.

Por exemplo, aplicaremos o algoritmo de quantização máxima absoluta ao seguinte vetor [1,6, -0,7, -3,4, 1,7, -2,9, 0,5, 2,3, 6,2]. Você extrai o máximo absoluto dele, que é 6,2 nesse caso. O INT8 tem um intervalo de [-127, 127], então dividimos 127 por 6,2 e obtemos 20,5 para o fator de escala. Portanto, multiplicando o vetor original pelo fator de escala, obtém-se o vetor de dados quantizado [33, -14, -70, 35, -59, 10, 47, 127]. Como esses números são arredondados, ocorre uma certa perda de precisão. 5

Quantização afim

Para implementar o algoritmo de quantização afim, definiremos nosso intervalo de valores de ponto flutuante de 32 bits como [a, b]. O algoritmo de quantização afim é o seguinte:

𝑥𝑞 = round ((1/𝑆)𝑥+𝑍)

- 𝑥𝑞 é o valor INT8 quantizado que corresponde ao valor de ponto flutuante de 32 bits x.

- S é um fator de escala FP32 e é um ponto flutuante positivo de 32 bits.

- Z é o ponto zero. Esse será o valor INT8 que corresponde a zero no campo de ponto flutuante de 32 bits.

- round se refere ao arredondamento do valor resultante para o inteiro mais próximo.

Para estabelecer o [min., máx.] dos nossos valores de ponto flutuante de 32 bits, precisamos levar em consideração todos os valores discrepantes. Ignorá-los pode fazer com sejam mapeados como mínimo ou máximo, o que pode distorcer a precisão do modelo quantizado. Para evitar isso, o modelo pode ser quantizado em blocos. Os pesos podem ser divididos em grupos de 64 ou 128. Em seguida, esses grupos são quantizados para levar em conta os valores discrepantes e minimizar o risco de redução da precisão. 6

AI Academy

Por que os modelos de base são uma mudança de paradigma para a IA

Aprenda sobre uma nova classe de modelos de IA flexíveis e reutilizáveis que podem liberar novas receitas, reduzir custos e aumentar a produtividade, e utilize o nosso guia para se aprofundar.

Tipos de quantização

Quantização pós-treinamento (PTQ)

A quantização pós-treinamento (PTQ) ocorre quando ela é aplicada a um modelo existente. Isso converte o modelo de uma representação de ponto flutuante em um número inteiro de ponto fixo de precisão inferior sem a necessidade de retreinamento. Esse método não exige tantos dados quanto o treinamento consciente de quantização (QAT) e é muito mais rápido.

No entanto, como um modelo já existente está basicamente sendo convertido em um tamanho menor, a quantização pós-treinamento pode levar à queda do desempenho. Um exemplo de quando utilizar a PTQ seria quando você já tem um modelo em funcionamento e deseja aumentar a velocidade e a eficiência. Isso ocorre porque a PTQ ocorre depois que o modelo é treinado (ou seja, um modelo já existente), portanto, não é necessária uma grande quantidade de dados de treinamento para esse processo. 7

Treinamento consciente de quantização (QAT)

O treinamento consciente de quantização incorpora a conversão de peso durante o pré-treinamento ou o ajuste fino do LLM. Isso permite um desempenho melhor, mas exige uma grande quantidade de poder computacional e requer dados de treinamento representativos. No geral, o treinamento consciente de quantização geralmente produz um modelo com maior desempenho, mas é mais caro e exigirá muito mais poder de computação.

Um exemplo de quando usar o QAT seria quando você possui uma quantidade adequada de dados de treinamento e um orçamento maior. Também é bom lembrar que esse processo ocorre durante o estágio de treinamento do modelo; portanto, não faz sentido usar esse método com um modelo já treinado. 7

Técnicas de quantização dinâmica versus quantização estática

O objetivo dessas duas técnicas é como a faixa de corte, ou calibração, como é frequentemente chamada, será selecionada. Durante essa quantização dinâmica, a faixa de corte é calculada dinamicamente para cada ativação. Normalmente, esse tipo de técnica de quantização resulta em uma maior precisão.

Como seu nome indica, a quantização estática utiliza uma faixa de corte fixa para todos os inputs. Essa forma de quantização é usada com mais frequência como quantização dinâmica e pode ser muito cara.

Riscos e limitações

Menor precisão

Quando os pesos são convertidos durante a quantização, às vezes há uma perda de precisão nos valores quantizados com modelos de aprendizado de máquina quantizados. O tamanho do modelo deve ser levado em consideração, pois ao quantizar LLMs excepcionalmente grandes com inúmeros parâmetros e camadas, há o risco de acúmulo significativo de erros de quantização. 8

Custo

O treinamento em escala de modelos de aprendizado de máquina pode ser extremamente caro, especialmente com o treinamento consciente de quantização (QAT). Isso torna a quantização pós-treinamento (PTQ) a melhor escolha do ponto de vista da relação custo-benefício. No entanto, isso limita o modelo em alguns aspectos, pois o QAT normalmente produz um modelo mais preciso. 9

Dê o próximo passo

Explore a biblioteca da IBM de modelos de base no portfólio do IBM® watsonx para escalar a IA generativa para os seus negócios com confiança.

Explore o watsonx.ai Explore as soluções de IA
Notas de rodapé

¹ Dong Liu, Meng Jiang, Kaiser Pister, "LLMEasyQuant - An Easy to Use Toolkit for LLM Quantization", https://arxiv.org/pdf/2406.19657v2.

² Benoit Jacob, Skirmantas Kligys, Bo Chen, Menglong Zhu, Matthew Tang, Andrew Howard, Hartwig Adam, Dmitry Kalenichenko, "Quantization and Training of Neural Networks for Efficient Integer-Arithmetic-Only Inference", https://arxiv.org/pdf/1712.05877v1.

³ Ravi Kishore Kodali, Yatendra Prasad Upreti, Lakshmi Boppana, "A Quantization Approach for the Reduced Size of Large Language Models", https://ieeexplore.ieee.org/document/10499664.

⁴ Xiao Sun, Naigang Wang, Chia-yu Chen, Jia-min Ni, Ankur Agrawal, Xiaodong Cui, Swagath Venkataramani, Kaoutar El Maghraoui, Vijayalakshmi Srinivasan, "Ultra-Low Precision 4-bit Training of Deep Neural Networks", https://research.ibm.com/publications/ultra-low-precision-4-bit-training-of-deep-neural-networks

⁵ Tim Dettmers, Mike Lewis, Younes Belkada, Luke Zettlemoyer, "LLM.int8(): 8-bit Matrix Multiplication for Transformers at Scale", https://arxiv.org/pdf/2208.07339

⁶ Amir Gholami, Sehoon Kim, Zhen Dong, Zhewei Yao, Michael W. Mahoney, Kurt Keutzer, "A Survey of Quantization Methods for Efficient Neural Network Inference", https://arxiv.org/pdf/2103.13630

⁷ Hao Wu, Patrick Judd, Xiaojie Zhang, Mikhail Isaev, Paulius Micikevicius, "A Survey of Quantization Methods for Efficient Neural Network Inference", https://arxiv.org/pdf/2004.09602

⁸ Zhuocheng Gong, Jiahao Liu, Jingang Wang, Xunliang Cai, Dongyan Zhao, Rui Yan, "What Makes Quantization for Large Language Models Hard? An Empirical Study from the Lens of Perturbation", https://arxiv.org/pdf/2403.06408v1.

⁹ Sehoon Kim, Coleman Hooper, Amir Gholami, Zhen Dong, Xiuyu Li, Sheng Shen, Michael W. Mahoney, Kurt Keutzer, "SqueezeLLM: Dense-and-Sparse Quantization", https://arxiv.org/pdf/2306.07629v4.