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.