Guillaume Lample

Mistral AI : Entraîner des Large Language Models en Open Source

1 octobre 2023

Intelligence Artificielle
Illustration de Guillaume Lample

Introduction à Mistral AI

Guillaume Lample

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.

Guillaume Lample

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.

Guillaume Lample

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.

Marc Sanselme

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.

Marc Sanselme

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.

Guillaume Lample

Bonjour.

Marc Sanselme

Alors Guillaume, est-ce que tu peux nous présenter Mistral AI rapidement ?

Guillaume Lample

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.

Guillaume Lample

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.

Guillaume Lample

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

Marc Sanselme

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 ?

Guillaume Lample

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.

Guillaume Lample

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.

Guillaume Lample

Ç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.

Guillaume Lample

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.

Guillaume Lample

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

Marc Sanselme

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 ?

Guillaume Lample

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.

Guillaume Lample

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.

Guillaume Lample

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.

Marc Sanselme

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 ?

Guillaume Lample

À 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.

Guillaume Lample

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

Marc Sanselme

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é ?

Guillaume Lample

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.

Guillaume Lample

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.

Guillaume Lample

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.

Marc Sanselme

Ok. Et la taille du dataset total utilisé sur Llama se chiffre en tokens ?

Guillaume Lample

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.

Guillaume Lample

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.

Guillaume Lample

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.

Guillaume Lample

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.

Guillaume Lample

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.

Guillaume Lample

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

Marc Sanselme

Combien d'époques faut-il pour arriver à quelque chose de satisfaisant ?

Guillaume Lample

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 ?

Guillaume Lample

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.

Guillaume Lample

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éé.

Guillaume Lample

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.

Guillaume Lample

On fait plusieurs époques sur les petits datasets de qualité et une seule sur les gros.

Accès au compute et infrastructure cloud

Guillaume Lample

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.

Marc Sanselme

Mais si demain je crée un compte cloud et que je demande 2000 GPU, je ne les aurai jamais.

Guillaume Lample

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.

Marc Sanselme

Selon toi, vaut-il mieux louer ou acheter les serveurs GPU ?

Guillaume Lample

À 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é.

Guillaume Lample

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

Marc Sanselme

Qu'est-ce qui s'est passé au moment de la sortie de Llama vis-à-vis de la fuite des poids ?

Guillaume Lample

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 —

Guillaume Lample

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.

Guillaume Lample

Il y avait une inquiétude de Meta. Pour Llama 1, la stratégie a été de release le modèle seulement aux chercheurs.

Guillaume Lample

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.

Guillaume Lample

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.

Guillaume Lample

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é.

Guillaume Lample

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.

Guillaume Lample

Cela a créé un engouement. Énormément de gens ont créé des variations, du fine-tuning pour répondre à des instructions comme ChatGPT.

Guillaume Lample

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

Marc Sanselme

Comment évalue-t-on la qualité d'un modèle ?

Guillaume Lample

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.

Guillaume Lample

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.

Guillaume Lample

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.

Guillaume Lample

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.

Guillaume Lample

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.

Guillaume Lample

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.

Guillaume Lample

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.

Guillaume Lample

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.

Guillaume Lample

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.

Guillaume Lample

Pour évaluer deux modèles de manière fiable, il faut utiliser la même pipeline d'évaluation.

Guillaume Lample

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.

Guillaume Lample

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

Marc Sanselme

Peux-tu nous parler davantage du fine-tuning et du RLHF ?

Guillaume Lample

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.

Guillaume Lample

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.

Guillaume Lample

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.

Guillaume Lample

C'est le Supervised Fine-Tuning. Mais c'est difficile de passer à l'échelle car ça coûte cher.

Guillaume Lample

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.

Guillaume Lample

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.

Marc Sanselme

L'humain intervient pour dire quelle réponse est la meilleure ?

Guillaume Lample

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.

Guillaume Lample

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

Marc Sanselme

Sur ChatGPT, crée-t-on un dataset d'entraînement pour OpenAI ?

Guillaume Lample

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.

Guillaume Lample

Dans certaines mesures, ils s'autorisent probablement à utiliser les données si l'utilisateur donne un feedback.

Marc Sanselme

Que représentent le fine-tuning et le reward model en termes de ressources ?

