Fonctionnement de la mémoire unifiée sur GB10
DGX Spark intègre la puce GB10 de NVIDIA, qui regroupe un processeur ARM Grace et un GPU Blackwell dans un même boîtier. Ces composants partagent 128 Go de mémoire LPDDR5X via un interconnect atteignant 273 Go/s. Il n’existe pas de VRAM séparée. Lorsque vLLM alloue de la « mémoire GPU », il s’agit en réalité d’une portion du même pool de 128 Go utilisé par le système d’exploitation DGX, le runtime CUDA et vos applications. Cela implique :gpu_memory_utilizationdétermine la part du pool total, et non un budget mémoire dédié au GPU.- Les processus système se disputent les mêmes octets. Le système d’exploitation DGX, les services en arrière-plan et les surcharges liées au contexte CUDA réduisent ainsi la quantité disponible pour le modèle.
- Il n’existe aucun mécanisme de sécurité tel qu’un OOM killer. Une fois le pool épuisé, DGX Spark se fige au lieu de mettre fin au processus responsable.
Surcharge du cache KV sur 128 Go
Le cache KV stocke les tenseurs clé-valeur de chaque jeton de chaque séquence active. Sa taille augmente avec 3 facteurs : la longueur du contexte, le nombre de séquences simultanées et l’architecture du modèle (nombre de couches et de têtes KV).La formule
Pour une seule séquence à une longueur de contexte donnée :Exemple : modèle dense 70B fonctionnant à différentes longueurs de contexte
En supposant un modèle 70B typique doté de 80 couches, de 8 têtes KV et d’une dimension de tête égale à 128 :Exemple : 35B modèle MoE
Pour un nombre total de couches identique, les modèles MoE utilisent les mêmes calculs de cache KV que les modèles denses. Un modèle MoE 35B comportant environ 64 couches et doté de la même configuration de têtes KV :
Avec un MoE à 35B utilisant les poids NVFP4 (environ 18 Go), il est possible de gérer 128K d’éléments de contexte grâce à un cache KV en FP8, tout en conservant environ 65 Go de marge de manœuvre.
Compromis entre longueur du contexte et taille du lot
Chaque jeton de contexte présent dans chaque séquence active consomme de la mémoire du cache KV. Le budget total alloué au cache KV est le suivant :
Pour un modèle dense 70B en format NVFP4 (environ 35 Go pour les poids, et ~75 Go restants pour le cache KV) :
Comparaison entre les tests pratiques et les affirmations de NVIDIA
Le chiffre publié par NVIDIA, soit 82,739 jetons/s, pour le DGX Spark correspond à un débit de mise au point global, et non à l’inférence pour un seul utilisateur. Les valeurs réelles pour le service interactif sont les suivantes :Le chiffre de 82,739 jetons/seconde indique le débit global lors de multiples flux de réglage fin parallèles. L’inférence interactive pour un seul utilisateur constitue une charge de travail différente ; on observe alors entre 15 et 120 jetons/seconde selon la taille du modèle et du moteur, ce qui reste suffisant pour des chats en temps réel et des agents de programmation.
Protection mémoire : évite les blocages du système
Le paramètre de réglage le plus crucial sur DGX Spark est--gpu-memory-utilization. Une valeur trop élevée entraîne des blocages irrécupérables ; une valeur trop basse réduit l’espace disponible dans le cache KV.
Valeurs de départ recommandées
Surveillez l’utilisation de la mémoire en temps réel
Ouvrez un second terminal et observez l’utilisation de la mémoire pendant le déploiement :memory.free descend en dessous de la plage allant de 2 à 3 Go, votre système risque de se figer. Il convient alors de réduire les paramètres max_model_len, max_num_seqs ou gpu_memory_utilization.
Référence des paramètres de réglage
Voici les options vLLM les plus importantes sur DGX Spark, classées selon leur impact :Tableau décisionnel : configurations courantes
Recettes de réglage
Maximiser le débit pour un seul utilisateur
Maximiser le nombre d’utilisateurs simultanés pour 70B
Configuration la plus sûre pour les modèles de grande taille
Prochaines étapes
vLLM sur DGX Spark
Commandes d’installation et de lancement pour chaque taille de modèle.
Compatibilité des modèles
Quels modèles peuvent être utilisés avec 128 Go d’espace mémoire et quelles options de quantification sont disponibles.
Un ou deux Sparks
Les cas où l’ajustement de la mémoire ne suffit pas et où il devient nécessaire d’ajouter un second Spark.
Notions relatives au cache KV
Explication approfondie du fonctionnement du cache KV selon les différentes architectures de modèles.