Utiliser des algorithmes d’entraînement distribué avec Hyperopt
Remarque
La version open source de Hyperopt n’est plus conservée.
Hyperopt sera supprimé dans la prochaine version principale de DBR ML. Azure Databricks recommande d’utiliser Optuna pour l’optimisation à nœud unique ou RayTune pour une expérience similaire à celle de la fonctionnalité d'optimisation distribuée d'Hyperopt actuellement déconseillée. En savoir plus sur l’utilisation de RayTune sur Azure Databricks.
En plus des algorithmes d’entraînement monomachine, tels que ceux de scikit-learn, vous pouvez utiliser Hyperopt avec des algorithmes d’entraînement distribué. Dans ce scénario, Hyperopt génère des essais avec des configurations d’hyperparamètres différentes sur le nœud du pilote. Chaque essai est exécuté à partir du nœud du pilote, ce qui lui donne accès aux ressources de cluster complètes. Cette configuration fonctionne avec tous les algorithmes ou bibliothèques de Machine Learning distribués, y compris Apache Spark MLlib et HorovodRunner.
Quand vous utilisez Hyperopt avec des algorithmes d’entraînement distribué, ne transmettez pas d’argument trials
à fmin()
, et en particulier, n’utilisez pas la classe SparkTrials
. SparkTrials
est conçu pour distribuer les essais pour les algorithmes qui ne sont pas eux-mêmes distribués. Avec les algorithmes d’entraînement distribué, utilisez la classe par défaut Trials
, qui s’exécute sur le pilote de cluster. Hyperopt évalue chaque essai sur le nœud du pilote afin que l’algorithme ML lui-même puisse lancer un entraînement distribué.
Remarque
Azure Databricks ne prend pas en charge la journalisation automatique dans MLflow avec la classe Trials
. Quand vous utilisez des algorithmes d’entraînement distribué, vous devez appeler manuellement MLflow afin de journaliser les essais pour Hyperopt.
Exemple de Notebook : Utiliser Hyperopt avec les algorithmes MLlib
L’exemple de notebook montre comment utiliser Hyperopt pour régler les algorithmes d’entraînement distribué de MLlib.
Notebook d’entraînement distribué 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 de Deep Learning distribuées sur Databricks. HorovodRunner intègre Horovod avec le mode barrière de Spark afin d’offrir une plus grande stabilité pour les travaux d’entraînement de Deep Learning de longue durée sur Spark.
L’exemple de notebook montre comment utiliser Hyperopt afin d’optimiser l’entraînement distribué pour le Deep Learning basé sur HorovodRunner.