top of page
Rechercher
  • Photo du rédacteurHerve Blanc

Le guide complet du réglage fin de LLM

Dernière mise à jour : 11 déc. 2023


curvy shapes

Source image: 123RF



Cet article fait partie de Démystifier l'IA, une série d’articles qui (tentent de) désambiguïser le jargon et les mythes entourant l'IA.


Les grands modèles de langage (LLMs) préentraînés peuvent faire des choses impressionnantes, sans adaptation requise, y compris la génération de texte, le résumé et le codage. Cependant, les LLMs ne sont pas des solutions universelles adaptées à toutes les applications. De temps en temps (ou fréquemment, selon votre application), vous rencontrerez une tâche que votre modèle de langage ne peut pas accomplir.


Dans de telles situations, l'une des options dont vous disposez est d'affiner le LLM. Fondamentalement, le réglage fin est le processus de réentrainement d'un modèle de base sur de nouvelles données. Cela peut être coûteux, compliqué et ce n'est pas la première solution qui devrait venir à l'esprit. Mais c'est néanmoins une technique très puissante qui devrait être dans la boîte à outils des organisations qui intègrent des LLMs dans leurs applications.


Voici ce que vous devez savoir sur le réglage fin des grands modèles de langage. Même si vous n'avez pas l'expertise pour le faire vous-même, savoir comment fonctionne le réglage fin peut vous aider à prendre les bonnes décisions.


Qu'est-ce que l’affinage de LLM?

Bien qu'il s'agisse d'un article sur le réglage fin des LLMs, ce n'est pas un problème spécifique aux modèles de langage. Tout modèle d'apprentissage automatique peut nécessiter un réglage fin ou un nouvel entrainement à différentes occasions. Lorsqu'un modèle est entraîné sur un jeu de données, il tente d'approximer les caractéristiques de la distribution des données sous-jacente.


Pour mieux illustrer le concept, considérons un réseau neuronal convolutif (CNN) conçu pour détecter des images de voitures. Le modèle a été formé sur des dizaines de milliers d'images de voitures particulières en milieu urbain. Ses paramètres ont été ajustés pour des formes, des couleurs et des motifs de pixels que l'on voit souvent dans ces types de voitures et d'environnements. Et il fonctionne très bien lorsqu'il est utilisé sur des images de voitures dans les villes.


Maintenant, supposons que vous souhaitiez utiliser le même modèle dans une application qui implique la détection de camions sur les autoroutes. Les performances du modèle chuteront soudainement parce que la distribution sous-jacente est significativement différente.


Dans ce cas, une option serait d'entraîner le modèle à partir de zéro sur des images de camions sur les autoroutes. Mais cela vous obligerait à créer un très grand ensemble de données contenant des dizaines de milliers d'images étiquetées de camions, ce qui peut être coûteux et prendre beaucoup de temps.


hallucination LLM

Les modèles d'apprentissage automatique entraînés ne fonctionnent pas bien sur les exemples « hors distribution » (inconnus)



Incidemment, les camions et les voitures de tourisme ont beaucoup de caractéristiques visuelles en commun. Par conséquent, au lieu d'entraîner le nouveau modèle à partir de zéro, vous pouvez continuer là où le modèle entraîné s'est arrêté. Avec un petit jeu de données d'images de camions (peut-être quelques milliers ou même quelques centaines) et plusieurs époques d’entrainement, vous pouvez optimiser l'ancien modèle pour la nouvelle application. Fondamentalement, dans le détail, le réglage fin met à jour les paramètres du modèle pour correspondre à la distribution du nouvel ensemble de données.


C'est l'idée derrière le réglage fin. Vous prenez un modèle ML entraîné et utilisez de nouvelles données pour mettre à jour ses paramètres pour de nouveaux réglages ou le réutiliser pour de nouvelles applications.


La même règle s'applique aux modèles de langage. Si la distribution des données utilisées pour entraîner votre modèle est très différente de celle de votre application, vous pouvez envisager de l'affiner. Cela peut se produire si, par exemple, vous utilisez un LLM pour une application médicale mais que ses données d'entraînement ne contiennent aucune littérature médicale. Cependant, le réglage fin des LLM a ses propres nuances qui méritent d'être explorées.



Performance des LLMs améliorées

Les modèles ML affinés sur les nouvelles données peuvent améliorer les tâches ciblées


Différentes techniques de réglage fin LLM

Toutes les formes de réglage fin ne sont pas égales et chacune est utile pour différentes applications. Dans certains cas, vous souhaitez réutiliser un modèle pour une application différente. Par exemple, vous avez un LLM pré-entraîné qui peut générer du texte.


Maintenant, vous voulez l'utiliser pour un autre type d'application, comme le sentiment ou la classification de sujet. Dans ce cas, vous allez reconvertir le modèle en apportant une petite modification à son architecture avant de l'affiner.


