Getty Images
IA générative : les promesses de Mistral AI n’étaient pas du vent
Fondée en avril, la startup française lancée par d’anciens chercheurs de Google et de Meta a présenté ses premiers grands modèles de langage open source. Comme promis, ils sont petits, performants et pavent la voie à des alternatives aux modèles propriétaires d’OpenAI ou d’Anthropic.
Sept pages et une liste de chercheurs passées par les laboratoires les plus techniquement avancés avaient suffi à Mistral AI pour collecter un fonds d’amorçage de 105 millions d’euros en juin dernier.
De fait, la startup française spécialisée dans l’IA générative n’avait pas encore développé quoi que ce soit. Elle a tôt fait de dissiper les fumées d’un vaporware.
Mercredi 27 septembre, Mistral AI a libéré deux « petits » grands modèles de langages : Mistral 7B et Mistral 7B Instruct 0.1. Ils comptabilisent près de 7 500 téléchargements chacun sur HuggingFace à l’heure de publier ces lignes.
Fidèle à ses annonces, les deux modèles sont proposés sous la licence Apache 2.0, une licence open source entièrement compatible avec les préceptes de l’Open Source Initiative (OSI). Pour rappel, l’usage des modèles ouverts de Meta, Llama 2 et Code Llama dépend d’une licence propriétaire permissive.
Mistral 7B est un modèle préentraîné doté de 7,3 milliards de paramètres et d’une fenêtre de contexte pour l’instant contenu à 8 192 tokens. Celui-ci s’appuie sans trop de surprise sur une architecture transformer « decoder only ».
Selon Mistral AI, Mistral 7B est pourtant plus performant que Llama 2-7b, Llama 2-13b et Llama 1-34b. Mistral 7B serait même « le modèle de langage le plus puissant pour sa taille à ce jour ».
Mieux. Mistral 7B Instruct, entraîné pour la démonstration à partir de jeux de données publiquement disponibles sur HuggingFace, « surpasse tous les modèles 7B sur MT-Bench et est comparable aux modèles de chat 13B ».
« C’est le résultat de trois mois de travail intense au cours desquels nous avons réuni l’équipe Mistral AI, reconstruit une pile MLOps très performante, et conçu un pipeline de traitement de données très sophistiqué, à partir de zéro », affirme l’équipe de Mistral AI dans un billet de blog.
Mieux que Llama 2-13b
Que ce soit OpenAI, Meta, Anthropic ou Google, tous expliquent que les améliorations obtenues lors de l’entraînement de leurs grands modèles de langage sont dues aux processus de mise en qualité des données et à la supervision semi-automatisée élaborée au fil du temps.
En à peine trois mois depuis sa levée de fonds, LeMagIT doute que la startup ait eu le temps d’établir un cycle d’apprentissage par renforcement avec retour d’information aussi élaboré que celui d’OpenAI ou de Meta. D’ailleurs, l’équipe précise que les deux modèles « n’ont aucun mécanisme de modération ».
« Nous sommes impatients de travailler avec la communauté sur les moyens de faire en sorte que le modèle respecte finement les garde-fous, ce qui permettra de le déployer dans des environnements exigeants des résultats contrôlés », ajoute Mistral AI.
Les chercheurs de Mistral AI ont une connaissance fine des architectures des modèles de langage et c’est d’ailleurs par les ajustements effectués au niveau du transformer qu’ils expliquent en grande partie les gains obtenus.
Tout comme les chercheurs de Meta, Mistral AI s’est appuyé sur la technique nommée « Grouped Query Attention » (GQA).
En savoir plus :
« Petit » lexique de l’IA générative : les grands modèles de langage
Petit, mais rapide
Les explications sont à chercher du côté du dépôt GitHub de Mistral AI.
« L’attention est la manière dont l’information est partagée entre les tokens d’une séquence », indiquent-ils.
Pour rappel, les tokens sont des bouts de mots, des syllabes ou des éléments de ponctuations, tandis qu’une séquence peut être une phrase, un paragraphe ou un texte entier.
« Dans les transformers standards, l’attention suit un masque causal : chaque token de la séquence peut s’occuper de lui-même et de tous les tokens du passé. Cela garantit que le modèle est causal, c’est-à-dire qu’il ne peut utiliser les informations du passé pour prédire l’avenir ».
Avec un mécanisme d’attention multitête, ce procédé est mis en place à travers l’association de paires clé-valeur et de requêtes mises en cache pour chaque tête d’attention au moment de l’inférence. Or cela réclame beaucoup de mémoire vidéo et joue sur la longueur de fenêtre de contexte, à savoir le nombre de mots et la mémoire des échanges que peut retenir un LLM en entrée.
La méthode GQA permet de partager une seule projection des paires clé-valeur avec un groupe de têtes d’attention, réduisant ainsi la quantité de mémoire nécessaire à l’exécution du modèle, tout en conservant la performance du mécanisme d’attention multitête.
Pour augmenter la fenêtre de contexte sans faire exploser les coûts en ressources de calcul, les chercheurs de Mistral AI ont également implémenté la technique de « fenêtre d’attention glissante » ou Sliding-Window attention en VO.
En clair, chaque token peut être attentif à un certain nombre de tokens compris dans une zone d’attention. Mais cette zone se « déplace » à chaque fois qu’elle franchit un nombre donné de couches d’attention. Techniquement, chaque couche d’attention est « attentive » aux 4 096 états cachés précédents.
« Il convient de noter que les tokens situés en dehors de la fenêtre glissante continuent d’influencer la prédiction du mot suivant », précisent les chercheurs.
Une combinaison de techniques pour optimiser la consommation de VRAM
Ces capacités viennent des projets de recherche FlashAttention et xFormers. Cela permettrait de doubler la vitesse de prédiction pour une séquence de 16 000 tokens avec une fenêtre glissante de 4 000 tokens.
Cette approche permettrait en théorie d’obtenir une longueur de séquence de 128 000 tokens, selon Timothée Lacroix, CTO de Mistral AI, dans un message publié sur un canal Discord communautaire de la startup.
À ce mécanisme d’attention glissante, Mistral AI a ajouté un cache-tampon mobile pour stocker les paires clé-valeur relatives à la position d’un mot dans une phrase, puis pour les écraser quand ce mot a changé de position après la prédiction suivante.
Par ailleurs, la startup s’appuie sur un double mécanisme de préremplissage et de découpage des prompts en entrée du modèle.
Comme un prompt est connu à l’avance, contrairement aux mots que l’on cherche à prédire, il est possible de préremplir le cache avec les paires clé-valeur correspondantes. « Si le prompt est très volumineux, nous pouvons le diviser en morceaux pour préremplir le cache », expliquent les chercheurs.
Ce morceau définit alors la taille de la fenêtre glissante. « Pour chaque morceau, nous devons donc calculer l’attention sur le cache et sur le morceau ».
Pour autant, « cela permet d’économiser la moitié de la mémoire cache pour l’inférence sur une longueur de séquence de 8 192 tokens, sans impact sur la qualité du modèle ».
Mistral 7B souffle sur presque tous les clouds publics
Ainsi, Mistral 7B nécessite a minima un GPU Nvidia équipé de 16 Go de VRAM pour s’exécuter. Un Nvidia Tesla V100 fait l’affaire, et un modèle V100s, doté de 32 Go de VRAM est amplement suffisant : la startup recommande 24 Go de VRAM pour exécuter convenablement l’un ou l’autre des modèles. Une instance équipée d’une puce Nvidia A10 serait toutefois plus appropriée.
En principe, une machine locale équipée d’une RTX 4080 (16 Go de VRAM) ou 4090 (24 Go de VRAM) peut exécuter Mistral 7B. Des versions compressées par la communauté circulent déjà sur le Web, ce qui réduit encore ce seuil.
Pour déployer les modèles sur AWS, Microsoft Azure et Google Cloud, Mistral AI fait encore appel à une librairie open source, en l’occurrence SkyPilot un framework pour simplifier l’exécution de LLM sur des instances cloud. Pour l’exécuter sur OVHcloud, il convient d’utiliser Docker et la librairie Vllm, moteur de serving open source pour déployer de grands modèles de langage. Il est également disponible sur HuggingFace.
Les équipes d’Azure, de GCP, d’AWS et d’HuggingFace auraient participé à cette large mise à disposition.
Des recettes à ne pas éventer
Comme promis, Mistral AI démontre son ouverture et son respect de son engagement envers la communauté open source. Pour autant, la startup conserve quelques secrets. Par exemple, elle ne précise ni la taille ni la nature du jeu de données de préentraînement utilisé pour former Mistral 7B et Mistral 7B Instruct.
Timothée LacroixCTO et cofondateur, Mistral AI
« Nous serons aussi ouverts que possible sur les modèles que nous lançons et sur certains choix que nous avons faits, mais nous garderons nos recettes d’entraînement pour nous-mêmes à court terme », avance Timothée Lacroix, lors d’une discussion sur Discord.
Les premiers utilisateurs constatent que les performances indiquées sont proches de la réalité, mais qu’ils ont probablement été entraînés à partir de données publiquement disponibles à travers CommonCrawl. Une information en partie confirmée par Arthur Mensch, cofondateur de Mistral AI, sur le Discord communautaire de l’entreprise. Et, pour l’instant, les modèles sont meilleurs… en anglais, bien qu’une « bonne portion » des textes dans ce data set soient en français, indique Timothée Lacroix sur Discord.
Précisons que Mistral AI mise sur une politique duale : d’un côté, la startup publiera des modèles open source, de l’autre les versions les plus performantes seront commerciales.
« Nous proposerons des modèles propriétaires optimisés pour le déploiement sur site/en cloud privé virtuel », communique-t-elle. « Ces modèles seront distribués sous forme de solutions “boîte blanche”, en mettant à disposition les poids et les sources de code. Nous travaillons activement sur des solutions hébergées et des déploiements dédiés pour les entreprises ».
En général, les petits modèles sont distillés à partir de plus grands LLM. « Nous entraînons déjà des modèles beaucoup plus grands et nous nous orientons vers de nouvelles architectures », assure l’équipe de Mistral AI.
Le prochain modèle de la startup française devrait être disponible « cet automne ». Dans ces remerciements, Mistral AI mentionne les équipes du Cineca/EuroHPC et celles de CoreWeave. Selon toute vraisemblance, la jeune pousse a obtenu des crédits pour entraîner ses modèles sur le supercalculateur Leonardo, situé à Gênes en Italie, et a fait également appel au spécialiste de l’orchestration de charges GPU soutenu financièrement par Nvidia.