- Certains modèles d’IA comme DeepSeek-V3 sont peu coûteux et rapides lorsqu’ils sont proposés à grande échelle, mais deviennent lents et coûteux en exécution locale
- La raison tient à un compromis fondamental entre throughput (débit) et latency (latence), lié à l’efficacité d’utilisation des GPU
- Quand on augmente la taille de batch, le GPU fonctionne plus efficacement, mais l’utilisateur doit attendre que les tokens s’accumulent, ce qui entraîne une hausse de la latence
- Les modèles avec une architecture Mixture-of-Experts et un pipeline profond nécessitent des batches importants et donc davantage de latence
- Dans un environnement local à utilisateur unique, il est difficile de former des batches suffisamment grands, ce qui dégrade les performances et augmente les coûts
- OpenAI, Anthropic et d’autres obtiennent des réponses rapides grâce à une architecture plus efficace, des stratégies de batching avancées, ou un surdimensionnement important en GPU
Inférence par batch et efficacité des GPU
- Les GPU sont du matériel optimisé pour les grandes multiplications de matrices (GEMM)
- Lorsque les tokens de plusieurs utilisateurs sont regroupés en une seule exécution batch sous la forme d’une grande matrice, le faible surcoût d’aller-retour et l’efficacité mémoire améliorent fortement le débit
- Les serveurs d’inférence empilent les tokens de plusieurs requêtes dans une file d’attente, sélectionnent un batch de taille appropriée, puis exécutent de grandes opérations GEMM
- Dans ce processus, le serveur doit choisir entre taille de batch (hausse du throughput) et temps d’attente (hausse de la latency)
Pourquoi certains modèles sont optimisés pour de très grands batches
Mixture of Experts (MoE) et batching
- L’architecture MoE (DeepSeek-V3, GPT-4 présumé) est l’une des principales causes d’une faible efficacité GPU
- Comme des centaines de blocs « experts » demandent chacun des multiplications de matrices séparées, les petits batches sont peu efficaces, car chaque expert a trop peu de travail
- Il faut de nombreuses requêtes simultanées pour utiliser correctement tous les experts ; au niveau du service, les grands batches sont donc indispensables
- Avec une courte attente (fenêtre de 5 ms), les experts restent fréquemment inactifs ; avec une attente longue (fenêtre de 200 ms), on peut maximiser l’efficacité
Problèmes de batch dans les modèles à pipeline profond
- Les grands transformers de plusieurs centaines de couches sont exécutés en répartissant les couches sur plusieurs GPU (pipelining)
- Si le nombre de tokens dans un batch est inférieur au nombre d’étapes du pipeline, un phénomène de pipeline bubble se produit, ce qui réduit le débit
- Pour l’éviter, un grand batch est indispensable, ce qui impose une attente plus longue et allonge le temps de réponse du modèle
Pourquoi ne peut-on pas toujours remplir la file d’attente
- En théorie, avec beaucoup de trafic simultané, on pourrait penser qu’il est toujours possible de remplir la file et d’éviter les bulles
- Mais en pratique, à l’étape d’attention des transformers, les dimensions des matrices (longueurs) doivent être identiques pour permettre le batching, ce qui rend difficile un fonctionnement parfait avec une file unique
- De plus, si l’on sépare les étapes FFN et attention, cela entraîne une forte surcharge mémoire et des inefficacités dans les transferts de données
Résumé et conclusion
- Le traitement par grands batches est indispensable pour réduire les coûts GPU et augmenter le débit, mais il allonge le temps d’attente côté utilisateur
- Les modèles à Mixture-of-Experts et à grande architecture pipeline sont, par nature, optimisés pour des environnements de batching à haute efficacité fondés sur l’attente
- Dans des environnements à faible trafic comme le local, il est impossible de constituer de grands batches optimisés, d’où une chute brutale de l’efficacité GPU et une hausse des coûts d’exécution
- Si OpenAI, Anthropic et d’autres affichent une bonne réactivité, c’est possiblement parce que
- (1) leur architecture est plus efficace et n’est pas forcément du MoE
- (2) ils appliquent des optimisations avancées de batch/pipeline et des techniques d’inférence sophistiquées
- (3) ils peuvent tout simplement mobiliser bien plus de GPU que nécessaire pour acheter de la vitesse
En plus : différence entre batch de prefill et batch du corps principal
- Avec les transformers, le prefill d’un prompt utilisateur (entrée longue) peut lui aussi être exécuté en batch, ce qui permet une inférence initiale rapide
- Mais le batch discuté dans le corps de l’article concerne le compromis débit-latence pendant la véritable phase de génération de tokens sur plusieurs requêtes utilisateurs
- Le batch de prefill n’a pas de lien direct avec les grands batches simultanés évoqués dans l’article
Remarques
- Les systèmes d’inférence réels utilisent aussi le continuous batching, qui lance l’exécution dès qu’un batch est prêt
- Mais la structure fondamentale du compromis throughput-latency reste la même
1 commentaires
Avis Hacker News