LangChain 101 Partie 2d. Ajuster finement les modèles de langage avec les commentaires humains
LangChain 101 Partie 2d. Affiner les modèles de langage avec les commentaires humains
Ceci est la partie 2d et la dernière partie de la section Models du cours LangChain 101. Il est fortement recommandé de vérifier les deux premières parties pour mieux comprendre le contexte de cet article.
LangChain 101: Partie 2ab. Tout ce que vous devez savoir sur les (grands modèles de langue)
C’est la partie 2ab du cours LangChain 101. Il est fortement recommandé de vérifier la première partie pour comprendre le…
pub.towardsai.net
- Un guide complet sur ZenML pour les débutants simplifiant MLOps.
- Équité dans l’apprentissage automatique (Partie 1)
- Se concentrez sur les éviers et où les cacher un parcours visuel pour la mise en œuvre du streaming LLM
LangChain 101: Partie 2c. Affiner les LLM avec PEFT, LORA et RL
Tout ce que vous devez savoir sur l’affinage des LLMS, PEFT, LORA et l’entrainement des grands modèles de langue
pub.towardsai.net
(suivez l’auteur pour ne pas manquer la prochaine partie).
RLHF (Reinforcement Learning from Human Feedback) est un composant important de la méthode d’entrainement actuelle des modèles de langue avancés. Cela permet d’inclure les avis des personnes lors de l’affinage des modèles, ce qui rend ultimement le modèle plus précieux et plus sécurisé.
Passons en revue les méthodes d’entrainement les plus courantes :
Modèle de base
Un modèle de base est un modèle de langue pré-entrainé de grande taille formé sur un vaste ensemble de données textuelles généralistes (parfois du code) : GPT, LLAMA, Falcon et autres.
Les modèles de base sont bons pour la génération de texte pour des domaines à usage général. Cependant, leurs performances pour des tâches ou des domaines spécifiques peuvent manquer de qualité.
Questionnement
Le questionnement est une technique qui améliore les performances des LLM en fournissant au modèle une consigne spécifique à la tâche.
Par exemple, supposons que vous souhaitiez qu’un LLM vous donne des conseils de cuisine. Dans ce cas, vous pourriez ajouter quelque chose comme “Agissez comme un chef professionnel Michellene” au début de votre requête. Le LLM utilisera alors cette consigne pour “agir en tant que cuisinier expérimenté”.
Le questionnement est un moyen simple d’améliorer les performances des LLM. Cependant, il nécessite un design de consigne et est moins efficace pour les tâches nécessitant des informations supplémentaires et un lexique autres que ceux sur lesquels le LLM pré-entrainé a été formé.
Affinage
L’affinage est une technique qui améliore les performances des LLM en les entrainant sur des ensembles de données spécifiques : des exemples d’entrée et de sortie souhaités.
Par exemple, vous souhaitez affiner un LLM pour traduire de l’anglais vers l’arabe. Dans ce cas, vous devez fournir un ensemble de données de paires de traduction anglais-arabe.
L’affinage est généralement plus efficace que le questionnement pour les tâches nécessitant au LLM d’apprendre beaucoup de nouvelles données et informations. Cependant, il requiert plus de données et de ressources computationnelles.
LangChain 101: Partie 2c. Affiner les LLM avec PEFT, LORA et RL
Tout ce que vous devez savoir sur l’affinage des LLMS, PEFT, LORA et l’entrainement des grands modèles de langue
pub.towardsai.net
Affinage + RLHF
L’affinage avec l’apprentissage par renforcement à partir des retours d’humains (RLHF) est une technique qui améliore les performances des LLM en les entrainant sur des ensembles de données spécifiques notés par des évaluateurs humains. Ces données comprennent des exemples d’entrée et de sortie souhaités pour la tâche et des retours d’humains sur la qualité de production.
L’affinage avec RLHF est généralement plus efficace que l’affinage seul, notamment pour les tâches nécessitant au LLM d’apprendre les valeurs et les préférences humaines. Cependant, cela nécessite encore plus de données, de ressources computationnelles et d’effort humain.

