Accueil

Think

Thèmes

Quantification

Qu’est-ce que la quantification ?
Découvrir la quantification avec watsonx.ai S’abonner aux mises à jour sur l’IA
Pictogrammes représentant un écran d’ordinateur, un serveur, un cloud et des points

Publication :  29 juillet 2024
Contributeurs : Bryan Clark

La quantification est le processus qui consiste à réduire la précision d’un signal numérique, généralement d’un format de haute précision à un format de plus faible précision. Cette technique est largement utilisée dans divers domaines, notamment le traitement des signaux, la compression des données et le machine learning.

La quantification est une technique utilisée dans les grands modèles de langage (LLM) pour convertir les poids et les valeurs d’activation des données de haute précision, généralement à virgule flottante 32 bits (FP32) ou à virgule flottante 16 bits (FP16), en données de moindre précision, telles que Entier 8 bits (INT8). Les données de haute précision (faisant référence à FP32 et FP16) tirent leur nom du fait que les modèles utilisant ces types de données sont généralement plus précis. En effet, lorsque les données sont compressées au format INT8, elles sont réduites à une taille plus petite. Cela se traduit effectivement par une moins grande précision, également appelée erreur de quantification. Une valeur d’activation est un nombre (entre zéro et un) attribué au neurone artificiel des réseaux neuronaux. Ce nombre attribué est appelé valeur d’activation. La quantification sur 8 bits est généralement l’objectif, mais les données quantifiées sur des nombres entiers à 4 bits (INT4) et inférieurs ont été réalisées avec succès. Fondamentalement, le processus de quantification utilise des techniques de compression sur un réseau neuronal pour convertir un grand nombre de bits en un plus petit nombre. 1

Les exigences de calcul pour l’exploitation d’un LLM utilisant FP32 peuvent être considérables. Parallèlement à l’augmentation des exigences de calcul, l’inférence (le processus par lequel un LLM génère une réponse à la requête d’un utilisateur) peut également être ralentie. La quantification peut être un excellent outil d’optimisation pour réduire la charge de calcul tout en augmentant la vitesse d’inférence d’un LLM. Le processus de quantification s’articule autour du principe consistant à convertir les poids en un type de données de précision inférieure, tandis que les performances du modèle restent presque identiques. La conversion des pondérations en un type de données de précision inférieure permet de réduire les coûts de calcul, car il y a moins de bits à traiter à chaque exécution du modèle. Moins de bits traités conduira également à ce que chaque requête soit traitée plus rapidement.

 

Pourquoi la gouvernance de l’IA constitue un impératif pour déployer l’intelligence artificielle dans les entreprises

Découvrez les obstacles à l’adoption de l’IA, en particulier le manque de solutions de gouvernance de l’IA et de gestion des risques.

Contenu connexe Obtenir le guide sur les modèles de fondation
Pourquoi mettre en œuvre la quantification ?
Inférence plus rapide

En utilisant la quantification pour convertir les types de données à virgule flottante en entiers, les calculs peuvent être effectués plus rapidement. Cela permet de réduire la latence globale du modèle et d’améliorer la vitesse d’inférence par rapport à la précision. Ce compromis est crucial pour toutes les applications en temps réel, en particulier lorsqu’elles sont exécutées sur des processeurs mobiles. 2

Efficacité

La quantification est cruciale lorsque vous essayez d’exécuter des modèles de machine learning sur des appareils qui ne peuvent pas gérer des exigences de calcul plus élevées. Lorsque la quantification convertit la virgule flottante en entier, elle réduit les demandes de calcul du modèle de machine learning. Cela permet d’utiliser ces modèles quantifiés dans des applications réelles sur un ordinateur portable, une tablette ou un smartphone. 2

Baisse de la consommation d’énergie

En règle générale, les modèles quantifiés ont des exigences de calcul moindres. Par conséquent, la quantification permet d’accroître l’efficacité énergétique, ce qui est essentiel pour exécuter ces modèles sur un ordinateur portable, une tablette et un téléphone portable. 3

