Open Models

Mixtral 8x22B : Analyse de l'impact sur la latence et la mémoire

La sortie de Mixtral 8x22B par Mistral AI a marqué un tournant majeur dans notre approche des grands modèles de langage (LLM) open source. En utilisant une architecture Mixture of Experts (MoE), il offre des performances comparables à celles de modèles denses beaucoup plus volumineux tout en réduisant considérablement le coût de calcul des paramètres actifs. Cependant, ce choix architectural introduit des défis uniques concernant l'empreinte mémoire et la latence d'inférence. Dans cet article, nous analysons ces compromis pour vous aider à déterminer si Mixtral est le bon choix pour votre stratégie de déploiement.

Comprendre l'architecture Mixture of Experts

Les modèles denses traditionnels activent chaque paramètre de poids pour chaque jeton traité. En revanche, Mixtral 8x22B utilise huit « experts » (réseaux feed-forward) par couche. Pour chaque jeton, un routeur sélectionne uniquement les deux meilleurs experts pour traiter l'entrée. Cela signifie que, bien que le modèle compte environ 141 milliards de paramètres au total, seuls environ 12,9 milliards de paramètres sont actifs par jeton.

Cette sparsité est la clé de son efficacité. Cependant, elle crée un paradoxe : le modèle nécessite plus de mémoire pour charger tous les experts, mais moins de calcul pour traiter chaque jeton.

Analyse de l'empreinte mémoire

Malgré un nombre inférieur de paramètres actifs, la VRAM totale requise pour charger Mixtral 8x22B est considérable. Cela est dû au fait que les 8 experts doivent résider en mémoire, même si seuls 2 sont actifs à un moment donné.

Points clés concernant la mémoire :

  • Point flottant (FP16) : Nécessite environ 282 Go de VRAM. Cela est irréalisable pour la plupart des configurations à nœud unique.
  • Quantifié (4 bits/8 bits) : En utilisant des techniques de quantification comme GPTQ ou AWQ, l'empreinte diminue considérablement. Une quantification en 4 bits réduit le modèle à environ 70-80 Go, le rendant réalisable sur des GPU grand public haut de gamme ou de station de travail (par exemple, des configurations multi-GPU ou des cartes à haute mémoire comme la RTX 4090 avec déchargement).

Contrairement aux modèles denses où l'utilisation de la mémoire évolue linéairement avec le calcul actif, les modèles MoE ont un coût mémoire « inactif » plus élevé. Vous payez la capacité de changer d'experts, et non seulement le calcul actuel.

Implications sur la latence : Vitesse vs Taille de lot

La latence d'inférence des modèles MoE se comporte différemment de celle des modèles denses, en particulier concernant la taille du lot (batch size).

Latence pour une demande unique

Dans les scénarios à utilisateur unique et à faible taille de lot, Mixtral présente souvent une latence par jeton plus faible que les modèles denses de taille de paramètres actifs similaire. Cela est dû à la charge de calcul plus faible. Le GPU n'est pas bloqué dans le traitement de 100 % des poids, permettant une génération de jetons plus rapide dans les cas isolés.

Latence pour un lot élevé

À mesure que la taille du lot augmente, le routeur doit envoyer les jetons à un ensemble diversifié d'experts. Cela peut entraîner : 1. Goulots d'étranglement de bande passante mémoire : Le système doit fréquemment échanger les poids des experts dans le cache ou la mémoire si le modèle est quantifié/déchargé. 2. Déséquilibre de charge : Si le routeur favorise constamment certains experts, ces GPU ou banques de mémoire spécifiques deviennent des points chauds, provoquant une utilisation inégale et des goulots d'étranglement potentiels.

Exemple de déploiement pratique

Voici un extrait de code utilisant vLLM, un moteur d'inférence à haut débit, pour servir Mixtral 8x22B. Notez la configuration pour la quantification afin de gérer l'empreinte mémoire.

import vllm
from vllm import LLM, SamplingParams

# Charger Mixtral 8x22B avec une quantification 4 bits pour réduire l'utilisation de la VRAM
llm = LLM(
    model="mistralai/Mixtral-8x22B-Instruct-v0.1",
    quantization="gptq",  # Utilisation de poids GPTQ 4 bits
    tensor_parallel_size=2, # Distribution sur 2 GPU
    gpu_memory_utilization=0.9,
    max_model_len=4096
)

prompts = ["Explain the concept of sparse activation in AI."]
sampling_params = SamplingParams(temperature=0.7, top_p=0.95)

outputs = llm.generate(prompts, sampling_params)
for output in outputs:
    prompt = output.prompt
    generated_text = output.outputs[0].text
    print(f"Prompt: {prompt!r}, Generated text: {generated_text!r}")

Conclusion

Mixtral 8x22B représente un outil puissant pour les développeurs qui ont besoin d'une génération de langage de haute qualité sans les coûts de calcul extrêmes des modèles denses de 70B et plus. Cependant, son architecture MoE exige une planification soignée. Vous aurez besoin de plus de VRAM initiale qu'un modèle dense de taille active comparable, mais vous gagnerez en vitesse d'inférence pour les tâches à faible concurrence.

Pour les environnements de production avec des tailles de lot élevées, vous devez surveiller l'équilibrage de charge des experts et la bande passante mémoire pour éviter les goulots d'étranglement. Si votre cas d'usage implique des interactions en temps réel, à utilisateur unique, avec un modèle open source de haute qualité, Mixtral est un excellent choix. Pour un service à grande échelle et à haute concurrence, cependant, vous devrez peut-être évaluer si le surcoût mémoire de la structure MoE l'emporte sur les avantages de l'activation sparse.

Share: