Définition
L'inférence distribuée est une approche qui permet aux modèles d'intelligence artificielle (IA) de traiter les charges de travail plus efficacement en répartissant les tâches liées à l'inférence entre plusieurs équipements interconnectés. Les tâches d'inférence sont ainsi allégées.
Ce processus repose sur un système capable de répartir les requêtes entre les serveurs disponibles, dans le cloud ou sur site. Chaque serveur d'inférence traite ensuite en parallèle les requêtes qui lui sont attribuées pour créer un résultat final. L'ensemble forme un système résilient et observable, conçu pour fournir des services d'IA cohérents et évolutifs.
L'analogie du dîner
Imaginez que vous organisez un dîner pour dix personnes. Au menu, quatre plats sont prévus : une entrée, un plat principal, une salade et un dessert. Mais vous ne disposez que de deux heures pour tout préparer. Sans aide, ce serait quasiment impossible : soit la qualité des plats en pâtirait, soit vous manqueriez de temps.
Pour résoudre ce problème, vous demandez à quelques amis de vous aider, en attribuant à chacun un plat selon ses compétences. Par exemple, celui qui cuisine rarement prépare l'entrée, tandis que celui qui a suivi une formation de chef s'occupe du plat principal, plus complexe. En tirant parti des compétences de chacun et en travaillant simultanément sur des tâches distinctes, vous parvenez à servir un dîner succulent, à l'heure.
Dans cette comparaison, le travail d'équipe correspond à l'inférence distribuée, chaque plat représente une requête et chaque ami est un type de serveur d'inférence.
Rapidité, évolutivité et économies
À mesure que les modèles d'IA gagnent en sophistication, leur taille augmente. Par exemple, un grand modèle de langage (LLM) peut contenir des centaines de milliards de paramètres. Ces paramètres déterminent la compréhension du langage par le LLM. Plus il y en a, plus le modèle est capable de réaliser des tâches complexes avec précision.
Certains modèles d'IA (tels que DeepSeek, qui contient 671 milliards de paramètres) sont trop volumineux pour s'exécuter sur un seul processeur graphique (GPU). Ils nécessitent donc une approche comme l'inférence distribuée pour fonctionner.
Les modèles qui contiennent le plus de paramètres sont aussi ceux qui nécessitent le plus de ressources matérielles.
Le stockage de ces très grands modèles et les calculs d'inférence exigent beaucoup de mémoire et de puissance de traitement. Pour relever ce défi, il existe plusieurs solutions :
- Augmenter la puissance des machines existantes en ajoutant des GPU à un serveur : plus il y a de GPU, plus la puissance de traitement augmente. Mais ces composants sont coûteux. De plus, cette approche risque de créer un point de défaillance unique, c'est-à-dire qu'en cas de passe d'une instance (une copie de l'application d'inférence), l'ensemble du système peut en subir les conséquences.
- Alléger les modèles grâce à la quantification : cette technique d'optimisation simplifie les paramètres d'un modèle. Elle diminue la précision numérique des paramètres pour réduire la taille du modèle. La quantification des modèles est la stratégie que nous recommandons pour optimiser le traitement des grands modèles, car elle est moins complexe à mettre en œuvre que l'inférence distribuée.
- Renforcer l'efficacité du matériel existant en favorisant une distribution collaborative des charges de travail grâce à l'inférence distribuée : cette approche offre la vitesse, la fiabilité et l'évolutivité requises pour répondre aux exigences des environnements d'entreprise. Elle peut être utilisée en complément de la quantification du modèle.
Serveur d'inférence
Un serveur d'inférence est un composant logiciel essentiel qui aide un modèle d'IA à établir de nouvelles conclusions à partir de ce qu'il a appris pendant son entraînement. Il transmet les demandes en entrée (par exemple, une recherche ou une invite) à un modèle d'apprentissage automatique et en renvoie le résultat.
Le verbe « to infer » signifie « déduire à partir d'indices ». Imaginez que vous apercevez de la lumière dans le salon d'un ami, mais que celui-ci n'est pas visible dans la pièce, vous pouvez en déduire qu'il est chez lui, sans pour autant en avoir une preuve formelle.
De la même manière, un modèle de langage ne peut prouver avec certitude la signification d'un mot ou d'une expression, parce qu'il n'est qu'un logiciel. C'est pourquoi il s'appuie sur son entraînement. Il effectue plusieurs calculs basés sur les données qu'il connaît pour générer une conclusion.
4 principes clés à prendre en compte pour mettre en œuvre des technologies d'IA
Fonctionnement de l'inférence distribuée
Dans le cadre de l'inférence distribuée, un seul coordinateur intelligent gère toutes les charges de travail d'IA. À la réception d'une nouvelle demande, le système aide à l'analyser, puis l'achemine vers le serveur le plus pertinent (comme dans l'exemple du dîner).
Plusieurs facteurs peuvent dégrader les performances, notamment la taille des modèles, le nombre d'utilisateurs et les problèmes de latence. En fonction du problème à l'origine du goulet d'étranglement, l'inférence distribuée a recours à diverses stratégies :
- Découpage du modèle : si le modèle est trop grand pour un seul GPU, l'inférence distribuée utilise le parallélisme des modèles pour le répartir sur plusieurs GPU.
- Découpage des données : pour gérer plusieurs utilisateurs à la fois, l'inférence distribuée utilise le parallélisme des données et l'équilibrage de charge intelligent afin de répartir les données d'entrée sur différents serveurs. Cette technique permet de gérer efficacement les requêtes simultanées.
- Découpage du processus d'inférence : pour optimiser l'ensemble du workflow, l'inférence distribuée utilise la désagrégation du processus. Cette méthode sépare les deux phases de calcul à l'origine d'une réponse d'inférence (le préremplissage et le décodage) et les exécute dans des environnements distincts.
Planification intelligente des inférences
L'inférence distribuée s'appuie sur un plan de contrôle ou un ordonnanceur capable de coordonner et transférer les informations nécessaires à l'exécution des tâches. La planification intelligente est un processus qui s'exécute en continu dans les systèmes d'inférence distribuée afin de faciliter cette coordination.
La planification intelligente fonctionne comme un gestionnaire de projet. Au lieu d'envoyer la requête au prochain serveur disponible, elle vérifie les points suivants :
- Quels serveurs disposent déjà d'informations mises en cache pertinentes concernant la demande ?
- Quels serveurs ont la capacité nécessaire au traitement de la demande ?
- Quels serveurs sont les plus adaptés pour effectuer la tâche demandée ?
La planification intelligente repose sur des algorithmes logiciels et intervient lors de l'inférence pour optimiser la circulation des données.
Désagrégation du préremplissage et du décodage
La génération d'une réponse se déroule en deux phases : le préremplissage et le décodage. En séparant ces deux phases, les systèmes distribués peuvent affecter chaque partie au matériel le plus approprié, ce qui améliore l'efficacité globale.
Le préremplissage (ou préremplissage du cache clé-valeur) désigne la première étape, très gourmande en ressources de calcul, durant laquelle le modèle traite l'instruction générative, c'est-à-dire qu'il la « lit » et la « comprend ».
Le décodage désigne la seconde étape, plus gourmande en mémoire, au cours de laquelle le modèle génère la réponse, un jeton textuel à la fois. Il puise alors dans le cache clé-valeur les informations qu'il juge pertinentes pour la requête.
La séparation des phases de préremplissage et de décodage permet d'ordonnancer les ressources plus efficacement. L'élément qui permet de reconstituer le processus complet est le cache clé-valeur.
Cache clé-valeur
L'expression clé-valeur (« KV », en anglais) désigne la manière dont un LLM interprète un mot ou une expression. Prenons une analogie simple : vous traitez la clé-valeur d'un élément de menu. Une portion de frites (la clé) coûte 3,99 € (la valeur). Pour chaque commande de portion de frites, la « valeur » calculée pour cette « clé » est donc de 3,99 €. Les LLM traitent les paires clé-valeur d'une manière similaire : ils associent la valeur correspondante à chaque clé (ou jeton textuel) dans leur cache.
Le cache est un espace de stockage de la mémoire à court terme. Sur un ordinateur, il s'agit de la partie de la mémoire que l'on vide pour améliorer les performances en cas de ralentissement.
Avec le cache clé-valeur, le modèle mémorise le dernier mot qu'il a généré, ce qui fournit du contexte pour le mot suivant et accélère le traitement. Sans ce cache, le modèle devrait à nouveau traiter la requête intégralement, mot par mot.
Inférence distribuée avec vLLM
L'objectif principal de vLLM consiste à améliorer l'efficacité du cache clé-valeur.
vLLM permet aux GPU de répartir les tâches et de fonctionner en parallèle. Il donne des instructions et guide le cache clé-valeur pour qu'il crée des raccourcis grâce au traitement par lots continu des réponses des utilisateurs.
Certaines entreprises telles que LinkedIn et Roblox utilisent la technologie vLLM pour évoluer plus efficacement.
Parallélisme de modèle avec vLLM
Si le modèle est trop volumineux pour s'exécuter sur un seul GPU, plusieurs approches sont possibles : le parallélisme de tenseur, le parallélisme de pipeline, la technique MoE ou une combinaison de ces trois méthodes.
Parallélisme de tenseur : un groupe de GPU effectue une tâche volumineuse en la divisant en éléments plus petits mais identiques. Dans ce cas, vLLM joue le rôle de coordinateur. Il orchestre la communication constante qui garantit la synchronisation de tous les éléments du système.
Parallélisme de pipeline : à la manière d'une chaîne d'assemblage, le parallélisme de pipeline divise une tâche en étapes séquentielles. Le traitement progresse d'une étape à la suivante jusqu'à ce que la tâche soit accomplie. Avec le parallélisme de pipeline, plusieurs serveurs forment une chaîne et exécutent le même modèle, qui serait trop volumineux pour la mémoire d'un seul serveur. Dans ce cas, vLLM supervise la chaîne en analysant les étapes et en veillant à ce que la tâche progresse d'un serveur à un autre à la fin de chaque étape.
Approche MoE : avec cette technique, des composants spécialisés du modèle (appelés « experts») sont entraînés pour traiter certains types d'entrées. Dans cette architecture, un réseau de blocage (« gating network » en anglais) achemine les tâches vers la partie la plus compétente du modèle pour générer plus rapidement des résultats plus précis. Le réseau de blocage intégré à vLLM orchestre ce processus en lisant chaque demande à son arrivée et activant la portion du modèle la plus adaptée pour la traiter.
Parallélisme de données avec vLLM
Le parallélisme de données s'avère lorsqu'un grand nombre d'utilisateurs envoient des requêtes simultanément. Contrairement au parallélisme de modèle, cette approche divise les données d'entrée (les demandes) plutôt que le modèle lui-même.
Le parallélisme de données est une technique de calcul qui répartit de nombreuses tâches entre plusieurs serveurs en plaçant une copie du modèle sur chaque GPU, puis en attribuant ces tâches à chaque serveur pour traiter les requêtes en parallèle.
Prenons l'exemple d'une application d'IA qui compte 1 000 utilisateurs interrogeant simultanément le LLM. le parallélisme de données permet de placer des copies du modèle sur 10 serveurs et de confier 100 requêtes à chaque serveur. En divisant ainsi la charge de travail en lots plus petits, l'application peut traiter davantage de demandes beaucoup plus rapidement.
De plus, vLLM peut renforcer ce dispositif en jouant le rôle d'accélérateur de performances, créant un environnement propice à un traitement encore plus rapide et plus efficace.
Framework llm-d
Le framework Open Source llm-d est conçu pour les grands modèles de langage distribués. Un framework Open Source est un ensemble de lignes de code et d'outils prérédigés accessible à tous, que les équipes de développement peuvent librement utiliser, modifier et distribuer.
Le framework llm-d standardise la mise en œuvre de l'inférence distribuée à grande échelle. Il fournit une structure, des techniques de communication et des supports de formation pour aider les entreprises à mettre en place une architecture distribuée.
En remplaçant les processus manuels et fragmentés par des processus clairs et intégrés, les entreprises peuvent accélérer le déploiement et la mise à l'échelle des systèmes, avec à la clé une mise en production plus rapide des projets pilotes.
Basée sur les charts Helm, la procédure d'installation est facile à maîtriser et personnalisable. L'interface en ligne de commande simplifie le déploiement avec des dépendances, des conditions préalables et des fonctions d'observabilité.
Conçu pour interagir avec vLLM et l'enrichir, le framework llm-d s'exécute dans tous les clusters Kubernetes, y compris Red Hat® OpenShift®.
Défis
Si l'inférence distribuée accélère le traitement et améliore l'évolutivité des systèmes d'IA, la coordination nécessaire pour effectuer ces tâches reste complexe. Voici quelques défis à prendre en compte :
Latence et bande passante
L'inférence distribuée répartit le modèle et traite les requêtes sur plusieurs serveurs et équipements situés à différents emplacements. Les informations et les données parcourent donc un long trajet avant de fournir un résultat à l'utilisateur. Si les connexions réseau entre les serveurs sont lentes ou encombrées, le processus ralentit, à l'instar d'une voiture dans un embouteillage.
Manque d'efficacité lors de l'allocation des ressources
Il est important d'équilibrer la distribution de l'inférence entre les serveurs, afin d'éviter que certains serveurs ne soient surchargés tandis que d'autres restent inactifs.
Tolérance aux pannes
Comme au théâtre, les serveurs ont besoin d'une doublure en cas de problème. Les systèmes distribués ne sont pas à l'abri des coupures de connexion, des défaillances de serveurs et des pannes de datacenters. Lorsqu'un composant du système tombe en panne, un autre doit pouvoir prendre le relais.
Complexité du débogage et de la résolution des problèmes
Dans le contexte de l'inférence distribuée, l'interconnexion des serveurs les rend plus rapides et plus efficaces. En revanche, il est plus difficile d'identifier la cause profonde d'un problème. C'est comme tenter de déterminer l'origine d'un mal de tête.
Surcharge de synchronisation
Imaginez une visioconférence avec 300 participants. Les systèmes doivent travailler plus intensément que d'habitude pour transmettre l'image et le son en temps réel. Parfois, l'image d'un participant se fige ou le son est décalé. La coordination synchronisée peut être difficile à gérer et nécessite une infrastructure adaptée.
Gestion et déploiement des modèles
La mise à jour d'un modèle avec l'inférence distribuée demande une stratégie et une orchestration minutieuse réalisée par des spécialistes. Il s'agit d'un processus complexe et chronophage.
Gestion des coûts
Dans les systèmes distribués, la gestion des coûts est plus complexe que pour un seul ordinateur. Les frais peuvent varier en fonction des habitudes d'utilisation, des transferts de données entre les différents sites et des besoins en matière de mise à l'échelle. Il est essentiel de s'appuyer sur des indicateurs de mesure pour optimiser les performances et la résilience, ainsi que pour gérer efficacement les coûts.
Sécurité
La répartition des serveurs sur plusieurs sites implique de sécuriser tous ces emplacements. Il faut chiffrer les communications, gérer les contrôles d'accès et se prémunir contre les attaques, autant de tâches qui requièrent l'expertise de spécialistes.
Avantages
L'inférence distribuée permet d'appliquer des LLM à un plus large éventail d'applications, Elle atténue les limites de taille et de vitesse associées à l'exécution de modèles sur un seul équipement matériel. Résultats : l'inférence distribuée réduit la latence (délai) et augmente la bande passante (capacité) afin que l'infrastructure existante puisse prendre en charge divers cas d'utilisation.
Cohérence et prévisibilité des performances
Les opérations d'inférence d'IA traditionnelles fonctionnent souvent comme des « boîtes noires », ce qui entraîne des temps de réponse imprévisibles et nuit à l'expérience utilisateur. Avec l'inférence distribuée, la planification intelligente analyse les demandes entrantes et les achemine vers le matériel le plus adapté. Résultat : l'expérience utilisateur est plus fiable et plus stable.
Gestion des coûts
L'inférence distribuée peut aussi bien faire grimper les coûts que les réduire. Plus le modèle est grand, plus il aura besoin d'accélérateurs matériels onéreux, comme des GPU. Toutefois, lorsqu'elle est correctement gérée, l'inférence distribuée permet de diminuer les coûts en optimisant l'utilisation du matériel.
Amélioration de l'observabilité
Lorsque les projets pilotes des modèles d'IA générative passent en production, il devient plus difficile de surveiller l'intégrité, les performances et les coûts des services d'IA. L'inférence distribuée offre un système hautement observable qui permet de surveiller de manière proactive les charges de travail d'IA, du traitement des jetons textuels jusqu'à la latence et au débit. Avec un tel niveau de visibilité, il devient possible d'identifier les goulets d'étranglement et de résoudre les problèmes afin de préserver la prévisibilité des performances et de maîtriser les coûts.
Réglementations en matière de confidentialité
Les lois sur la confidentialité des données, telles que le Règlement général sur la protection des données (RGPD) et la loi californienne sur la protection de la vie privée des consommateurs (CCPA), imposent des règles strictes en matière de collecte et de transfert de données personnelles. L'inférence distribuée respecte ces réglementations, car les données sont traitées localement et seules les parties non sensibles sont envoyées à un serveur central. Cette approche assure ainsi que les données personnelles restent dans certaines juridictions et favorise la souveraineté des données.
Localisation des données
Dans le cas de l'inférence distribuée, le processus d'inférence (calcul) est réparti sur de nombreux serveurs, mais les données ne bougent pas. Lorsque les données sont traitées là où elles sont créées, au lieu d'être envoyées à un serveur distant, les applications fonctionnent plus rapidement.
Nos solutions
Red Hat® AI est une plateforme de produits et de services qui permettent aux entreprises d'avancer dans le déploiement de l'IA, qu'elles soient tout au début du processus ou déjà prêtes à évoluer. Cette offre répond aux besoins en matière d'IA prédictive et générative, et convient aux cas d'utilisation spécifiques de chaque entreprise.
Red Hat AI inclut Red Hat AI Inference Server, une solution qui optimise l'inférence dans le cloud hybride pour accélérer le déploiement des modèles et réduire les coûts. Basé sur vLLM, ce serveur d'inférence optimise l'utilisation de GPU et diminue les délais de réponse.
Red Hat AI Inference Server comprend le référentiel Red Hat AI, une collection de modèles tiers validés et optimisés, qui favorise la flexibilité des modèles et la cohérence entre les équipes. Grâce à ce référentiel de modèles tiers, les entreprises peuvent réduire le délai de mise sur le marché et éliminer les obstacles financiers qui freinent l'adoption de l'IA.
Votre stratégie est-elle réellement souveraine ? Présentation de l’outil Red Hat Sovereignty Readiness Assessment
L’outil Red Hat Sovereignty Readiness Assessment est un service d’évaluation en libre-service basé sur le Web qui fournit une base de référence claire et objective du contrôle numérique de votre organisation dans sept domaines essentiels.