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

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.

Basé sur la recherche : https://arxiv.org/pdf/2203.02155.pdf

(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 :

  1. Entraînement raffiné du modèle pré-entraîné grâce à la supervision
  2. Élaboration d’un modèle pour fournir des récompenses
  3. 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.

Étape 1. Pipeline (Instruct) GPT RLHF

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.

Étape 2. Pipeline (Instruct) GPT RLHF

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.

Étape 3. Pipeline (Instruct) GPT 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 ?

Pipeline (Instruct) GPT RLHF

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.

Étape 2. Pipeline LLAMA RLHF

É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.

Étape 3. Pipelin RLHF LLAMA

Le pipeline final aura l’aspect suivant :

Pipeline RLHF LLAMA

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!

Share:

Was this article helpful?

93 out of 132 found this helpful

Discover more

AI

Pourquoi l'avenir des puces d'IA est-il important dans l'informatique neuromorphique?

L'informatique neuromorphique pourrait changer l'IA et l'IoT. Cela pourrait stimuler une vague d'IA plus précise, pol...

Actualités sur l'IA

Plus de tricherie ! Sapia.ai attrape les réponses générées par l'IA en temps réel !

Dans une percée passionnante, Sapia.ai a dévoilé une nouvelle fonctionnalité qui peut identifier et signaler en temps...

AI

Renforcer la conception de logos avec l'IA générative de Segmind

Introduction Dans le monde en constante évolution de la gestion de marque, les logos représentent l’essence mêm...

AI

Inflection-2 Surpasse PaLM-2 de Google Une percée dans les modèles de langage de l'IA

Dans une annonce révolutionnaire, Inflection AI, les créateurs du célèbre assistant personnel PI AI, ont dévoilé leur...

AI

KPMG parie plus de 2 milliards de dollars sur l'IA visant un chiffre d'affaires de 12 milliards de dollars

Dans une initiative audacieuse soulignant le rythme rapide de l’innovation technologique, KPMG, un cabinet de s...