Mistral AI : Entraîner des Large Language Models en Open Source
1 octobre 2023
Intelligence Artificielle
Introduction à Mistral AI
C'est un modèle de 7 milliards de paramètres, soit la taille du plus petit Llama. C'est le premier modèle ; pour nous, l'idée était de montrer que nous étions capables d'entraîner des Large Language Models from scratch.
Il a la particularité d'avoir des sliding windows, une architecture qui permet de regarder extrêmement loin dans le passé. Si vous avez par exemple 20 fichiers PDF en entrée, soit environ 100 000 tokens, vous voulez un modèle capable de récupérer des informations, de répondre et de synthétiser de l'information très lointaine.
Ces questions de long contexte sont importantes pour nous. Contrairement à Llama, il bénéficie d'une licence Apache 2, beaucoup moins restrictive que celle de Llama 2 par Meta.
Bonjour et bienvenue sur Data Driven 101, le podcast qui s'intéresse aux applications concrètes et variées de l'intelligence artificielle et de la data. Je suis Marc Sanselme, spécialiste en IA, et je reçois chaque semaine des professionnels pour nous partager leurs expériences et leurs visions sans filtre.
Aujourd'hui je reçois Guillaume Lample, Chief Scientist Officer de Mistral AI, auteur de Llama, le Large Language Model publié par Meta. Mistral AI est une société créée il y a 4 mois qui a levé 100 millions de dollars pour développer des Large Language Models pour d'autres sociétés, avec un focus très fort sur l'open source. Bonjour Guillaume.
Bonjour.
Alors Guillaume, est-ce que tu peux nous présenter Mistral AI rapidement ?
Mistral AI est une compagnie créée il y a 4 mois par Arthur Mensch, Timothée Lacroix et moi. Nous étions trois fondateurs, nous sommes maintenant une quinzaine d'employés. C'est une compagnie qui entraîne des Large Language Models à destination des entreprises avec un accès open source.
On a une grosse composante open source, on a envie de release nos modèles à la communauté. On cherche à faciliter l'accès aux modèles de langue pour les entreprises parce que c'est actuellement très difficile de les déployer, de les entraîner ou de les fine-tuner.
Pour une entreprise, prendre un modèle open source et le déployer chez soi n'est pas évident et requiert une expertise qu'ils n'ont pas forcément en interne. Nous essayons de faciliter l'accès à ces modèles pour les entreprises.
Les barrières à l'entrée de l'entraînement des LLM
Oui, l'open source. C'est important de préciser que contrairement à OpenAI qui, malgré son nom, garde ses modèles pour soi — c'est le fameux ChatGPT et les autres, il y en a très peu qui sont open source — là c'est vraiment une différence. Quelle est la barrière à l'entrée pour entraîner un Large Language Model comme ChatGPT ou Llama ?
La barrière à l'entrée, il y en a plusieurs. La principale est l'accès au compute, les GPU nécessaires pour entraîner ces modèles. Typiquement, Llama 70 milliards, le plus gros modèle publié par Meta, était entraîné sur 2000 GPU A100 pendant un peu plus d'un mois, soit 4-5 semaines.
La barrière à l'entrée, il y en a plusieurs. La principale est l'accès au compute, les GPU nécessaires pour entraîner ces modèles. Typiquement, Llama 70 milliards, le plus gros modèle publié par Meta, était entraîné sur 2000 GPU A100 pendant un peu plus d'un mois, soit 4-5 semaines.
Ça se chiffre en plusieurs millions de dollars, et c'est potentiellement plus cher si les contrats ne sont pas bien négociés ou s'ils sont négociés dans le cloud pour des courtes durées. Ensuite, il y a une expertise sur l'entraînement du modèle, beaucoup d'engineering.
Entraîner des modèles distribués sur plusieurs milliers de GPU demande beaucoup de savoir-faire et un point de vue engineering qui n'est pas évident. La création des données d'entraînement aussi est délicate. Processer et nettoyer les données de l'open web demande beaucoup d'efforts.
C'est vraiment une grosse équipe, beaucoup de temps et de puissance de calcul.
Processus de R&D et réentraînement des modèles
D'accord. Tu disais qu'un entraînement c'est déjà un mois, 2000 GPU, donc ça se chiffre en millions d'euros. Pour arriver jusqu'à la release de Llama, combien vous avez fait d'entraînements dans les étapes de recherche ?
C'est une bonne question parce qu'en fait, quand on met en avant le prix d'entraînement de ces modèles, on n'indique que le prix de l'entraînement final. Sauf qu'en amont, il y a toute une période de R&D. Typiquement Llama 70 milliards a été entraîné en janvier pendant 5 semaines.
Mais le projet avait commencé en août. Entre août et janvier, nous avons entraîné des modèles continuellement sur plus de 2000 GPU. Il y avait toute une période de recherche pour établir les meilleurs hyperparamètres et jeux de données, ce qui a pris 4 mois sur autant de ressources.
Une fois qu'on sait exactement quoi faire et qu'on a un code d'entraînement robuste, l'entraînement final coûte 5 semaines sur 2000 machines. Mais on n'arrive pas directement à cet état, il y a une phase en amont incompressible pour développer la codebase, vérifier sa stabilité et faire des tests.
Vous repartez de zéro systématiquement sur un réentraînement ou est-ce qu'au bout d'un moment vous sécurisez les premières semaines d'entraînement ?
À chaque fois qu'on entraîne un modèle, on repart from scratch. Dans le cas des Llama, c'était ce qui s'était passé. Il y avait quatre tailles de modèles : 7, 13, 30 et 70 milliards de paramètres. Chacun était entraîné indépendamment, en repartant du début.
Ce n'est pas évident d'initialiser un modèle plus gros à partir d'un modèle plus petit. Il y a des astuces pour gagner du temps mais c'est risqué. On ne sait jamais si ça marche aussi bien que de repartir de zéro. Avec un compute limité, on préfère ne pas faire trop d'expériences.
Données d'entraînement et performance de Llama
D'accord. Ces bases de données sur lesquelles s'entraînent les LLM, quel est leur niveau d'accessibilité ? Est-ce du privé récupéré chez Meta ou des choses opensourcées travaillées par la communauté ?
Beaucoup de gens se sont posé la question de la qualité des données. ChatGPT est-il aussi fort parce qu'OpenAI a des datasets propriétaires ? C'était pareil pour les modèles de Google, Chinchilla, etc.
Un des messages de Llama était de dire qu'en utilisant exclusivement des données accessibles sur internet — Wikipédia, ArXiv, etc. — on peut obtenir de très bonnes performances.
Avoir des jeux de données supplémentaires qu'on ignore pourrait augmenter les performances, mais on peut déjà aller extrêmement loin avec les données disponibles sur l'open web.
Ok. Et la taille du dataset total utilisé sur Llama se chiffre en tokens ?
Un token est un subword, un morceau de mot. Typiquement, un mot fait en moyenne 1,3 à 1,5 token. Cela dépend du tokenizer utilisé et de la façon dont on découpe les mots.
Llama 1 avait quatre modèles. Les deux petits de 7 et 13 milliards étaient entraînés sur 1000 milliards de tokens, et ceux de 30 et 70 sur 1400 milliards.
Un des messages importantes de Llama était de montrer à quel point on peut entraîner longtemps un modèle et comment il s'améliore avec le temps d'entraînement.
Par exemple, GPT-3, sorti en 2020, était un modèle de 175 milliards de paramètres entraîné sur 300 milliards de mots. Llama 2 7 milliards, 20 fois plus petit, a été entraîné sur 2000 milliards de mots.
Un modèle plus de 20 fois plus petit entraîné sur plus de 6 fois plus de données. Le papier montrait qu'on peut entraîner ces modèles beaucoup plus longtemps ; même pour les petits modèles, la performance continue à s'améliorer.
Le Llama 13 milliards était meilleur que le modèle initial d'OpenAI alors qu'il n'en faisait pas un dixième de la taille.
Stratégies d'époques et qualité des datasets
Combien d'époques faut-il pour arriver à quelque chose de satisfaisant ?
C'est une question qui n'a jamais été adressée de manière rigoureuse car ces expériences coûtent cher. À quel point est-ce mauvais de faire plusieurs passes sur le même dataset ?
Dans Llama, la stratégie était d'utiliser plusieurs datasets de différentes qualités. Wikipédia est de bonne qualité, sans bruit. On y faisait trois ou quatre époques.
Des datasets plus gros comme Common Crawl contiennent du bon contenu mais sont plus difficiles à nettoyer. Il y aura toujours du bruit dans le dataset créé.
Sur ça, on ne fait qu'une seule époque parce que le dataset est gigantesque. Common Crawl fait plusieurs pétaoctets à l'origine. Il n'y a aucune raison de faire deux époques, ça coûterait trop cher.
On fait plusieurs époques sur les petits datasets de qualité et une seule sur les gros.
Accès au compute et infrastructure cloud
Il y a relativement peu d'entreprises : les GAFAM, et quelques startups comme Anthropic ou Inflection. Je dirais qu'il y en a au maximum une quinzaine, principalement à cause du coût.
Mais si demain je crée un compte cloud et que je demande 2000 GPU, je ne les aurai jamais.
Pas du jour au lendemain car il y a beaucoup de demande et les carnets de commandes sont énormes. Mais sinon, c'est juste une question d'argent.
Selon toi, vaut-il mieux louer ou acheter les serveurs GPU ?
À Mistral, nous avons choisi de les louer car maintenir un serveur de GPU est un métier, une expertise que nous n'avons pas. Ça rajoute beaucoup de complexité.
Les gains de coût ne sont pas évidents, c'est plus risqué. OpenAI et la plupart des startups utilisent des cloud providers comme Microsoft. Nous avons suivi cette direction, la plus sûre pour nous.
La sortie de Llama et la question de l'open source
Qu'est-ce qui s'est passé au moment de la sortie de Llama vis-à-vis de la fuite des poids ?
Il y a un grand débat sur la sécurité et la dangerosité de ces modèles. Peut-on s'en servir pour créer des fake news ? Quand GPT-2 d'OpenAI est sorti — un modèle de 1,5 milliard de paramètres —
OpenAI avait choisi de ne pas l'opensourcer pour des raisons de sécurité, prétextant des mauvaises intentions possibles. Il y a toujours ce sujet sur la dangerosité potentielle.
Il y avait une inquiétude de Meta. Pour Llama 1, la stratégie a été de release le modèle seulement aux chercheurs.
Pour y accéder, les gens devaient indiquer leur profession sur le site de Facebook. S'ils étaient chercheurs, ils avaient accès au modèle.
Nous avons donné le modèle à quelques milliers de chercheurs. L'un d'eux l'a mis en téléchargement sur un torrent. À partir de là, le modèle a été distribué très rapidement.
Les médias ont parlé de leak, mais ce n'était pas vraiment une fuite : on a simplement donné le modèle à 10 000 personnes et l'une d'elles l'a partagé.
Ce n'est pas plus une fuite que quand quelqu'un met un film Netflix en torrent. Cette situation a popularisé le modèle partout.
Cela a créé un engouement. Énormément de gens ont créé des variations, du fine-tuning pour répondre à des instructions comme ChatGPT.
L'effet a été inattendu. Cela a motivé Facebook à changer la licence pour Llama 2, qui a été opensourcé sans ces conditions pour des usages commerciaux.
Évaluation de la qualité des modèles
Comment évalue-t-on la qualité d'un modèle ?
C'est très difficile. Il y a les modèles pré-entraînés et les modèles fine-tunés avec du RLHF.
ChatGPT est un modèle fine-tuné. C'est très difficile à évaluer. Il faut voir s'il répond bien aux questions et s'il formule des réponses correctes. On est souvent obligé de demander à un humain de tester.
Si vous avez deux modèles A et B, il faut poser les mêmes questions à chacun pour voir lequel répond mieux. Aucune métrique ne remplace l'évaluation humaine.
On peut utiliser des modèles pour évaluer d'autres modèles, mais cela ne marche que si le modèle qui évalue est beaucoup plus fort. Un modèle de 70 milliards peut évaluer un modèle de 7 milliards.
Pour votre plus gros modèle, il n'y aura pas de modèle au-dessus pour juger. Pour les modèles pré-entraînés, il y a des benchmarks classiques qui marchent assez bien.
L'idée est simple : sur un dataset de maths, on donne la question au modèle et on vérifie s'il génère la bonne réponse présente dans le test set.
L'avantage est que les modèles sont évalués en zero-shot : on leur demande de prédire la réponse sans réentraînement.
Ces métriques font polémique car il n'y a pas de protocole clair. La façon de formater la question en entrée fait une grosse différence.
En fonction du formatage, vous pouvez avoir une différence de 3 à 4 %. C'est la différence entre un Llama 13 et un Llama 70 milliards. L'évaluation est donc compliquée.
Pour évaluer deux modèles de manière fiable, il faut utiliser la même pipeline d'évaluation.
Mais même ces pipelines ont parfois des bugs. Quand Llama est sorti, un bug dans l'évaluation a reporté des performances 5 à 10 % en dessous de nos résultats internes pendant deux semaines.
Il a fallu du temps pour réaliser le problème. C'est toujours délicat, et plus les modèles sont forts, plus ça devient compliqué.
Fine-tuning et RLHF
Peux-tu nous parler davantage du fine-tuning et du RLHF ?
Le pré-entraînement consiste à entraîner le modèle à prédire le mot suivant. Mais si vous essayez de lui parler comme à ChatGPT, ça ne marchera pas.
Pour qu'il réponde à des instructions, vous devez le fine-tuner sur un dataset d'instructions. OpenAI a fait ça avec GPT Instruct, passé un peu inaperçu au début.
On peut collecter 3000 instructions, demander à des humains d'écrire les réponses et fine-tuner le modèle dessus. Ça suffit à créer un modèle qui répond aux instructions.
C'est le Supervised Fine-Tuning. Mais c'est difficile de passer à l'échelle car ça coûte cher.
Les humains prennent du temps et font parfois moins bien que ChatGPT. Ensuite, on utilise des reward models pour donner un score aux réponses.
On entraîne ensuite sur les réponses qui ont les meilleurs scores pour diminuer la dépendance aux annotations humaines. C'est nécessaire pour avoir un modèle comme ChatGPT.
L'humain intervient pour dire quelle réponse est la meilleure ?
Au début, on demande à l'humain d'écrire les réponses. Ensuite, on lui demande de sélectionner la meilleure parmi 10 réponses générées.
Sélectionner la meilleure prend moins de temps que d'en écrire une. On peut annoter beaucoup plus de données. Cette étape du RLHF marche très bien.
Feedback utilisateur et ressources de fine-tuning
Sur ChatGPT, crée-t-on un dataset d'entraînement pour OpenAI ?
Je ne sais pas, il y a beaucoup de spéculation. Ils promettaient de ne pas s'en servir. On peut mettre un pouce vers le haut ou le bas sur les réponses.
Dans certaines mesures, ils s'autorisent probablement à utiliser les données si l'utilisateur donne un feedback.
Que représentent le fine-tuning et le reward model en termes de ressources ?
C'est beaucoup moins cher. Le fine-tuning représente moins de 1 % du compute utilisé pour le pré-entraînement. On peut maintenant fine-tuner de gros modèles sur quelques GPU.
N'importe qui avec des ressources limitées peut contribuer au fine-tuning et faire des découvertes. C'est sur cela que se concentrent les universités.
Quelles sont les quantités de données nécessaires pour la partie feedback ?
J'ai surtout travaillé sur le Supervised Fine-Tuning et la classification. Ces étapes restent beaucoup moins chères que le pré-entraînement.
Découvertes sur l'entraînement et le "Chinchilla trap"
Y a-t-il eu des découvertes inattendues lors de l'entraînement de Llama ?
Le fait que le modèle continue de s'améliorer après autant de tokens. Le papier Chinchilla de DeepMind montrait que les modèles précédents étaient sous-entraînés.
Chinchilla expliquait comment choisir la taille du modèle pour un budget de compute donné. Mais cela a induit les gens en erreur : on parle de 'Chinchilla trap'.
Les gens pensaient qu'il y avait un nombre de tokens idéal, mais le modèle continue de s'améliorer si on poursuit l'entraînement.
On aurait pu prendre un modèle plus grand, mais un petit modèle entraîné plus longtemps coûte moins cher à déployer en production et reste performant.
Dans Llama, nous montrions qu'on peut entraîner bien au-delà de ce que propose Chinchilla. À 2000 milliards de tokens, Llama 7 milliards s'améliore encore.
Conseils d'utilisation et Prompt Engineering
As-tu des conseils pour utiliser ou fine-tuner ces modèles ?
Le fine-tuning est rapide sur des datasets de quelques milliers d'exemples. On peut facilement tester différents hyperparamètres.
Il faut des learning rates très petits. Le dropout aide aussi en fine-tuning, même si on ne l'utilise plus trop pour les LLM.
Et pour le prompt engineering ?
On gagne beaucoup en performance avec le design des prompts. Ajouter 'Let's think step by step' à un problème de maths augmente significativement la performance.
Le modèle génère les étapes intermédiaires, ce qui l'aide, comme un humain qui décompose un calcul complexe.
Multilinguisme et benchmarks
Llama est entraîné à plus de 99 % en anglais. Même s'il parle français, il est moins bon. Sur des benchmarks traduits, il est 20 points en dessous.
Il vaut parfois mieux lui poser une question en français, lui demander de répondre en anglais puis de traduire sa réponse.
C'est parce qu'il y a une immense majorité d'anglais dans le dataset ?
Il est plus facile de créer des corpus en anglais. Wikipédia en anglais est deux fois plus gros qu'en français. ArXiv et Stack Exchange sont en anglais.
Comme on évalue sur des benchmarks en anglais, cela encourage à n'utiliser que l'anglais. Ajouter d'autres langues peut faire baisser les performances en anglais.
On est incité à maximiser ces benchmarks, ce qui n'est pas idéal pour les cas d'usage concrets.
Formation et architecture optimale
Quelles ressources conseilles-tu pour se former ?
Hugging Face est très accessible. Leurs tutoriels permettent de charger des modèles et de commencer à pratiquer avec peu de ressources.
Si c'était à refaire, que changerais-tu ?
À Meta, nous avons passé beaucoup de temps à chercher l'architecture optimale. Il existe des dizaines de variantes du Transformer.
Mais à l'échelle, l'architecture de base reste souvent la meilleure, car plus simple à coder et à paralléliser.
Il faut se concentrer sur les données d'entraînement. À Mistral, nous avons fait beaucoup plus d'efforts sur le nettoyage des données qu'à Meta.
L'écosystème français de l'IA
Comment expliques-tu cet écosystème français de l'IA ?
Beaucoup de gens bossant sur Llama ou chez DeepMind sont à Paris. Les formations en France apportent une grande rigueur mathématique.
Dans les LLM, il n'y a pas de formule magique. C'est l'accumulation de détails faits rigoureusement qui fait la différence.
Parle-nous de votre premier modèle sorti sur un torrent.
Le premier modèle de Mistral AI et ses spécificités
C'est un modèle de 7 milliards de paramètres. Nous voulions montrer qu'on pouvait entraîner un LLM from scratch sans l'infrastructure de Meta ou Google.
Nous avons recréé la codebase et le preprocessing. Le modèle est rapide et permet des séquences beaucoup plus longues.
Llama 1 gérait 2000 tokens, Llama 2 4000. Notre modèle accepte 8000 tokens et utilise des sliding windows.
Chaque état latent regarde les 4000 tokens précédents. Le range d'attention effectif est de 128 000 tokens.
Cette architecture permet de regarder très loin dans le passé pour répondre à des questions sur de gros documents, comme des PDF de 100 000 tokens.
Le modèle est meilleur que Llama 2 7 milliards et 13 milliards. Sur plusieurs métriques, il dépasse le Llama 2 30 milliards.
Il vient avec une licence Apache 2, moins restrictive que celle de Meta. Code et poids sont en Apache.
Le code et les poids les deux sont en Apache ?
On release le tout en Apache.
La dépendance est linéaire au-delà de 4000 tokens ?
C'est linéaire grâce au sliding window. Chaque couche rajoute 4000 tokens de span d'attention, soit environ 128 000 tokens au total.
Un seul GPU suffit pour l'inférence ?
Un GPU avec 24 Go de RAM suffit.
A-t-on encore besoin de LangChain avec un tel contexte ?
C'est complémentaire. Si on a 100 000 documents, on utilise des embeddings pour trouver les plus pertinents et on les met en entrée du modèle.
Cela n'est possible que si le span d'attention est assez grand pour ne pas faire des chunks trop petits.
Quelle est la suite pour Mistral AI ?
Conclusion et perspectives
Nous allons continuer à opensourcer d'autres modèles de manière fréquente.
Et ben bon courage. Merci Guillaume.
Merci.
Vous veniez d'entendre Guillaume Lample sur Data Driven 101. Merci d'avoir écouté. N'hésitez pas à vous abonner.
Dans le prochain épisode, je recevrai Patrick Barabé pour parler de Shadow IT et de retail. À très vite.