Maison >Périphériques technologiques >IA >Nouvelle méthode de quantification basée sur la réorganisation RPTQ : réalisation d'une quantification 3 bits de grands modèles de langage
Les grands modèles linguistiques (LLM) fonctionnent bien sur une variété de tâches, mais présentent des défis de déploiement en raison de la taille de leur modèle.
Dans cet article, des chercheurs de Houmo Intelligence, Tencent AI Lab, de l'Université des sciences et technologies de Huazhong, de l'Université de Pékin et de l'Institut de technologie de l'Illinois ont découvert que le principal défi dans la quantification des grands modèles de langage vient des différentes plages d'activation entre les canaux. , Et pas seulement un problème aberrant.
L'auteur propose une nouvelle méthode de quantification basée sur le reclassement, RPTQ, qui résout le problème de la quantification des activations de grands modèles de langage. RPTQ réduit l'impact des différences à l'échelle des canaux en réorganisant les canaux lors de l'activation, puis en les regroupant pour la quantification.
De plus, les auteurs réduisent les frais de stockage et de calcul en évitant la réorganisation explicite. Ce travail est le premier à pousser la quantification d’activation des modèles LLM à 3 bits. La quantification 3 bits des valeurs d'activation peut également être utilisée avec la quantification 3 bits des poids, ce qui réduit considérablement la surcharge des grands modèles vocaux.
Adresse papier : https://arxiv.org/abs/2304.01089
Adresse open source : https://github.com/hahnyuan/RPTQ4LLM
Les modèles de langage à grande échelle (LLM) ont démontré d'excellentes performances sur diverses tâches, mais leur déploiement est confronté à des défis en raison de leur taille énorme. Par exemple, un modèle 66B contient 66 milliards de paramètres et nécessite beaucoup de mémoire pour être stocké. De plus, à mesure que la longueur de la séquence et la taille du lot augmentent, le problème de consommation de mémoire devient plus grave, car l'activation consomme également une grande quantité de mémoire, comme le cache de clés et de valeurs (Cache de clés/valeurs) dans Auto-attention. Cependant, un seul GPU ou serveur ne dispose pas d’une capacité de mémoire suffisante pour stocker un si grand nombre de poids de modèles et d’activations intermédiaires. Par conséquent, LLM doit être divisé en plusieurs morceaux et stocké sur différents appareils. Étant donné que les poids et les activations sont stockés sur différents appareils, les données doivent être transférées entre ces appareils pendant le calcul, ce qui entraîne une consommation de bande passante et d'énergie importante.
Pour surmonter les défis des LLM à l'échelle du modèle, la quantification du modèle est apparue comme une approche prometteuse. Cette technique consiste à quantifier les poids et les activations des LLM à l'aide d'entiers de faible taille, réduisant ainsi considérablement le coût de stockage et d'exécution de ces modèles. Plus précisément, la quantification permet de réduire les besoins en mémoire pour conserver les tenseurs et accélère les opérations gourmandes en calcul telles que les multiplications matricielles et les couches linéaires. En quantifiant les poids et les activations, les frais de stockage et de communication sont réduits, et l'efficacité et la vitesse d'inférence sont améliorées.
Figure 1 Répartition numérique des différentes chaînes. Chaque point représente une valeur (maximale, minimale) dans un canal d'activation.
Récemment, GPTQ a réussi à quantifier les poids des LLM en 4 bits ou 3 bits en utilisant PTQ. Cependant, quantifier l’activation dans les LLM reste une tâche difficile.
Deux observations peuvent être faites à partir de la figure 1 :
1) Certains canaux présentent des valeurs aberrantes importantes avec des valeurs maximales ou minimales des centaines de fois supérieures à celles d'autres canaux. Des études antérieures ont également découvert ce problème et proposé des traitements spéciaux pour les valeurs aberrantes.
2) Différents canaux présentent des différences significatives dans les plages numériques. L'utilisation des mêmes paramètres de quantification pour quantifier différents canaux peut entraîner des erreurs de quantification importantes. Même si deux canaux ont la même valeur absolue de valeurs aberrantes, ils peuvent présenter de grandes variations dans la plage numérique.
Les techniques de quantification par tenseur qui quantifient l'ensemble du tenseur en utilisant les mêmes paramètres de quantification peuvent être moins efficaces. La raison en est que définir la plage de quantification pour couvrir une large plage de valeurs peut entraîner des erreurs de quantification importantes pour les canaux avec des valeurs plus petites, tandis que la définir pour couvrir une petite plage de valeurs peut entraîner une troncature significative des valeurs aberrantes et des résultats. dans Erreur de quantification significative. Par exemple, un canal peut avoir une plage de valeurs comprise entre -100 et -50, tandis qu'un autre canal peut avoir une plage de valeurs comprise entre 80 et 100. Essayer de couvrir leur plage en quantifiant la plage de - 100 à 100 entraînera des erreurs de quantification importantes pour les deux canaux. Il s’agit d’un défi qui n’a pas été abordé efficacement dans les recherches précédentes.
Figure 2 Comparaison des différentes méthodes pour résoudre le problème de quantification d'activation.
Pour résoudre le problème des différences de canaux lors de l'activation, l'auteur propose une nouvelle méthode de quantification post-entraînement basée sur la réorganisation, RPTQ.
Comme le montre la figure 2, cette méthode regroupe les canaux avec des plages numériques similaires, puis quantifie les valeurs de chaque cluster en utilisant les mêmes paramètres de quantification. Pour mettre en œuvre la méthode de quantification basée sur le reclassement, les auteurs ont d’abord utilisé un ensemble de données d’étalonnage comme entrée d’inférence, à partir duquel les valeurs maximales et minimales de chaque canal d’activation ont été dérivées.
Ensuite, ils ont utilisé l'algorithme KMeans pour diviser différents canaux en g clusters, en fonction des points formés par les valeurs maximales et minimales de chaque canal. Une fois les clusters établis, ils effectuent une réorganisation des canaux pour placer les canaux du même cluster à proximité. De cette façon, les canaux avec des maxima et des minima similaires sont regroupés et partagent un ensemble commun de paramètres de quantification. Après le processus de réorganisation, les auteurs ont quantifié l’activation au sein de chaque cluster. Cette méthode calcule les paramètres de quantification (facteur d'échelle s et point zéro z) séparément pour chaque cluster, garantissant que ces paramètres sont spécifiques au canal correspondant.
En fin de compte, cette méthode garantit que la quantification de chaque cluster est optimisée, réduisant ainsi les erreurs de quantification.
Figure 3 : Diagramme de défaillance du processus d'inférence d'une couche de transformateur quantifiée avec des poids et des activations réorganisés. Les indices de réarrangement sont représentés par les symboles R1 à R5.
Le réarrangement explicite est une opération d'exécution de réorganisation des canaux lors d'une activation, qui nécessite de déplacer physiquement les données des différents canaux d'un emplacement mémoire à un autre, donc pour les grands modèles avec un grand nombre de canaux, le réarrangement Le processus peut prendre beaucoup de temps. De plus, le stockage des tenseurs d'activation source et cible augmente la surcharge de mémoire. Par conséquent, les auteurs proposent des stratégies pour éviter la réorganisation explicite, réduisant ainsi la charge de calcul et améliorant l’efficacité de l’inférence.
Comme le montre la figure 3, l'auteur réorganise les poids des couches linéaires afin qu'elles puissent directement produire des activations dans l'ordre trié. De plus, les auteurs ont modifié la méthode de LayerNorm pour produire directement des activations réorganisées, éliminant ainsi le besoin d'ajustements explicites des canaux lors de l'inférence.
Les auteurs ont évalué les performances de l'OPT sous trois configurations de largeur de bits différentes : W4A16, W4A8 et W4A4. En outre, l'auteur a également développé un nouveau schéma de quantification, W4A4KV, W4A3KV et W3A3KV, qui quantifie uniquement la consommation de mémoire principale - cache de clés et cache de valeurs (Cache clé/valeur). Sur la base du tableau, les observations suivantes peuvent être faites : En général, à mesure que la largeur de bit de quantification d'activation diminue, les performances du modèle diminuent. Mais dans la plupart des cas, cette dégradation n’est pas significative. Pour certaines tâches, les performances ont chuté de moins de 1 %, voire se sont améliorées.
La surcharge de mémoire de LLM provient de trois aspects : Premièrement, le stockage des poids dans la mémoire de l'appareil peut être considérablement réduit grâce à la quantification. Deuxièmement, les activations temporaires générées lors de l'exécution du réseau nécessitent l'allocation de la mémoire de l'appareil. Ces activations temporaires peuvent être libérées après utilisation et n'ont donc pas d'impact significatif sur l'utilisation globale de la mémoire. Enfin, le cache clé/valeur est nécessaire pour prédire les mots suivants. Lorsque la taille du lot et la longueur de la séquence sont importantes, le cache de clés et de valeurs occupe la majeure partie de la mémoire.
Le tableau montre l'utilisation de la mémoire sous différents paramètres. On peut constater que l'activation de bits inférieurs peut réduire considérablement l'utilisation de la mémoire, en particulier lorsque la taille du lot et la longueur de la séquence sont importantes. Plus précisément, lorsque la taille du lot est de 64 et la longueur de la séquence est de 8 192, la configuration W4A4 sous OPT-66b économise plus de 900 Go de mémoire par rapport à la configuration W4A16. Par conséquent, l’utilisation de RPTQ pour quantifier les activations peut réduire considérablement la pression de la mémoire dans les tâches de texte longues ou les scénarios à volume élevé.
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!