Utilizar algoritmos de preparação distribuídos com o Hyperopt
Nota
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 o uso do Optuna para uma experiência semelhante e acesso a algoritmos de ajuste de hiperparâmetros mais atualizados.
Além de algoritmos de treinamento de máquina única, como os do scikit-learn, você pode usar o Hyperopt com algoritmos de treinamento distribuídos. Nesse cenário, o Hyperopt gera avaliações com diferentes configurações de hiperparâmetro no nó do driver. Cada avaliação é executada a partir do nó do driver, dando-lhe acesso aos recursos completos do cluster. Esta configuração funciona com quaisquer algoritmos ou bibliotecas de aprendizagem automática distribuídos, incluindo Apache Spark MLlib e HorovodRunner.
Quando você usa Hyperopt com algoritmos de treinamento distribuídos, não passe um trials
argumento para fmin()
e, especificamente, não use a SparkTrials
classe. SparkTrials
foi concebido para distribuir ensaios para algoritmos que não são eles próprios distribuídos. Com algoritmos de treinamento distribuídos, use a classe padrão Trials
, que é executada no driver de cluster. O Hyperopt avalia cada teste no nó do driver para que o próprio algoritmo de ML possa iniciar o treinamento distribuído.
Nota
O Azure Databricks não dá suporte ao log automático no MLflow com a Trials
classe. Ao usar algoritmos de treinamento distribuído, você deve chamar manualmente o MLflow para registrar avaliações para o Hyperopt.
Exemplo de bloco de anotações: Usar Hyperopt com algoritmos MLlib
O bloco de anotações de exemplo mostra como usar o Hyperopt para ajustar os algoritmos de treinamento distribuído do MLlib.
Notebook de treinamento distribuído Hyperopt e MLlib
Exemplo de bloco de anotações: Usar Hyperopt com HorovodRunner
HorovodRunner é uma API geral usada para executar cargas de trabalho distribuídas de aprendizagem profunda em Databricks. O HorovodRunner integra o Horovod com o modo de barreira do Spark para fornecer maior estabilidade para trabalhos de treinamento de aprendizagem profunda de longa duração no Spark.
O bloco de anotações de exemplo mostra como usar o Hyperopt para ajustar o treinamento distribuído para aprendizado profundo com base no HorovodRunner.