Grands modèles de langageActualités et analyses de l'IAGrands modèles de langageActualités et analyses de l'IA
Grands modèles de langage11 min de lecture

Comment Nvidia a entraîné Nemotron

Entraîner des LLMs avec des données synthétiques. D’accord, c’est bien beau tout ça ; nous avons une façon de créer de meilleurs modèles avec peu de travail manuel pour améliorer les données.

Comment Nvidia a entraîné Nemotron
Sommaire

À retenir

  • D’accord, c’est bien beau tout ça ; nous avons une façon de créer de meilleurs modèles avec peu de travail manuel pour améliorer les données.
  • Le secret réside dans l’énorme quantité de données de haute qualité dont ces modèles ont besoin.
  • On commence avec un modèle initial puissant pour produire des données synthétiques, qui servent ensuite à entraîner un nouveau modèle plus performant.

Regardez la vidéo

Vous êtes-vous déjà demandé pourquoi l’entraînement de grands modèles de langage représente un défi aussi colossal ? Le secret réside dans l’énorme quantité de données de haute qualité dont ces modèles ont besoin. Mais obtenir ces données est incroyablement difficile. Même si beaucoup de gens ont essayé de résoudre ce problème de différentes façons, l’une des approches les plus prometteuses consiste à utiliser des données synthétiques. Elles coûtent moins cher que d’autres méthodes, mais elles présentent un inconvénient majeur : le manque de diversité. Récemment, les nouveaux LLMs de la famille de modèles Nemotron de Nvidia se sont attaqués à ce problème. Nvidia a partagé un pipeline pour générer des données synthétiques qui servent à entraîner et à peaufiner de grands modèles de langage (LLMs).

Ici Louis-François, cofondateur de Towards AI, où nous créons et partageons du contenu éducatif, comme notre récent livre ou des vidéos gratuites comme celle-ci. Dans la vidéo d’aujourd’hui, nous plongeons dans les principaux apprentissages et insights de Nvidia pour entraîner un LLM avec des données synthétiques.

La première étape de la création d’un dataset synthétique consiste à générer des prompts synthétiques. Pour y parvenir, ils ont construit un modèle générateur. L’un des grands défis avec les données synthétiques vient du manque de diversité de ces prompts qui génèrent du nouveau contenu. Pour s’y attaquer, Nvidia a contrôlé la distribution des prompts afin de couvrir un large éventail de scénarios grâce à quelques astuces.

La première méthode utilisée s’appelle l’alignement itératif du faible vers le fort. On commence avec un modèle initial puissant pour produire des données synthétiques, qui servent ensuite à entraîner un nouveau modèle plus performant. Ce serait comme utiliser GPT-3.5 pour entraîner GPT-4. Ce processus se répète en cycles : chaque modèle amélioré génère des données de meilleure qualité, qui servent à leur tour à entraîner un modèle encore meilleur. En gros, on passerait de GPT 3.5 à 3.6, puis à 3.7, etc. Cette boucle continue de génération de données et d’entraînement produit des modèles de plus en plus puissants. Chaque modèle amélioré sert ensuite à créer des prompts pour produire les données d’entraînement du suivant.

Exemple visuel de l’article « Comment Nvidia a entraîné Nemotron »

D’accord, c’est bien beau tout ça ; nous avons une façon de créer de meilleurs modèles avec peu de travail manuel pour améliorer les données. Mais comment ont-ils réglé notre problème de distribution des prompts ?

Eh bien, ils ont utilisé plusieurs techniques d’ingénierie de prompts, que nous couvrons aussi dans notre livre Building LLMs for Production, avec d’autres insights essentiels pour entraîner des LLMs et travailler avec eux.

La première technique utilisée est celle des prompts à tour unique. Ici, un générateur crée différents macrothèmes comme « Intelligence artificielle », « Changements climatiques » et « Civilisations anciennes ». Chaque macrothème est divisé en sous-thèmes. Par exemple, sous « Intelligence artificielle », les sous-thèmes pourraient comprendre « Apprentissage automatique », « Traitement du langage naturel » et « Considérations éthiques ». Des questions sont ensuite créées pour chaque sous-thème. 

