Optimisation fine LLM Optimisation fine efficiente des paramètres (PEFP) — LoRA et QLoRA — Partie 1

La perfection optimisée LLM Une optimisation fine et efficace des paramètres (PEFP) avec LoRA et QLoRA - Partie 1

Dans le monde en constante évolution de l’IA et du traitement du langage naturel (NLP), les Grands Modèles Linguistiques et l’IA Générative sont devenus des outils puissants pour diverses applications. Pour obtenir les résultats souhaités à partir de ces modèles, différents approches peuvent être largement classifiées en trois catégories : l’Ingénierie de la Question, le Fine-Tuning et la Création d’un nouveau modèle. Au fur et à mesure que nous progressons d’un niveau à un autre, les exigences en termes de ressources et de coûts augmentent considérablement.

Dans cet article de blog, nous explorerons ces approches et nous concentrerons sur une technique efficace appelée Fine-Tuning à faible coût en termes de paramètres (PEFT) qui nous permet de peaufiner les modèles avec une infrastructure minimale tout en maintenant des performances élevées.

Ingénierie de la Question avec des Modèles Existants

À un niveau de base, obtenir les résultats attendus à partir des Grands Modèles Linguistiques implique une ingénierie de la question minutieuse. Ce processus consiste à créer des questions et des entrées appropriées pour obtenir les réponses souhaitées du modèle. L’Ingénierie de la Question est une technique essentielle pour divers cas d’utilisation, notamment lorsque des réponses générales suffisent.

Création d’un Nouveau Modèle

Au niveau le plus élevé, la création d’un nouveau modèle consiste à former un modèle à partir de zéro, spécifiquement adapté à une tâche ou à un domaine particulier. Cette approche offre le plus haut niveau de personnalisation, mais elle demande une puissance de calcul substantielle, des données étendues et du temps.

Peaufinage des Modèles Existants

Lorsque l’on traite des cas d’utilisation spécifiques à un domaine qui nécessitent des adaptations du modèle, le Fine-Tuning devient essentiel. Le Fine-Tuning nous permet de tirer parti des modèles pré-formés existants et de les adapter à des tâches ou des domaines spécifiques. En formant le modèle sur des données spécifiques à un domaine, nous pouvons le personnaliser pour bien performer sur des tâches ciblées.

Cependant, ce processus peut être intensif en ressources et coûteux, car nous devrons modifier les millions de paramètres lors de la formation. Le Fine-Tuning du modèle nécessite beaucoup de données de formation, une infrastructure importante et des efforts.

Dans le processus de Fine-Tuning complet des Grands Modèles Linguistiques, il y a un risque d’oubli catastrophique, où les connaissances acquises lors de la préformation sont perdues.

Appliquer un Fine-Tuning complet à un seul modèle pour différentes tâches spécifiques à un domaine aboutit souvent à la création de grands modèles adaptés à des tâches spécifiques, manquant de modularité. Ce dont nous avons besoin, c’est une approche modulaire qui évite de modifier tous les paramètres tout en demandant moins de ressources d’infrastructure et moins de données.

Il existe différentes techniques, telles que le Fine-Tuning à faible coût en termes de paramètres (PEFT), qui permettent d’effectuer un Fine-Tuning modulaire avec des ressources et des coûts optimaux.

Fine-Tuning à Faible Coût en termes de Paramètres (PEFT)

PEFT est une technique conçue pour affiner les modèles tout en minimisant le besoin de ressources et de coûts étendus. PEFT est un excellent choix lorsqu’il s’agit de tâches spécifiques à un domaine qui nécessitent une adaptation du modèle. En utilisant PEFT, nous pouvons trouver un équilibre entre la conservation des connaissances précieuses du modèle pré-formé et son adaptation efficace à la tâche cible avec moins de paramètres. Il existe différentes manières de réaliser un Fine-Tuning à faible coût en termes de paramètres. Les Paramètres de Faible Rang ou LoRA et QLoRA sont les plus largement utilisés et efficaces.

Paramètres de Faible Rang

C’est l’une des méthodes les plus largement utilisées, où un ensemble de paramètres est ajouté de manière modulaire au réseau avec un espace de dimension inférieure. Au lieu de modifier l’ensemble du réseau, seul ce réseau modulaire à faible rang est modifié pour obtenir les résultats.

Penchons-nous sur l’une des techniques les plus populaires appelée LoRA et QLoRA

Adaptation à Faible Rang (LoRA)

L’Adaptation à Faible Rang offre une approche modulaire pour affiner un modèle pour des tâches spécifiques à un domaine et offre la possibilité de l’apprentissage par transfert. La technique LoRA peut être mise en œuvre avec moins de ressources et est efficace en termes de mémoire.

Dans l’image suivante, vous pouvez voir la décomposition des dimensions/rangs, ce qui réduit considérablement l’empreinte mémoire.

