Nota
O acesso a esta página requer autorização. Pode tentar iniciar sessão ou alterar os diretórios.
O acesso a esta página requer autorização. Pode tentar alterar os diretórios.
Nota
A versão de código aberto do Hyperopt não está mais sendo mantida.
O Hyperopt não está incluído no Databricks Runtime for Machine Learning após o 16.4 LTS ML. O Azure Databricks recomenda usar o Optuna para otimização de nó único ou o RayTune para uma experiência semelhante à da funcionalidade preterida de ajuste de hiperparâmetros distribuído Hyperopt. Saiba mais sobre como usar RayTune no Azure Databricks.
Melhores práticas
- As abordagens bayesianas podem ser muito mais eficientes do que a pesquisa em grelha e a pesquisa aleatória. Assim, com o algoritmo Hyperopt Tree of Parzen Estimators (TPE), você pode explorar mais hiperparâmetros e intervalos maiores. Usar o conhecimento do domínio para restringir o domínio de pesquisa pode otimizar o ajuste e produzir melhores resultados.
- Quando usa
hp.choice(), o Hyperopt devolve o índice da lista de escolhas. Portanto, o parâmetro registrado no MLflow também é o índice. Usehyperopt.space_eval()para recuperar os valores dos parâmetros. - Para modelos com longos tempos de treinamento, comece a experimentar pequenos conjuntos de dados e muitos hiperparâmetros. Use o MLflow para identificar os modelos com melhor desempenho e determinar quais hiperparâmetros podem ser corrigidos. Dessa forma, você pode reduzir o espaço de parâmetros à medida que se prepara para ajustar em escala.
- Aproveite o suporte Hyperopt para dimensões condicionais e hiperparâmetros. Por exemplo, ao avaliar várias variantes da descida de gradiente, em vez de limitar o espaço de hiperparâmetros aos hiperparâmetros comuns, o Hyperopt pode incluir hiperparâmetros condicionais — aqueles que só são adequados para um subconjunto das variantes. Para obter mais informações sobre como usar parâmetros condicionais, consulte Definindo um espaço de pesquisa.
- Ao usar
SparkTrials, configure adequadamente o paralelismo para clusters apenas com CPU e para clusters com GPU. No Azure Databricks, os clusters de CPU e GPU usam números diferentes de threads de executor por nó de trabalho. Os clusters de CPU usam vários threads de executor por nó. Os clusters de GPU usam apenas uma thread de execução por nó para evitar conflitos entre múltiplas tarefas do Spark que tentam usar a mesma GPU. Embora isso seja geralmente ideal para bibliotecas escritas para GPUs, significa que o paralelismo máximo é reduzido em clusters de GPU, portanto, esteja ciente de quantas GPUs cada avaliação pode usar ao selecionar tipos de instância de GPU. Consulte Clusters com GPU para mais detalhes. - Não use
SparkTrialsem clusters de dimensionamento automático. O Hyperopt seleciona o valor de paralelismo quando a execução começa. Se o cluster mais tarde for dimensionado automaticamente, o Hyperopt não poderá tirar partido do novo tamanho do cluster.
Resolução de Problemas
- Um valor de perda indicado como NaN (não é um número) geralmente significa que a função objetivo passada a
fmin()devolveu NaN. Isso não afeta outras execuções e você pode ignorá-lo com segurança. Para evitar esse resultado, tente ajustar o espaço do hiperparâmetro ou modificar a função objetiva. - Como o Hyperopt usa algoritmos de pesquisa estocásticos, a perda geralmente não diminui monotonicamente a cada execução. No entanto, esses métodos muitas vezes encontram os melhores hiperparâmetros mais rapidamente do que outros métodos.
- Tanto o Hyperopt como o Spark implicam uma sobrecarga que pode representar a maior parte da duração do ensaio em ensaios de curta duração (poucas dezenas de segundos). A aceleração observada pode ser pequena ou até mesmo zero.
Exemplo de bloco de anotações: práticas recomendadas para conjuntos de dados de tamanhos diferentes
SparkTrials executa os testes nos nós de processamento do Spark. Este notebook apresenta orientações sobre como mover conjuntos de dados de diferentes ordens de grandeza para nós de processamento ao utilizar SparkTrials.