Maison  >  Article  >  Périphériques technologiques  >  Un modèle de langage avec 10 milliards de paramètres ne peut-il pas fonctionner ? Un médecin chinois du MIT a proposé la quantification SmoothQuant, qui a réduit de moitié les besoins en mémoire et augmenté la vitesse de 1,56 fois !

Un modèle de langage avec 10 milliards de paramètres ne peut-il pas fonctionner ? Un médecin chinois du MIT a proposé la quantification SmoothQuant, qui a réduit de moitié les besoins en mémoire et augmenté la vitesse de 1,56 fois !

WBOY
WBOYavant
2023-04-13 09:31:061635parcourir

Bien que les modèles de langage à grande échelle (LLM) aient de fortes performances, le nombre de paramètres peut facilement atteindre des centaines de milliards et la demande en équipement informatique et en mémoire est si importante que les entreprises ordinaires ne peuvent pas se le permettre.

La quantification est une opération de compression courante qui sacrifie une partie des performances du modèle en échange d'une vitesse d'inférence plus rapide et de moins de besoins en mémoire en réduisant la précision des pondérations du modèle (comme 32 bits à 8 bits).

Mais pour les LLM comportant plus de 100 milliards de paramètres, les méthodes de compression existantes ne peuvent pas maintenir la précision du modèle, ni fonctionner efficacement sur le matériel.

Récemment, des chercheurs du MIT et de NVIDIA ont proposé conjointement une solution de quantification post-entraînement à usage général (GPQ, quantification post-entraînement à usage général) SmoothQuant, qui peut implémenter efficacement 8 bits pour les grands modèles de langage Weights, quantification des activations 8 bits (W8A8), maintient la précision du modèle sans formation.

Un modèle de langage avec 10 milliards de paramètres ne peut-il pas fonctionner ? Un médecin chinois du MIT a proposé la quantification SmoothQuant, qui a réduit de moitié les besoins en mémoire et augmenté la vitesse de 1,56 fois !

Lien papier : https://arxiv.org/pdf/2211.10438.pdf

Lien code : https://github.com/mit-han-lab/smoothquant

Étant donné que l'activation est plus difficile à quantifier que le poids, SmoothQuant migre l'activation la plus difficile à quantifier vers le poids via une transformation mathématique équivalente, permettant ainsi un traitement fluide des valeurs aberrantes d'activation.

SmoothQuant est capable de quantifier les poids et les activations dans différentes couches de tous les LLM jusqu'à INT8, y compris OPT-175B, BLOOM-176B et GLM-130B.

Par rapport aux méthodes existantes qui effectuent uniquement une optimisation du poids ou une quantification des activations à précision mixte, SmoothQuant a une efficacité matérielle plus élevée, atteignant une accélération de 1,56 fois, et les besoins en mémoire ne représentent que la moitié du LLM d'origine, et il n'y a presque pas perte de précision .

Un modèle de langage avec 10 milliards de paramètres ne peut-il pas fonctionner ? Un médecin chinois du MIT a proposé la quantification SmoothQuant, qui a réduit de moitié les besoins en mémoire et augmenté la vitesse de 1,56 fois !

SmoothQuant a également une conception conviviale pour le matériel. Les chercheurs ont intégré SmoothQuant dans le cadre de service LLM FasterTransformer pour obtenir une vitesse d'inférence plus rapide Par rapport à la précision du FP16, seulement la moitié du nombre de GPU sont nécessaires

Le premier. L'auteur de l'article, Xiao Guangxuan, est doctorant en première année au MIT EECS et est titulaire d'un baccalauréat de l'École d'informatique et de technologie de l'Université Tsinghua.

L'instructeur Song Han est professeur agrégé au MIT EECS. Il est diplômé d'un doctorat de l'Université de Stanford. Son principal domaine de recherche est l'apprentissage profond efficace. Il a déjà proposé une technologie de compression profonde, qui peut réduire la taille des réseaux neuronaux. ordre de grandeur sans perte de précision.

SmoothQuant

La quantification consiste à mapper des valeurs de haute précision à des valeurs discrètes de moindre précision. Dans cet article, les chercheurs se concentrent principalement sur une quantification uniforme d'entiers plus efficace pour le matériel, en particulier INT8.

Un modèle de langage avec 10 milliards de paramètres ne peut-il pas fonctionner ? Un médecin chinois du MIT a proposé la quantification SmoothQuant, qui a réduit de moitié les besoins en mémoire et augmenté la vitesse de 1,56 fois !

