cours
Guide d'introduction à la mise au point des LLM
Depuis un an et demi, le domaine du traitement du langage naturel (NLP) a connu une transformation significative grâce à la popularisation des grands modèles de langage (LLM). Les compétences en langage naturel que présentent ces modèles ont permis des applications qui semblaient impossibles à réaliser il y a quelques années.
Les LLM repoussent les limites de ce qui était auparavant considéré comme réalisable, avec des capacités allant de la traduction linguistique à l'analyse des sentiments et à la génération de textes.
Cependant, nous savons tous que la formation de ces modèles est longue et coûteuse. C'est pourquoi il est important d'affiner les grands modèles linguistiques pour adapter ces algorithmes avancés à des tâches ou domaines spécifiques.
Ce processus améliore les performances du modèle pour les tâches spécialisées et élargit considérablement son applicabilité dans différents domaines. Cela signifie que nous pouvons tirer parti de la capacité de traitement du langage naturel des LLM pré-entraînés et open-source et les former davantage pour qu'ils effectuent nos tâches spécifiques.
Aujourd'hui, explorez l'essence des modèles linguistiques pré-entraînés et approfondissez le processus de réglage fin.
Passons donc en revue les étapes pratiques pour affiner un modèle tel que GPT-2 à l'aide de Hugging Face.
Comprendre le fonctionnement des modèles linguistiques pré-entraînés
Le modèle linguistique est un type d'algorithme d'apprentissage automatique conçu pour prévoir le mot suivant dans une phrase, en s'appuyant sur les segments précédents. Il est basé sur l'architecture Transformers, qui est expliquée en détail dans notre article sur le fonctionnement des Transformers.
Les modèles linguistiques préformés, tels que le GPT (Generative Pre-trained Transformer), sont formés sur de grandes quantités de données textuelles. Cela permet aux LLM de saisir les principes fondamentaux qui régissent l'utilisation des mots et leur disposition dans la langue naturelle.
Image par l'auteur. Entrée et sortie du LLM.
Le plus important est que ces modèles sont non seulement capables de comprendre le langage naturel, mais aussi de générer des textes semblables à ceux d'un humain sur la base des données qu'ils reçoivent.
Et le meilleur dans tout ça ?
Ces modèles sont déjà accessibles au plus grand nombre grâce aux API. Si vous souhaitez apprendre à tirer parti des LLM les plus puissants d'OpenAI, vous pouvez le faire en suivant cet aide-mémoire sur l'API d'OpenAI.
Qu'est-ce que le réglage fin et pourquoi est-il important ?
La mise au point est le processus qui consiste à prendre un modèle pré-entraîné et à l'entraîner de nouveau sur un ensemble de données spécifiques à un domaine.
La plupart des modèles LLM actuels ont une très bonne performance globale mais échouent dans des problèmes spécifiques orientés vers une tâche. Le processus de mise au point offre des avantages considérables, notamment la réduction des frais de calcul et la possibilité d'utiliser des modèles de pointe sans avoir à en construire un à partir de zéro.
Les transformateurs permettent d'accéder à une vaste collection de modèles pré-entraînés adaptés à diverses tâches. La mise au point de ces modèles est une étape cruciale pour améliorer la capacité du modèle à effectuer des tâches spécifiques, telles que l'analyse des sentiments, la réponse aux questions ou le résumé de documents, avec une plus grande précision.
Image par l'auteur. Visualisation du processus de mise au point.
Le réglage fin permet d'adapter le modèle à des tâches spécifiques, ce qui le rend plus efficace et plus polyvalent dans les applications du monde réel. Ce processus est essentiel pour adapter un modèle existant à une tâche ou à un domaine particulier.
La décision de procéder à un réglage fin dépend de vos objectifs, qui varient généralement en fonction du domaine spécifique ou de la tâche à accomplir.
Les différents types de réglage fin
La mise au point peut être abordée de plusieurs manières, en fonction principalement de son objectif principal et de ses buts spécifiques.
Mise au point supervisée
L'approche la plus simple et la plus courante de la mise au point. Le modèle est ensuite entraîné sur un ensemble de données étiquetées spécifique à la tâche cible à effectuer, comme la classification de textes ou la reconnaissance d'entités nommées.
Par exemple, nous entraînerons notre modèle sur un ensemble de données contenant des échantillons de texte étiquetés avec leur sentiment correspondant pour l'analyse du sentiment.
Apprentissage à quelques coups
Dans certains cas, la collecte d'un grand ensemble de données étiquetées n'est pas pratique. L'apprentissage à partir de quelques images tente de remédier à ce problème en fournissant quelques exemples (ou images) de la tâche requise au début des invites de saisie. Cela permet au modèle d'avoir un meilleur contexte de la tâche sans avoir besoin d'un processus d'ajustement approfondi.
Apprentissage par transfert
Même si toutes les techniques de réglage fin sont une forme d'apprentissage par transfert, cette catégorie vise spécifiquement à permettre à un modèle d'effectuer une tâche différente de celle pour laquelle il a été initialement formé. L'idée principale est d'exploiter les connaissances que le modèle a acquises à partir d'un vaste ensemble de données générales et de les appliquer à une tâche plus spécifique ou connexe.
Réglage fin spécifique à un domaine
Ce type de mise au point vise à adapter le modèle pour qu'il comprenne et génère des textes spécifiques à un domaine ou à un secteur d'activité particulier. Le modèle est affiné sur un ensemble de données composé de textes du domaine cible afin d'améliorer son contexte et sa connaissance des tâches spécifiques au domaine.
Par exemple, pour créer un chatbot destiné à une application médicale, le modèle sera entraîné à partir de dossiers médicaux, afin d'adapter ses capacités de compréhension du langage au domaine de la santé.
Un guide pas à pas pour peaufiner un LLM
Exécutez et modifiez le code de ce tutoriel en ligne
Exécuter le codeNous savons déjà que le réglage fin est le processus qui consiste à prendre un modèle pré-entraîné et à mettre à jour ses paramètres en s'entraînant sur un ensemble de données spécifique à votre tâche. Nous allons donc illustrer ce concept en affinant un modèle réel.
Imaginons que nous travaillions avec GPT-2, mais nous constatons qu'il est assez mauvais pour déduire les sentiments des tweets.
La question qui vient naturellement à l'esprit est la suivante : Pouvons-nous faire quelque chose pour améliorer ses performances ?
Nous pouvons tirer parti du réglage fin en entraînant notre modèle GPT-2 pré-entraîné à partir du modèle Hugging Face avec un ensemble de données contenant des tweets et leurs sentiments correspondants afin d'améliorer les performances. Voici un exemple de base pour affiner un modèle de classification de séquences :
Étape 1 : Choisissez un modèle pré-entraîné et un ensemble de données
Pour affiner un modèle, nous devons toujours avoir à l'esprit un modèle pré-entraîné. Dans notre cas, nous allons effectuer quelques réglages simples à l'aide de GPT-2.
Capture d'écran de Hugging Face Datasets Hub. Sélection du modèle GPT2 d'OpenAI.
Gardez toujours à l'esprit de sélectionner un modèle d'architecture adapté à votre tâche.
Étape 2 : Charger les données à utiliser
Maintenant que nous avons notre modèle, nous avons besoin de données de bonne qualité pour travailler, et c'est précisément là que la bibliothèque datasets
entre en jeu.
Dans mon cas, j'utiliserai la bibliothèque Hugging Face datasets pour importer un ensemble de données contenant des tweets segmentés en fonction de leur sentiment (positif, neutre ou négatif).
from datasets import load_dataset
dataset = load_dataset("mteb/tweet_sentiment_extraction")
df = pd.DataFrame(dataset['train'])
Si nous vérifions l'ensemble de données que nous venons de télécharger, il s'agit d'un ensemble de données contenant un sous-ensemble pour l'entraînement et un sous-ensemble pour le test. Si nous convertissons le sous-ensemble de formation en un cadre de données, il se présente comme suit.
L'ensemble des données à utiliser.
Étape 3 : Tokenizer
Maintenant que nous avons notre jeu de données, nous avons besoin d'un tokenizer pour le préparer à être analysé par notre modèle.
Comme les LLM travaillent avec des jetons, nous avons besoin d'un tokenizer pour traiter l'ensemble des données. Pour traiter votre ensemble de données en une seule étape, utilisez la méthode Datasets map pour appliquer une fonction de prétraitement à l'ensemble de l'ensemble de données.
C'est pourquoi la deuxième étape consiste à charger un tokenizer pré-entraîné et à tokeniser notre ensemble de données afin qu'il puisse être utilisé pour un réglage fin.
from transformers import GPT2Tokenizer
# Loading the dataset to train our model
dataset = load_dataset("mteb/tweet_sentiment_extraction")
tokenizer = GPT2Tokenizer.from_pretrained("gpt2")
tokenizer.pad_token = tokenizer.eos_token
def tokenize_function(examples):
return tokenizer(examples["text"], padding="max_length", truncation=True)
tokenized_datasets = dataset.map(tokenize_function, batched=True)
BONUS : Pour améliorer nos exigences en matière de traitement, nous pouvons créer un sous-ensemble plus petit de l'ensemble des données afin d'affiner notre modèle. L'ensemble de formation sera utilisé pour affiner notre modèle, tandis que l'ensemble de test sera utilisé pour l'évaluer.
small_train_dataset = tokenized_datasets["train"].shuffle(seed=42).select(range(1000))
small_eval_dataset = tokenized_datasets["test"].shuffle(seed=42).select(range(1000))
Étape 4 : Initialiser notre modèle de base
Commencez par charger votre modèle et spécifiez le nombre d'étiquettes attendues. La carte de l'ensemble de données sur le sentiment du tweet vous indique qu'il y a trois étiquettes :
from transformers import GPT2ForSequenceClassification
model = GPT2ForSequenceClassification.from_pretrained("gpt2", num_labels=3)
Étape 5 : Évaluer la méthode
Transformers propose une classe Trainer optimisée pour la formation. Toutefois, cette méthode ne prévoit pas la manière d'évaluer le modèle. C'est pourquoi, avant de commencer notre formation, nous devrons faire passer à Trainer une fonction permettant d'évaluer les performances de notre modèle.
import evaluate
metric = evaluate.load("accuracy")
def compute_metrics(eval_pred):
logits, labels = eval_pred
predictions = np.argmax(logits, axis=-1)
return metric.compute(predictions=predictions, references=labels)
Étape 6 : Ajustement à l'aide de la méthode du formateur
La dernière étape consiste à mettre en place les arguments de formation et à lancer le processus de formation. La bibliothèque Transformers contient la classe Trainer, qui prend en charge un large éventail d'options d'apprentissage et de fonctionnalités telles que l'enregistrement, l'accumulation de gradients et la précision mixte. Nous commençons par définir les arguments de formation ainsi que la stratégie d'évaluation. Une fois que tout est défini, nous pouvons facilement entraîner le modèle en utilisant la commande train()
.
from transformers import TrainingArguments, Trainer
training_args = TrainingArguments(
output_dir="test_trainer",
#evaluation_strategy="epoch",
per_device_train_batch_size=1, # Reduce batch size here
per_device_eval_batch_size=1, # Optionally, reduce for evaluation as well
gradient_accumulation_steps=4
)
trainer = Trainer(
model=model,
args=training_args,
train_dataset=small_train_dataset,
eval_dataset=small_eval_dataset,
compute_metrics=compute_metrics,
)
trainer.train()
Après la formation, évaluez les performances du modèle sur un ensemble de validation ou de test. Là encore, la classe du formateur contient déjà une méthode d'évaluation qui s'en charge.
import evaluate
trainer.evaluate()
Il s'agit des étapes les plus élémentaires pour effectuer un réglage fin de n'importe quel LLM. N'oubliez pas que le réglage fin d'un LLM est très exigeant en termes de calcul et que votre ordinateur local n'a peut-être pas la puissance suffisante pour le faire.
Vous pouvez apprendre à affiner des LLM plus puissants directement sur l'interface de l'OpenAI en suivant ce tutoriel sur la manière d'affiner le GPT 3.5.
Obtenez une certification de haut niveau en matière d'IA
Affiner les meilleures pratiques
Pour garantir une mise au point réussie, tenez compte des meilleures pratiques suivantes :
Qualité et quantité des données
La qualité de votre ensemble de données de mise au point a un impact significatif sur les performances du modèle. Nous connaissons tous la phrase :
"Les déchets entrent, les déchets sortent
Veillez donc toujours à ce que les données soient propres, pertinentes et suffisamment nombreuses.
Réglage des hyperparamètres
La mise au point est généralement un processus long qui doit être répété. Explorez toujours différents paramètres pour les taux d'apprentissage, les tailles de lots et le nombre d'époques d'apprentissage afin d'identifier la meilleure configuration pour votre projet.
Des ajustements précis sont essentiels pour garantir que le modèle apprend efficacement et s'adapte bien aux données inédites, en évitant l'écueil du surajustement.
Évaluation régulière
Évaluer régulièrement les progrès du modèle au cours de la formation afin de suivre son efficacité et de mettre en œuvre les modifications nécessaires. Il s'agit d'évaluer les performances du modèle à l'aide d'un ensemble de données de validation distinct tout au long de la période de formation.
Cette évaluation est essentielle pour déterminer la performance du modèle dans la tâche à accomplir et son potentiel de surajustement à l'ensemble des données d'apprentissage. Sur la base des résultats de la phase de validation, des ajustements peuvent être apportés si nécessaire pour optimiser les performances.
Éviter les pièges de la mise au point du LLM
La mise au point peut parfois conduire à des résultats sous-optimaux. Méfiez-vous des pièges suivants :
Surajustement
L'utilisation d'un petit ensemble de données pour l'apprentissage ou l'extension excessive du nombre d'époques peut entraîner un surajustement. Cette situation se caractérise généralement par le fait que le modèle présente une grande précision sur notre ensemble de données d'apprentissage mais ne parvient pas à se généraliser à de nouvelles données.
Sous-adaptation
Inversement, une formation insuffisante ou un faible taux d'apprentissage peut entraîner un sous-ajustement, c'est-à-dire que le modèle n'apprend pas la tâche de manière adéquate.
Oubli catastrophique
Au cours du processus d'adaptation à une tâche particulière, le modèle risque de perdre les connaissances générales qu'il a acquises au départ. Ce problème, appelé oubli catastrophique, peut réduire la capacité du modèle à fonctionner correctement dans une variété de tâches utilisant le traitement du langage naturel.
Fuite de données
Assurez-vous toujours que les ensembles de données de formation et de validation sont séparés et qu'il n'y a pas de chevauchement, car cela peut donner des mesures de performance trompeuses.
Mise au point vs. RAG
RAG combine les forces des modèles basés sur la recherche et des modèles génératifs. Dans le RAG, un élément de récupération recherche dans une grande base de données ou une base de connaissances les informations pertinentes en fonction de la requête introduite. Ces informations sont ensuite utilisées par un modèle génératif pour produire une réponse plus précise et plus adaptée au contexte. Les principaux avantages de RAG sont les suivants
- Intégration dynamique des connaissances: Il intègre des informations en temps réel provenant de sources externes, ce qui le rend adapté aux tâches nécessitant des connaissances actualisées ou spécifiques.
- Pertinence contextuelle: Améliore les réponses du modèle génératif en fournissant un contexte supplémentaire à partir des documents récupérés.
- Polyvalence: Peut traiter un plus grand nombre de requêtes, y compris celles qui nécessitent des informations spécifiques ou rares sur lesquelles le modèle n'a peut-être pas été formé.
Choisir entre le réglage fin et le RAG
Lorsque vous décidez d'utiliser le réglage fin ou le RAG, tenez compte des facteurs suivants :
- Nature de la tâche: Pour les tâches qui bénéficient de modèles hautement spécialisés (par exemple, les applications spécifiques à un domaine), le réglage fin est souvent l'approche privilégiée. RAG est idéal pour les tâches qui nécessitent l'intégration de connaissances externes ou la recherche d'informations en temps réel.
- Disponibilité des données: Le réglage fin nécessite une quantité importante de données étiquetées spécifiques à la tâche. Si ces données sont rares, la composante de recherche de RAG peut compenser en fournissant des informations pertinentes provenant de sources externes.
- Contraintes de ressources: Le réglage fin peut nécessiter des calculs importants, alors que RAG exploite les bases de données existantes pour compléter le modèle génératif, ce qui peut réduire la nécessité d'un entraînement intensif.
Conclusion
Se lancer dans l'affinage de grands modèles linguistiques ouvre un monde de possibilités pour les applications de l'IA.
En comprenant et en appliquant les concepts, les pratiques et les précautions exposés, il est possible d'adapter efficacement ces modèles puissants pour répondre à des besoins spécifiques, en libérant leur plein potentiel dans le processus.
Pour continuer à apprendre sur le réglage fin, je vous encourage vivement à effectuer un réglage fin plus avancé. Vous pouvez commencer par le cours LLM Concepts de DataCamp, qui couvre les principales méthodologies de formation et les dernières recherches. D'autres bonnes ressources à suivre sont
FAQ
Quel est l'objectif principal du réglage fin des grands modèles linguistiques (LLM) ?
Le réglage fin des LLM vise à adapter les modèles pré-entraînés à des tâches ou domaines spécifiques. Ce processus implique un entraînement supplémentaire du modèle sur un ensemble de données spécifiques à une tâche, afin d'améliorer ses performances et de le rendre plus efficace pour des applications particulières telles que l'analyse des sentiments, la réponse à des questions ou la génération de textes spécifiques à un domaine.
En quoi le réglage fin diffère-t-il de la formation d'un modèle à partir de zéro ?
Le réglage fin s'appuie sur un modèle pré-entraîné qui a déjà appris des modèles linguistiques généraux à partir d'un vaste ensemble de données. Cela permet de réduire le coût et le temps de calcul par rapport à la formation d'un modèle à partir de zéro, ce qui implique de partir d'une initialisation aléatoire et nécessite beaucoup plus de données et de ressources de calcul pour obtenir des performances comparables.
Quels sont les pièges les plus courants à éviter lors de la mise au point d'un master en droit ?
Les écueils les plus courants sont l'ajustement excessif, lorsque le modèle donne de bons résultats sur les données d'apprentissage mais de mauvais résultats sur les nouvelles données ; l'ajustement insuffisant, lorsque le modèle n'apprend pas la tâche de manière adéquate ; l'oubli catastrophique, lorsque le modèle perd les connaissances générales qu'il a initialement acquises ; et la fuite de données, lorsque des ensembles de données d'apprentissage et de validation qui se chevauchent conduisent à des mesures de performance élevées et trompeuses.
Quels sont les types d'ensembles de données qui conviennent à l'affinement des LLM ?
Les ensembles de données appropriés pour le réglage fin doivent être de haute qualité, pertinents pour la tâche spécifique et suffisamment importants pour fournir assez d'exemples pour que le modèle puisse apprendre. Il peut s'agir, par exemple, d'ensembles de données étiquetées pour un ajustement supervisé (par exemple, des tweets étiquetés pour l'analyse des sentiments) ou de collections de textes spécifiques à un domaine pour l'adaptation à ce domaine (par exemple, des dossiers médicaux pour un chatbot de soins de santé).
Quelle est la différence entre le réglage fin et la génération améliorée par récupération (RAG) ?
Le réglage fin permet d'ajuster les paramètres d'un modèle pré-entraîné à l'aide d'un ensemble de données spécifique afin d'améliorer ses performances sur des tâches particulières. RAG, cependant, combine une composante de recherche pour trouver les documents pertinents et un modèle génératif pour produire des réponses, en incorporant dynamiquement des connaissances externes au cours de l'inférence. La mise au point améliore les connaissances préexistantes du modèle, tandis que RAG utilise la recherche en temps réel pour fournir des réponses contextuelles pertinentes.
Développer des applications d'IA
Josep est data scientist et chef de projet à l'Office du tourisme de Catalogne, où il utilise les données pour améliorer l'expérience des touristes en Catalogne. Son expertise comprend la gestion du stockage et du traitement des données, associée à des analyses avancées et à la communication efficace des données.
Il est également un éducateur dévoué, enseignant le programme de Master Big Data à l'Université de Navarre, et contribuant régulièrement à des articles perspicaces sur la science des données sur Medium et KDNuggets.
Il est titulaire d'une licence en ingénierie physique de l'université polytechnique de Catalogne et d'une maîtrise en systèmes interactifs intelligents de l'université Pompeu Fabra.
Actuellement, il s'engage avec passion à rendre les technologies liées aux données plus accessibles à un public plus large par le biais de la publication ForCode'Sake sur Medium.
Commencez dès aujourd'hui votre voyage dans l'IA !
cours
Large Language Models (LLMs) Concepts
cours
Developing LLM Applications with LangChain
blog
Les 32 meilleures questions d'entretien sur AWS et leurs réponses pour 2024
blog
Les 20 meilleures questions d'entretien pour les flocons de neige, à tous les niveaux

Nisha Arya Ahmed
20 min