3 min
lire
Introduction
En tant que partenaire AWS, notre expertise nous permet de relever des défis complexes pour nos clients. Récemment, nous avons eu
l'opportunité d'implémenter LiteLLM Proxy dans un environnement auto-hébergé sur AWS ECS pour l'un de nos clients
. Les principaux objectifs de ce projet étaient d'aborder les limitations de quotas, d'assurer une haute disponibilité et
d'équilibrer la charge entre plusieurs fournisseurs de modèles de langue.
Vue d'ensemble de LiteLLM Proxy
LiteLLM Proxy est un outil puissant qui sert d'interface unifiée pour accéder à plus de 100 modèles de langage
(LLM) différents. Il offre deux modes d'utilisation principaux :
- En tant que SDK permettant d'interagir avec les modèles par le biais du code.
- En tant que serveur proxy qui abstrait de multiples services derrière une seule API compatible avec l'OpenAI.
Pour ce projet, nous avons opté pour la deuxième approche, qui présente de nombreux avantages :
- Gestion centralisée des appels API vers différents fournisseurs de LLM.
- Flexibilité accrue pour passer d'un modèle à l'autre.
- Fonctionnalités avancées pour la gestion des quotas et de la sécurité.
Architecture globale de la solution
Notre solution repose sur une architecture robuste déployée sur AWS, comprenant les composants suivants :
- Amazon ECS (Elastic Container Service) pour l'hébergement et la gestion des conteneurs LiteLLM Proxy.
- Rôles IAM inter-comptes pour optimiser l'utilisation des quotas AWS Bedrock.
- Amazon Bedrock pour accéder à un catalogue de modèles d'IA.

Le déploiement de LiteLLM Proxy sur ECS a impliqué plusieurs étapes clés :
1. Création d'un bucket S3 pour stocker les fichiers de configuration du Proxy LiteLLM (format YAML).
2. Dans un cluster ECS existant :
- Création d'une définition de tâche pour initialiser la configuration depuis S3 et exécuter les conteneurs LiteLLM Proxy
. - Configurer les services ECS pour assurer une disponibilité continue.
3. Configurer des rôles IAM inter-comptes :
- Avec des politiques IAM personnalisées (configurables par modèle, par exemple).
- Assumable par les tâches ECS pour une gestion optimale des quotas sur plusieurs comptes AWS.
4. Activation de divers modèles d'IA dans les comptes AWS de différentes régions.
Pour automatiser ces étapes, nous avons développé des modules Terraform.
Comment récupérer la configuration du proxy LiteLLM depuis S3 dans ECS ?
Pour s'assurer que LiteLLM Proxy charge sa configuration dynamiquement, nous avons mis en place un conteneur init dans la définition de la tâche ECS
. Ce conteneur récupère le fichier de configuration à partir d'un bucket S3 avant que l'application principale
ne démarre. Ci-dessous se trouve un extrait de Terraform illustrant ce processus :

Comment faire des requêtes au Proxy LiteLLM ?
LiteLLM Proxy est entièrement compatible avec le format API d'OpenAI, ce qui facilite son utilisation avec des outils standard.
Vous trouverez ci-dessous des exemples de la façon de faire des requêtes au Proxy LiteLLM en utilisant curl et Python.
Utilisation de curl