Exemple visuel de l’article « Comment Nvidia a entraîné Nemotron »

Il existe deux types de questions : les prompts de questions-réponses ouvertes et les prompts de questions-réponses fermées. Les prompts de questions-réponses ouvertes comprennent des questions qui exigent une réponse générée à partir de la compréhension et de l’intégration d’information provenant d’un vaste contexte ou de plusieurs sources, comme « Comment le traitement du langage naturel améliore-t-il l’interaction humain-machine ? » ou « Quelles sont les implications éthiques du déploiement de l’IA dans les soins de santé ? » Les prompts de questions-réponses fermées, quant à eux, comprennent des questions avec des réponses précises et définitives, qui peuvent généralement être récupérées directement dans un texte ou un dataset donné, comme « En quelle année le premier ordinateur programmable a-t-il été inventé ? » ou « Qu’est-ce que l’effet de serre ? »

Exemple visuel de l’article « Comment Nvidia a entraîné Nemotron »

Pour les prompts de questions-réponses ouvertes, les questions générées sont affinées afin de les rendre plus précises et détaillées. Par exemple, une question générale comme « Quelles sont les applications de l’apprentissage automatique ? » pourrait être précisée ainsi : « Comment l’apprentissage automatique est-il utilisé pour améliorer la précision des prévisions météorologiques ? »

Pour les prompts de questions-réponses fermées, ils ont utilisé le dataset C4, une collection de données Web continuellement mise à jour. Chaque document de ce dataset est fourni au générateur, qui produit une instruction propre à ce document. Le document est ensuite concaténé avec les instructions au moyen de templates manuels précis. Par exemple, pour un document sur l’apprentissage automatique, l’instruction pourrait être : « Résumez l’apprentissage supervisé et décrivez comment les arbres de décision sont utilisés dans le monde réel. »

En plus des prompts à tour unique, le modèle a besoin de données sur la façon de suivre des instructions précises et de répondre conformément aux exigences de l’utilisateur. Cela nous amène aux deux autres types de prompts importants : les prompts de suivi d’instructions et les données de préférence. Regardons-les un par un et voyons pourquoi ils contribuent à la diversité des données d’entraînement.

Qu’est-ce que le suivi d’instructions ? C’est lorsque le modèle comprend et exécute les instructions précises d’un utilisateur, de manière à s’aligner sur ses attentes. Dans le cas de Nemotron, son propre générateur, ou le meilleur modèle actuel, crée ces prompts de suivi d’instructions et associe chacun d’eux à un prompt général. Par exemple, si le prompt général est « Rédigez un essai sur l’apprentissage automatique », le prompt d’instruction pourrait être « Votre réponse doit comprendre trois paragraphes », en supposant que la réponse de notre dataset compte 3 paragraphes, évidemment. Cette association aide le modèle à fournir automatiquement des réponses qui respectent les exigences précises de l’utilisateur. Une variante intéressante utilise des instructions à tours multiples, où l’instruction s’applique à toutes les conversations futures. Par exemple, si l’instruction à tours multiples est « Répondez à toutes les questions avec des explications détaillées et des exemples » et que l’utilisateur demande d’abord « Quelle est l’importance du test de Turing ? », le modèle fournirait une explication détaillée avec des exemples. Si la prochaine question est « Comment le test de Turing s’applique-t-il à l’IA moderne ? », le modèle continuerait de suivre les instructions et fournirait une réponse tout aussi détaillée, avec des exemples. Dans ce cas, le modèle conserve donc le même style d’explication.