Pour cette application, vous n'utiliserez que les encodages produits par la partie transformer du modèle. Les encodages sont des vecteurs numériques qui capturent les différentes caractéristiques de l'invite d'entrée. Certains modèles de langage génèrent directement leurs propres encodages. D'autres, comme la famille de LLM GPT, utilisent les encodages pour générer des jetons (ou du texte).


Lors de la reconversion, vous connectez la couche d'encodage du modèle à un modèle de classificateur (par exemple, un ensemble de couches entièrement connectées) qui relie les encodage aux probabilités de classe. Dans cette configuration, il vous suffit d'entraîner le classifieur sur les encodages générées par le modèle. Les couches d'attention du LLM sont gelées et n'ont pas besoin d'être mises à jour, ce qui se traduit par d'énormes économies de coûts de calcul. Cependant, pour entrainer le classifieur, vous aurez besoin d'un jeu de données d'apprentissage supervisé composé d'exemples de texte et de la classe correspondante. La taille de votre jeu de données de réglage fin dépendra de la complexité de la tâche et de votre composant de classification.


Mais dans certains cas, vous devrez mettre à jour les poids des paramètres du modèle transformer. Pour cela, vous devrez dégeler les couches d'attention et effectuer un réglage complet sur l'ensemble du modèle. Cette opération peut être coûteuse et compliquée en fonction de la taille de votre modèle. (Dans certains cas, vous pouvez garder (« geler ») des parties du modèle pour réduire les coûts de réglage fin. Et il existe plusieurs techniques qui peuvent réduire les coûts de réglage fin des LLM – plus à ce sujet dans la suite.)


Réutilisation vs réglage fine LLM

Réutilisation LLM vs réglage fin complet


Réglage fin non supervisé vs réglage fin supervisé (SFT)

Dans certains cas, vous souhaitez simplement mettre à jour les connaissances du LLM. Par exemple, vous voudrez peut-être affiner le modèle sur la littérature médicale ou une nouvelle langue. Pour ces situations, vous pouvez utiliser un jeu de données non structuré, tel que des articles et des documents scientifiques recueillis dans des revues médicales. L'objectif est d'entraîner le modèle sur suffisamment de jetons (tokens) pour être représentatif du nouveau domaine ou du type d'entrée auquel il sera confronté dans l'application cible.


L'avantage des données non structurées est qu'elles sont évolutives car les modèles peuvent être entrainés par apprentissage non supervisé ou auto-supervisé. La plupart des modèles dits « de fondation » sont formés sur des ensembles de données non structurés composés de centaines de milliards de jetons. La collecte de données non structurées pour affiner le modèle d'un nouveau domaine peut également être relativement facile, surtout si vous disposez de bases de connaissances et de documents internes.


Cependant, dans certains cas, la mise à jour des connaissances du modèle n'est pas suffisante et vous souhaitez modifier le comportement du LLM. Dans ces situations, vous aurez besoin d'un jeu de données de réglage fin supervisé (SFT), qui est une collection d'invites et leurs réponses correspondantes. Les ensembles de données SFT peuvent être organisés manuellement par des utilisateurs ou générés par d'autres LLMs. Le réglage fin supervisé est particulièrement important pour les LLMs tels que ChatGPT, qui ont été conçus pour respecter les instructions de l'utilisateur et rester sur une tâche spécifique sur de longues séquences de texte. Ce type spécifique de réglage fin est également appelé réglage fin d'instruction.


Réglage fin LLM non supervisé vs supervisé

Réglage fin LLM non supervisé vs supervisé


Apprentissage par renforcement à partir de la rétroaction humaine (RLHF)

Certaines entreprises font passer le SFT ou le réglage fin des instructions au niveau supérieur et utilisent l'apprentissage par renforcement à partir de la rétroaction humaine (RLHF). Il s'agit d'un processus compliqué et coûteux qui nécessite le recrutement d'examinateurs humains et la mise en place de modèles auxiliaires pour affiner le LLM. C'est pourquoi, pour le moment, seules les entreprises et les laboratoires d'IA disposant de ressources techniques et financières importantes peuvent se permettre RLHF.


Il y a plusieurs façons de faire RLHF mais l'idée générale est la suivante: Lorsque vous entraînez un LLM sur des milliards de jetons, il génère des séquences de jetons qui sont les plus susceptibles d'apparaître les uns à côté des autres. Le texte est globalement cohérent et a du sens. Mais ce n'est peut-être pas ce dont l'utilisateur ou l'application a besoin. RLHF amène les humains dans la boucle pour orienter le LLM dans la bonne direction. Les évaluateurs humains améliorent la sortie du modèle sur les invites. Ces évaluations agissent comme des signaux pour affiner le modèle afin de générer une sortie qui a la plus haute notation.


