L’entraînement d’un modèle IA consiste à lui apprendre à reconnaître des modèles dans les données pour la prise de décision. Le fine-tuning est une stratégie qui adapte les modèles entraînés sur de grands jeux de données tels que GPT-4 d’OpenAI, à des jeux de données plus petits et spécifiques à une tâche, en poursuivant le processus d’entraînement.
Dans les sections suivantes, nous approfondirons le processus d’entraînement d’un modèle IA personnalisé à l’aide du fine-tuning OpenAI, en vous guidant à travers chaque étape du processus de fine-tuning.
Comprendre l’IA et l’entraînement des modèles
L’Intelligence Artificielle (IA) implique le développement de systèmes capables d’effectuer des tâches nécessitant normalement une intelligence humaine, telles que l’apprentissage, la résolution de problèmes et la prise de décision. Un modèle IA est fondamentalement un ensemble d’algorithmes qui effectuent des prédictions basées sur des données d’entrée. L’apprentissage automatique (ML), un sous-ensemble de l’IA, permet aux machines d’apprendre à partir des données et d’améliorer leurs performances de manière autonome.
Les modèles IA apprennent comme un enfant qui distingue les chats des chiens, en observant des caractéristiques, en formulant des hypothèses, en corrigeant les erreurs et en réessayant. Ce processus, connu sous le nom d’entraînement de modèle, implique que le modèle traite les données d’entrée, analyse et traite les modèles, et utilise ces connaissances pour faire des prédictions. Les performances du modèle sont évaluées en comparant sa sortie au résultat attendu, et des ajustements sont effectués pour améliorer les performances. Avec un entraînement suffisant, l’ensemble des algorithmes du modèle représentera un prédicteur mathématique précis pour une situation donnée, capable de gérer différentes variations des données d’entrée.
Entraîner un modèle de zéro implique d’apprendre à un modèle à reconnaître des modèles dans les données sans aucune connaissance préalable. Cela nécessite une grande quantité de données et de ressources informatiques, et le modèle peut ne pas fonctionner correctement avec des données limitées.
Le fine-tuning, en revanche, commence avec un modèle pré-entraîné qui a appris des modèles généraux à partir d’un grand jeu de données. Le modèle est ensuite davantage entraîné sur un jeu de données plus petit et spécifique, lui permettant d’appliquer ses connaissances précédemment acquises à la nouvelle tâche, conduisant souvent à de meilleures performances avec moins de données et de ressources informatiques. Le fine-tuning est particulièrement utile lorsque le jeu de données spécifique à la tâche est relativement petit.
Préparation au fine-tuning
Bien que le fine-tuning d’un modèle existant avec un entraînement supplémentaire sur un jeu de données sélectionné puisse sembler une option attrayante par rapport à la construction et à l’entraînement d’un modèle IA de zéro, le succès du processus de fine-tuning dépend de plusieurs facteurs clés.
Choisir le bon modèle
Lors de la sélection d’un modèle de base pour le fine-tuning, tenez compte des points suivants :
Alignement des tâches : Il est important de définir clairement la portée de votre problème et la fonctionnalité attendue du modèle. Choisissez des modèles qui excellent dans des tâches similaires aux vôtres, car la dissimilarité entre les tâches source et cible lors du fine-tuning peut entraîner une réduction des performances. Par exemple, pour les tâches de génération de texte, GPT-3 pourrait convenir, tandis que pour les tâches de classification de texte, BERT ou RoBERTa pourraient être plus adaptés.
Taille et complexité du modèle : Équilibrez les performances et l’efficacité selon vos besoins, car si les modèles plus grands capturent mieux les modèles complexes, ils nécessitent davantage de ressources.
Métriques d’évaluation : Choisissez des métriques d’évaluation pertinentes pour votre tâche. Par exemple, la précision peut être importante pour la classification, tandis que BLEU ou ROUGE pourraient être bénéfiques pour les tâches de génération de langage.
Communauté et ressources : Choisissez des modèles avec une grande communauté et des ressources abondantes pour le dépannage et la mise en œuvre. Privilégiez les modèles avec des directives claires de fine-tuning pour votre tâche et recherchez des sources réputées pour les checkpoints de modèles pré-entraînés.
Collecte et préparation des données
Lors du fine-tuning, la qualité et la diversité de vos données peuvent avoir un impact significatif sur les performances de votre modèle. Voici quelques considérations clés :
Types de données nécessaires : Le type de données dépend de votre tâche spécifique et des données sur lesquelles le modèle a été pré-entraîné. Pour les tâches NLP, vous avez généralement besoin de données textuelles provenant de sources telles que des livres, des articles, des publications sur les réseaux sociaux ou des transcriptions de discours. Utilisez des méthodes comme le scraping web, des enquêtes ou des API de plateformes de médias sociaux pour collecter des données. Par exemple, le scraping web avec IA peut être particulièrement utile lorsque vous avez besoin d’une grande quantité de données diverses et actualisées.
Nettoyage et annotation des données : Le nettoyage des données implique la suppression des données non pertinentes, la gestion des données manquantes ou incohérentes, et la normalisation. L’annotation implique l’étiquetage des données pour que le modèle puisse en apprendre. L’utilisation d’outils automatisés tels que Bright Data peut rationaliser ces processus et améliorer l’efficacité.
Incorporation d’un jeu de données diversifié et représentatif : Lors du fine-tuning d’un modèle, un jeu de données diversifié et représentatif garantit que le modèle apprend à partir de diverses perspectives, conduisant à des prédictions plus généralisées et fiables. Par exemple, si vous affinez un modèle d’analyse de sentiment pour les critiques de films, votre jeu de données devrait inclure des critiques d’une large gamme de films, de genres et de sentiments, reflétant la distribution des classes du monde réel.
Configuration de l’environnement d’entraînement
Assurez-vous de disposer du matériel et des logiciels nécessaires pour le modèle IA et le framework choisis. Par exemple, les grands modèles de langage (LLM) nécessitent souvent une puissance de calcul substantielle, généralement fournie par des GPU.
Des frameworks comme TensorFlow ou PyTorch sont couramment utilisés pour l’entraînement de modèles IA. L’installation des bibliothèques et des outils pertinents, ainsi que de toutes les dépendances supplémentaires, est essentielle pour une intégration transparente dans le workflow d’entraînement. Par exemple, des outils comme l’API OpenAI peuvent être nécessaires pour le fine-tuning de modèles spécifiques développés par OpenAI.
Le processus de fine-tuning
Ayant compris les bases du fine-tuning, passons à une application en traitement du langage naturel.
J’utiliserai l’API OpenAI pour le fine-tuning d’un modèle pré-entraîné. Le fine-tuning est actuellement possible pour des modèles comme gpt-3.5-turbo-0125 (recommandé), gpt-3.5-turbo-1106, gpt-3.5-turbo-0613, babbage-002, davinci-002, et le gpt-4-0613 expérimental. Le fine-tuning de GPT-4 est en phase expérimentale et les utilisateurs éligibles peuvent demander l’accès dans l’interface de fine-tuning.
1. Préparation du jeu de données
Selon une étude, il a été constaté que GPT-3.5 manque de raisonnement analytique. Essayons donc de fine-tuner le modèle gpt-3.5-turbo pour améliorer son raisonnement analytique en utilisant un jeu de données de questions de raisonnement analytique du Law School Admission Test (AR-LSAT), publié en 2022. Le jeu de données disponible publiquement peut être trouvé ici.
La qualité d’un modèle fine-tuné dépend directement des données utilisées pour le fine-tuning. Chaque exemple du jeu de données doit être une conversation formatée selon l’API Chat Completions d’OpenAI, avec une liste de messages où chaque message a un rôle, un contenu et un nom optionnel, et stocké sous forme de fichier JSONL.
Le format de chat conversationnel requis pour le fine-tuning de gpt-3.5-turbo est le suivant :
{"messages": [{"role": "system", "content": ""}, {"role": "user", "content": ""}, {"role": "assistant", "content": ""}]}
Dans ce format, "messages" est une liste de messages formant une conversation entre trois "roles" : system, user et assistant. Le "content" du rôle "system" doit spécifier le comportement du système fine-tuné.
Voici un exemple formaté tiré du jeu de données AR-LSAT que nous utiliserons dans ce guide :

