L'inférence distribuée, qu'est-ce que c'est ?

Copier l'URL

4 principes clés à prendre en compte pour mettre en œuvre des technologies d'IA

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 requête, le système aide à l'analyser, puis l'achemine vers le serveur le plus adapté (comme dans l'exemple du dîner, où chaque ami prépare un plat en fonction de ses compétences). 

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, le système d'inférence distribuée a recours à diverses stratégies :

  • Découpage du modèle : si le modèle est trop volumineux pour un seul GPU, le système d'inférence distribuée utilise la technique du parallélisme des modèles pour le répartir entre plusieurs GPU.
  • Découpage des données : pour gérer plusieurs utilisateurs à la fois, le système d'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 entre 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, le système d'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.

Ordonnancement intelligent des opérations d'inférence

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. L'ordonnancement intelligent est un processus qui s'exécute en continu dans les systèmes d'inférence distribuée afin de faciliter cette coordination. 

L'ordonnancement intelligent s'apparente à la gestion d'un projet. Au lieu d'envoyer la requête au prochain serveur disponible, l'ordonnanceur vérifie les points suivants :

  • Quels serveurs disposent déjà d'informations mises en cache pertinentes concernant la requête ?
  • Quels serveurs ont la capacité nécessaire au traitement de la requête ?
  • Quels serveurs sont les plus adaptés pour effectuer la tâche demandée ?

L'ordonnancement intelligent 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 s'articule autour de 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) correspond à 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 est 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. Le cache clé-valeur est l'élément qui permet de tout assembler.

Cache clé-valeur

Une paire clé-valeur (KV ou Key Value en anglais) renvoie à la manière dont un LLM interprète un mot ou une expression. Prenons l'exemple d'un menu contenant la paire clé-valeur suivante : une portion de frites (clé) coûte 3,99 € (valeur). Pour chaque commande d'une 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. 

L'objectif principal de vLLM est d'améliorer l'efficacité du cache clé-valeur. 

La technologie vLLM permet aux GPU de répartir les tâches et de fonctionner en parallèle. Elle 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.

Parallélisme des modèles avec vLLM

Si le modèle est trop volumineux pour s'exécuter sur un seul GPU, plusieurs approches peuvent être adoptées : le parallélisme des tenseurs, le parallélisme des pipelines, la technique MoE (Mixture of Experts) ou une combinaison de ces trois méthodes.

Parallélisme des tenseurs : 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 et orchestre la communication constante qui garantit la synchronisation de tous les éléments du système. 

Parallélisme des pipelines : à la manière d'une chaîne d'assemblage, le parallélisme des pipelines 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 des pipelines, 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 à l'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 contrôle (« gating network ») 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 contrôle intégré à vLLM orchestre ce processus en lisant chaque requête à son arrivée et en activant la partie du modèle la plus adaptée pour la traiter. 

Parallélisme des données avec vLLM

Le parallélisme des données s'avère utile lorsqu'un grand nombre d'utilisateurs envoient des requêtes simultanément. Contrairement au parallélisme des modèles, cette technique divise les données d'entrée (les requêtes) plutôt que le modèle lui-même. 

Le parallélisme des 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 des 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 requêtes beaucoup plus rapidement. 

vLLM peut renforcer cette approche en jouant le rôle d'accélérateur de performances, créant un environnement propice à un traitement encore plus rapide et plus efficace. 

En savoir plus sur vLLM

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 prérédigées et d'outils accessibles à 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®. 

En savoir plus sur llm-d

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 la surcharge de certains serveurs tandis que d'autres restent inactifs.

Tolérance aux pannes 

Comme des acteurs au théâtre ayant une doublure, les serveurs ont besoin d'un solution de secours en cas de problème. Les systèmes distribués peuvent subir 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 

Prenons l'exemple d'une visioconférence comptant 300 participants. Pour transmettre l'image et le son en temps réel, les systèmes doivent travailler plus intensément que d'habitude. 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 entre plusieurs sites implique de sécuriser tous ces emplacements. Il faut chiffrer les communications, gérer les contrôles d'accès et protéger les systèmes contre les attaques, autant de tâches qui requièrent l'expertise de spécialistes. 

En savoir plus sur la sécurité de l'IA

L'inférence distribuée permet d'appliquer des LLM à un plus large éventail d'applications, car elle atténue les limites de taille et de vitesse associées à l'exécution de modèles sur un seul équipement matériel. L'inférence distribuée réduit la latence (délai) et augmente la bande passante (capacité), ce qui permet à l'infrastructure existante de 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, le système d'ordonnancement intelligent analyse les requêtes entrantes et les achemine vers le matériel le plus adapté. Cette approche permet de fournir une expérience utilisateur plus fiable et plus stable.

Gestion des coûts

L'inférence distribuée peut aussi bien faire augmenter les coûts que les réduire. Plus le modèle est grand, plus il aura besoin d'accélérateurs matériels coûteux, comme des GPU. Lorsqu'elle est correctement gérée, l'inférence distribuée permet toutefois de diminuer les coûts grâce à l'optimisation de 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 des données personnelles. L'inférence distribuée respecte ces réglementations, puisque les données sont traitées localement et seuls les éléments non sensibles sont envoyés à un serveur central. Cette approche assure ainsi que les données personnelles restent dans certaines zones géographiques 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 entre de nombreux serveurs, mais les données ne sont pas déplacées. 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. 

Les produits de la plateforme Red Hat AI s'appuient sur des technologies Open Source pour relever les défis de l'IA que les entreprises rencontrent à grande échelle. L'inférence distribuée fait partie de nos outils essentiels.

Comprise dans Red Hat AI, la solution Red Hat OpenShift AI permet de réduire les coûts liés à l'inférence grâce à une mise à disposition distribuée qui repose sur une version d'entreprise de vLLM. Pour simplifier l'exploitation, cette solution inclut des outils avancés qui permettent d'automatiser les déploiements, ainsi qu'un accès en libre-service à des modèles, outils et ressources.

Tous les produits de Red Hat AI offrent la flexibilité et la cohérence nécessaires pour développer, déployer et exécuter des modèles d'IA à grande échelle sur toutes les plateformes matérielles et dans tous les environnements de cloud hybride.

Découvrir Red Hat AI

Article

L'inférence d'IA, qu'est-ce que c'est ?

L'inférence d'intelligence artificielle est l'opération par laquelle un modèle d'IA fournit une réponse à partir de données. Il s'agit de l'étape finale d'un processus complexe d'apprentissage automatique.

Déployez l'IA avec Red Hat : bénéficiez de notre expertise, de nos formations et de notre assistance

Découvrez notre gamme unique de solutions d'IA. Red Hat AI peut vous aider à atteindre vos objectifs métier et informatiques grâce à l'intelligence artificielle.

En savoir plus

Le framework vLLM, qu'est-ce que c'est ?

Le framework vLLM est une bibliothèque de code Open Source qui vise à améliorer l'efficacité des calculs réalisés par les modèles de langage.

L'IA explicable, qu'est-ce que c'est ?

Appliquées au cours du cycle de vie de l'apprentissage automatique, les techniques d'IA explicable améliorent la clarté et la transparence des résultats que fournit l'IA.

Accélérer l'inférence d'IA grâce à vLLM : trois cas d'utilisation dans des entreprises

Cet article explique comment trois entreprises bien connues tirent parti de vLLM.

IA/ML : ressources recommandées

Articles associés