Un exemple populaire de RLHF est ChatGPT. OpenAI a affiné le modèle sur la base de son article InstructGPT. Tout d'abord, ils ont affiné un modèle GPT-3.5 via SFT sur un ensemble d'invites et de réponses générées manuellement. Dans l'étape suivante, ils ont recruté des évaluateurs humains et leur ont demandé de noter la sortie du modèle sur diverses invites. Ils ont utilisé les données de rétroaction humaine pour entrainer un modèle de récompense qui tente d'imiter les préférences humaines. Enfin, ils ont affiné le modèle de langage grâce à une boucle d'apprentissage par renforcement profond (RL) dans laquelle le LLM génère des résultats, le modèle de récompense les évalue et le LLM met à jour ses paramètres de manière à maximiser sa récompense.


Processus d’entrainement de ChatGPT (source: OpenAI)

Processus d’entrainement de ChatGPT (source: OpenAI)


Réglage fin efficace par paramètre (PEFT)

Un domaine de recherche intéressant dans le réglage fin LLM est la réduction des coûts de mise à jour des paramètres des modèles. C'est l'objectif du réglage fin efficace par paramètre (PEFT paramètre-efficient fine-tuning), un ensemble de techniques qui tentent de réduire le nombre de paramètres à mettre à jour.


Il existe différentes techniques de PEFT. L'une d'entre elles est l'adaptation de bas rang (LoRA), une technique qui est devenue particulièrement populaire parmi les modèles de langage open source. L'idée derrière LoRA est que le réglage fin d'un modèle de base pour une tâche spécifique ne nécessite pas de mettre à jour tous ses paramètres. Il existe une matrice de faible dimension qui peut représenter l'espace de la tâche en aval avec une très grande précision.


Le réglage fin avec LoRA entraîne cette matrice de bas rang au lieu de mettre à jour tous les paramètres du LLM principal. Les pondérations des paramètres du modèle LoRA sont ensuite intégrées dans le LLM principal ou ajoutées à celui-ci lors de l'inférence. LoRA peut réduire les coûts de réglage fin jusqu'à 98 %. Il permet également de stocker plusieurs modèles affinés à petite échelle qui peuvent être branchés sur le LLM au moment de l'exécution.


Adaptation de bas rang (LoRA)

Adaptation de bas rang (LoRA)


Quand ne pas utiliser le réglage fin LLM

Dans certains cas, le réglage fin LLM n'est pas possible ou n'est pas utile:

1- Certains modèles ne sont disponibles que via des interfaces de programmation d'applications (API) qui n'ont pas ou peu de services de réglage fin.

2- Vous ne disposez peut-être pas de suffisamment de données pour affiner le modèle de la tâche visée ou du domaine spécifique de votre application.

3- Les données de l'application peuvent changer fréquemment. Affiner le modèle souvent pourrait ne pas être possible ou pourrait être préjudiciable. Par exemple, les données dans les applications liées à l'actualité changent tous les jours.

4- L'application peut être dynamique et contextuelle. Par exemple, si vous créez un chatbot qui personnalise sa sortie pour chaque utilisateur, vous ne pouvez pas affiner le modèle sur les données utilisateur.


Dans de tels cas, vous pouvez utiliser l'apprentissage contextuel ou l'augmentation de récupération (REALM), où vous fournissez au modèle un contexte pendant le temps d'inférence. Par exemple, si vous souhaitez que le LLM vous aide à rédiger un article ou un e-mail, vous ajoutez à votre invite des documents pertinents (reportages, pages Wikipédia, documents d'entreprise, etc.) et conditionnez ses réponses à leur contenu. Un autre exemple est un LLM qui doit fournir des réponses spécifiques à l'utilisateur, par exemple sur ses données financières, ses données de santé, ses e-mails, etc. Encore une fois, lorsque l'utilisateur entre une invite, l'application récupère ses données et les ajoute à l'invite pour conditionner le modèle.



flux de travail pour augmenter les LLM avec des documents contextuels

Un flux de travail pour augmenter les LLM avec des documents contextuels



Une tendance de conception utile consiste à créer une base de données vectorielle qui stocke les encodages de documents d'entreprise. Lorsque l'utilisateur entre une invite, la base de données vectorielle récupère les documents pertinents et les envoie en tant que contexte au modèle.


Parfois, vous pouvez utiliser des approches hybrides, où vous affinez le modèle sur un jeu de données spécifique à l'application, puis fournissez un contexte spécifique à l'utilisateur lors de l'inférence.


Avec l'intérêt croissant pour l'utilisation des LLMs dans différentes applications, nous pouvons nous attendre à ce que des techniques de réglage fin plus intéressantes et des solutions alternatives émergent dans un proche avenir.


Remerciements


Cet article est la traduction française la plus fidèle possible de «The complete guide to LLM fine-tuning» avec l'aimable permission de son auteur Ben Dickson

bottom of page