Qu'est-ce que Ray sur Databricks ?
Ray est un framework open source pour la mise à l’échelle des applications Python. Il comprend des bibliothèques spécifiques aux charges de travail d'IA, ce qui le rend particulièrement adapté au développement d'applications d'IA. Ray sur Databricks vous permet d'exécuter des applications Ray tout en bénéficiant de tous les avantages et fonctionnalités de la plateforme Databricks.
Avec Ray 2.3.0 et versions ultérieures, vous pouvez créer des clusters Ray et exécuter des applications Ray sur des clusters Apache Spark avec Databricks.
Pour plus d'informations sur les premiers pas avec le machine learning sur Ray, y compris des tutoriels et des exemples, consultez la documentation Ray. Pour plus d'informations sur l'intégration de Ray et d'Apache Spark, consultez la documentation de l'API Ray on Spark.
Qu'est-ce que Ray ?
Ray simplifie les systèmes distribués en fournissant des primitives Python de base pour créer des applications distribuées de toutes pièces. Pour les développeurs Python novices en systèmes distribués, il offre la même facilité d'utilisation que Python standard tout en gérant l'orchestration, la planification et la tolérance aux pannes.
Ray et Apache Spark sont des frameworks complémentaires. Ray excelle dans le parallélisme logique, gérant des tâches dynamiques et gourmandes en compute, comme le Machine Learning et le Machine Learning par renforcement. Apache Spark est spécialisé dans le parallélisme des données, traitant efficacement de grands datasets pour des tâches comme l'ETL et l'analytique des données. Ensemble, ils offrent une combinaison puissante pour le traitement des données et les calculs complexes.
Pourquoi exécuter Ray sur Databricks ?
L'exécution de Ray sur Databricks vous permet de tirer parti de l'étendue de l'écosystème Databricks, en améliorant les workflows de traitement des données et de Machine Learning avec des services et des intégrations qui ne sont pas disponibles dans Ray open source. Les avantages de l'exécution de Ray au sein de Databricks incluent :
- Plateforme unifiée : Databricks fournit une plateforme unifiée où vous pouvez exécuter des applications Ray aux côtés d'Apache Spark. Cette intégration prend en charge des opérations d'ETL de données transparentes, un transfert de données efficace et un calcul parallèle puissant au sein du même environnement de compute.
- Gouvernance et contrôle : Bénéficiez des avantages du suivi de lignage, du versioning des données et du contrôle d'accès avec Unity Catalog pour tous vos data assets, fichiers, modèles, et plus encore, garantissant conformité et sécurité.
- Gestion de l'infrastructure : utilisez des outils d'infrastructure comme le fournisseur Databricks Terraform et les Databricks Asset Bundles pour gérer vos clusters et Jobs, garantissant des Opérations rationalisées et une évolutivité.
- Clusters Ray gérés : les clusters Ray sont gérés dans le même environnement d'exécution qu'un cluster Apache Spark en cours d'exécution. Cela garantit l'évolutivité, la fiabilité et la facilité d'utilisation sans avoir besoin d'une configuration d'infrastructure complexe.
- Model Serving et monitoring : Connectez les modèles entraînés avec Ray Train à Model Serving pour des déploiements à haute disponibilité et faible latence. De plus, utilisez le profilage des données pour suivre la qualité des prédictions de modèle et la drift, afin de garantir des performances cohérentes.
- Développement ML amélioré : intégrez le service MLflow de Databricks, entièrement managé, pour suivre le développement de vos modèles, ce qui facilite la gestion des expérimentations et la reproductibilité dans vos applications Ray.
- **Workflows automatisés** : Utilisez Lakeflow Jobs pour automatiser vos processus, en créant des pipelines prêts pour la production qui rationalisent vos Opérations et réduisent les interventions manuelles.
- Gestion du code et collaboration : gérez votre code efficacement avec les dossiers Git de Databricks, permettant une intégration Git transparente pour le contrôle de version et le développement collaboratif pour le code de votre application Ray.
- Accès efficace aux données : connectez les applications Ray à Delta Lake, en tirant parti du vaste écosystème d'intégrations de données de Databricks pour étendre les capacités de Ray à un éventail plus large d'applications et de résultats.
En exécutant Ray sur Databricks, vous accédez à un écosystème intégré qui améliore votre traitement des données, votre Machine Learning et vos workflows opérationnels.
Cas d'utilisation – Machine Learning et au-delà
Ray est un outil polyvalent qui étend les capacités de Python au-delà des limites des opérations sur DataFrame, le rendant idéal pour les algorithmes distribués hautement personnalisés et spécialisés.
Machine learning et deep learning
Tirez parti des bibliothèques de machine learning de Ray pour améliorer vos workflows ML :
- Ajustement des hyperparamètres : optimisez les performances des modèles avec Ray Tune pour une recherche d’hyperparamètres performante et évolutive.
- **Entraînement distribué de modèles de deep learning** : Monter en charge les modèles de deep learning sur plusieurs nœuds avec la prise en charge de frameworks populaires tels que PyTorch, TensorFlow, HuggingFace et Keras. Idéal pour l’entraînement de modèles de vision informatique ou de grands modèles de langage (LLM).
- Machine Learning traditionnel : utilisez Ray pour distribuer l'entraînement, l'évaluation et l'inférence par batch pour les modèles de ML traditionnels créés avec des bibliothèques populaires telles que scikit-learn ou XGBoost.
Calcul haute performance (HPC)
Ray excelle dans la distribution des charges de travail HPC, ce qui le rend adapté pour :
- Calculs mathématiques : Effectuer des calculs complexes dans des domaines tels que la physique, la génomique ou la finance à l'aide de Ray Core pour un traitement parallèle efficace.
- Prévisions des modèles chronologiques : montez en charge vos modèles de prévision, en exécutant des estimations simultanément avec des packages de prévision tels que Prophet ou ARIMA.
Traitement des données et ingénierie des fonctionnalités
Ray peut également gérer diverses tâches de traitement de données :
- Fonctionnalités calculées : les tâches d'ingénierie des fonctionnalités complexes et gourmandes en compute peuvent tirer parti de l'architecture de compute distribué de Ray.
- Traitement audio, d'image et vidéo : Distribuez et accélérez le traitement des données multimédia, le rendant idéal pour les applications en reconnaissance vocale, classification d'images et analyse vidéo.
Limitations
- Ray sur Apache Spark est pris en charge uniquement pour le mode d'accès dédié, le mode d'accès partagé sans isolement et les clusters de jobs. Un cluster Ray créé avec l'intégration Ray-on-Spark ne peut pas être démarré sur des clusters utilisant des runtimes Serverless. Voir Modes d'accès.
Pour Ray sur le compute GPU serverless (actuellement en version bêta), consultez la formation distribuée avec Ray Train.
- Évitez d'exécuter
%pippour installer des packages sur un cluster Ray en cours d'exécution, car cela arrêterait le cluster. Installez plutôt les bibliothèques avant d'initialiser le cluster. - L'utilisation d'intégrations qui remplacent la configuration de
ray.util.spark.setup_ray_clusterpeut rendre le cluster Ray instable. Éviter la sur-souscription des ressources des clusters Ray dans les applications tierces. - Si vous rencontrez des erreurs comme
ncclInternalError: Internal check failed, cela indique un problème de communication réseau entre les GPU de votre cluster. Pour résoudre cette erreur, ajoutez l'extrait suivant dans votre code d'entraînement pour utiliser l'interface réseau principale.
import os
os.environ["NCCL_SOCKET_IFNAME"] = "eth0"
Voir les autres articles dans cette section.