Use algoritmos de treinamento distribuído com Hyperopt
Além dos algoritmos de treinamento de máquina única, como os do Scikit-Learn, você pode usar o Hyperopt com algoritmos de treinamento distribuído. Nesse cenário, o Hyperopt gera tentativas com diferentes configurações de hiperparâmetros no nó do driver. Cada tentativa é executada a partir do nó do driver, dando acesso a todos os recursos clusters . Essa configuração funciona com qualquer algoritmo ou biblioteca machine learning distribuído, incluindo Apache Spark MLlib e HorovodRunner.
Ao usar o Hyperopt com algoritmos de treinamento distribuído, não passe um argumento trials
para fmin()
e, especificamente, não use a classe SparkTrials
. SparkTrials
foi projetado para distribuir testes para algoritmos que não são distribuídos. Com algoritmos de treinamento distribuído, use a classe Trials
default , cuja execução no driver clusters . O Hyperopt avalia cada tentativa no nó do driver para que o próprio algoritmo de ML possa iniciar o treinamento distribuído.
Observação
Databricks não oferece suporte a log automático para MLflow com a classe Trials
. Ao usar algoritmos de treinamento distribuído, você deve chamar manualmente o MLflow para logs os testes para o Hyperopt.
Exemplo Notebook : Use Hyperopt com algoritmos MLlib
O Notebook de exemplo mostra como usar o Hyperopt para ajustar os algoritmos de treinamento distribuído do MLlib.
Exemplo Notebook : Use Hyperopt com HorovodRunner
HorovodRunner é uma API geral usada para executar cargas de trabalho de aprendizado profundo distribuídas em Databricks. O HorovodRunner integra o Horovod com o modo de barreira do Spark para fornecer maior estabilidade para Job de treinamento profundo de aprendizagem de longa duração no Spark.
O Notebook de exemplo mostra como usar o Hyperopt para ajustar o treinamento distribuído para aprendizagem profunda com base no HorovodRunner.