Le projet Ray est un framework open-source conçu pour le calcul distribué, ciblant principalement les charges de travail basées sur Python dans les domaines de l'intelligence artificielle et de l'apprentissage automatique. Il fournit un modèle de programmation unifié pour faire évoluer les applications d'un simple ordinateur portable à un grand cluster, en abordant les complexités de l'exécution parallèle, de la tolérance aux pannes et de la gestion des ressources. Ray est largement adopté dans l'industrie et le milieu académique pour des tâches allant de l'entraînement en apprentissage profond au service d'applications de grands modèles de langage et à l'exécution de simulations complexes.
Ray a été initialement développé au laboratoire Berkeley AI Research (BAIR) de l'Université de Californie à Berkeley, avec sa première version publique en 2018. Le projet a été créé par une équipe comprenant Robert Nishihara, Philipp Moritz et Ion Stoica, qui ont ensuite fondé Anyscale, une entreprise fournissant une plateforme gérée pour Ray. Depuis, le framework a évolué en un écosystème open-source substantiel, avec des contributions de nombreuses organisations et une communauté de développeurs dynamique.
Architecture de base
À la base, Ray fournit deux primitives fondamentales : les tâches et les acteurs. Les tâches sont des fonctions sans état qui peuvent être exécutées en parallèle sur un cluster, tandis que les acteurs sont des objets avec état qui maintiennent leur propre état et peuvent être appelés à distance. Ces primitives sont construites sur un ordonnanceur distribué et un magasin d'objets en mémoire partagée, ce qui permet un partage efficace des données entre les processus parallèles. L'architecture est conçue pour être flexible, permettant aux développeurs d'exprimer un parallélisme à grain fin ou grossier avec des modifications minimales du code.
L'environnement d'exécution de Ray est composé de plusieurs éléments, notamment un magasin de contrôle global (GCS) qui gère les métadonnées du cluster, un ordonnanceur distribué qui assigne les tâches aux nœuds, et un magasin d'objets qui gère le transfert de données. Cette conception permet à Ray de passer à l'échelle jusqu'à des milliers de nœuds et de gérer des charges de travail avec un débit élevé et une faible latence. Le framework comprend également une suite de bibliothèques construites sur le noyau, telles que Ray Tune pour le réglage des hyperparamètres, Ray Serve pour le service de modèles, et Ray RLlib pour l'apprentissage par renforcement.
Entraînement distribué et charges de travail IA
Ray est devenu un choix populaire pour l'entraînement distribué de modèles de réseaux neuronaux, en particulier pour les applications de apprentissage profond et de IA générative. Il s'intègre avec les principaux frameworks d'apprentissage automatique comme TensorFlow et PyTorch, offrant une alternative légère et flexible aux systèmes d'entraînement distribué dédiés. La capacité de Ray à gérer des graphes de tâches dynamiques le rend bien adapté aux pipelines d'entraînement complexes, y compris ceux impliquant des modèles transformers et des architectures réseaux résiduels.
Pour les charges de travail d'apprentissage par renforcement, Ray RLlib offre une bibliothèque évolutive et prête pour la production qui prend en charge une large gamme d'algorithmes. Elle a été utilisée dans la robotique, les jeux et la recherche sur les systèmes autonomes. Ray Serve, quant à lui, permet le déploiement de modèles d'apprentissage automatique en tant que points de terminaison HTTP évolutifs, prenant en charge des fonctionnalités comme le traitement par lots, le routage des requêtes et la mise à l'échelle dynamique. Ces outils ont fait de Ray un composant clé de l'infrastructure de nombreuses entreprises d'IA et laboratoires de recherche.
Écosystème et intégrations
L'écosystème de Ray s'étend au-delà de ses bibliothèques de base, avec des intégrations avec les principaux fournisseurs de cloud et outils de traitement de données. Il fonctionne nativement sur Amazon Web Services, Azure et Google Cloud, et peut être déployé sur des clusters Kubernetes. Ray s'intègre également avec des frameworks de traitement de données comme Apache Spark et Dask, permettant aux utilisateurs de combiner le traitement de données distribué avec des charges de travail d'apprentissage automatique. Le projet a une forte présence dans la communauté open-source, avec des versions régulières et un nombre croissant de bibliothèques tierces.
L'adoption du framework est notable dans l'industrie de l'IA, avec des entreprises comme OpenAI, Anthropic et Google DeepMind utilisant Ray pour diverses tâches de recherche et de production. Sa flexibilité et ses performances en ont fait un outil standard pour faire évoluer les charges de travail d'IA, de l'entraînement de grands modèles au service de prédictions en temps réel. Le projet est également utilisé dans la recherche académique, avec de nombreux articles et projets exploitant Ray pour des expériences distribuées.
Communauté et gouvernance
Ray est un projet open-source sous licence Apache 2.0, avec un développement dirigé par Anyscale et des contributions d'une communauté mondiale. Le projet maintient un dépôt GitHub actif, avec une documentation complète, des tutoriels et des exemples. La gouvernance est structurée pour encourager la participation communautaire, avec un comité directeur et des groupes de travail supervisant différents aspects du projet. Des rencontres régulières, des conférences et des forums en ligne offrent des plateformes pour que les utilisateurs et les développeurs partagent des connaissances et collaborent.
La feuille de route du projet est axée sur l'amélioration des performances, de la convivialité et du support des paradigmes d'IA émergents. Les développements récents incluent des améliorations des algorithmes d'ordonnancement de Ray, un meilleur support pour le service de grands modèles de langage et une intégration améliorée avec Amazon Web Services et d'autres plateformes cloud. En 2024, Ray continue d'évoluer, avec un fort accent sur la démocratisation du calcul distribué pour un public plus large de développeurs et de chercheurs.
Impact et orientations futures
Le projet Ray a eu un impact significatif sur le domaine du calcul distribué et de l'infrastructure IA. Il a abaissé la barrière à l'entrée pour la création d'applications évolutives, permettant à de petites équipes et à des chercheurs individuels d'exploiter efficacement les ressources distribuées. Sa conception a influencé d'autres frameworks et a été largement citée dans la littérature académique. Le succès du projet se reflète dans sa large base d'utilisateurs, avec des millions de téléchargements et des déploiements dans des environnements de production dans divers secteurs.
À l'avenir, Ray est positionné pour jouer un rôle clé dans la prochaine génération de systèmes d'IA, en particulier à mesure que les modèles augmentent en taille et en complexité. La capacité du framework à gérer des charges de travail hétérogènes, du traitement des données à l'entraînement et au service de modèles, en fait une base polyvalente pour la construction de plateformes d'IA de bout en bout. Avec les contributions continues de la communauté et le soutien d'Anyscale, le projet Ray est susceptible de rester un élément central du paysage de l'infrastructure IA dans un avenir prévisible.