Nous appliquerons cela en ajoutant un adaptateur LoRA aux réseaux feed-forward existants. Nous gèlerons les réseaux feed-forward d’origine et utiliserons le réseau LoRA pour la formation. Référez-vous à l’image ci-dessous pour plus de détails.

  • LoRA peut être mis en œuvre en tant qu’adaptateur conçu pour améliorer et étendre les couches de réseau neuronal existantes. Il introduit une couche supplémentaire de paramètres entraînables (poids) tout en maintenant les paramètres d’origine dans un état gelé. Ces paramètres entraînables possèdent une dimension (rang) considérablement réduite par rapport aux dimensions du réseau d’origine. C’est le mécanisme grâce auquel LoRA simplifie et accélère le processus d’adaptation des modèles d’origine pour les tâches spécifiques à un domaine. Maintenant, examinons de plus près les composants du réseau d’adaptateur LORA.
  • Les paramètres pré-entraînés du modèle d’origine (W) sont figés. Ces poids ne seront pas modifiés lors de l’entraînement.
  • Un nouvel ensemble de paramètres est ajouté simultanément aux réseaux WA et WB. Ces réseaux utilisent des vecteurs de poids de rang inférieur, où les dimensions de ces vecteurs sont représentées par dxr et rxd. Ici, ‘d’ représente la dimension du vecteur de paramètres du réseau d’origine gelé, tandis que ‘r’ signifie le rang inférieur ou la dimension choisie. La valeur de ‘r’ est toujours plus petite, et plus ‘r’ est petit, plus le processus d’entraînement du modèle est accéléré et simplifié. Déterminer la valeur appropriée pour ‘r’ est une décision cruciale dans LoRA. Opter pour une valeur plus basse entraîne une formation plus rapide et plus rentable du modèle, bien que cela ne garantisse pas des résultats optimaux. En revanche, choisir une valeur plus élevée pour ‘r’ prolonge le temps et le coût de formation, mais améliore la capacité du modèle à traiter des tâches plus complexes.
  • Les résultats du réseau d’origine et du réseau à faible rang sont calculés avec un produit matriciel, ce qui donne une matrice de poids de dimension n, qui est utilisée pour générer le résultat.
  • Ce résultat est ensuite comparé aux résultats attendus (pendant l’entraînement) pour calculer la fonction de perte, et les poids WA et WB sont ajustés en fonction de la fonction de perte dans le cadre de la rétropropagation, comme pour les réseaux neuronaux standards.

Explorons comment cette approche contribue à la réduction de l’empreinte mémoire et minimise les exigences en matière d’infrastructure. Considérons un scénario où nous avons une matrice de paramètres de 512×512 dans le réseau feed-forward, ce qui représente un total de 262 144 paramètres qui doivent subir une formation. Si nous choisissons de geler ces paramètres pendant le processus de formation et d’introduire un adaptateur LoRA avec un rang de 2, le résultat est le suivant: WA aura 512*2 paramètres, et WB aura également 512*2 paramètres, totalisant 2 048 paramètres. Ce sont les paramètres spécifiques qui subissent une formation avec des données spécifiques au domaine. Cela représente une amélioration significative de l’efficacité de calcul, réduisant considérablement le nombre de calculs requis pendant le processus de rétropropagation. Ce mécanisme est crucial pour atteindre une formation accélérée.

L’aspect le plus avantageux de cette approche est que l’adaptateur LoRA formé peut être préservé de manière indépendante et utilisé comme des modules distincts. En construisant des modules spécifiques au domaine de cette manière, nous atteignons efficacement un haut niveau de modularité. De plus, en évitant de modifier les poids d’origine, nous contournerons avec succès le problème de l’oubli catastrophique.

Maintenant, plongeons dans les améliorations supplémentaires qui peuvent être mises en œuvre au-dessus de LoRA, en particulier grâce à l’utilisation de QLoRA, afin d’élever l’optimisation au niveau supérieur.

Adaptation de faible rang quantifié (QLoRA)

QLoRA étend LoRA pour améliorer l’efficacité en quantifiant les valeurs de poids du réseau d’origine, à partir de types de données haute résolution tels que Float32, vers des types de données de résolution inférieure comme int4. Cela entraîne une demande de mémoire réduite et des calculs plus rapides.

Il y a trois optimisations clés que QLoRA apporte à LoRA, ce qui en fait l’une des meilleures méthodes PEFT.

Quantification 4-bit NF4

Le 4-bit NormalFloat4 est un type de données optimisé qui peut être utilisé pour stocker des poids, ce qui réduit considérablement l’empreinte mémoire. La quantification 4-bit NormalFloat4 est un processus en 3 étapes.

  • Normalisation et quantification: Dans le cadre des étapes de normalisation et de quantification, les poids sont ajustés à une moyenne nulle et une variance unitaire constante. Un type de données 4 bits ne peut stocker que 16 nombres. Dans le cadre de la normalisation, les poids sont attribués à ces 16 nombres, distribués de manière centrée autour de zéro, et au lieu de stocker les poids, la position la plus proche est enregistrée. Voici un exemple

Prenons un poids FP32 avec une valeur de 0.2121. une séparation de 4 bits entre -1 et 1 donnera les positions de nombres suivantes.

