Glossário / Como ele ouve você
Quantização
Também: quantização de modelos, 4 bits, 8 bits
Atualizado em
Definição
Quantização é guardar os números de um modelo com menos bits, por exemplo 4 ou 8 bits onde o original usava 16 ou 32. Isso deixa o modelo menor e mais leve na memória, em geral com pequena perda de precisão.
Um modelo é, em grande parte, uma lista muito longa de números, chamados pesos. Ao sair do treinamento, cada peso costuma ser um valor de ponto flutuante de 32 ou 16 bits. A quantização os reescreve numa forma mais grosseira. A documentação da Apple a define como reduzir o número de bits que representam um número.
É por isso que o mesmo modelo pode aparecer em vários downloads de tamanhos diferentes, com rótulos como 4bit, 8bit ou Q4. São um único modelo em diferentes níveis de compressão.
Quanto menor
O tamanho acompanha os bits quase diretamente. Reduza pela metade os bits por peso e o arquivo fica com cerca de metade do tamanho.
Um exemplo publicado deixa isso concreto. Para um modelo de linguagem de 8 bilhões de parâmetros, o arquivo de 16 bits tem cerca de 15 GiB, o de 8 bits cerca de 8 GiB, e uma versão comum de 4 bits cerca de 4,6 GiB. A versão de 4 bits dá cerca de 4,9 bits por peso, não exatamente 4, porque algumas partes são mantidas em precisão maior.
O que você perde
Precisão, um pouco. Números mais grosseiros fazem as contas do modelo ficarem levemente erradas em toda parte, e os erros se somam. O quanto isso aparece depende do modelo e de até onde você vai.
A orientação da Apple é que comprimir para 8 bits, e em alguns modelos para 6 ou 4, pode funcionar com só uma leve queda de precisão.
O que você ganha além do tamanho
A Apple lista como ganhos possíveis de comprimir um modelo um menor uso de memória, menor latência e menor consumo de energia, sozinhos ou juntos. Num notebook, a memória costuma ser o que importa: um modelo que cabe com folga deixa espaço para tudo o mais que você tem aberto.
Como ler os rótulos
O rótulo diz a precisão dos pesos.
- fp32 ou float32: precisão total, como a maioria dos modelos é treinada.
- fp16, bf16 ou float16: meia precisão. Muitas vezes a forma em que um modelo é publicado.
- 8bit ou int8: um quarto da precisão total.
- 4bit ou int4: um oitavo da precisão total. A escolha habitual para rodar modelos grandes num notebook.
- Q4, Q5, Q8 com letras depois: a mesma ideia num formato de arquivo comum, em que as letras indicam o método usado.
Quantização e paletização
As ferramentas da Apple oferecem duas formas de armazenar pesos com menos bits. A quantização linear mapeia o intervalo dos valores originais num pequeno intervalo de números inteiros. A paletização, também chamada de agrupamento de pesos, agrupa os pesos em clusters e armazena cada peso como um índice numa tabela de consulta curta.
A orientação da Apple é que a paletização costuma funcionar melhor no Neural Engine, e que a quantização em 4 bits pode funcionar bem para modelos que rodam no chip gráfico de um Mac.
Perguntas que as pessoas fazem.
O que significa 4 bits num modelo?
Que os pesos dele são armazenados com cerca de 4 bits cada, onde o original usava 16 ou 32. O arquivo fica bem menor, e o modelo, um pouco menos preciso.
A quantização piora um modelo?
Um pouco. Ela troca um pouco de precisão por um tamanho menor e menos uso de memória. A orientação da Apple é que 8 bits, e em alguns modelos 6 ou 4, custam só uma leve queda de precisão.
Um modelo de 4 bits ou de 8 bits é melhor?
O modelo de 8 bits fica mais perto do original, e o de 4 bits tem cerca de metade do tamanho. Escolha 8 bits se tiver memória e 4 bits se não tiver.
A quantização deixa um modelo mais rápido?
Pode deixar. A Apple lista menor latência entre os ganhos possíveis, junto com menor uso de memória e menor consumo de energia.
Qualquer modelo pode ser quantizado?
A maioria pode, com ferramentas que convertem os pesos publicados. O quanto o modelo se mantém bem varia de um para outro.
Quantização é o mesmo que compressão?
É um tipo de compressão de modelos. Outros incluem a poda, que remove pesos, e a paletização, que armazena os pesos como entradas numa tabela de consulta.