Acompanhe o desenvolvimento do modelo usando o MLflow
MLflow O acompanhamento permite que o senhor acesse o log Notebook e treine conjuntos de dados, parâmetros, métricas, tags e artefatos relacionados ao treinamento de um modelo de aprendizagem profunda ou de aprendizado de máquina. Para obter um exemplo de Notebook para começar com MLflow, consulte o tutorial: Modelos ML de ponta a ponta em Databricks.
MLflow acompanhamento com experimentos e execução
O processo de desenvolvimento do modelo é iterativo e pode ser difícil acompanhar seu trabalho à medida que você desenvolve e otimiza um modelo. Em Databricks, o senhor pode usar oMLflow acompanhamento para ajudá-lo a acompanhar o processo de desenvolvimento do modelo, inclusive as configurações ou combinações de parâmetros que tentou e como elas afetaram o desempenho do modelo.
MLflow O acompanhamento usa experimentos e execução para log e rastrear seu desenvolvimento do modelo ML e aprendizagem profunda. Uma execução é uma única execução do código do modelo. Durante a execução de um MLflow, o senhor pode usar os modelos logpara obter parâmetros e resultados. Um experimento é uma coleção de execuções relacionadas. Em um experimento, o senhor pode comparar e filtrar a execução para entender o desempenho do seu modelo e como esse desempenho depende das configurações dos parâmetros, dos dados de entrada e assim por diante.
Observação
A partir de 27 de março de 2024, o site MLflow impõe um limite de cota sobre o número total de parâmetros, tags, e métricas os passos para todas as execuções existentes e novas, e o número total de execuções para todos os experimentos existentes e novos, consulte limites de recurso. Se o senhor atingir a cota de execuções por experimento, o site Databricks recomenda que exclua as execuções de que não precisa mais usando a opção excluir execução API em Python. Se o senhor atingir outros limites de cota, a Databricks recomenda ajustar sua estratégia de registro para manter-se abaixo do limite. Se precisar de um aumento nesse limite, entre em contato com a equipe Databricks account com uma breve explicação do seu caso de uso, por que as abordagens de atenuação sugeridas não funcionam e o novo limite solicitado.
MLflow acompanhamento API
A API de acompanhamento do MLflow logs parâmetros, métricas, tags e artefatos de uma execução de modelo. A API de acompanhamento se comunica com um servidor de acompanhamento MLflow. Quando você usa o Databricks, um servidor de acompanhamento hospedado pelo Databricks logs os dados. O servidor de acompanhamento MLflow hospedado possui APIs Python, Java e R.
MLflow está pré-instalado no Databricks Runtime ML clustering. Para usar o MLflow em um cluster Databricks Runtime, o senhor deve instalar a biblioteca mlflow
. Para obter instruções sobre a instalação de uma biblioteca em um cluster, consulte Instalar uma biblioteca em um cluster.
Onde a execução do MLflow são logs
Todas as execuções do MLflow são logs do experimento ativo, que podem ser configurados usando qualquer uma das seguintes formas:
Use o parâmetro
experiment_id
no comando mlflow.começar().Defina uma das variáveis de ambiente do MLflow MLFLOW_EXPERIMENT_NAME ou MLFLOW_EXPERIMENT_ID.
Se nenhum experimento ativo for definido, a execução será logs no experimentoNotebook .
Para logs os resultados de seu experimento em um servidor de acompanhamento MLflow hospedado remotamente em um workspace diferente daquele em que você está executando seu experimento, defina o URI de acompanhamento para fazer referência ao workspace remoto com mlflow.set_tracking_uri()
e defina o caminho para seu experimento no workspace remoto usando mlflow.set_experiment()
.
mlflow.set_tracking_uri(<uri-of-remote-workspace>)
mlflow.set_experiment("path to experiment in remote workspace")
Se você estiver executando experimentos localmente e quiser logs os resultados dos experimentos no servidor de acompanhamento do Databricks MLflow, forneça sua instância workspace do Databricks (DATABRICKS_HOST
) e access token pessoal do Databricks (DATABRICKS_TOKEN
). Em seguida, você pode definir o URI de acompanhamento para fazer referência ao workspace com mlflow.set_tracking_uri()
e definir o caminho para seu experimento usando mlflow.set_experiment()
. Consulte Executar a autenticação access token pessoal do Databricks para obter detalhes sobre onde encontrar valores para a variável de ambiente DATABRICKS_HOST
e DATABRICKS_TOKEN
.
O exemplo de código a seguir demonstra a configuração desses valores:
os.environ["DATABRICKS_HOST"] = "https://dbc-1234567890123456.cloud.databricks.com" # set to your server URI
os.environ["DATABRICKS_TOKEN"] = "dapixxxxxxxxxxxxx"
mlflow.set_tracking_uri("databricks")
mlflow.set_experiment("/your-experiment")
log execução para um experimento
MLflow pode log automaticamente o código de treinamento escrito em muitos frameworks de aprendizagem profunda e aprendizado de máquina. Essa é a maneira mais fácil de começar a usar o MLflow acompanhamento. Veja o exemplo do Notebook.
Para obter mais controle sobre quais parâmetros e métricas são registrados ou para log artefatos adicionais, como arquivos CSV ou graficar, use o MLflow logging API. Veja o exemplo do Notebook.
Use o registro automático para acompanhar o desenvolvimento do modelo
Este exemplo de Notebook mostra como usar o autologging com scikit-learn. Para obter informações sobre autologging com outras Python bibliotecas, consulte a documentação sobre autologging em MLflow .
Use a API de registro para acompanhar o desenvolvimento do modelo
Este exemplo de Notebook mostra como usar o Python logging API. O MLflow também tem APIs REST, R e Java.
log execução para um experimento workspace
Pelo default, quando o senhor treina um modelo em um Databricks Notebook, a execução é registrada no experimento do Notebook. Somente a MLflow execução iniciada em um Notebook pode ser registrada no experimento do Notebook.
MLflow A execução iniciada a partir de qualquer Notebook ou do site APIs pode ser registrada em um experimento workspace. Para log executar um experimento workspace, use um código semelhante ao seguinte em seu Notebook ou na chamada API:
experiment_name = "/Shared/name_of_experiment/"
mlflow.set_experiment(experiment_name)
Para obter instruções sobre como criar um experimento workspace, consulte Criar experimento workspace . Para obter informações sobre como visualizar a execução de registros, consulte visualizar o experimento do Notebook e visualizar o experimento do workspace .
Acesse o servidor de acompanhamento MLflow de fora do Databricks
Você também pode gravar e ler do servidor de acompanhamento de fora do Databricks, por exemplo, usando a CLI do MLflow. Consulte Acessar o servidor de acompanhamento do MLflow de fora do Databricks.
Analisar a execução do MLflow programaticamente
Você pode acessar os dados de execução do MLflow programaticamente usando as duas APIs DataFrame a seguir:
A API search_runs do cliente Python MLflow retorna um DataFrame pandas.
A fonte de dados do experimento MLflow retorna um DataFrame do Apache Spark.
Este exemplo demonstra como usar o cliente Python do MLflow para criar um painel que visualiza as mudanças nas métricas de avaliação ao longo do tempo, rastreia o número de execuções iniciadas por um usuário específico e mede o número total de execuções de todos os usuários:
Por que as métricas e saídas de treinamento do modelo podem variar
Muitos dos algoritmos usados em ML possuem um elemento aleatório, como amostragem ou condições iniciais aleatórias dentro do próprio algoritmo. Quando você ensina um modelo usando um desses algoritmos, os resultados podem não ser os mesmos a cada execução, mesmo que você comece a execução com as mesmas condições. Muitas bibliotecas oferecem um mecanismo de propagação para corrigir as condições iniciais desses elementos estocásticos. No entanto, pode haver outras fontes de variação que não são controladas pelas sementes. Alguns algoritmos são sensíveis à ordem dos dados e os algoritmos de ML distribuídos também podem ser afetados pela forma como os dados são particionados. Geralmente esta variação não é significativa e não é importante no processo de desenvolvimento do modelo.
Para controlar a variação causada por diferenças na ordenação e no particionamento, use as funções repartition e sortWithinPartitions do PySpark.