Usar algoritmos de treinamento distribuídos com o Hyperopt
Observação
A versão de código aberto do Hyperopt não está mais sendo mantida.
O Hyperopt será removido na próxima versão principal do DBR ML. O Azure Databricks recomenda usar o Optuna para uma experiência semelhante e acesso a algoritmos de ajuste de hiperparâmetros mais atualizados.
Além dos algoritmos de treinamento de computador único, como aqueles do Scikit-learn, você pode usar o Hyperopt com algoritmos de treinamento distribuído. Nesse cenário, o Hyperopt gera avaliações com configurações de hiperparâmetro diferentes no nó do driver. Cada avaliação é executada no nó do driver, dando a ele acesso aos recursos completos do cluster. Essa configuração funciona com as bibliotecas ou os algoritmos de machine learning distribuídos, incluindo a MLlib do Apache Spark e o HorovodRunner.
Ao usar o Hyperopt com os algoritmos de treinamento distribuído, não transmita um argumento trials
para fmin()
e, especificamente, não use a classe SparkTrials
. SparkTrials
foi projetado para distribuir as avaliações para algoritmos que não são distribuídos por conta própria. Com os algoritmos de treinamento distribuído, use a classe padrão Trials
, que é executada no driver do cluster. O Hyperopt avalia cada avaliação no nó do driver para que o próprio algoritmo de ML possa iniciar o treinamento distribuído.
Observação
O Azure Databricks dá suporte ao log automático no MLflow com a classe Trials
. Ao usar algoritmos de treinamento distribuído, você precisa chamar manualmente o MLflow para registrar em log as avaliações do Hyperopt.
Exemplo de notebook: usar o Hyperopt com algoritmos de MLlib
O exemplo de notebook mostra como usar o Hyperopt para ajustar os algoritmos de treinamento distribuído da MLlib.
Notebook de treinamento distribuído do Hyperopt e da MLlib
Exemplo de notebook: usar o Hyperopt com HorovodRunner
O HorovodRunner é uma API geral usada para executar cargas de trabalho de aprendizado profundo distribuídas no Databricks. O HorovodRunner integra o Horovod ao modo de barreira do Spark para fornecer maior estabilidade para trabalhos de treinamento de aprendizado profundo de longa duração no Spark.
O exemplo de notebook mostra como usar o Hyperopt para ajustar o treinamento distribuído para aprendizado profundo com base no HorovodRunner.