Utilisation de Python (ou de tout autre SDK compatible avec l'OpenAI)

Gestion des quotas avec LiteLLM Proxy
L'un des principaux défis auxquels notre client était confronté était la gestion des quotas imposés par les fournisseurs de LLM. Pour surmonter
cette limitation, nous avons mis en œuvre une stratégie innovante :
- Utilisation de rôles IAM inter-comptes pour accéder aux quotas à partir de plusieurs comptes AWS.
- Configurer LiteLLM Proxy pour distribuer intelligemment les appels API à travers ces comptes.
Cette approche a permis au client de contourner les limitations initiales et d'assurer la continuité du service même pendant les pics d'utilisation de
.
L'un des principaux avantages de cette architecture en matière de sécurité est que l'utilisation des rôles IAM pour accéder aux modèles d'IA dans AWS Bedrock
élimine la nécessité de transmettre des mots de passe et d'autres informations d'identification sensibles.
Assurer la haute disponibilité
Pour garantir une disponibilité maximale des services, nous avons mis en œuvre plusieurs mesures :
- Déployer plusieurs instances de la tâche dans le service ECS LiteLLM Proxy.
- Mise en œuvre de stratégies d'échelonnement automatique pour les tâches ECS, ajustement dynamique de la capacité en fonction de la demande
. - Répartition des instances ECS sur plusieurs zones de disponibilité AWS pour une meilleure résilience.
Équilibrage de la charge entre les fournisseurs
LiteLLM Proxy offre différentes stratégies de routage pour optimiser l'utilisation de différents fournisseurs LLM :
- Rate-Limit Aware v2 (Asynchrone): Prend en compte les limites de débit pour éviter la surcharge des services
. - Basé sur la latence : Dirige les appels vers les déploiements ayant la plus faible latence.
- Sélection pondérée (asynchrone) (par défaut) : Attribue des poids aux modèles et distribue les appels
en conséquence. - Least Busy : Redirige les appels vers les modèles les moins utilisés.
- Stratégie de routage personnalisée : Permet de définir des règles de routage spécifiques basées sur les besoins de l'entreprise.
- Routage au moindre coût (asynchrone) : Dirige les appels vers les déploiements les moins coûteux.
Pour cette mise en œuvre, nous avons configuré un routage intelligent basé sur la stratégie "Least Busy". Cette approche
garantit une expérience utilisateur cohérente et de haute qualité.
Surveillance et journalisation
Pour assurer un suivi optimal de la solution, nous avons configuré et utilisé :
- Un groupe de journaux CloudWatch pour faciliter le dépannage et l'analyse (y compris les journaux de demandes et les données sur les coûts).
- Tableaux de bord CloudWatch pour visualiser les mesures clés pour ECS et LiteLLM Proxy.
- Alertes automatisées en cas d'anomalies ou de dépassements de seuils prédéfinis.
LiteLLM Proxy inclut également des fonctionnalités telles que des alertes (Slack, Discord, Microsoft Teams, webhooks) pour
notifications concernant :
- Performance du LLM.
- Budgets et dépenses.
- État du système (par exemple, problèmes de connexion à la base de données).
- Rapports d'utilisation quotidiens.
Pour une surveillance plus avancée, nous recommandons des outils spécialisés tels que AgentOps et LangTrace.
Fonctionnalités avancées et améliorations futures
Bien que notre implémentation actuelle réponde aux besoins immédiats du client, LiteLLM Proxy offre de nombreuses
fonctionnalités avancées supplémentaires :
- Clés d'API virtuelles pour une gestion fine de l'accès (pour les utilisateurs ou les applications).
- Filtrage basé sur l'IP pour renforcer la sécurité.
- Contrôle d'accès par modèle.
- Gestion avancée du budget et des limites tarifaires.
- Système d'étiquetage pour une meilleure organisation.
- Mécanismes de secours pour une meilleure résilience.
- Intégration de Prometheus pour une surveillance avancée.
À l'avenir, nous prévoyons d'explorer des fonctionnalités supplémentaires afin d'optimiser davantage la solution, notamment :
- Mise en place d'un système de cache pour réduire la latence et les coûts.
- Déployer des mécanismes de repli plus sophistiqués.
- Utiliser des indicateurs avancés pour optimiser en permanence les performances et les coûts.
Conclusion
L'implémentation de LiteLLM Proxy sur AWS ECS démontre comment une solution cloud bien architecturée peut
répondre aux défis complexes liés à l'utilisation intensive de LLM. En s'appuyant sur AWS ECS, les rôles IAM
inter-comptes et LiteLLM Proxy, nous avons construit avec succès une solution robuste, évolutive et rentable.
Cette approche a permis à notre client de :
- Dépasser les limites des quotas d'accès au programme d'éducation et de formation tout au long de la vie.
- Assurer une haute disponibilité de leurs services alimentés par l'IA.
Les enseignements tirés de ce projet soulignent l'importance d'une planification minutieuse, d'une architecture flexible et d'une surveillance continue
pour réussir dans les domaines évolutifs de l'IA et de l'informatique en nuage.
Comme nous continuons à explorer les possibilités offertes par LiteLLM Proxy et AWS, nous sommes confiants que cette solution
évoluera pour répondre aux besoins croissants des entreprises innovantes dans le domaine du développement web et de l'IA.