Prompt engineering et fine-tuning : quelles sont les différences ?

Le prompt engineering et le fine-tuning sont deux approches pour optimiser les résultats d’une IA générative. Toutefois, ces deux techniques jouent un rôle distinct dans l’entraînement d’un modèle LLM.

Les applications de l’IA et du machine learning ont proliféré ces dix dernières années. Récemment, des modèles d’IA générative – dont GPT-4 et PaLM 2 – qui motorisent des applications telles que ChatGPT et Bard ont rendu l’IA accessible à de nombreux utilisateurs et entreprises qui n’auraient peut-être jamais envisagé l’adoption de ces technologies auparavant.

Malgré la promesse de leurs conceptions, les modèles d’IA ne sont pas « intelligents ». En réalité, le terme « IA » ne désigne guère plus que des systèmes capables de trouver des relations dans de vastes et complexes ensembles de données, puis d’organiser et d’exprimer ces relations à l’intention des utilisateurs de manière intelligible.

Par conséquent, les systèmes d’IA dépendent fortement des techniques d’optimisation. Ces optimisations ont deux objectifs fondamentaux : produire des résultats plus pertinents et améliorer les performances. Les deux principales techniques utilisées aujourd’hui pour optimiser les grands modèles de langage sont le prompt engineering et le fine-tuning.

Qu’est-ce que le prompt engineering ?

L’un des plus anciens axiomes de l’informatique est « garbage in, garbage out » – une phrase qui est tout aussi vraie à l’ère de l’IA qu’elle l’était lors de la programmation des premiers mainframes.

Les systèmes d’IA ne sont ni psychiques ni télépathiques. Parce qu’ils ne peuvent pas deviner ou reconnaître les intentions ultimes de l’utilisateur, ils sont totalement dépendants des données qui leur sont fournies. Les questions ou demandes qu’un utilisateur pose à une application telle que ChatGPT sont appelées prompts, ou invites (parfois requêtes ou commandes) en français.

Lorsqu’un utilisateur saisit une invite, l’IA analyse – décompose ou désassemble – les principaux éléments de ce prompt. Le système utilise ensuite ces éléments pour traiter les données, produire des résultats ou prendre des mesures.

Par conséquent, la qualité et l’exhaustivité des résultats de l’IA sont fortement influencées par la qualité et la précision de la requête écrite par l’utilisateur. En bref, une IA générative produit des résultats pertinents et précis si l’utilisateur pose des questions… plus pertinentes et plus précises.

Le prompt engineering consiste à guider et à façonner les réponses des modèles de ML en s’appuyant sur le travail du prompt engineer. Son rôle est de formuler soigneusement des requêtes spécifiques.

Pour obtenir des résultats cohérents, c’est-à-dire plus alignés sur la demande d’un humain, un prompt engineer ajoutera du contexte à son invite. Par exemple, pour générer un template de mail qui servira lors d’une campagne marketing, le prompt engineer décrit cette tâche, renseigne l’objectif et ajoute un ou plusieurs exemples de courriels qui correspondent à sa requête.  

Le processus d’optimisation des invites implique souvent de poser des questions de plus en plus pointues et détaillées ou de tester différentes façons de formuler les instructions. L’objectif est d’influencer le comportement de l’IA pour obtenir des résultats probants. Pour ce faire, les prompt engineers expérimentent généralement différents types de requêtes et de formats.

Si l’approche semble à la portée de tous utilisateurs qui souhaiteraient exploiter un grand modèle de langage (LLM), elle réclame une connaissance approfondie de son architecture et des contraintes liées aux jeux de données exploitées à l’entraînement.

Si le prompt engineer connaît le corpus qui a été utilisé pour l’entraîner (tout du moins en partie), il saura identifier les tâches dans lesquelles le LLM est performant et, à l’inverse, celles qui provoquent des hallucinations.