Compatibilité

L’utilisation de la quantification permet aux modèles actuels de machine learning de fonctionner avec des opérations sur des nombres entiers. Cela rend les modèles quantifiés compatibles avec les anciennes plateformes qui ne prennent pas en charge les opérations en virgule flottante. Cela rend également ces modèles beaucoup plus accessibles, ce qui permet de les exécuter sur des GPU grand public. 4

Comment fonctionne la quantification ?

L’ensemble des valeurs possibles FP32 comprend environ 4 milliards de valeurs, allant de -3,4  1038 à 3,4  1038. Avec INT8, nous n’avons que 256  valeurs dans l’ensemble de valeurs allant de -128 à 128. Comme ce dernier est un ensemble de valeurs beaucoup plus petit, la multiplication matricielle peut se produire beaucoup plus rapidement. En raison du coût de calcul considérable des modèles basés sur l’apprentissage profond, des algorithmes précis et efficaces sont essentiels.

Le processus de quantification se produit en déterminant d’abord le chemin optimal de projection des valeurs de virgule flottante 32 bits dans le champ INT8. Pour ce faire, il existe plusieurs algorithmes permettant de quantifier un modèle. Nous examinerons deux méthodes de quantification, la quantification maximale absolue et la quantification affine).

Quantification maximale absolue 

Pour calculer la correspondance entre le nombre à virgule flottante et le nombre INT8 correspondant dans la quantification maximale absolue, vous devez d’abord diviser par la valeur maximale absolue du tenseur, puis multiplier par la plage totale du type de données.

Par exemple, nous appliquerons l’algorithme de quantification du maximum absolu au vecteur suivant [1,6, -0,7, -3,4, 1.7, -2.9, 0.5, 2.3, 6.2]. Vous en extrayez le maximum absolu, qui est ici de 6,2. INT8 a une fourchette de [-127, 127], nous divisons donc 127 par 6,2 et obtenons 20,5 pour le facteur de mise à l’échelle. Par conséquent, en multipliant le vecteur d’origine par celui-ci, on obtient le vecteur de données quantifiées [33, -14, -70, 35, -59, 10, 47, 127]. Étant donné que ces chiffres sont arrondis, il y aura une certaine perte de précision. 5

Quantification affine 

Pour mettre en œuvre l’algorithme de quantification affine, nous définirons notre plage de valeurs à virgule flottante de 32 bits comme étant [a, b]. L’algorithme de quantification affine est le suivant :  

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

- 𝑥𝑞 est la valeur INT8 quantifiée qui correspond à la valeur de virgule flottante 32 bits x.

est un facteur d’échelle FP32 et une virgule flottante positive de 32 bits.

 est le point zéro. Ce sera la valeur INT8 qui correspond à zéro dans le champ à virgule flottante 32 bits.

arrondi fait référence à l’arrondi de la valeur résultante à l’entier le plus proche.

Pour établir ensuite le [min, max] de nos valeurs de virgule flottante 32 bits, nous devons prendre en compte toutes les données aberrantes. Le fait d’ignorer ces données aberrantes peut les amener à être mappées en tant que minimum ou maximum et potentiellement fausser la précision du modèle quantifié. Pour remédier à cela, le modèle peut être quantifié en blocs. Les poids peuvent être divisés en groupes de 64 ou 128. Ensuite, ces groupes sont quantifiés pour tenir compte des données aberrantes et minimiser le risque de perte de précision. 6

 

 

 

Types de quantification

Quantification post-entraînement (PTQ)

