Dimensionner une application à l’aide de Ray¶
Le Container Runtime Snowflake s’intègre à Ray, un framework unifié open source permettant de faire évoluer les applications Python et d’AI. Cette intégration vous permet d’utiliser les capacités de calcul distribué de Ray sur Snowflake pour vos charges de travail de machine learning.
Ray est préinstallé et s’exécute en arrière-plan dans le Container Runtime ML Snowflake. Vous pouvez accéder à Ray à partir du runtime de conteneur des manières suivantes :
Snowflake Notebooks : Un environnement interactif où vous pouvez vous connecter à Ray, définir des tâches et faire évoluer votre cluster de manière dynamique pour le développement et l’expérimentation.
Tâches ML Snowflake : Soumettez vos applications Ray sous forme de tâches structurées et reproductibles. Vous pouvez spécifier la taille du cluster dans le cadre de la configuration des tâches pour les charges de travail de production.
Lorsque vous exécutez le Container Runtime dans un notebook Snowflake ou une tâche ML, le processus Ray est automatiquement lancé dans le cadre de ce conteneur.
Utilisez le code Python suivant pour vous connecter au cluster :
Important
Veillez à toujours utiliser l’adresse "auto" lorsque vous vous connectez au cluster Ray. L’initialisation avec l’adresse "auto" dirige votre application vers le nœud principal du cluster Ray que Snowflake a provisionné pour votre session.
Évolution de votre cluster Ray¶
Après avoir établi la connexion au cluster Ray, vous pouvez ajuster sa taille pour répondre aux exigences de calcul de votre charge de travail.
Utilisez les approches suivantes pour faire évoluer votre cluster Ray :
Dans un notebook, vous pouvez augmenter ou réduire dynamiquement votre cluster à l’aide de la fonction scale_cluster. Cette fonction est idéale pour les workflows interactifs où les besoins en ressources peuvent évoluer.
Lorsque vous spécifiez expected_cluster_size=5, vous obtenez 1 nœud principal et 4 nœuds de travail.
Pour les tâches ML, vous définissez la taille du cluster de manière déclarative dans la définition de votre tâche. La spécification de la taille du cluster dans la définition de la tâche garantit que le nombre requis de nœuds est provisionné au démarrage de la tâche.
Par exemple, votre décorateur de tâche peut inclure :
Lorsque vous avez fini d’utiliser votre cluster, vous pouvez le réduire. Pour plus d’informations, voir Nettoyage.
Surveillance avec le tableau de bord Ray¶
Si vous exécutez une tâche à partir d’un notebook Snowflake, vous pouvez utiliser le tableau de bord Ray pour surveiller votre cluster. Le tableau de bord est une interface Web qui vous permet de visualiser les ressources, les tâches et les performances du cluster. Utilisez le code suivant pour obtenir l’URL du tableau de bord :
Ouvrez l’URL dans un nouvel onglet du navigateur, puis connectez-vous avec vos identifiants Snowflake.
Cas d’utilisation avancés¶
Cette section couvre les fonctions avancées de Ray pour les charges de travail complexes et la migration d’applications existantes.
Création et opération de charges de travail distribuées avec Ray¶
Ray fournit des composants qui vous permettent de créer et de gérer des charges de travail distribuées. Il s’agit notamment de composants fondamentaux via Ray Core avec des primitives essentielles pour créer et faire évoluer ces charges de travail.
Il comprend également les bibliothèques suivantes qui vous permettent de créer vos propres workflows pour le prétraitement des données, l’entraînement ML, le réglage des hyperparamètres et l’inférence des modèles :
Ray Data : Traitement et transformation de données évolutifs
Ray Train : Entraînement et mise au point distribués des modèles ML
Ray Tune : Optimisation des hyperparamètres avec des algorithmes de recherche avancés
Ray Serve : Service et inférence du modèle
Les sections suivantes décrivent comment vous pouvez utiliser ces bibliothèques directement, tandis que les interfaces Snowflake natives construites sur Ray fournissent des outils supplémentaires pour créer, déployer et opérationnaliser des applications basées sur Ray.
Ray Core : Tâches et acteurs¶
Ray fournit les primitives de calcul distribué suivantes :
Tâches : Fonctions sans état qui s’exécutent à distance et renvoient des valeurs
Acteurs : Classes avec état pouvant être instanciées à distance et appelées plusieurs fois
Objets : Valeurs immuables stockées dans le magasin d’objets distribué de Ray
Ressources : CPU, GPU et besoins en ressources personnalisées pour les tâches et les acteurs
L’exemple suivant montre comment utiliser une tâche et des acteurs Ray de base pour effectuer une régression linéaire :
Ray Train : Entraînement distribué¶
Ray Train est une bibliothèque qui permet un entraînement distribué et un affinage des modèles. Vous pouvez exécuter votre code d’entraînement sur une seule machine ou sur un cluster entier.
Vous pouvez utiliser Ray Train pour une exécution à un ou plusieurs nœuds.
Pour l’entraînement multi-nœuds, vous devez gérer les éléments suivants :
Stockage distribué pour les points de contrôle (pas de système de fichiers partagé entre les nœuds)
Chargement de données personnalisé
Configuration manuelle des ressources pour une coordination entre l’ingestion de données et l’utilisation des ressources d’entraînement
Pour une expérience rationalisée, utilisez les fonctions d’entraînement optimisé pour XGBoost ,LightGBM, etPyTorch. Sur le même cluster Ray, ces fonctions gèrent les éléments suivants :
Point de contrôle basé sur une zone de préparation Snowflake
Ingestion de données Snowflake natives
Allocation de ressources intégrées pour l’ingestion de données et l’entraînement
Ray Data : Traitement des données évolutif¶
Ray Data fournit un traitement des données distribué et évolutif pour les charges de travail ML. Il peut traiter des ensembles de données d’une taille supérieure à la mémoire du cluster grâce à l’exécution en continu et à l’évaluation différée.
Note
Snowflake propose une intégration native pour transformer n’importe quelle source de données Snowflake en données Ray. Pour plus d’informations, consultez les pages Connecteur de données et Ingestion de données Ray.
Utilisez Ray Data pour :
Le traitement de grands ensembles de données qui ne tiennent pas dans la mémoire d’un seul nœud
Le prétraitement des données distribuées et ingénierie des fonctionnalités
La création de pipelines de données qui s’intègrent à d’autres bibliothèques Ray
Ray Tune : Réglage distribué des hyperparamètres¶
Ray Tune fournit une optimisation distribuée des hyperparamètres avec des algorithmes de recherche avancés et des capacités d’arrêt précoce. Pour une expérience parfaitement intégrée et optimisée lors de la lecture de sources de données Snowflake, utilisez l’API native d’optimisation des hyperparamètres (HPO). Pour plus d’informations sur l’utilisation de l’optimisation HPO, voir Optimiser les hyperparamètres d’un modèle.
Si vous recherchez une approche plus personnalisable pour une mise en œuvre HPO distribuée, utilisez Ray Tune.
Vous pouvez utiliser Ray Tune pour les cas d’utilisation suivants :
Optimisation des hyperparamètres sur plusieurs essais en parallèle
Algorithmes de recherche avancés (optimisation bayésienne, entraînement basé sur la population)
Analyses à grande échelle d’hyperparamètres nécessitant une exécution distribuée
Service du modèle¶
Pour le service du modèle, vous pouvez utiliser les capacités natives de Snowflake. Pour plus d’informations, voir Déployer des modèles pour l’inférence en temps réel (REST API).
Soumettre et gérer des applications distribuées sur des clusters Ray¶
Utilisez les tâches Ray pour soumettre et gérer des applications distribuées sur des clusters Ray en bénéficiant d’une meilleure isolation des ressources et d’une meilleure gestion du cycle de vie. Pour toutes les exécutions basées sur des tâches qui nécessitent un accès à un cluster Ray, Snowflake recommande d’utiliser une tâche ML, où vous pouvez définir la logique d’application Ray. Pour les instances où vous avez besoin d’un accès direct à l’interface Ray Job, par exemple pour migrer une implémentation existante, vous pouvez utiliser la primitive Ray Job comme décrit dans la documentation Ray.
Utilisez les tâches Ray pour :
la production de pipelines ML et de workflows planifiés
les charges de travail de longue durée nécessitant une tolérance aux pannes
le traitement par lots et traitement de données à grande échelle
Mise à l’échelle des clusters Ray avec options¶
À partir d’un notebook Snowflake, vous pouvez mettre à l’échelle vos clusters Ray pour répondre précisément aux exigences de calcul. Un cluster se compose d’un nœud principal (coordinateur) et de nœuds de travail (pour l’exécution des tâches).
Moniteur de ressources¶
Nettoyage¶
Une fois que vous avez terminé avec le cluster, vous pouvez le réduire pour éviter des frais supplémentaires. Utilisez le code suivant pour le réduire :