Le fine-tuning permet d'entraîner un modèle existant sur vos propres données dans le but de le spécialiser : un format de sortie, un vocabulaire particulier, un ton. Une fois le modèle fine-tuné, plus besoin de demander le comportement voulu dans chaque prompt.
Pour la petite histoire : en parlant de ton, je me suis amusé à fine-tuner un modèle pour qu'il me réponde avec un vocabulaire à la Kaamelott ☺️.
Comment fonctionne le fine-tuning
Entraîner un LLM en partant de zéro s'avère très coûteux. Le fine-tuning permet d'ajuster les paramètres d'un modèle déjà entraîné à partir d'exemples : une consigne et la réponse attendue.
Le minimum est d'utiliser une centaine d'exemples, jusqu'à quelques milliers si besoin. L'avantage est que le modèle garde toutes ses capacités générales en plus de votre comportement !
La technique LoRA (Low-Rank Adaptation) rend l'opération bien plus abordable : les paramètres d'origine sont figés et l'on n'entraîne qu'un adaptateur, c'est-à-dire un petit jeu de paramètres. Je confirme l'avoir fait sur mon Mac 😁.
Fine-tuning ou RAG ?
La confusion est fréquente. Quand le fine-tuning enseigne un comportement (répondre dans un style, produire un format, etc.), le RAG fournit des connaissances (documents internes, données à jour, etc.). Le RAG est en général le bon choix s'il suffit d'indexer des connaissances, car le fine-tuning demande un réentraînement.
La première étape reste évidemment le prompt 🫡.
Les limites du fine-tuning
C'est une question de données : des exemples médiocres produiront un modèle médiocre. Et attention au surapprentissage : un modèle entraîné trop longtemps finit par apprendre les exemples par cœur et en oublie de tirer une règle.
Pour ceux qui veulent s'atteler au fine-tuning, prenez un petit modèle open weight : ça fait très bien l'affaire pour commencer.