Les modèles de générations d’images sont de bons exemples pour comprendre ce principe. Par exemple, les différentes versions de Stable Diffusion et de Midjourney réagissent à des prompts et des « negative prompts ». Ici, il s’agit de renseigner les concepts positifs, ceux que l’on souhaite faire apparaître dans l’image générée d’un côté, et les éléments négatifs, ceux qui ne doivent pas être présents dans l’image finale de l’autre. Ce n’est qu’en expérimentant et en générant différentes images que l’usager peut identifier les termes positifs et négatifs qui ont le plus d’effets sur les sorties du modèle.

Qu’est-ce que le fine-tuning (ou réglage fin) ?

Les performances d’un système d’IA générative peuvent également être optimisées grâce à une technique d’entraînement appelée « réglage fin », ou fine-tuning. Le fine-tuning est une approche générale qui ne s’applique pas uniquement au NLP et à de la génération de textes ou d’images.

Toutes les IA ne valent pas. Dans le domaine du deep learning, les chercheurs ont institutionnalisé le fait qu’il fallait développer des modèles capables d’effectuer une tâche ou des tâches génériques. Or, les entreprises espèrent exploiter les modèles pour des tâches spécifiques, telles que le support client ou la génération d’un prédiagnostic médical. Des modèles de ce type sont parfois mis à disposition par les éditeurs, mais ils ne répondront pas forcément aux besoins de toutes les entreprises.

Dans les deux cas, le fine-tuning permet à une entreprise d’optimiser les performances d’un modèle existant ou de modeler son comportement en réentraînant le modèle sur des données spécifiques de manière à ajuster ses poids et ses paramètres.

Lorsqu’il est correctement mis en œuvre, le fine-tuning peut aider un système d’IA à s’adapter à des tâches ou à des domaines de connaissances plus spécifiques. Cela permet souvent d’améliorer les performances en produisant des résultats plus rapides et plus pertinents. Par exemple, le réglage fin peut être utile pour adapter un modèle GPT (Generative Pretrained Transformer) à la classification de documents financiers, à la génération de résumés de conversations téléphoniques d’abord converties en texte, ou à la conception d’un agent conversationnel consacrée à une marque.

La clé d’un fine-tuning efficace réside dans la qualité des données et dans les étapes d’entraînement supplémentaires. Les jeux de données consacrés à un domaine fournissent à l’IA de nouvelles informations brutes. Les méthodes d’entraînement permettent au modèle de contextualiser ces données et de comprendre comment corréler les questions aux réponses les plus pertinentes et les plus appropriées.

Lors de l’entraînement, il s’agit de mettre en place un système de retour d’information mêlant évaluation humaine et automatique pour noter les réponses de l’IA et guider le système vers de meilleurs résultats. Ce sont typiquement les méthodes décrites par Meta AI pour mettre au point Llama 2– Chat.

Prompt engineering vs fine-tuning

Le prompt engineering et le fine-tuning servent donc le même objectif. Toutefois, il faut distinguer plusieurs différences essentielles entre ces deux techniques :

  • L’ingénierie des invites se concentre sur l’obtention de meilleurs résultats pour les utilisateurs, tandis que le réglage fin vise à améliorer des performances du modèle pour accomplir certaines tâches.
  • Le prompt engineering nécessite de créer des indications en entrée plus détaillées et plus efficaces, tandis que le fine-tuning implique l’entraînement d’un modèle sur de nouvelles données en provenance d’un ou de plusieurs domaines spécifiques.
  • L’ingénierie des invites est synonyme de contrôle, tandis que le fine-tuning apporte davantage de connaissances.
  • Le prompt engineering ne nécessite pas énormément de ressources informatiques (hormis un petit budget associé à l’inférence des modèles), car les messages sont créés par des personnes. En revanche, l’entraînement et la gestion des données supplémentaires utilisées dans le cadre de l’affinage peuvent nécessiter d’importantes ressources informatiques. Chaque phase de fine-tuning implique d’entraîner le fork d’un modèle.