Passons maintenant à la troisième technique : les données de préférence. Elles consistent à créer synthétiquement des prompts à deux tours pour aider le modèle à apprendre les préférences des utilisateurs et à s’y adapter plus efficacement. Par exemple, on utilise un prompt d’utilisateur de ShareGPT, une plateforme où des utilisateurs partagent leurs interactions avec des modèles d’IA. Disons que ce prompt est « Quel est le sens de la vie ? Expliquez-le en 5 paragraphes. » Le modèle génère ensuite la réponse de l’assistant : « Le sens de la vie est une question philosophique débattue tout au long de l’histoire. Il s’agit d’un sujet complexe et multidimensionnel, et différentes personnes peuvent avoir différentes réponses. » À partir de cette réponse, une autre réplique est générée et étiquetée comme la réponse de l’utilisateur, par exemple : « La réponse ne devrait-elle pas être 42 ? » Ce cycle aide le modèle à apprendre à anticiper les préférences des utilisateurs et à y répondre. Même si cet exemple n’est peut-être pas très exact, il ajoute certainement du potentiel de mème au LLM. Pour garantir que les réponses diffèrent les unes des autres tout en maintenant un dialogue réaliste, le modèle reçoit des descriptions de rôles claires sur la façon de répondre lorsqu’il joue l’assistant ou l’utilisateur. Par exemple, dans le rôle de l’assistant, il pourrait recevoir l’instruction de fournir des réponses détaillées et informatives, tandis que dans celui de l’utilisateur, il pourrait poser des questions de suivi pour demander des précisions ou davantage d’information.

Nous avons parlé des conversations à un tour et à deux tours avec le modèle, mais dans la vraie vie, nos conversations avec lui font habituellement plusieurs allers-retours. Pour gérer ces interactions plus longues, nous utilisons une méthode appelée génération de dialogues synthétiques à tours multiples. Ici, nous attribuons deux rôles au modèle : celui de l’assistant et celui de l’utilisateur. Le modèle reçoit des instructions précises pour chaque rôle et commence avec un prompt initial, comme une question ou une affirmation. Il alterne ensuite entre ces rôles, créant des réponses dans un sens puis dans l’autre pour simuler une véritable conversation. Ce processus l’aide à apprendre à gérer des dialogues prolongés en pratiquant les deux côtés de l’interaction. Cette approche est toutefois risquée, puisqu’elle peut tomber dans des boucles répétitives et ennuyantes, puis nous ramener à notre problème initial de diversité des données.

Après toutes ces techniques de prompting, l’étape suivante consiste à s’assurer que le modèle donne la bonne réponse de la façon voulue par l’utilisateur, tout en restant diversifié. C’est ce qu’on appelle le fine-tuning des préférences, et il repose sur l’exactitude de la réponse. Pour générer ces données, nous avons besoin d’un prompt ainsi que de deux réponses associées, l’une correcte et l’autre incorrecte. Par exemple, si le prompt est « Expliquez le processus de photosynthèse », une bonne réponse décrirait précisément les étapes de la photosynthèse, alors qu’une mauvaise réponse fournirait de l’information sans rapport ou erronée.

Si vous vous souvenez bien, différents prompts ont été fournis à plusieurs modèles intermédiaires qui génèrent des réponses pour entraîner le prochain modèle. L’utilisation de plusieurs modèles crée un dataset synthétique plus difficile. Cela aide à garantir la diversité des données, puisque chaque modèle peut produire des réponses légèrement différentes au même prompt, représentant ainsi un éventail plus large de perspectives et de styles. Nous pouvons utiliser des étiquettes de vérité terrain ou un modèle pour déterminer si les réponses sont exactes. La vérité terrain peut reposer sur les étiquettes existantes d’un dataset ou être validée avec des outils pour les tâches de Python ou de mathématiques. Par exemple, pour un prompt qui demande de résoudre un problème de mathématiques, l’étiquette de vérité terrain serait la bonne réponse calculée par un vérificateur. Nous pourrions utiliser un LLM ou un modèle de récompense comme juge pour évaluer le modèle. Par exemple, avec un LLM, nous générons les réponses de deux modèles intermédiaires différents et les comparons. Pour éviter le biais de position, nous inversons leur ordre et comparons de nouveau les réponses. Ils ont observé que les modèles de récompense sont de meilleurs juges que les LLMs, puisqu’ils distinguent les réponses avec plus de précision. Par exemple, le modèle de récompense utilisé ici, Nemotron-4–340B-Reward, affiche une meilleure précision lorsqu’il évalue des réponses dans des scénarios complexes, comme lorsqu’il doit distinguer une réponse nuancée d’une réponse simple à une question technique. Cette approche garantit non seulement l’exactitude des réponses, mais maintient aussi un ensemble diversifié de données d’entraînement de haute qualité, ce qui enrichit la capacité du modèle à gérer toutes sortes de requêtes et d’instructions.