0.2121 se rapproche le plus de 0.1997, qui est la 10e position. Au lieu de sauvegarder le FP32 de 0.2121, nous stockons 10.

La formule typique:

int4Tensor = valeur arrondie (nombre total de positions / absmax (inputXTensor))                     * FP32WeightsTensorDans l'exemple ci-dessus, nombre total de positions = 16

La valeur nombre total de positions / absmax (inputXTensor) est appelée constante de quantification

Évidemment, il y a une perte de données lorsque nous normalisons et quantifions en passant de FP32, qui est un type de données de haute résolution, à un type de données de résolution inférieure. La perte n’est pas énorme tant qu’il n’y a pas d’outliers dans le tenseur d’entrée, ce qui pourrait affecter abmax() et perturber la distribution. Pour éviter ce problème, nous quantifions généralement les poids indépendamment par des blocs plus petits, ce qui normalisera les outliers.

  • Déquantification: Pour déquantifier les valeurs, nous faisons exactement l’inverse.
dequantizedTensor = int4Tensor                     /valeur arrondie (nombre total de positions / absmax (inputXTensor))Dans l'exemple ci-dessus, nombre total de positions = 16

La quantification du 4-bit NormalFloat est appliquée aux poids du modèle d’origine; les poids de l’adaptateur LoRA seront en FP32, car toute la formation se fera sur ces poids. Une fois que toute la formation est terminée, les poids d’origine seront déquantifiés.

Double quantification

La double quantification réduit encore l’empreinte mémoire en quantifiant les constantes de quantification. Dans l’étape précédente de quantification 4-bit FP4, nous avons calculé la constante de quantification. Même cela peut être quantifié pour une meilleure efficacité, et c’est ce que nous faisons dans la double quantification.

Étant donné que la quantification est effectuée par blocs, afin d’éviter les valeurs aberrantes, généralement 64 poids dans 1 bloc, nous aurons une constante de quantification. Ces constantes de quantification peuvent être quantifiées davantage pour réduire l’empreinte mémoire.

Disons que nous regroupons 64 paramètres/poids par bloc et chaque constante de quantification occupe 32 bits, car c’est du FP32. Cela ajoute en moyenne 0,5 bit par paramètre, ce qui signifie que nous parlons d’au moins 500 000 bits pour un modèle typique de 1 million de paramètres.

Avec la double quantification, nous appliquons une quantification à ces constantes de quantification, ce qui optimise davantage notre utilisation de la mémoire. Nous pouvons prendre un groupe de 256 valeurs de quantification et utiliser une quantification sur 8 bits. Nous pouvons obtenir environ 0,127 bit par paramètre, ce qui ramène la valeur à 125 000 bits pour le modèle de 1 million de paramètres.

Voici le calcul : nous avons 64 poids répartis en 256 blocs, qui occupent 32 bits, soit 32/(64*256), ce qui donne 0,001953125.

Nous avons 8 bits pour 64 poids, ce qui donne 8/64, soit 0,125.

Si nous additionnons 0,125+0,001953125, nous obtenons environ 0,127.

Pagination de la mémoire unifiée

En plus des techniques mentionnées ci-dessus, QLoRA utilise également la fonctionnalité de mémoire unifiée de nVidia, qui permet des transferts de pages sans heurts entre le GPU et le CPU lorsque le GPU manque de mémoire, gérant ainsi les pics de mémoire soudains du GPU et aidant à résoudre les problèmes de débordement de mémoire.

LoRA et QLoRA sont deux des techniques les plus émergentes et les plus largement utilisées pour l’affinement fin efficient des paramètres.

Dans la prochaine partie, nous mettrons en œuvre QLoRA ; d’ici là, amusez-vous bien avec les LLM.

J’espère que cela vous a été utile ; laissez vos commentaires et vos suggestions…

Au revoir pour le moment…

We will continue to update IPGirl; if you have any questions or suggestions, please contact us!

Share:

Was this article helpful?

93 out of 132 found this helpful

Discover more

AI

Amazon n'est pas préparé à la marée montante des livres rédigés par l'IA. Jane Friedman en a la preuve.

Les escroqueries liées aux livres se multiplient avec l'avènement du contenu généré par l'IA.

AI

Démystifier l'intelligence artificielle générative une plongée approfondie dans les modèles de diffusion et l'évolution du traitement visuel

Pour combiner des visuels générés par ordinateur ou déduire les caractéristiques physiques d’une scène à partir...

AI

L'Europe cherche des usines virtuelles dans la nouvelle révolution industrielle

L'Union européenne finance le projet Digital Intelligent MOdular FACtories afin de faire progresser le concept d'usin...

AI

Vers l'IA générale Le rôle des LLMs et des modèles fondamentaux dans la révolution de l'apprentissage tout au long de la vie

Intégrer les innovations dans les avancées de l’apprentissage continu vers l’intelligence artificielle gé...

AI

Les images synthétiques établissent une nouvelle norme en matière d'efficacité de l'apprentissage de l'IA.

Une équipe de chercheurs a démontré que l'entraînement des modèles d'apprentissage automatique avec des images synthé...