La compression des grands modèles de langage (LLM) a toujours attiré beaucoup d'attention, et la quantification post-formation (Post-training Quantization) est l'un des algorithmes couramment utilisés. Cependant, la plupart des méthodes PTQ existantes sont des quantifications entières, et lorsque le nombre. de bits est inférieur à 8, la précision du modèle diminuera considérablement après la quantification. Par rapport à la quantification entière (INT), la quantification à virgule flottante (FP) peut mieux représenter les distributions à longue traîne, c'est pourquoi de plus en plus de plates-formes matérielles commencent à prendre en charge la quantification FP. Cet article donne une solution à la quantification FP de grands modèles. Article publié à l'EMNLP 2023.
Pour comprendre cet article, vous devez d'abord avoir des connaissances de base sur le format à virgule flottante et la quantification à virgule flottante. Tout d'abord, le nombre à virgule flottante peut être exprimé par la formule suivante :
s représente le bit de signe), m représente les bits de mantisse et e représente les bits d'exposant. p est une valeur comprise entre 0 et 2 ^ e - 1, utilisée pour indiquer dans quel intervalle exponentiel le nombre actuel doit être divisé, d prend une valeur de 0 ou 1, utilisée pour indiquer le i-ème bit de mantisse. b est le biais, une valeur entière utilisée pour ajuster l'intervalle des exposants.
Dans la section suivante, nous expliquerons comment fonctionne la quantification en virgule flottante. Tout d’abord, les valeurs d’entrée doivent passer par une étape appelée « mise à l’échelle et découpage ». Cette étape coupe d'abord la valeur d'entrée à la plage maximale que les nombres à virgule flottante peuvent représenter (± Qmax). La formule de calcul spécifique est la suivante :
Vous pouvez voir que cela est similaire à la quantification entière, FP. la quantification ajoutera également un facteur de mise à l'échelle de précision complète (facteur de mise à l'échelle) pour mettre à l'échelle l'entrée à l'intervalle approprié. Lors du calcul de la multiplication matricielle, le facteur d'échelle est calculé séparément de la multiplication matricielle à bits faibles, de sorte qu'il n'entraîne pas de surcharge importante. Après avoir incorporé ce facteur d'échelle de pleine précision, différents tenseurs quantifiés peuvent être écrêtés en conséquence sur différents intervalles de valeurs maximales et minimales. En utilisation réelle, l'intervalle de quantification requis sera déterminé en fonction de la plage de valeurs du tenseur d'entrée, puis le biais correspondant sera dérivé à l'aide de la formule (4). Notez que le biais de l'équation (4) peut être utilisé comme facteur d'échelle pour les valeurs réelles, voir l'équation (2)(3).
L'étape suivante de la quantification à virgule flottante consiste à attribuer les valeurs de l'intervalle de quantification déterminé à l'intervalle de quantification correspondant. Ce processus est appelé comparaison et quantification :
La figure ci-dessus illustre intuitivement. Dans le processus de quantification, la valeur d'entrée actuelle est quantifiée en différents intervalles de quantification après avoir été comparée à la formule 5.
Après avoir obtenu l'activation et le poids quantifiés, le facteur d'échelle ici est d'abord calculé comme mentionné ci-dessus, et la multiplication matricielle efficace suivante est obtenue pour compléter l'accélération de la multiplication matricielle :
Ensuite, le L'article souligne que la précision de la quantification FP est étroitement liée au réglage des bits d'exposant et à l'intervalle de quantification.
Dans des articles précédents, il a été vérifié qu'il existe d'énormes différences dans les erreurs de quantification entre les différents formats FP (c'est-à-dire les paramètres de bit d'exposant/bit de mantisse des nombres à virgule flottante). Ce n'est que lorsqu'un format FP approprié est choisi que la quantification FP peut mieux représenter les distributions à longue traîne que la quantification INT
Cet article propose une solution, qui consiste à utiliser un algorithme de quantification à virgule flottante basé sur la recherche pour déterminer les paramètres de bits d'exposant et de mantisse les plus appropriés des nombres à virgule flottante et l'intervalle de quantification correspondant
de manière complète. De plus, dans différents types de modèles Transformer (Bert, LLaMA, ViT), il existe un autre phénomène qui affecte sérieusement la difficulté de quantification : c'est-à-dire que la différence d'ordre de grandeur entre les différents canaux dans l'activation du modèle est très grande, et le même canal L'ordre de grandeur est très cohérent. Les études précédentes LLM.int8 et SmoothQuant ont également trouvé des phénomènes similaires, mais cet article souligne que ce phénomène existe non seulement dans LLM, mais a également trouvé des distributions d'activation similaires dans d'autres modèles Transformer (illustrés ci-dessous, LLaMA, BERT et DeIT-S) Phénomène :
Comme vous pouvez le voir sur la figure, ces canaux anormalement grands sont beaucoup plus grands que les canaux restants, donc dans le processus de quantification du tenseur d'activation, la précision de la quantification sera largement déterminée par ces valeurs aberrantes. supprimant l'intervalle de quantification des autres valeurs de canal, réduisant finalement l'impact global sur la précision de quantification. Cela entraînera l'effondrement du résultat final de la quantification, en particulier lorsque le nombre de bits chute à un certain niveau. Il convient de noter que seule la quantification par tenseur et par jeton peut extraire le facteur d'échelle lors d'une multipilication matricielle efficace, tandis que la quantification par canal ne prend pas en charge une multipilication matricielle efficace, comme le montre la figure ci-dessous.
Afin de résoudre le problème et de maintenir une multiplication matricielle efficace en même temps, cet article utilise une petite quantité de données de correction pour pré-calculer la valeur maximale de chaque canal activé et calculer la mise à l'échelle. facteur. Le facteur d'échelle est ensuite divisé en un nombre réel pour chaque tenseur multiplié par une puissance de 2 pour chaque canal. Cette puissance de 2 peut être représentée par l'écart exponentiel en FP. L'ensemble du processus peut être exprimé par la formule suivante :
De plus, une fois l'étalonnage terminé, le biais d'exposant par canal ne changera plus, il peut donc être pré-calculé avec la quantification du poids. , intégrez ce biais d'exposant par canal dans les poids quantifiés pour améliorer la précision de la quantification. Le processus complet est le suivant :
Après le pré-offset, on peut observer que la position du décalage pleine précision de chaque canal dans la fonction d'activation d'origine devient un facteur d'échelle réel basé sur le tenseur, Dans le même temps, le biais entier décomposé est déplacé vers la position du biais entier d'origine dans le poids. Pour plus de détails, voir la formule 4
Par conséquent, cette méthode (biais d'exposant pré-décalé) peut obtenir de meilleurs résultats tout en. en conservant le principe de multiplication matricielle efficace. Pour améliorer la précision de la quantification, l'affichage intuitif de la méthode est présenté dans la figure ci-dessous :
Enfin, cet article présente la méthode de quantification en virgule flottante (FPQ). , BERT et ViTs, la quantification 4 bits a obtenu bien plus que le résultat SOTA. En particulier, cet article montre que le modèle LLaMA-13B quantifié sur 4 bits atteint un score moyen de 63,1 sur la tâche d'inférence sans tir, ce qui est seulement 5,8 points inférieur au modèle de précision complète et a un degré de lissage plus élevé que le précédent. Méthode SOTA 12.7, qui est actuellement l'un des rares schémas de quantification 4 bits réalisables connus.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!