Peu importe leurs différences, leur efficacité dépend fortement des connaissances et des compétences des ingénieurs humains. Cela nécessite généralement de former ou de recruter des professionnels possédant des compétences adéquates en matière de prompt engineering ainsi qu’une formation en machine learning.

Qu’entend-on par prompt tuning et plugins ?

Plusieurs concepts supplémentaires sont liés à l’extension et à l’optimisation du comportement d’une plateforme d’IA, à savoir le prompt tuning et les plugins.

Le prompt tuning

Le prompt tuning entre dans la catégorie des méthodes dites de « Parameter-Efficient Fine-Tuning » ou PEFT.

Les approches PEFT consistent à affiner un petit nombre supplémentaire de paramètres d’un LLM alors que le modèle est dit « gelé ».

Originellement, l’approche qui motive la mise sur pied du prompt tuning vise à généraliser les résultats d’un modèle NLP ou NLG à d’autres tâches. Elle cible les mêmes objectifs que le fine-tuning, mais ne nécessite pas de réentraîner le modèle sous-jacent.

Des chercheurs de Google ont élaboré cette méthode pour apprendre des tâches de classification de texte à des modèles T5, dont le rôle original est de générer du texte.

Inspiré par le prompt engineering, les chercheurs ont cherché à automatiser la création des invites.

En ce sens, ils décrivent le concept de « soft prompts » (à l’inverse de hard prompts, écrites manuellement). Il s’agit là de réunir un jeu de donnée, possiblement labellisé suivant la tâche à accomplir. Ce data set peut rassembler les meilleurs exemples d’invites et de résultats ou bien un corpus de texte supplémentaire. Ces données servent à entraîner une représentation vectorielle (le soft prompt), à savoir un ou des tokens virtuels combinés avec un prompt créé manuellement. Le modèle LLM apprend de ce soft prompt par rétro propagation à l’aide de la méthode des gradients.

« Le design de prompt peut être considéré comme la recherche dans un espace textuel à travers des tokens associés à des embeddings fixes. Le prompt tuning, à l’inverse, implique une recherche dans un espace de représentations vectorielles (embeddings) associée à un texte fixe », résume Brian Lester, chercheur en IA chez Google et l’un des inventeurs de la technique.

Ainsi, il est possible de nourrir le modèle d’un plus grand nombre d’exemples spécifiques sans avoir à chercher manuellement la bonne séquence de texte et sans à réentraîner le modèle. La technique peut aussi servir à apprendre à un modèle GPT à effectuer de l’analyse de sentiments ou encore à forcer un LLM à reproduire le style d’un auteur célèbre.

Les Plugins (propulsés par la technique Retrieval Augmented Generation)

Les plugins sont des extensions qui permettent à un modèle d’IA d’accéder à des outils ou à des données externes. Un plugin peut permettre à un modèle d’effectuer une recherche sur Internet, d’accéder à une base de données ou d’exécuter un bout de code spécifique en réponse à une demande appropriée de l’utilisateur.

Par exemple, ChatGPT prend déjà en charge une série de plugins créés par des entreprises de services de premier plan, dont Expedia, Kayak et Slack. OpenAI propose également un navigateur web interne, un interprète de code et des plugins de recherche dans une base de connaissances.

Ces plugins dépendent le plus souvent de l’application des techniques dites de « Retrieval Augmented Generation (RAG) », une expression que l’on pourrait traduire par génération augmentée par la recherche. Cette méthode introduite par Meta AI permet d’analyser un prompt et d’effectuer une recherche par similarité dans une collection de documents convertis en embeddings. Ces embeddings sont stockés dans une base de données vectorielle. Les vecteurs correspondant aux documents sont ensuite associés au prompt pour que le modèle LLM puisse générer la bonne réponse.

 

Pour approfondir sur Intelligence Artificielle et Data Science