Voici les considérations clés lors de la création du jeu de données :
- Page de tarification d’OpenAI
- Notebook de comptage des tokens
- Script Python
2. Génération de la clé API et installation de la bibliothèque OpenAI
Pour fine-tuner un modèle OpenAI, il est obligatoire de disposer d’un compte développeur OpenAI avec un solde de crédit suffisant.
Pour générer la clé API et installer la bibliothèque OpenAI, suivez ces étapes :
1. Inscrivez-vous sur le site officiel d’OpenAI.
2. Pour activer le fine-tuning, rechargez votre solde de crédit depuis l’onglet ‘Facturation’ sous ‘Paramètres’.

3. Cliquez sur l’icône de profil utilisateur dans le coin supérieur gauche et sélectionnez « Clés API » pour accéder à la page de création de clés.

4. Générez une nouvelle clé secrète en fournissant un nom.

5. Installez la bibliothèque Python OpenAI pour le fine-tuning.
pip install openai
6. Utilisez la bibliothèque os pour définir le token comme variable d’environnement et établir la communication API.
import os
from openai import OpenAI
# Set the OPENAI_API_KEY environment variable
os.environ['OPENAI_API_KEY'] = 'The key generated in step 4'
client = OpenAI(api_key=os.environ['OPENAI_API_KEY'])
3. Téléchargement des fichiers d’entraînement et de validation
Après avoir validé vos données, téléchargez les fichiers à l’aide de l’API Files pour les tâches de fine-tuning.
training_file_id = client.files.create(
file=open(training_file_name, "rb"),
purpose="fine-tune"
)
validation_file_id = client.files.create(
file=open(validation_file_name, "rb"),
purpose="fine-tune"
)
print(f"Training File ID: {training_file_id}")
print(f"Validation File ID: {validation_file_id}")
Les identifiants uniques pour les données d’entraînement et de validation sont affichés lors d’une exécution réussie.

