Aller au contenu principal

Utilisez des algorithmes de formation distribuée avec Hyperopt

remarque

La version open source de Hyperopt n'est plus maintenue.

Hyperopt n'est pas inclus dans Databricks Runtime for Machine Learning après 16.4 LTS ML. Databricks recommande d'utiliser soit Optuna pour l'optimisation à nœud unique, soit RayTune pour une expérience similaire à la fonctionnalité obsolète d'ajustement distribué des hyperparamètres d'Hyperopt. En savoir plus sur l'utilisation de RayTune sur Databricks.

En plus des algorithmes d'entraînement à machine unique tels que ceux de scikit-learn, vous pouvez utiliser Hyperopt avec des algorithmes d'entraînement distribués. Dans ce scénario, Hyperopt génère des essais avec différents paramètres d'hyperparamètres sur le nœud Driver. Chaque essai est exécuté depuis le nœud driver, lui donnant accès à toutes les ressources du cluster. Cette configuration fonctionne avec tous les algorithmes ou bibliothèques de Machine Learning distribués, y compris Apache Spark MLlib et HorovodRunner.

Lorsque vous utilisez Hyperopt avec des algorithmes d'entraînement distribués, ne transmettez pas d'argument trials à fmin() et, spécifiquement, n'utilisez pas la classe SparkTrials. SparkTrials est conçu pour distribuer les essais pour des algorithmes qui ne sont pas eux-mêmes distribués. Avec les algorithmes d'entraînement distribué, utilisez la classe Trials par default, qui s'exécute sur le driver du cluster. Hyperopt évalue chaque essai sur le nœud driver afin que l'algorithme de ML lui-même puisse initier l'entraînement distribué.

remarque

Databricks ne prend pas en charge la journalisation automatique vers MLflow avec la classe Trials. Lors de l'utilisation d'algorithmes d'entraînement distribué, vous devez appeler manuellement MLflow pour journaliser les essais pour Hyperopt.

Exemple de notebook : utilisation d’Hyperopt avec des algorithmes MLlib

L'exemple de Notebook montre comment utiliser Hyperopt pour ajuster les algorithmes d'entraînement distribués de MLlib.

Notebook de formation distribuée Hyperopt et MLlib

Exemple de Notebook : Utiliser Hyperopt avec HorovodRunner

HorovodRunner est une API générale utilisée pour exécuter des charges de travail d'apprentissage profond distribuées sur Databricks. HorovodRunner intègre Horovod avec le mode barrière de Spark afin d’offrir une meilleure stabilité pour les Jobs d’entraînement de deep learning de longue durée sur Spark.

Le Notebook d’exemple montre comment utiliser Hyperopt pour ajuster l’entraînement distribué de deep learning basé sur HorovodRunner.

Notebook d'entraînement distribué Hyperopt et HorovodRunner