Home
Login
mistralai/mistral-inference

Bibliothèque d'inférence officielle du modèle Mistral, contenant l'implémentation de code minimal pour exécuter les modèles Mistral AI.

Apache-2.0Jupyter Notebook 10.3kmistralai Last Updated: 2025-03-20
https://github.com/mistralai/mistral-inference

Présentation détaillée de la bibliothèque d'inférence Mistral (mistral-inference)

Aperçu du projet

mistral-inference est la bibliothèque d'inférence pour les modèles Mistral développée officiellement par Mistral AI. Elle fournit une implémentation de code minimaliste pour exécuter divers modèles Mistral. Ce projet offre aux utilisateurs un moyen efficace et concis de déployer et d'utiliser la gamme de grands modèles de langage Mistral.

Modèles pris en charge

Modèles de base

  • Mistral 7B: Versions de base et d'instruction, supporte les appels de fonctions
  • Mixtral 8x7B: Modèle de mélange d'experts, inférence haute performance
  • Mixtral 8x22B: Modèle de mélange d'experts à plus grande échelle
  • Mistral Nemo 12B: Modèle efficace de taille moyenne
  • Mistral Large 2: Le dernier modèle à grande échelle
  • Mistral Small 3.1 24B: Modèle de taille moyenne supportant la multimodalité

Modèles spécialisés

  • Codestral 22B: Spécialement conçu pour la génération de code et les tâches de programmation
  • Codestral Mamba 7B: Modèle de code basé sur l'architecture Mamba
  • Mathstral 7B: Modèle spécialement conçu pour le raisonnement mathématique
  • Pixtral 12B: Modèle de langage visuel multimodal

Fonctionnalités clés

1. Modes d'inférence multiples

  • Interface en ligne de commande (CLI): Test et interaction rapides via les commandes mistral-demo et mistral-chat
  • API Python: Interface de programmation complète, supporte l'intégration personnalisée
  • Support multi-GPU: Support de l'inférence distribuée de grands modèles via torchrun

2. Scénarios d'application riches

Suivi des instructions (Instruction Following)

from mistral_inference.transformer import Transformer
from mistral_inference.generate import generate
from mistral_common.tokens.tokenizers.mistral import MistralTokenizer
from mistral_common.protocol.instruct.messages import UserMessage
from mistral_common.protocol.instruct.request import ChatCompletionRequest

# Charger le modèle et le tokenizer
tokenizer = MistralTokenizer.from_file("./mistral-nemo-instruct-v0.1/tekken.json")
model = Transformer.from_folder("./mistral-nemo-instruct-v0.1")

# Générer une réponse
prompt = "How expensive would it be to ask a window cleaner to clean all windows in Paris?"
completion_request = ChatCompletionRequest(messages=[UserMessage(content=prompt)])
tokens = tokenizer.encode_chat_completion(completion_request).tokens
out_tokens, _ = generate([tokens], model, max_tokens=1024, temperature=0.35)

Inférence multimodale

Supporte l'inférence conjointe d'images et de texte, permettant d'analyser le contenu d'une image et de répondre à des questions connexes :

# Traitement du contenu multimodal
user_content = [ImageURLChunk(image_url=url), TextChunk(text=prompt)]
tokens, images = tokenizer.instruct_tokenizer.encode_user_content(user_content, False)
out_tokens, _ = generate([tokens], model, images=[images], max_tokens=256)

Appel de fonctions (Function Calling)

Tous les modèles supportent la fonctionnalité d'appel de fonctions, permettant l'intégration avec des outils et des API externes :

# Définir les fonctions outils
tools=[Tool(function=Function(
    name="get_current_weather",
    description="Get the current weather",
    parameters={...}
))]

# Exécuter l'appel de fonction
completion_request = ChatCompletionRequest(tools=tools, messages=[...])

Complétion de code (Fill-in-the-middle)

Spécialement conçu pour les scénarios d'édition de code, supporte la génération de code par remplissage au milieu :

prefix = "def add("
suffix = " return sum"
request = FIMRequest(prompt=prefix, suffix=suffix)
tokens = tokenizer.encode_fim(request).tokens

3. Options de déploiement flexibles

Déploiement local

  • Déploiement sur un seul GPU: Adapté aux modèles plus petits (7B, 12B)
  • Déploiement multi-GPU: Supporte l'inférence distribuée de grands modèles (8x7B, 8x22B)
  • Conteneurisation Docker: Fournit des images Docker intégrées à vLLM