Les opérations de quantification peuvent être effectuées à différentes granularités, telles que la quantification par tenseur est appliquée à l'ensemble de la matrice de poids, la quantification par jeton est appliquée à chaque jeton lors de l'activation et la quantification par canal est appliquée à chacun des canaux de sortie des poids.

Un modèle de langage avec 10 milliards de paramètres ne peut-il pas fonctionner ? Un médecin chinois du MIT a proposé la quantification SmoothQuant, qui a réduit de moitié les besoins en mémoire et augmenté la vitesse de 1,56 fois !


En observant les résultats de quantification de l'activation, les chercheurs ont conclu plusieurs schémas :

1. La quantification est plus difficile à quantifier que le poids.

La répartition des poids est relativement plus uniforme et plus plate. Les résultats de recherches antérieures ont prouvé que la réduction du poids des grands modèles de langage à INT8 ou même INT4 a peu d'impact sur la précision.

2. Les valeurs aberrantes sont la principale difficulté de la quantification de l'activation.

Les valeurs aberrantes lors de l'activation sont généralement environ 100 fois supérieures aux valeurs normales, ce qui entraîne une très faible efficacité des bits/niveaux de quantification dans les canaux sans valeurs aberrantes.

Un modèle de langage avec 10 milliards de paramètres ne peut-il pas fonctionner ? Un médecin chinois du MIT a proposé la quantification SmoothQuant, qui a réduit de moitié les besoins en mémoire et augmenté la vitesse de 1,56 fois !

3. Les valeurs anormales sont corrigées dans un certain canal.

Les valeurs aberrantes n'apparaîtront que dans une petite partie des canaux, mais s'il y a une valeur aberrante dans un canal, la valeur aberrante peut apparaître dans tous les jetons.

Un modèle de langage avec 10 milliards de paramètres ne peut-il pas fonctionner ? Un médecin chinois du MIT a proposé la quantification SmoothQuant, qui a réduit de moitié les besoins en mémoire et augmenté la vitesse de 1,56 fois !

La variance de tous les canaux dans un jeton donné sera grande (certains canaux seront très grands, mais la plupart seront petits), mais la variance d'un canal donné dans tous les degrés de jeton sera faible (exceptionnel Le canal de valeur sera très large).

Étant donné que les valeurs aberrantes ont les caractéristiques d'une occurrence continue et d'une faible variance au sein de chaque canal, si la quantification par canal est effectuée sur les activations, l'erreur de quantification sera beaucoup plus petite que la quantification par tenseur.

Grâce à une expérience simple, les résultats ont une fois de plus vérifié les idées des chercheurs. Lorsqu'elle est quantifiée à INT8, la précision par canal est bien supérieure à la quantification par tenseur et par jeton, et est différente de la précision de base du FP16. . Pas beaucoup.

Un modèle de langage avec 10 milliards de paramètres ne peut-il pas fonctionner ? Un médecin chinois du MIT a proposé la quantification SmoothQuant, qui a réduit de moitié les besoins en mémoire et augmenté la vitesse de 1,56 fois !

Les chercheurs ont lissé l'activation de l'entrée en utilisant un facteur de lissage par canal. Pour maintenir l’équivalence mathématique des couches linéaires, les poids doivent également être mis à l’échelle inversement.

Un modèle de langage avec 10 milliards de paramètres ne peut-il pas fonctionner ? Un médecin chinois du MIT a proposé la quantification SmoothQuant, qui a réduit de moitié les besoins en mémoire et augmenté la vitesse de 1,56 fois !

Depuis l'entrée, surcharge d'appel de noyau mise à l'échelle supplémentaire. Dans d'autres cas, par exemple lorsque l'entrée provient d'un ajout résiduel, une mise à l'échelle supplémentaire peut être ajoutée à la branche résiduelle.

Déplacer la difficulté de quantification des activations aux poids

​L'objectif de Smooth est de choisir un facteur de lissage par canal qui rend l'opération inverse plus facile à quantifier.

Afin de réduire l'erreur de quantification, les bits de quantification effectifs de tous les canaux doivent être augmentés. Lorsque l'amplitude maximale de tous les canaux est la même, le nombre total de bits de quantification effectifs sera le plus grand.

Par conséquent, l'un des choix de facteurs de lissage les plus directs est la valeur maximale de chaque canal dans l'entrée, ce qui peut garantir qu'après le partitionnement, tous les canaux d'activation ont la même valeur maximale, permettant ainsi une quantification plus facile.

