Comment améliorer les performances de vos LLM : les bons conseils d'OpenAI
Comment maximiser la cohérence et le comportement d'un grand modèle de langage sur votre cas d'usage ? Les conseils d'OpenAI produisent d'excellents résultats.
Arrivés il y a bientôt deux ans entre les mains du grand public, les grands modèles de langage sont loin d'avoir révélé leur plein potentiel. Hallucination, erreur de formatage, incompréhension du contexte… Leur maîtrise requiert une compréhension fine de leur fonctionnement et de longues heures d'itération et de tests. Après avoir travaillé avec de nombreux développeurs, des start-ups et des groupes et constaté les frictions persistantes, OpenAI s'est résolu à partager quelques conseils pour mieux dompter les LLM.
Les principaux leviers d'action
OpenAI identifie trois différents leviers pour optimiser les résultats d'un LLM : l'optimisation du prompt, le RAG et enfin le fine-tuning. Contrairement à une approche linéaire simpliste souvent présentée (commencer par l'ingénierie des prompts, puis passer au RAG, et enfin au fine-tuning), OpenAI conseille d'actionner indépendamment chaque levier en fonction du problème rencontré.
La start-up de San Francisco distingue deux axes principaux d'optimisation : l'optimisation du contexte et l'optimisation du LLM lui-même. L'optimisation du contexte vise à améliorer la précision des réponses en fournissant au modèle les informations nécessaires pour répondre correctement. Il est conseillé d'y recourir quand le modèle manque de connaissances contextuelles, que ses connaissances sont obsolètes, ou que la tâche requiert des informations propriétaires ou spécifiques. Il est par exemple possible d'utiliser du RAG ou d'ajouter directement du contexte dans le prompt. L'objectif est de maximiser la pertinence et l'exactitude des réponses en fournissant le bon contexte.
L'optimisation du LLM, quant à elle, vise à améliorer la cohérence et le comportement du modèle lui-même. On l'utilise quand le modèle produit des résultats incohérents ou mal formatés, que le ton ou le style de réponse n'est pas approprié, ou que le raisonnement n'est pas suivi de manière cohérente. Ici, le fine-tuning et le prompt ingeniring seront adaptés.
Pour optimiser au maximum les performances de ses LLM, OpenAI a développé une méthodologie rigoureuse :
- Créer un prompt de base avec des instructions claires pour une tâche spécifique.
- Ajouter quelques exemples statiques dans le prompt. Par exemple, si on souhaite que le modèle réponde à des questions sur l'histoire, est vital d'inclure 2-3 exemples de questions réponses historiques
- Tester ce prompt et évaluer ses performances
- Si les résultats ne sont pas satisfaisants, il sera nécessaire de préparer un ensemble plus large d'au moins 50 exemples variés de la tâche à accomplir
- Utiliser ces exemples pour faire un fine-tuning du modèle
Si le modèle ne répond pas suffisamment bien, OpenAI conseille de mettre en place un système de récupération dynamique (RAG) basé sur les exemples corrects et d'ajouter une étape de vérification des faits pour détecter les éventuelles erreurs ou "hallucinations" du modèle.
Comment formuler un bon prompt ?
Pour formuler un bon prompt, OpenAI recommande d'écrire des instructions simples et explicites. Si la tâche est trop complexe, il sera nécessaire de la diviser en sous tâche. Cela aide le modèle à traiter l'information de manière plus structurée et à produire des réponses plus cohérentes. Le modèle doit idéalement avoir le temps de "réfléchir" et décomposer toutes les tâches et les sous-tâches.
Exemple : Pour analyser un article de presse, au lieu de demander "Analysez cet article", on pourrait formuler le prompt ainsi : "
- Résumez l'article en 2-3 phrases.
- Identifiez le sujet principal.
- Déterminez le ton général (positif, négatif, neutre).
- Citez une phrase clé qui illustre ce ton.
- Concluez sur le message global de l'article. "
Le testing doit également être mené progressivement. Modifier un élément à la fois dans le prompt permet d'évaluer précisément l'impact de chaque changement sur les performances du modèle. Enfin, la start-up conseille d'intégrer, quand l'usage le peu, des documents de référence pertinents pour répondre à la tâche demandée. Le but est d'inciter le modèle à se servir des bonnes informations pour formuler sa sortie. Pour finir, OpenAI conseille de recourir, quand cela est nécessaire, à des outils externes pour maximiser encore un peu plus la pertinence (API, base de données, moteur de recherche…).
Comment évaluer les performances du LLM ?
Pour évaluer le LLM, OpenAI conseille de commencer par créer un ensemble de questions et de réponses de référence, idéalement composé d'au moins 20 exemples variés et représentatifs de la tâche à accomplir. Ces exemples servent de base pour mesurer la précision et la cohérence du modèle. Pour le process de mesure, OpenAI conseille de s'appuyer sur des métriques automatisées comme ROUGE et BERTScore. ROUGE mesure la similarité entre les réponses générées et les références, tandis que BERTScore offre une analyse sémantique plus poussée.
La société suggère également d'utiliser GPT-4 comme évaluateur, en lui fournissant une grille d'évaluation détaillée avec des critères spécifiques tels que la précision, la cohérence et la pertinence. Toutefois, l'évaluation à l'ancienne par un humain reste cruciale, en particulier pour les tâches complexes ou sensibles. Enfin, après chaque modification du prompt ou du modèle, le processus d'évaluation doit être répété et les résultats comparés aux évaluations précédentes.
De la juste répartition entre performance et coût
OpenAI encourage les développeurs à adopter une approche pragmatique concernant l'optimisation toujours plus poussée des LLM. La clé réside dans la définition d'un niveau de précision "suffisamment bon" pour chaque application spécifique. Concrètement, une évaluation minutieuse des enjeux commerciaux et techniques propres à chaque projet doit être menée pour éviter toute suroptimisation. Le géant de l'IA encourage à peser le coût d'une erreur face aux avantages d'une réponse exacte. Par exemple, dans un contexte de service client, une réponse rapide mais légèrement imprécise pourrait s'avérer plus bénéfique qu'une réponse parfaite mais tardive.
Enfin, OpenAI préconise également la mise en place de garde-fous, comme des vérifications humaines pour les décisions critiques, plutôt que de viser une perfection souvent illusoire du modèle.