(Instruct) Pipeline GPT RLHF
Jetons un coup d’œil plus attentif à la façon dont le pipeline Instruct RLHF (probablement le pipeline ChatGPT ressemble à ça) est construit.
Le pipeline Instruct (GPT) RLHF implique de prendre un modèle pré-entraîné et de le raffiner grâce à un entraînement supervisé (similaire à “l’affinement supervisé” dans le pipeline d’entraînement traditionnel). Ensuite, le modèle mis à jour est encore affiné en utilisant l’optimisation de la politique proximale.
Le pipeline RLHF peut être résumé en un processus d’entraînement en 3 étapes :
- Entraînement raffiné du modèle pré-entraîné grâce à la supervision
- Élaboration d’un modèle pour fournir des récompenses
- Refinement supplémentaire en utilisant l’optimisation de la politique proximale (PPO)
Dans la première étape du pipeline RLHF, nous générons ou sélectionnons des invitations (potentiellement à partir d’un jeu de données ou d’une base de données) et demandons à des humains de produire des réponses de haute qualité. Nous utilisons cette collecte de données pour affiner le modèle de base pré-existant de manière guidée.

Dans l’étape 2 du pipeline RLHF, nous utilisons le modèle affiné via l’entraînement supervisé pour construire un modèle de récompense pour l’étape suivante. Cela implique de générer plusieurs réponses pour chaque invitation et de demander aux individus de les classer selon leurs préférences.
Pour transformer le modèle de l’étape 1 du pipeline RLHF en modèle de récompense, nous remplaçons sa couche de sortie (la couche de jeton suivant) par une couche de régression avec un seul nœud de sortie.

Dans la 3ème et dernière étape du pipeline RLHF, nous utilisons le modèle de récompense (v2) pour affiner davantage le modèle précédent qui a subi un affinement supervisé (v1).
Nous ajustons le modèle v1 en utilisant l’optimisation de la politique proximale (PPO) guidée par les scores de récompense obtenus à partir du modèle de récompense que nous avons établi dans l’étape 2 du pipeline RLHF.

Et voilà essentiellement comment fonctionne le pipeline (Instruct) GPT RLHF. Cette méthode donne des résultats de qualité mais demande beaucoup de temps et d’efforts humains. Pouvons-nous le faire de manière plus efficace ?

LLAMA Pipeline RLHF
Le modèle Meta AI Llama 2, tout en utilisant une approche RLHF similaire à InstructGPT, présente plusieurs différences notables :
- Deux modèles de récompense
- Perte de marge
- Échantillonnage de rejet
Deux modèles de récompense : Llama2 utilise deux modèles de récompense, l’un axé sur l’utilité et l’autre sur la sécurité. L’optimisation finale du modèle est basée sur une combinaison des deux scores.
Perte de marge : Llama2 introduit une étiquette “marge” dans le classement des réponses du modèle, qui mesure l’écart entre les préférences. Ce paramètre de marge aide à affiner le calcul de la perte de classement.

Échantillonnage de rejet : Llama2 utilise une approche RLHF itérative, créant plusieurs versions du modèle (de RLHF-V1 à RLHF-V5). En plus de PPO, ils utilisent l’échantillonnage de rejet.
Cette technique génère plusieurs sorties et sélectionne la récompense la plus élevée pour les mises à jour de gradient lors de l’optimisation. C’est différent de PPO, qui met à jour en se basant sur un seul échantillon.

Le pipeline final aura l’aspect suivant :