Mais il convient de noter que la plage d'activation est dynamique et différente pour différents échantillons d'entrée. Les chercheurs ont donc utilisé des échantillons d’étalonnage de l’ensemble de données de pré-formation pour estimer la taille des canaux d’activation.

Étant donné que cette formule transfère toutes les difficultés de quantification aux poids, on peut constater que dans ce cas, l'erreur de quantification des poids sera importante, entraînant une forte diminution de la précision.

Un modèle de langage avec 10 milliards de paramètres ne peut-il pas fonctionner ? Un médecin chinois du MIT a proposé la quantification SmoothQuant, qui a réduit de moitié les besoins en mémoire et augmenté la vitesse de 1,56 fois !

D'un autre côté, il est également possible de pousser toute la difficulté de quantification depuis les poids jusqu'aux activations en choisissant sj ​​= 1/ max(|Wj|). De même, les performances du modèle sont également médiocres en raison d’erreurs de quantification d’activation excessives. Par conséquent, la difficulté de quantification doit être divisée entre les poids et les activations pour les rendre faciles à quantifier.

Les chercheurs ont introduit une force de transfert d'hyperparamètres α pour contrôler la difficulté de transfert des activations aux poids.

Un modèle de langage avec 10 milliards de paramètres ne peut-il pas fonctionner ? Un médecin chinois du MIT a proposé la quantification SmoothQuant, qui a réduit de moitié les besoins en mémoire et augmenté la vitesse de 1,56 fois !

On constate que pour la plupart des modèles, tels que les modèles OPT et BLOOM, α=0,5 est un bon point d'équilibre qui peut répartir uniformément la difficulté de quantification, notamment en utilisant le même quantificateur pour les poids et les activations.

Cette formule garantit que les poids et activations des canaux correspondants ont des valeurs maximales similaires et partagent ainsi la même difficulté de quantification.

Un modèle de langage avec 10 milliards de paramètres ne peut-il pas fonctionner ? Un médecin chinois du MIT a proposé la quantification SmoothQuant, qui a réduit de moitié les besoins en mémoire et augmenté la vitesse de 1,56 fois !

Pour certains autres modèles avec des valeurs aberrantes d'activation relativement importantes, comme le GLM-130B avec 30 % de valeurs aberrantes, ce qui est plus difficile pour la quantification d'activation, vous pouvez choisir un α plus grand (comme 0,75), qui sera plus Beaucoup de la difficulté de quantification est transférée aux poids.

SmoothQuant est appliqué au bloc Transformer

La couche linéaire reprend la plupart des paramètres et calculs du modèle LLM. Par défaut, SmoothQuant met à l'échelle les activations d'entrée de toutes les couches linéaires du transformateur et quantifie les couches linéaires avec W8A8, ce qui permet la quantification de l'opérateur BMM dans le calcul de l'attention.

Un modèle de langage avec 10 milliards de paramètres ne peut-il pas fonctionner ? Un médecin chinois du MIT a proposé la quantification SmoothQuant, qui a réduit de moitié les besoins en mémoire et augmenté la vitesse de 1,56 fois !

Dans le processus, INT8 est d'abord utilisé pour quantifier les entrées et les poids d'opérateurs à forte intensité de calcul tels que BMM dans la couche linéaire et la couche d'attention, tandis que les opérations d'autres éléments légers tels que Softmax et LayerNorm le sont, en gardant le activation comme FP16, une telle conception permet d’équilibrer la précision et l’efficacité de l’inférence.

Partie expérimentale

Les chercheurs ont sélectionné trois modèles de langage à grande échelle pour évaluer SmoothQuant, notamment OPT, BLOOM et GLM-130B ; et ont utilisé sept tâches zéro-shot, dont LAMBADA, HellaSwag, PIQA, WinoGrande, OpenBookQA, RTE, COPA. et coll.

Les résultats expérimentaux montrent que SmoothQuant peut résoudre le problème de quantification de très grands LLM, dont les activations sont plus difficiles à quantifier.

Un modèle de langage avec 10 milliards de paramètres ne peut-il pas fonctionner ? Un médecin chinois du MIT a proposé la quantification SmoothQuant, qui a réduit de moitié les besoins en mémoire et augmenté la vitesse de 1,56 fois !