4. Création d’une tâche de fine-tuning
Après avoir téléchargé les fichiers, créez une tâche de fine-tuning via l’interface ou par programmation.
Voici comment initier une tâche de fine-tuning à l’aide du SDK OpenAI :
response = client.fine_tuning.jobs.create(
training_file=training_file_id.id,
validation_file=validation_file_id.id,
model="gpt-3.5-turbo",
hyperparameters={
"n_epochs": 10,
"batch_size": 3,
"learning_rate_multiplier": 0.3
}
)
job_id = response.id
status = response.status
print(f'Fine-tunning model with jobID: {job_id}.')
print(f"Training Response: {response}")
print(f"Training Status: {status}")
model: le nom du modèle à fine-tuner (gpt-3.5-turbo,babbage-002,davinci-002, ou un modèle fine-tuné existant).training_fileetvalidation_file: les identifiants de fichiers retournés lors du téléchargement des fichiers.n_epochs,batch_sizeetlearning_rate_multiplier: Hyperparamètres personnalisables.
Pour définir des paramètres de fine-tuning supplémentaires, consultez la spécification API pour le fine-tuning.
Le code ci-dessus génère les informations suivantes pour le jobID (`ftjob-0EVPunnseZ6Xnd0oGcnWBZA7`) :

Une tâche de fine-tuning peut prendre du temps à se terminer. Elle peut être mise en file d’attente derrière d’autres tâches, et la durée d’entraînement peut varier de quelques minutes à plusieurs heures selon le modèle et la taille du jeu de données.
Une fois l’entraînement terminé, un e-mail de confirmation sera envoyé à l’utilisateur qui a initié la tâche de fine-tuning.
Vous pouvez surveiller le statut de votre tâche de fine-tuning via l’interface de fine-tuning :
5. Analyse du modèle fine-tuné
OpenAI calcule les métriques suivantes pendant l’entraînement :
- Perte d’entraînement
- Précision des tokens d’entraînement
- Perte de validation
- Précision des tokens de validation
La perte de validation et la précision des tokens de validation sont calculées de deux manières : sur un petit lot de données à chaque étape, et sur l’ensemble de validation complet à la fin de chaque époque. La perte de validation complète et la précision complète des tokens de validation sont les métriques les plus précises pour suivre les performances de votre modèle et servent de vérification pour assurer un entraînement fluide (la perte doit diminuer, la précision des tokens doit augmenter).
Pendant qu’une tâche de fine-tuning est active, vous pouvez consulter ces métriques via
1. L’interface :

2. L’API :
import os
from openai import OpenAI
client = OpenAI(api_key=os.environ['OPENAI_API_KEY'],)
jobid = 'jobid you want to monitor'
print(f"Streaming events for the fine-tuning job: {jobid}")
# signal.signal(signal.SIGINT, signal_handler)
events = client.fine_tuning.jobs.list_events(fine_tuning_job_id=jobid)
try:
for event in events:
print(
f'{event.data}'
)
except Exception:
print("Stream interrupted (client disconnected).")
Le code ci-dessus affichera les événements de streaming pour la tâche de fine-tuning, incluant le numéro d’étape, la perte d’entraînement, la perte de validation, le nombre total d’étapes et la précision moyenne des tokens pour l’entraînement et la validation :
Streaming events for the fine-tuning job: ftjob-0EVPunnseZ6Xnd0oGcnWBZA7
{'step': 67, 'train_loss': 0.30375099182128906, 'valid_loss': 0.49169286092122394, 'total_steps': 67, 'train_mean_token_accuracy': 0.8333333134651184, 'valid_mean_token_accuracy': 0.8888888888888888}
6. Ajustement des paramètres et du jeu de données pour améliorer les performances
Si les résultats d’une tâche de fine-tuning ne sont pas aussi bons que prévu, envisagez les méthodes suivantes pour améliorer les performances :
1. Ajuster le jeu de données d’entraînement :
- Pour affiner votre jeu de données d’entraînement, envisagez d’ajouter des exemples qui traitent des faiblesses du modèle et assurez-vous que la distribution des réponses dans vos données correspond à la distribution attendue.
- Il est également important de vérifier vos données pour les problèmes que le modèle reproduit et de s’assurer que vos exemples contiennent toutes les informations nécessaires pour la réponse.
- Maintenez la cohérence entre les données créées par plusieurs personnes et standardisez le format de tous les exemples d’entraînement pour correspondre à ce qui est attendu lors de l’inférence.
- En général, des données de haute qualité sont plus efficaces qu’une plus grande quantité de données de faible qualité.
2. Ajuster les hyperparamètres :
- OpenAI vous permet de spécifier trois hyperparamètres : les époques, le multiplicateur du taux d’apprentissage et la taille du lot.
- Commencez avec les valeurs par défaut choisies par les fonctions intégrées basées sur la taille du jeu de données, puis ajustez si nécessaire.
- Si le modèle ne suit pas les données d’entraînement comme prévu, augmentez le nombre d’époques.
- Si le modèle devient moins diversifié que prévu, diminuez le nombre d’époques de 1 ou 2.
- Si le modèle ne semble pas converger, augmentez le multiplicateur du taux d’apprentissage.
7. Utilisation d’un modèle avec checkpoint
Actuellement, OpenAI donne accès aux checkpoints des trois dernières époques d’une tâche de fine-tuning. Ces checkpoints sont des modèles complets qui peuvent être utilisés pour l’inférence et le fine-tuning supplémentaire.
Pour accéder à ces checkpoints, attendez qu’une tâche réussisse, puis interrogez le point de terminaison des checkpoints avec votre identifiant de tâche de fine-tuning. Chaque objet checkpoint aura le champ fine_tuned_model_checkpoint rempli avec le nom du checkpoint du modèle. Vous pouvez également obtenir le nom du modèle checkpoint via l’interface de fine-tuning.
Vous pouvez valider les résultats du modèle checkpoint en exécutant des requêtes avec une invite et le nom du modèle à l’aide de la fonction openai.chat.completions.create() :
completion = client.chat.completions.create(
model="ft:gpt-3.5-turbo-0125:personal::9PWZuZo5",
messages=[
{"role": "system", "content": "Instructions: You will be presented with a passage and a question about that passage. There are four options to be chosen from, you need to choose the only correct option to answer that question. If the first option is right, you generate the answer 'A', if the second option is right, you generate the answer 'B', if the third option is right, you generate the answer 'C', if the fourth option is right, you generate the answer 'D', if the fifth option is right, you generate the answer 'E'. Read the question and options thoroughly and select the correct answer from the four answer labels. Read the passage thoroughly to ensure you know what the passage entails"},
{"role": "user", "content": "Passage: For the school paper, five studentsu2014Jiang, Kramer, Lopez, Megregian, and O'Neillu2014each review one or more of exactly three plays: Sunset, Tamerlane, and Undulation, but do not review any other plays. The following conditions must apply: Kramer and Lopez each review fewer of the plays than Megregian. Neither Lopez nor Megregian reviews any play Jiang reviews. Kramer and O'Neill both review Tamerlane. Exactly two of the students review exactly the same play or plays as each other.Question: Which one of the following could be an accurate and complete list of the students who review only Sunset?nA. LopeznB. O'NeillnC. Jiang, LopeznD. Kramer, O'NeillnE. Lopez, MegregiannAnswer:"}
]
)
print(completion.choices[0].message)
Le résultat récupéré depuis le dictionnaire de réponses est :

Vous pouvez également comparer le modèle fine-tuné avec d’autres modèles dans le playground d’OpenAI comme indiqué ci-dessous :

