Pourquoi procéder au découpage ?
Le découpage s’avère nécessaire lorsque l’une des deux conditions suivantes concernant 1 et 4 se vérifie :- Le modèle est trop volumineux pour le connecteur GPU 1. Un modèle dense de type 70B en précision FP16 requiert environ 140 Go de mémoire. Même avec une quantification Q4 (~35 Go), il occupe toute la capacité d’une carte RTX 4090 dotée de 24 Go. Il vous faudra au minimum 2 connecteurs GPU pour stocker l’ensemble des poids.
- Vous souhaitez réduire la latence par jeton. Lorsque chaque GPU contribue simultanément à la génération de chaque jeton, le temps nécessaire pour produire un jeton diminue.
- Vous avez besoin d’un débit plus élevé. Plus il y a de GPU, plus d’utilisateurs peuvent être servis en parallèle.
- Vous recherchez la redondance. En exécutant 2 répliques derrière un équilibreur de charge, le défaillance d’un seul GPU 1 ne provoque aucune interruption de service.
Où s’écoule réellement la mémoire de votre GPU
Avant de choisir une stratégie de partitionnement, il convient de savoir ce qui sollicite la VRAM. Il ne s’agit pas uniquement des poids du modèle :
A 24 GB RTX 4090 running a 70B Q4 model has ~35 GB of weights — it does not fit on 1 GPU at all. With TP=2, each GPU holds ~17.5 GB of weights and has ~6.5 GB left for KV cache and overhead. That is enough for short contexts and a few concurrent users, but not much more.
La mémoire utilisable est inférieure à la VRAM totale. Sur un DGX Spark (128 Go en mémoire unifiée), on dispose d’environ 110 Go pour le modèle et le cache KV après que le système d’exploitation et le runtime en ont réservé une part. Sur les GPU dédiés, le paramètre
--gpu-memory-utilization de vLLM (valeur par défaut 0.90) gère cette allocation. Diminuez-le si vous rencontrez des dépassements de mémoire.
C’est pourquoi le parallélisme d’experts a été conçu : plutôt que de charger l’intégralité des 231 Go d’experts sur chaque GPU, chaque GPU ne conserve que les experts qui lui sont attribués. Consultez le parallélisme d’experts ci-dessous.
2 décisions : commencez par assurer la compatibilité, puis optimisez les performances
Le partage en fragments répond aux questions 2 dans l’ordre suivant : Adapter le modèle à la mémoire — il faut placer les poids (ainsi que l’espace nécessaire au cache KV) dans les limites de la mémoire de la GPU :- Commencez par la quantification. Passer de la précision FP16 à Q4 réduit la mémoire requise pour les poids d’environ 4 fois. C’est le gain le plus facile à obtenir. Consultez le guide de quantification.
- Partitionnez le modèle entre plusieurs GPUs. Lorsque la quantification seule ne suffit pas, il convient de diviser le modèle via le TP, le PP ou l’EP.
- Élagage des experts (uniquement pour MoE). Dans le cas des modèles MoE dotés de 256 experts, où seuls 6 sont sollicités par jeton, l’élagage d’experts inspiré de REAP réduit à peu près de moitié les poids des experts affectés sans impacter les calculs actifs.
- Choisissez le niveau de parallélisme adéquat. Le parallélisme tensoriel assure la latence la plus faible par jeton. Le parallélisme pipeline tolère les interconnexions lentes. Le parallélisme de données augmente la capacité de traitement globale.
- Utilisez la voie spéculative officiellement documentée. Pour
DeepSeek-V4-Flash-0731, activez le module DSpark fourni avec les paramètres officiels de vLLM ou de SGLang. Ne configurez pas de point de contrôle de brouillon séparé. Consultez la documentation sur le déploiement et l’échelle du modèle. - Ajustez la mémoire cache KV et la taille des lots. Une mémoire cache KV plus vaste permet de gérer davantage d’utilisateurs simultanés. Consultez les réglages mémoire de DGX Spark.
The 4 sharding strategies at a glance
DeepSeek-V4-Flash-0731 constitue un cas d’utilisation concret de la fragmentation : bien que 13B paramètres actifs réduisent le calcul par jeton, l’ensemble des 284B paramètres exigent tout de même une mémoire pour stocker les poids. Consultez DeepSeek V4 Flash sur le matériel local afin de connaître le seuil minimal de mémoire requis ainsi que le degré de maturité de chaque voie de déploiement sur les 2 appareils.Parallélisme tensoriel : répartition des couches sur plusieurs GPU
Le parallélisme tensoriel divise les matrices de poids de chaque couche entre les GPU. Chaque GPU conserve une portion de chaque couche, et tous traitent simultanément le même token.1/N des poids du modèle, où N représente le degré de parallélisme tensoriel. Un modèle de 70B de taille Q4 (~35 Go) avec TP=2 implique environ 17.5 Go de poids par GPU.
Latence : la plus faible possible par token. Tous les GPU traitent chaque token, donc le temps total correspond au temps de calcul plus la synchronisation AllReduce.
Best for: 2–4 GPUs connected by NVLink or a fast PCIe bus. The 200Gb/s QSFP link between 2 DGX Sparks is ideal.
Indicateur vLLM : --tensor-parallel-size 2
Le bus PCIe offre une bande passante inférieure de 3 à 5 fois celle de NVLink pour les opérations AllReduce. Le parallélisme tensoriel reste utilisable sur PCIe — par exemple, un système composé de 2 GPU RTX 4090 avec TP=2 — mais on observe alors un débit de décodage inférieur de 20 à 30% fois par rapport à un déploiement sur GPU reliés par NVLink.
Exemple : utiliser 70B sur 2 GPU RTX 4090
Le parallélisme de pipeline consiste à répartir les couches de manière séquentielle.
Le parallélisme de pipeline (PP) attribue des groupes contigus de couches à différents GPU. Le GPU 0 gère les couches 0 à 19, tandis que le GPU 1 gère les couches 20 à 39. Les tokens traversent le pipeline à la manière d’une chaîne de montage.--pipeline-parallel-size 2
Quand le parallélisme de pipeline surpasse le parallélisme tensoriel
Il convient d’utiliser le parallélisme de pipeline plutôt que le parallélisme tensoriel dans les cas suivants :- Lorsque les GPU se trouvent sur des machines distinctes reliées par un réseau (10GbE à 100GbE).
- Les GPU sont reliés via PCIe, et le modèle est suffisamment petit pour que les coûts liés au gaspillage de mémoire lors du déploiement soient inférieurs aux frais de bande passante induits par AllReduce.
- On enchaîne plusieurs 3+ nœuds ; toutefois, le déploiement de TP sur l’ensemble de ces nœuds saturerait l’interconnexion.
Le parallélisme de données consiste à exécuter le même modèle sur plusieurs GPU.
Le parallélisme de données (DP) consiste à charger une copie complète du modèle sur chaque GPU, puis à répartir les requêtes entrantes entre eux. Il n’y a aucune communication entre GPU durant l’inférence : chaque GPU traite de manière autonome son propre lot de requêtes./v1/chat/completions sur les deux ports disponibles.
Le parallélisme d’experts s’applique aux modèles de type mélange d’experts.
Expert parallelism (EP) applies only to mixture-of-experts (MoE) models. In an MoE model, each token activates only a small subset of the model’s “experts” — for example, Qwen3-235B has 256 routed experts but only 6 fire per token (~22B active parameters out of 235B total). EP puts different experts on different GPUs so you do not waste memory storing inactive experts everywhere.--enable-expert-parallel combiné à --tensor-parallel-size
Combinaison de stratégies : parallélisme tensoriel, parallélisme de pipeline et parallélisme de déploiement.
Lorsque l’on dispose de nombreux GPU, on combine ces stratégies de manière hiérarchique.- Parallélisme tensoriel au sein d’un nœud (lorsque l’interconnexion entre GPU est rapide).
- Parallélisme de pipeline entre nœuds (lorsque l’interconnexion est plus lente).
- Parallélisme de déploiement pour le débit : on exécute plusieurs répliques de la configuration combinant parallélisme tensoriel et de pipeline.
4 GPU : TP=2 + PP=2
8 GPU : TP=4 + DP=2
Exécutez 2 répliques dans un environnement de parallélisme tensoriel à 4 voies. Chaque réplique emploie 4 GPU pour le parallélisme tensoriel, tandis qu’un équilibreur de charge répartit les requêtes entre les 2 répliques. Vous obtenez ainsi une latence minimale comparable à celle d’un TP=4, avec un débit multiplié par 2.Règle générale à retenir
- Priorité au TP — sur l’interconnexion la plus rapide disponible (NVLink, QSFP, PCIe).
- Ensuite le PP — via des liaisons plus lentes (Ethernet, réseau inter-machine).
- Enfin le DP — lorsque vous souhaitez accroître le débit et disposez de GPU supplémentaires pour créer des répliques.
TP × PP = total GPUs used for one replica. Si vous configurez --tensor-parallel-size 4 --pipeline-parallel-size 2, vLLM affecte 8 GPU à chaque 1 réplique.
Matrice de décision pour le partitionnement
70B, 2× RTX 4090 (PCIe)
PP. La bande passante PCIe s’avère insuffisante pour un AllReduce efficace. Le parallélisme en pipeline contourne ce goulot d’étranglement.
70B, 2× A100 (NVLink)
TP. NVLink offre une bande passante adéquate pour l’AllReduce, réduisant ainsi la latence par jeton.
235B MoE, DGX Spark
EP. Gestion native du MoE — chaque GPU ne stocke que ses propres experts, et non l’intégralité du 235B.
7B, trafic élevé
DP. Le modèle tient sur le GPU 1. Répliquez-le pour augmenter le débit.
70B, 4× A100 (NVLink)
TP=4 (ou bien TP=2 + DP=2 si vous privilégiez le débit à la latence).
70B, 2 machines
PP=2. Le réseau reliant les machines est trop lent pour supporter le TP. Le découpage en pipelines permet de contourner cette limite de bande passante.
Commandes pratiques
Vérifiez que le découpage du modèle fonctionne correctement
Lanceznvidia-smi sur chaque GPU. Tous les GPU concernés devraient indiquer que la mémoire a été allouée au modèle :
Erreurs fréquentes
Utilisation du parallélisme tensoriel sur un bus PCIe lent. AllReduce transmet les données d’activation après chaque couche. Sur un bus PCIe 3.0, cela limite fortement le débit de décodage. Si vos GPU ne disposent pas de NVLink, testez le parallélisme pipeline et comparez les résultats. Utilisation du parallélisme pipeline avec une taille de lot égale à 1. Le gaspillage de calcul lié à la gestion du pipeline est maximal lorsque seuls 1 jetons sont traités simultanément. Le traitement par lots continu de vLLM atténue ce problème ; veillez à exécuter suffisamment de requêtes simultanées pour remplir le pipeline. Forgetting that DP requires N× model memory. 4 replicas of a 70B Q4 model (~35 GB each) need 140 GB total. Plan memory before adding replicas. Négligence du cache KV. La mémoire GPU sert non seulement aux poids du modèle mais aussi au cache KV des séquences actives. En répartissant les poids sur 2 GPU, on répartit également le cache KV, ce qui augmente la capacité d’accueil des utilisateurs. En revanche, si vous ne prévoyez de mémoire que pour les poids, vous risquez de manquer de ressources. Prévoyez donc de la mémoire pour les poids, le cache KV et environ 3 Go de marge avant de choisir une stratégie de répartition. Mélange incorrect du parallélisme tensoriel et du parallélisme pipeline. vLLM applique le parallélisme tensoriel au sein de chaque étape du pipeline. Réglez--tensor-parallel-size sur le nombre de GPU par nœud et --pipeline-parallel-size sur le nombre de nœuds. Inverser ces valeurs entraîne l’application du parallélisme pipeline au sein d’un même nœud (gaspillage du réseau rapide) et du parallélisme tensoriel entre nœuds (saturement du réseau par AllReduce).
Prochaines étapes
Parallélisme tensoriel contre parallélisme pipeline
Comparaison détaillée du parallélisme tensoriel et du parallélisme pipeline accompagnée de tests de performance.
Un ou deux systèmes DGX Spark
Moment opportun pour ajouter un second système Spark et configuration du lien à 200 Go/s.
Réglage de la mémoire sur DGX Spark
Calculs relatifs au cache KV et paramètres mémoire pour les déploiements à répartition.
Mise en service et mise à l’échelle des modèles
La manière dont les moteurs d’inférence gèrent le regroupement des requêtes, la précision des calculs et le parallélisme.