La quantification post-entraînement se produit lorsque la quantification est appliquée à un modèle existant. Le modèle passe ainsi d’une représentation en virgule flottante à une représentation en virgule fixe de moindre précision, sans qu’il soit nécessaire de procéder à un nouvel entraînement. Cette méthode ne nécessite pas autant de données que l’entraînement de quantification et il est beaucoup plus rapide. Cependant, comme un modèle déjà existant est essentiellement converti en un modèle de taille plus petite, la quantification post-entraînement peut entraîner une dégradation des performances. Un exemple d’utilisation du PTQ consiste par exemple à augmenter la rapidité et l’efficacité d’un modèle fonctionnel dont vous disposez déjà. En effet, le PTQ a lieu après l’entraînement d’un modèle (c’est-à-dire un modèle déjà existant), de sorte qu’une grande quantité de données d’entraînement n’est pas nécessaire pour ce processus. 7

Formation en fonction de la quantification (QAT)

L’entraînement tenant compte de la quantification tient compte de la conversion des pondérations lors du pré-entraînement ou de la mise au point d’un LLM. Cela permet d’améliorer les performances, mais nécessite une grande puissance de calcul et des données d’apprentissage représentatives. Dans l’ensemble, l’apprentissage par quantification produit généralement un modèle plus performant, mais il est plus coûteux et nécessite une puissance de calcul beaucoup plus importante. Un exemple de cas d’utilisation de la QAT serait de disposer d’une quantité adéquate de données d’entraînement et d’un budget plus conséquent. Il est également bon de rappeler que ce processus a lieu pendant la phase d’entraînement du modèle et qu’il n’est donc pas logique d’utiliser cette méthode avec un modèle déjà entraîné. 7

Quantification dynamique et techniques de quantification statiques

Le but de ces deux techniques est de savoir comment la plage d’écrêtage, souvent appelé calibrage, sera sélectionnée. Au cours de cette quantification dynamique, la plage d’écrêtage est calculée dynamiquement pour chaque activation. En général, ce type de technique de quantification se traduit par une plus grande précision.  Comme son nom l’indique, la quantification statique utilise une plage d’écrêtage fixe pour toutes les entrées. Cette forme de quantification est plus souvent utilisée comme quantification dynamique et peut être très coûteuse.

 

Risques et limites
Perte de précision

Lorsque les poids sont convertis pendant la quantification, il y a parfois une perte de précision dans les valeurs quantifiées avec des modèles de machine learning quantifiés. La taille du modèle doit être prise en compte, car lors de la quantification de LLM exceptionnellement grands avec de nombreux paramètres et couches, il existe un risque d’accumulation importante d’erreurs de quantification. 8

Coût

La formation à l’échelle du modèle de machine learning peut être extrêmement coûteuse, en particulier avec la formation prenant en compte la quantification (QAT). C’est pour cette raison que la quantification post-entraînement (PTQ) est le meilleur choix d’un point de vue économique. Cependant, cela limite le modèle sous certains aspects, car le QAT produira généralement un modèle plus précis. 9

Ressources IBM Granite

Granite est la marque phare d’IBM en matière de modèles de fondation ouverts de grands modèles de langage (LLM) couvrant de multiples modalités.

Que sont les réseaux neuronaux ?

En savoir plus sur les réseaux neuronaux et sur les applications de la quantification.

Machine learning

Découvrir le machine learning pour mieux comprendre le rôle de la quantification.

Passer à l’étape suivante

Entraînez, validez, réglez et déployez une IA générative, des modèles de fondation et des capacités de machine learning avec IBM watsonx.ai, un studio professionnel de nouvelle génération pour les générateurs d’IA. Créez des applications d’IA en peu de temps et avec moins de données.

Découvrir watsonx.ai Réserver une démo en direct
Notes de bas de page

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

² 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 (lien externe à ibm.com).

³ 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 (lien externe à ibm.com).

⁴ 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 (lien externe à ibm.com)

⁶ 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 (lien externe à ibm.com) 

⁷ 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 (lien externe à ibm.com)

⁸ 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 (lien externe à ibm.com).

⁹ 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 (lien externe à ibm.com).