On constate que choisir une meilleure réponse parmi 2 est plus rapide que classer un ensemble de 4. Ajouter une marge aide également le modèle à apprendre plus rapidement, car cela est similaire à un processus d’entraînement classique de ML. Enfin, rejeter des échantillons semble être un concept intéressant pour obtenir de la qualité à la fin du processus.
Mentions honorables
Avant de passer au code, j’aimerais lister quelques autres techniques RLHF :
Les chercheurs présentent une méthode d’auto-apprentissage basée sur un ensemble de règles fournies par des humains.
L’étude présente HIR (Hindsight Instruction Labeling), une méthode en deux étapes impliquant l’échantillonnage et l’entraînement de la requête, qui convertit efficacement les cas où le modèle linguistique s’écarte des instructions.
L’étude sur RLAIF démontre que les évaluations utilisées pour l’entraînement du modèle de récompense dans RLHF peuvent être générées par une LLM plutôt que de s’appuyer uniquement sur l’apport humain.
ReST est une méthode qui aligne les modèles linguistiques sur les préférences humaines grâce à une approche basée sur l’échantillonnage, s’entraînant de manière itérative sur des sous-ensembles de plus en plus de haute qualité pour améliorer sa fonction de récompense.
Passons au code
Le code complet est disponible sur GitHub.
Tout d’abord, nous devrons définir les paramètres généraux de formation et de configuration Lora que nous allons utiliser. C’est très similaire au code de la partie de fine-tuning de la série.
from transformers import TrainingArgumentsfrom peft import LoraConfig# Préparer les paramètres d'entraînementtraining_args = TrainingArguments( output_dir="./train_logs", # Dossier de sortie max_steps=100, # Nombre maximal d'étapes d'entraînement per_device_train_batch_size=4, # Taille de lot d'entraînement par GPU gradient_accumulation_steps=1, # Nombre d'étapes pour accumuler les gradients learning_rate=1.0e-4, # Taux d'apprentissage optim="adamw_torch", # Optimiseur save_steps=50, # Fréquence des sauvegardes logging_steps=10, # Fréquence des journaux d'entraînement report_to="tensorboard", # Méthode de rapport (dans ce cas, TensorBoard) remove_unused_columns=False, # Supprimer les colonnes inutilisées evaluation_strategy="steps", # Stratégie d'évaluation num_train_epochs=5, # Nombre d'époques d'entraînement)# Préparer les paramètres de PEFTpeft_config = LoraConfig( r=16, # Valeur de r lora_alpha=16, # Valeur de lora_alpha bias="none", # Paramètre de biais task_type="SEQ_CLS", # Type de tâche (Classification de séquences) modules_to_save=["scores"], # Modules à enregistrer)
Maintenant, il est temps de définir notre pipeline RLHF.
Tout d’abord, définissons nos données. En général, RLHF est excellent pour la production lorsque vous disposez d’un ensemble de données de questions incorrectement répondues. Il peut s’agir d’une réponse négative par exemple.
Plus tard, nous formaterons et diviserons cet ensemble de données pour l’utiliser dans l’entraînement et le test de notre modèle. Maintenant que nous avons le retour humain en place, spécifions le code pour l’apprentissage par renforcement :
from trl import RewardTrainer# Préparer RewardTrainertrainer = RewardTrainer( model=model, # Le modèle pour l'apprentissage par renforcement tokenizer=tokenizer, # Le tokenizer pour le traitement des données d'entrée args=training_args, # Arguments d'entraînement train_dataset=formatted_dataset["train"], # Ensemble de données d'entraînement eval_dataset=formatted_dataset["test"], # Ensemble de données d'évaluation peft_config=peft_config, # Configuration PEFT max_length=512, # Longueur maximale de l'entrée)# Exécuter l'entraînementtrainer.train()# Sauvegarder le modèle de récompense pré-entraînétrainer.model.save_pretrained("./reward_model")
C’est tout ce dont nous avons besoin pour exécuter l’apprentissage par renforcement avec un retour humain !
Maintenant, vous savez quand utiliser RLHF, à quoi doivent ressembler les données et comment exécuter le code.
C’est la fin de la partie 2d. C’est la dernière partie de la section sur les modèles de mon cours LangChain 101.
Applaudissez et suivez-moi, car cela me motive à écrire de nouveaux articles 🙂
We will continue to update IPGirl; if you have any questions or suggestions, please contact us!
Was this article helpful?
93 out of 132 found this helpful
Related articles
- Principaux articles importants en vision par ordinateur de la semaine du 2/10 au 8/10
- VoAGI News, 11 octobre 3 projets de science des données pour décrocher ce travail • 7 étapes pour maîtriser le NLP
- Améliorez les performances des modèles Falcon avec Amazon SageMaker
- Indexez le contenu de votre site Web exploré en utilisant le nouveau Web Crawler pour Amazon Kendra.
- IA et Efficacité énergétique une Révolution Durable
- Les États demandent plus de cours d’informatique. Maintenant, ils ont besoin d’enseignants.
- Prenez les commandes NVIDIA NeMo SteerLM permet aux entreprises de personnaliser les réponses d’un modèle lors de l’inférence