Conseils et meilleures pratiques
Pour un fine-tuning réussi, tenez compte de ces conseils :
Qualité des données : Assurez-vous que vos données spécifiques à la tâche sont propres, diversifiées et représentatives pour éviter le surapprentissage, où le modèle fonctionne bien sur les données d’entraînement mais mal sur les données inédites.
Sélection des hyperparamètres : Choisissez des hyperparamètres appropriés pour éviter une convergence lente ou des performances sous-optimales. Cela peut être complexe et chronophage, mais est crucial pour un entraînement efficace.
Gestion des ressources : Sachez que le fine-tuning de grands modèles nécessite des ressources informatiques et du temps considérables.
Éviter les pièges
Surapprentissage et sous-apprentissage : Équilibrez la complexité de votre modèle et la quantité d’entraînement pour éviter le surapprentissage (variance élevée) et le sous-apprentissage (biais élevé).
Oubli catastrophique : Lors du fine-tuning, le modèle peut oublier les connaissances générales précédemment apprises. Évaluez régulièrement les performances de votre modèle sur une variété de tâches pour atténuer cela.
Sensibilité au décalage de domaine : Si vos données de fine-tuning diffèrent significativement des données de pré-entraînement, vous pouvez rencontrer des problèmes de décalage de domaine. Utilisez des techniques d’adaptation de domaine pour combler cet écart.
Sauvegarde et réutilisation des modèles
Après l’entraînement, sauvegardez l’état de votre modèle pour le réutiliser ultérieurement. Cela inclut les paramètres du modèle et tout état de l’optimiseur utilisé. Cela vous permet de reprendre l’entraînement ultérieurement depuis le même état.
Considérations éthiques
Amplification des biais : Les modèles pré-entraînés peuvent hériter de biais, qui peuvent être amplifiés lors du fine-tuning. Essayez toujours d’opter pour des modèles pré-entraînés testés pour les biais et l’équité si des prédictions non biaisées sont requises.
Sorties non intentionnelles : Les modèles fine-tunés peuvent générer des sorties plausibles mais incorrectes. Mettez en place des mécanismes robustes de post-traitement et de validation pour gérer cela.
Dérive du modèle : Les performances d’un modèle peuvent se détériorer avec le temps en raison de changements dans l’environnement ou la distribution des données. Surveillez régulièrement les performances de votre modèle et effectuez un nouveau fine-tuning si nécessaire.
Techniques avancées et apprentissage approfondi
Les techniques avancées de fine-tuning des LLM incluent l’adaptation de rang faible (LoRA) et le LoRA quantifié (QLoRA), qui réduisent les coûts informatiques et financiers tout en maintenant les performances. L’ajustement fin efficace des paramètres (PEFT) adapte les modèles efficacement avec un minimum de paramètres entraînables. DeepSpeed et ZeRO optimisent l’utilisation de la mémoire pour l’entraînement à grande échelle. Ces techniques répondent aux défis tels que le surapprentissage, l’oubli catastrophique et la sensibilité au décalage de domaine, améliorant l’efficacité et l’efficience du fine-tuning des LLM.
Au-delà du fine-tuning, il existe d’autres techniques d’entraînement avancées telles que l’apprentissage par transfert et l’apprentissage par renforcement. L’apprentissage par transfert consiste à appliquer les connaissances acquises d’un problème à un autre problème connexe, tandis que l’apprentissage par renforcement est un type d’apprentissage automatique où un agent apprend à prendre des décisions en effectuant des actions dans un environnement pour maximiser une récompense.
Pour ceux qui souhaitent approfondir l’entraînement des modèles IA, les ressources suivantes pourraient être utiles :
- Attention is all you need par Ashish Vaswani et al.
- Le livre « Deep Learning » par Ian Goodfellow, Yoshua Bengio et Aaron Courville
- Le livre « Speech and Language Processing » par Daniel Jurafsky et James H. Martin
- Différentes façons d’entraîner des LLM
- Maîtriser les techniques LLM : Entraînement
- Cours NLP par Hugging Face
Conclusion
L’entraînement d’un modèle IA est un processus qui nécessite une quantité significative de données de haute qualité. Si la définition du problème, la sélection d’un modèle et son affinement par itérations sont essentiels, le vrai différenciateur est la qualité et le volume des données utilisées. Plutôt que de construire et de maintenir des scrapers web, vous pouvez simplifier la collecte de données en utilisant des jeux de données prêts à l’emploi ou personnalisés disponibles sur l’infrastructure de Bright Data.
Avec le Marché des jeux de données, vous pouvez accéder à des jeux de données validés et prêts à l’emploi provenant de sites populaires, ou générer des jeux de données personnalisés pour répondre à vos besoins spécifiques grâce à l’infrastructure automatisée. Ainsi, vous pouvez vous concentrer sur l’entraînement efficace de vos modèles avec des données précises et conformes, permettant des résultats plus rapides et fiables dans divers secteurs.
Explorez les solutions de jeux de données de Bright Data et intégrez-les facilement dans votre workflow pour une collecte de données transparente.
Inscrivez-vous maintenant et commencez votre essai gratuit de l’infrastructure de scraping de Bright Data, incluant des échantillons gratuits de jeux de données.