Recherche

Mistral 7B

September 27, 2023

By Mistral AI team

L’équipe de Mistral AI est fière de publier Mistral 7B, le modèle de langage le plus puissant à ce jour pour sa taille.

Mistral 7B en bref

Mistral 7B est un modèle de 7,3 milliards de paramètres qui :

  • Surpasse Llama 2 13B sur tous les benchmarks

  • Surpasse Llama 1 34B sur de nombreux benchmarks

  • Se rapproche des performances de CodeLlama 7B sur le code, tout en restant performant sur les tâches en anglais

  • Utilise l’attention à requêtes groupées (GQA) pour accélérer l’inférence

  • Utilise l’attention à fenêtre glissante (SWA) pour traiter des séquences plus longues à moindre coût

Nous publions Mistral 7B sous licence Apache 2.0. Il peut être utilisé sans restriction.

Mistral 7B se prête facilement au fine-tuning pour toute tâche. À titre de démonstration, nous fournissons un modèle fine-tuné pour la conversation, qui surpasse Llama 2 13B chat.

Performance en détail

Nous avons comparé Mistral 7B à la famille Llama 2, et nous avons réexécuté toutes les évaluations de modèles nous-mêmes pour garantir une comparaison équitable.

histograms
Performance de Mistral 7B et de différents modèles Llama sur un large ensemble de benchmarks. Pour toutes les métriques, tous les modèles ont été réévalués avec notre pipeline d'évaluation pour permettre une comparaison précise. Mistral 7B surpasse nettement Llama 2 13B sur toutes les métriques et se situe au même niveau que Llama 34B (comme Llama 2 34B n'a pas été publié, nous indiquons les résultats de Llama 34B). Il est aussi nettement supérieur sur les benchmarks de code et de raisonnement.

Les benchmarks sont classés par thème :

  • Raisonnement de sens commun : moyenne 0-shot de Hellaswag, Winogrande, PIQA, SIQA, OpenbookQA, ARC-Easy, ARC-Challenge et CommonsenseQA.

  • Connaissance du monde : moyenne 5-shot de NaturalQuestions et TriviaQA.

  • Compréhension de lecture : moyenne 0-shot de BoolQ et QuAC.

  • Mathématiques : moyenne de GSM8K en 8-shot avec maj@8 et de MATH en 4-shot avec maj@4

  • Code : moyenne de Humaneval en 0-shot et de MBPP en 3-shot

  • Résultats agrégés populaires : MMLU en 5-shot, BBH en 3-shot et AGI Eval en 3-5-shot (questions à choix multiples en anglais uniquement)

table

Une métrique intéressante pour comparer les modèles sur le plan coût/performance consiste à calculer des « tailles de modèle équivalentes ». En raisonnement, en compréhension et en raisonnement STEM (MMLU), Mistral 7B atteint des performances équivalentes à celles d'un Llama 2 qui ferait plus de 3 fois sa taille. Autant de mémoire économisée et de débit gagné.

effective_sizes
Résultats sur MMLU, le raisonnement de sens commun, la connaissance du monde et la compréhension de lecture pour Mistral 7B et Llama 2 (7B/13/70B). Mistral 7B surpasse largement Llama 2 13B sur toutes les évaluations, sauf sur les benchmarks de connaissance, où il se situe au même niveau (cela tient probablement à son nombre limité de paramètres, qui restreint la quantité de connaissances qu'il peut compresser).

Note : différences importantes entre notre évaluation et l'article LLaMA2 :

  • Pour MBPP, nous utilisons le sous-ensemble vérifié manuellement

  • Pour TriviaQA, nous ne fournissons pas de contextes Wikipedia

Flash and Furious : dérive de l'attention

Mistral 7B utilise un mécanisme d'attention à fenêtre glissante (sliding window attention, SWA) (Child et al., Beltagy et al.), dans lequel chaque couche prête attention aux 4 096 états cachés précédents. La principale amélioration, et la raison pour laquelle cette approche a d'abord été étudiée, est un coût de calcul linéaire de O(sliding_window.seq_len). En pratique, les modifications apportées à FlashAttention et xFormers donnent une amélioration de vitesse de 2× pour une longueur de séquence de 16k avec une fenêtre de 4k. Merci à Tri Dao et Daniel Haziza pour leur aide dans l'intégration de ces changements dans des délais serrés.

L'attention à fenêtre glissante utilise les couches empilées d'un transformer pour prêter attention au passé au-delà de la taille de la fenêtre : un token i à la couche k prête attention aux tokens [i-sliding_window, i] à la couche k-1. Ces tokens ont prêté attention aux tokens [i-2*sliding_window, i]. Les couches supérieures ont accès à des informations plus éloignées dans le passé que ce que les schémas d'attention semblent indiquer.

Local attention

Enfin, une portée d'attention fixe signifie que nous pouvons limiter notre cache à une taille de sliding_window tokens, au moyen de tampons rotatifs (plus d'informations dans notre dépôt de l'implémentation de référence). Cela économise la moitié de la mémoire cache pour l'inférence sur une longueur de séquence de 8192, sans affecter la qualité du modèle.

Fine-tuning de Mistral 7B pour le chat

Pour montrer les capacités de généralisation de Mistral 7B, nous l'avons fine-tuné sur des jeux de données d'instructions publiquement disponibles sur HuggingFace. Aucun artifice, aucune donnée propriétaire. Le modèle obtenu, Mistral 7B Instruct, surpasse tous les modèles 7B sur MT-Bench et est comparable aux modèles chat 13B.

MT-Bench

Le modèle Mistral 7B Instruct montre rapidement que le modèle de base peut être fine-tuné pour obtenir des performances convaincantes. Il ne dispose d'aucun mécanisme de modération. Nous souhaitons échanger avec la communauté sur les façons d'amener le modèle à respecter finement des garde-fous, afin de permettre son déploiement dans des environnements qui exigent des sorties modérées.

Remerciements

Nous remercions CoreWeave pour son aide 24 h/24 et 7 j/7 dans la gestion de notre cluster. Nous remercions l'équipe CINECA/EuroHPC, et en particulier les opérateurs de Leonardo, pour leurs ressources et leur aide. Nous remercions les mainteneurs de FlashAttention, vLLM, xFormers et Skypilot pour leur aide précieuse dans l'implémentation de nouvelles fonctionnalités et l'intégration de leurs solutions aux nôtres. Nous remercions les équipes de HuggingFace, AWS, GCP et Azure ML pour leur aide intensive afin de rendre notre modèle compatible partout.