Guillaume Lample

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.

Guillaume Lample

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.

Marc Sanselme

Quelles sont les quantités de données nécessaires pour la partie feedback ?

Guillaume Lample

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"

Marc Sanselme

Y a-t-il eu des découvertes inattendues lors de l'entraînement de Llama ?

Guillaume Lample

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.

Guillaume Lample

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'.

Guillaume Lample

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.

Guillaume Lample

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.

Guillaume Lample

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

Marc Sanselme

As-tu des conseils pour utiliser ou fine-tuner ces modèles ?

Guillaume Lample

Le fine-tuning est rapide sur des datasets de quelques milliers d'exemples. On peut facilement tester différents hyperparamètres.

Guillaume Lample

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.

Marc Sanselme

Et pour le prompt engineering ?

Guillaume Lample

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.

Guillaume Lample

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

Guillaume Lample

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.

Guillaume Lample

Il vaut parfois mieux lui poser une question en français, lui demander de répondre en anglais puis de traduire sa réponse.

Marc Sanselme

C'est parce qu'il y a une immense majorité d'anglais dans le dataset ?

Guillaume Lample

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.

Guillaume Lample

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.

Guillaume Lample

On est incité à maximiser ces benchmarks, ce qui n'est pas idéal pour les cas d'usage concrets.

Formation et architecture optimale

Marc Sanselme

Quelles ressources conseilles-tu pour se former ?

Guillaume Lample

Hugging Face est très accessible. Leurs tutoriels permettent de charger des modèles et de commencer à pratiquer avec peu de ressources.

Marc Sanselme

Si c'était à refaire, que changerais-tu ?

Guillaume Lample

À Meta, nous avons passé beaucoup de temps à chercher l'architecture optimale. Il existe des dizaines de variantes du Transformer.

Guillaume Lample

Mais à l'échelle, l'architecture de base reste souvent la meilleure, car plus simple à coder et à paralléliser.

Guillaume Lample

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

Marc Sanselme

Comment expliques-tu cet écosystème français de l'IA ?

Guillaume Lample

Beaucoup de gens bossant sur Llama ou chez DeepMind sont à Paris. Les formations en France apportent une grande rigueur mathématique.

Guillaume Lample

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.

Marc Sanselme

Parle-nous de votre premier modèle sorti sur un torrent.

Le premier modèle de Mistral AI et ses spécificités

Guillaume Lample

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.

Guillaume Lample

Nous avons recréé la codebase et le preprocessing. Le modèle est rapide et permet des séquences beaucoup plus longues.

Guillaume Lample

Llama 1 gérait 2000 tokens, Llama 2 4000. Notre modèle accepte 8000 tokens et utilise des sliding windows.

Guillaume Lample

Chaque état latent regarde les 4000 tokens précédents. Le range d'attention effectif est de 128 000 tokens.

Guillaume Lample

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.

Guillaume Lample

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.

Guillaume Lample

Il vient avec une licence Apache 2, moins restrictive que celle de Meta. Code et poids sont en Apache.

Marc Sanselme

Le code et les poids les deux sont en Apache ?

Guillaume Lample

On release le tout en Apache.

Marc Sanselme

La dépendance est linéaire au-delà de 4000 tokens ?

Guillaume Lample

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.

Marc Sanselme

Un seul GPU suffit pour l'inférence ?

Guillaume Lample

Un GPU avec 24 Go de RAM suffit.

Marc Sanselme

A-t-on encore besoin de LangChain avec un tel contexte ?

Guillaume Lample

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.

Guillaume Lample

Cela n'est possible que si le span d'attention est assez grand pour ne pas faire des chunks trop petits.

Marc Sanselme

Quelle est la suite pour Mistral AI ?

Conclusion et perspectives

Guillaume Lample

Nous allons continuer à opensourcer d'autres modèles de manière fréquente.

Marc Sanselme

Et ben bon courage. Merci Guillaume.

Guillaume Lample

Merci.

Marc Sanselme

Vous veniez d'entendre Guillaume Lample sur Data Driven 101. Merci d'avoir écouté. N'hésitez pas à vous abonner.

Marc Sanselme

Dans le prochain épisode, je recevrai Patrick Barabé pour parler de Shadow IT et de retail. À très vite.