Déploiement dans le cloud

  • API officielle Mistral AI: Service cloud La Plateforme
  • Fournisseurs de services cloud: Supporte plusieurs plateformes cloud majeures

Installation et configuration

Configuration système requise

  • Support GPU: Nécessite un environnement GPU, car dépend de la bibliothèque xformers
  • Environnement Python: Supporte les versions modernes de Python
  • Espace de stockage: Nécessite suffisamment d'espace disque en fonction de la taille du modèle

Méthodes d'installation

Installation via pip

pip install mistral-inference

Installation à partir des sources

cd $HOME && git clone https://github.com/mistralai/mistral-inference
cd $HOME/mistral-inference && poetry install .

Téléchargement et configuration des modèles

# Créer le répertoire de stockage des modèles
export MISTRAL_MODEL=$HOME/mistral_models
mkdir -p $MISTRAL_MODEL

# Télécharger le modèle (par exemple, Mistral Nemo)
export 12B_DIR=$MISTRAL_MODEL/12B_Nemo
wget https://models.mistralcdn.com/mistral-nemo-2407/mistral-nemo-instruct-2407.tar
mkdir -p $12B_DIR
tar -xf mistral-nemo-instruct-2407.tar -C $12B_DIR

Exemples d'utilisation

Interaction de chat de base

# Modèle sur un seul GPU
mistral-chat $12B_DIR --instruct --max_tokens 1024 --temperature 0.35

# Grand modèle multi-GPU
torchrun --nproc-per-node 2 --no-python mistral-chat $M8x7B_DIR --instruct

Utilisation de modèles spécialisés

Assistant de code Codestral

mistral-chat $M22B_CODESTRAL --instruct --max_tokens 256

Peut traiter des requêtes de programmation telles que "Write me a function that computes fibonacci in Rust".

Raisonnement mathématique Mathstral

mistral-chat $7B_MATHSTRAL --instruct --max_tokens 256

Capable de résoudre des problèmes de calcul mathématique complexes.

Licence et conformité

Licences des différents modèles

  • Modèles open source: La plupart des modèles de base utilisent une licence open source
  • Codestral 22B: Utilise la licence Mistral AI Non-Production (MNPL), limitée à un usage non commercial
  • Mistral Large: Utilise la licence Mistral AI Research (MRL), principalement à des fins de recherche

Conseils de conformité

Lors de l'utilisation dans un environnement commercial, veuillez vérifier attentivement les termes de la licence du modèle correspondant pour garantir une utilisation conforme.

Avantages techniques

Optimisation des performances

  • Inférence efficace: Optimisée spécifiquement pour l'architecture des modèles Mistral
  • Gestion de la mémoire: Stratégies d'utilisation de la mémoire intelligentes, supporte l'inférence de grands modèles
  • Traitement parallèle: Supporte le parallélisme multi-GPU, améliore la vitesse d'inférence

Facilité d'utilisation

  • API concise: Fournit une interface Python simple et intuitive
  • Documentation riche: Exemples d'utilisation complets et support de la documentation
  • Support communautaire: Communauté de développeurs active et canal Discord

Extensibilité

  • Conception modulaire: Facile à intégrer dans des projets existants
  • Configuration personnalisée: Supporte la configuration flexible de divers paramètres d'inférence
  • Intégration d'outils: Supporte l'intégration avec divers outils et services externes

Scénarios d'application

Applications d'entreprise

  • Service client intelligent: Construction de systèmes de dialogue de haute qualité
  • Génération de contenu: Création et édition de contenu automatisées
  • Assistance au code: Génération et examen de code dans les environnements de développement

Recherche et développement

  • Recherche académique: Recherche et expérimentation sur les modèles de langage
  • Développement de prototypes: Construction rapide de prototypes d'applications d'IA
  • Tests de performance: Évaluation et comparaison des performances des modèles

Personnel et éducation

  • Assistant d'apprentissage: Outils d'apprentissage et de tutorat personnalisés
  • Écriture créative: Assistance à la création de contenu créatif
  • Apprentissage technique: Support à l'apprentissage de la programmation et des concepts techniques

Conclusion

La bibliothèque d'inférence Mistral est un framework d'inférence pour les grands modèles de langage puissant et facile à utiliser. Elle fournit non seulement un support complet pour la gamme de modèles Mistral, mais comprend également de riches fonctionnalités, allant de la génération de texte de base à l'inférence multimodale avancée et à l'appel de fonctions. Que ce soit pour un déploiement en entreprise ou pour une utilisation dans la recherche personnelle, cette bibliothèque peut fournir une solution efficace et fiable.