Modèles et plateformes d’IA
L’avenir de l’inférence serveurless pour les grands modèles de langage
Les récentes avancées dans les grands modèles de langage (LLM) comme GPT-4, PaLM ont conduit à des capacités de transformation dans les tâches de langage naturel. Les LLM sont intégrés dans diverses applications telles que les chatbots, les moteurs de recherche et les assistants de programmation. Cependant, la mise à l’échelle des LLM reste un défi en raison de leurs besoins importants en termes de GPU et de mémoire.
Les approches pour surmonter ce défi se divisent généralement en deux catégories principales :
- Techniques de compression de modèle
Ces techniques visent à réduire la taille du modèle tout en maintenant la précision. Les approches courantes incluent :
- Élagage – Suppression des paramètres redondants ou moins importants du modèle. Cela crée un modèle sparse avec moins de paramètres.
- Quantification – Utilisation de nombres à précision inférieure comme int8 ou bfloat16 pour représenter les poids au lieu de fp32 ou fp16. Cela réduit l’empreinte mémoire.
- Distillation de connaissances – Entraînement d’un modèle “étudiant” plus petit pour imiter un modèle “enseignant” plus grand. Le modèle plus petit est ensuite utilisé pour l’inférence.
- Exécution sélective
Plutôt que des modèles compressés, ces techniques exécutent sélectivement seulement des parties du modèle par inférence :
- Activations sparces – Ignorer les calculs sur les activations nulles.
- Calcul conditionnel – Exécuter seulement certaines couches conditionnellement en fonction de l’entrée.
Du côté de l’architecture logicielle, pour permettre un déploiement plus rapide des LLM, les chercheurs ont proposé des systèmes d’inférence serveurless. Dans les architectures serveurless, les LLM sont hébergés sur des grappes de GPU partagées et allouées dynamiquement en fonction de la demande. Cela permet une utilisation efficace des GPU et réduit les coûts pour les développeurs. Les implémentations notables incluent Amazon (AMZN ) SageMaker, Microsoft Azure ML et des options open-source comme KServe.
Malgré la promesse des LLM serveurless, les systèmes existants présentent des surcoûts de latence importants qui dégradent l’expérience utilisateur dans les applications interactives :
- Téléchargement de points de contrôle coûteux : Les LLM ont des empreintes mémoire importantes, souvent de la taille des gigaoctets à des téraoctets. Le téléchargement de points de contrôle à partir d’un stockage distant est fastidieux, prenant plus de 20 secondes même avec des réseaux optimisés.
- Chargement de points de contrôle inefficace : Même avec un stockage SSD local, le chargement de points de contrôle dans la mémoire GPU prend des dizaines de secondes en raison de facteurs tels que la désérialisation de tenseurs et l’allocation. Cela ajoute des retards importants au-delà du temps de démarrage du conteneur.
Pour résoudre ces problèmes, les chercheurs de MIT CSAIL ont proposé ServerlessLLM, un système innovant qui permet une inférence serveurless à faible latence pour les LLM. ServerlessLLM améliore la localité en exploitant la capacité et la bande passante abondantes mais sous-utilisées dans le stockage multi-niveaux pour le déploiement des LLM.
Innovations clés dans ServerlessLLM ServerlessLLM intègre plusieurs conceptions novatrices pour réduire les temps de chargement des LLM dans les environnements serveurless :
- Chargement rapide de points de contrôle
- Format de point de contrôle optimisé pour le chargement qui permet une lecture séquentielle rapide et une adresse de tenseur efficace en mémoire.
- Pipeline de chargement de point de contrôle multi-niveaux qui maximise l’utilisation de la bande passante à travers tous les niveaux grâce à des techniques telles que le transfert direct I/O, le transfert de mémoire épinglée et le parallélisme.
- Migration en direct pour l’inférence basée sur la localité
- Migration basée sur les jetons qui ne transmet que les jetons de prompt essentiels sur le réseau, évitant ainsi le transfert lent de snapshot.
- Migration en deux phases qui permet une inférence ininterrompue en récalculant de manière asynchrone les états de cache sur le serveur de destination avant de transférer les jetons finals.
- Affectation de serveur optimisée pour la latence
- Modèles pour estimer les temps de chargement de points de contrôle à partir de chaque niveau et les temps de migration pour un serveur.
- Planificateur conscient de la localité qui sélectionne les serveurs en minimisant la latence de démarrage attendue en utilisant les modèles ci-dessus.
Ces optimisations permettent à ServerlessLLM de réduire les temps de chargement des LLM de 4 à 8 fois et les temps de démarrage de bout en bout de plus de 25 fois par rapport aux systèmes existants comme PyTorch, TensorFlow et KServe.
Plongeons plus en profondeur dans la façon dont ServerlessLLM réalise ces gains de performance importants.
Accélération du chargement de points de contrôle
Le premier goulet d’étranglement majeur abordé par ServerlessLLM est la latence élevée du chargement des points de contrôle des LLM à partir du stockage dans la mémoire GPU.
Pour permettre un chargement rapide de points de contrôle, ServerlessLLM introduit :
- Format de point de contrôle optimisé pour le chargement
Les points de contrôle standard utilisés par les frameworks comme PyTorch sont conçus pour l’entraînement et le débogage du modèle. Mais pour l’inférence serveurless, les points de contrôle sont en lecture seule et sont accédés à plusieurs reprises.
Pour optimiser un tel usage intensif en lecture, ServerlessLLM convertit les points de contrôle dans un format avec deux propriétés clés :
- Lecture de chunks séquentielle : les tenseurs sont regroupés dans des fichiers binaires par GPU, facilitant ainsi les lectures séquentielles importantes.
- Adresse de tenseur efficace : un index mappe les noms de tenseurs aux offsets de mémoire, permettant ainsi une restauration directe en mémoire sans désérialisation.
- Pipeline de chargement de point de contrôle multi-niveaux
ServerlessLLM exploite l’architecture à niveaux des serveurs GPU, avec des supports de stockage comme les SSD et les réseaux reliant les GPU via PCIe, NVMe, etc.
Le système intègre une pipeline multi-étapes pour maximiser l’utilisation de la bande passante à travers tous les niveaux :
- Les chunks de données en mémoire sont alloués à l’aide de la mémoire épinglée pour un transfert GPU rapide.
- Le transfert direct I/O est utilisé pour des lectures SSD efficaces sans surcoûts de mise en cache.
- Plusieurs threads lisent différents chunks de stockage en parallèle.
- La coordination inter-étape se fait via des files d’attente de tâches asynchrones.
Cela permet ensemble de saturer la capacité de bande passante même des niveaux les plus rapides comme le RAID NVMe. Les expériences révèlent que ServerlessLLM atteint un chargement 6 à 8 fois plus rapide que PyTorch/TensorFlow, réduisant ainsi les temps de démarrage pour les grands LLM de plus d’une minute à moins de 10 secondes.
Inférence LLM basée sur la localité via la migration en direct
Avec un chargement accéléré, ServerlessLLM est confronté à un nouveau défi – comment exploiter les points de contrôle préchargés pour la localité sans interrompre les inférences en cours sur les serveurs occupés ?
ServerlessLLM introduit une technique novatrice – la migration en direct de l’inférence LLM entre les serveurs GPU. Cela permet de transférer de manière transparente l’exécution vers des serveurs avec des points de contrôle locaux disponibles.
Principaux éléments clés de la migration LLM en direct :
- Migration basée sur les jetons
Plutôt que de prendre un snapshot de l’ensemble de l’état du modèle, ServerlessLLM ne migre que les jetons de prompt minimaux sur le réseau. Cela transfère des quantités de données plusieurs ordres de grandeur inférieures à celles des snapshots.
- Migration en deux phases
Le serveur de destination précalcule de manière asynchrone les états de cache à partir des jetons de prompt. Une fois prêt, le serveur source transfère les jetons finals avant de libérer les ressources. Cela empêche les retards d’inférence.
Les expériences révèlent que la migration basée sur les jetons réduit les temps de migration de plusieurs dizaines de secondes à moins d’une seconde, même pour des séquences longues. La migration en direct est cruciale pour prévenir les retards de file d’attente lors de la réalisation d’une allocation basée sur la localité.
Planification de modèle optimisée pour la latence
Pour minimiser la latence de bout en bout, ServerlessLLM améliore le planificateur pour optimiser la sélection de serveur en fonction de la localité. Cela implique :
- Estimateur de temps de chargement à grain fin
Les modèles prédisent les temps de chargement à partir du réseau, des caches SSD et de la mémoire pour chaque serveur en utilisant des métriques telles que les retards de file d’attente, les tailles de modèle et les bandes passantes mesurées.
- Prédicteur de temps de migration précis
Le planificateur estime les temps de migration pour les serveurs en fonction du nombre de jetons de prompt et de sortie. Il suit de manière asynchrone la progression de l’inférence pour éviter les surcoûts.
- Affectation basée sur la localité
Pour chaque demande d’inférence, le planificateur évalue les temps de chargement et de migration estimés à travers les serveurs. Il sélectionne le serveur qui minimise la latence de démarrage attendue.
Le planificateur maintient également des files d’attente de tâches pour les serveurs et exploite un magasin fortement cohérent pour la tolérance aux pannes. Ensemble, ces innovations réduisent les surcoûts de planification tout en maximisant les avantages de la localité.
Évaluation des performances de ServerlessLLM
Des expériences complètes évaluent l’efficacité de bout en bout de ServerlessLLM par rapport aux systèmes existants en utilisant des modèles réels comme OPT-175B et des charges de travail modélisées après des traces Azure.
Résultats clés :
- Micro-benchmarks : ServerlessLLM accélère le chargement de points de contrôle de 3,6 à 8,2 fois par rapport à PyTorch/TensorFlow. Il sature complètement la bande passante de stockage, même pour le RAID NVMe de pointe.
- Planification : ServerlessLLM réduit la latence d’affectation de 4 à 12 fois par rapport à une planification aléatoire, mettant en évidence les avantages de la conscience de la localité. La migration en direct prévient les retards de file d’attente.
- Serving de bout en bout : Pour les grands modèles comme OPT-30B, ServerlessLLM améliore la latence de percentile 99 de 28 à 200 fois par rapport aux systèmes comme KServe et Ray Serve. Il améliore également l’efficacité des ressources.
Ces gains importants démontrent la capacité de ServerlessLLM à surmonter les goulets d’étranglement dans les implémentations serveurless existantes et à débloquer le potentiel des LLM pour les services interactifs.
Les optimisations introduites dans ServerlessLLM, comme le chargement multi-niveaux, la migration en direct et la planification basée sur la latence, peuvent aider à éclairer la conception des architectures serveurless futures. La capacité du système à réduire les temps de chargement et de démarrage débloque le déploiement à grande échelle des grands modèles de langage pour des applications pratiques.
Regard vers l’avenir : Défis en cours
Bien qu’il s’agisse d’un progrès significatif, ServerlessLLM représente seulement le premier pas dans l’optimisation de l’inférence serveurless pour les LLM massifs. Plusieurs problèmes ouverts restent, notamment :
- Prévoir la demande de modèle en temps réel pour guider la provision et le préchargement
- Placer de manière intelligente les points de contrôle à travers les serveurs pour maximiser les touches de cache
- Évoluer efficacement les algorithmes de planification pour gérer des grappes plus importantes
- Assurer l’équité dans l’allocation des ressources entre les modèles et les développeurs
- Généraliser les innovations comme la migration en direct à d’autres charges de travail serveurless
Résoudre ces domaines peut aider à bâtir sur la promesse des LLM serveurless et à rendre leurs capacités encore plus accessibles. Au-delà des optimisations au niveau du système, la réduction de l’empreinte carbone flagrante et des dommages potentiels des grands modèles reste une priorité urgente.
ServerlessLLM démontre qu’il existe un potentiel énorme pour l’innovation dans les architectures serveurless de nouvelle génération pour les charges de travail d’IA. À mesure que les LLM continuent de croître en taille et en popularité, des solutions comme ServerlessLLM qui débloquent leur mise à l’échelle deviendront encore plus impactantes. La convergence de la recherche en systèmes et en apprentissage automatique peut introduire de nouveaux paradigmes dans le service, le partage et la mise à l’échelle des modèles d’IA de manière sûre et durable.