SmoothQuant peut correspondre à la précision du FP16 sur tous les ensembles de données d'évaluation, tandis que les lignes de base W8A8, ZeroQuant et Outlier Suppression produisent des résultats presque aléatoires.

Un modèle de langage avec 10 milliards de paramètres ne peut-il pas fonctionner ? Un médecin chinois du MIT a proposé la quantification SmoothQuant, qui a réduit de moitié les besoins en mémoire et augmenté la vitesse de 1,56 fois !

Et SmoothQuant peut quantifier sans perte tous les LLM ouverts avec plus de 100 milliards de paramètres

Les étages O1 et O2 de SmoothQuant maintiennent avec succès la précision en virgule flottante, tandis que l'étage O3 (statique par tenseur) réduit la précision moyenne de 0,8 %, probablement en raison à la différence entre les statistiques collectées statiquement et les statistiques d'activation pour des échantillons d'évaluation réels.

Néanmoins, SmoothQuant-O1 peut égaler la précision du FP16, tandis que SmoothQuant-O3 ne réduit la précision que de 1 %, ce qui est nettement meilleur que la ligne de base.

SmoothQuant est non seulement efficace pour les très grands LLM avec plus de 100 B de paramètres, mais donne également des résultats stables pour les plus petits LLM. SmoothQuant peut fonctionner à toutes les échelles de modèles OPT et correspond à la précision FP16 de la quantification INT8.

Un modèle de langage avec 10 milliards de paramètres ne peut-il pas fonctionner ? Un médecin chinois du MIT a proposé la quantification SmoothQuant, qui a réduit de moitié les besoins en mémoire et augmenté la vitesse de 1,56 fois !

Pour démontrer les améliorations de vitesse et les économies de mémoire de SmoothQuant-O3 intégré à PyTorch et FasterTransformer, nous avons mesuré la latence de bout en bout de génération de tous les états cachés pour un lot de 4 phrases à la fois, également connu sous le nom de l'étape de contexte et a enregistré l'utilisation maximale de la mémoire GPU au cours de ce processus.

En raison du manque de prise en charge par Huggingface du parallélisme des modèles, les chercheurs ont uniquement mesuré les performances de l'implémentation PyTorch de SmoothQuant sur un seul GPU et ont donc sélectionné OPT-6.7B, OPT-13B et OPT-30B pour évaluation.

Dans la bibliothèque FasterTransformer, SmoothQuant peut être connecté de manière transparente à l'algorithme Tensor Parallelism. Les chercheurs ont donc testé les benchmarks mono-GPU et multi-GPU de SmoothQuant sur OPT-13B, OPT-30B, OPT-66B et OPT-175B.

Les résultats expérimentaux menés sur le serveur GPU NVIDIA A100 80 Go montrent que SmoothQuant est toujours plus rapide que la ligne de base FP16 en termes de latence d'inférence et d'utilisation maximale de la mémoire basée sur l'implémentation de PyTorch. Lorsque la longueur de séquence est de 256, elle obtient 1,51 fois sur OPT-30B. augmentation de la vitesse.

Un modèle de langage avec 10 milliards de paramètres ne peut-il pas fonctionner ? Un médecin chinois du MIT a proposé la quantification SmoothQuant, qui a réduit de moitié les besoins en mémoire et augmenté la vitesse de 1,56 fois !

Vous pouvez également constater une tendance selon laquelle plus le modèle est grand, plus l'accélération est évidente, mais LLM.int8() est presque toujours plus lent que la ligne de base FP16, ce qui est également dû à l'énorme surcharge de mix- représentation d'activation de précision.

En termes de mémoire, SmoothQuant et LLM.int8() peuvent presque réduire de moitié l'utilisation de la mémoire du modèle FP16, tandis que SmoothQuant économise un peu plus de mémoire car il utilise entièrement INT8 GEMM.

Un modèle de langage avec 10 milliards de paramètres ne peut-il pas fonctionner ? Un médecin chinois du MIT a proposé la quantification SmoothQuant, qui a réduit de moitié les besoins en mémoire et augmenté la vitesse de 1,56 fois !

Par rapport à l'implémentation FP16 de l'OPT par FasterTransformer, SmoothQuant-O3 peut réduire davantage la latence d'exécution de l'OPT-13B et de l'OPT-30B lors de l'utilisation d'un seul GPU, jusqu'à 1,56 fois.


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!

Déclaration:
Cet article est reproduit dans:. en cas de violation, veuillez contacter admin@php.cn Supprimer