Exemple visuel de l’article « Comment Nvidia a entraîné Nemotron »

Dans ce pipeline de génération de données synthétiques, (1) le modèle Nemotron-4 340B Instruct sert d’abord à produire un output textuel synthétique. Un modèle d’évaluation, (2) Nemotron-4 340B Reward, évalue ensuite le texte généré et fournit un feedback qui guide les améliorations itératives, tout en garantissant que les données synthétiques sont exactes, pertinentes et alignées sur des exigences précises. Image et légende tirées du billet de blogue de NVIDIA.

En bref : on voit à quel point les techniques de prompting plus avancées sont importantes, surtout à mesure que nous construisons des systèmes toujours plus intégrés et interdépendants, où des LLMs autonomes travaillent ensemble.

L’entraînement sur des données synthétiques offre une approche prometteuse pour développer des modèles qui ne sont pas limités par les biais des données, les problèmes de qualité ou les coûts élevés. J’espère que cet aperçu de la façon dont les données peuvent être générées pour des domaines personnalisés et de l’approche employée par Nvidia avec sa famille de modèles Nemotron vous a été utile. Si vous souhaitez en apprendre davantage sur l’utilisation des LLMs dans des applications concrètes et sur leur impact plus large, assurez-vous de vous abonner à la chaîne et de consulter notre nouveau livre, Building LLMs for Production, où nous abordons cette étape cruciale en profondeur avec des exemples pratiques.

Merci d’avoir regardé, et on se retrouve dans la prochaine !

Discussion

Commentaires

Chargement

Aucun compte requis. Votre nom et votre commentaire seront publics, alors n'incluez pas de renseignements privés. Consultez la page de confidentialité pour les détails.

Continuez à apprendre

Vous voulez le côté pratique de l'IA, sans le brouillard marketing ?

Je partage ce qui est utile sur YouTube, Substack et dans mes guides d'ingénierie IA.

FAQ

Comment NVIDIA a-t-elle utilisé les données synthétiques pour Nemotron ?

Un modèle enseignant puissant a généré des exemples d’entraînement potentiels, qui ont été filtrés puis utilisés pour améliorer un autre modèle de langage.

Pourquoi générer des données synthétiques ?

Elles peuvent élargir la couverture des instructions et réduire le travail de rédaction manuel lorsque les exemples humains de haute qualité sont limités.

Qu’est-ce qui rend les données synthétiques utiles plutôt que répétitives ?

Les prompts, les réponses, la difficulté et les domaines doivent être diversifiés, tandis que les filtres de qualité retirent les exemples incorrects ou peu utiles.

Les modèles peuvent-ils s’améliorer au fil de cycles répétés de données synthétiques ?

Potentiellement, si chaque cycle produit de meilleures données et utilise des vérifications externes au lieu de renforcer les erreurs précédentes.

Quel est le principal risque de l’entraînement récursif ?

Les biais ou hallucinations qui passent inaperçus peuvent s’amplifier lorsqu’un nouveau modèle apprend à partir des outputs d’un prédécesseur imparfait.

Quels types de données synthétiques Nemotron a-t-il générés ?

Le pipeline a produit des prompts diversifiés, des instructions à tours multiples et des paires de préférences pour que le modèle apprenne les tâches, la cohérence conversationnelle et les préférences des utilisateurs.