Acompanhe a execução do treinamento profundo em ML e aprendizagem
O componente de acompanhamento MLflow permite que o senhor log origine propriedades, parâmetros, métricas, tags e artefatos relacionados ao treinamento a machine learning ou ao modelo de aprendizagem profunda. 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 acompanhamento do MLflow é baseado em dois conceitos, experimentos e execução:
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.
Um experimento MLflow é a unidade primária de organização e controle de acesso para execução MLflow; todas as execuções do MLflow pertencem a um experimento. Os experimentos permitem visualizar, pesquisar e comparar execuções, bem como downloads artefatos de execução e metadados para análise em outras ferramentas.
Uma execução do MLflow corresponde a uma única execução do código do modelo.
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.
Observação
MLflow é instalado em clusters Databricks Runtime ML. Para usar o MLflow em clusters Databricks Runtime, você deve instalar a biblioteca mlflow
. Para obter instruções sobre como instalar uma biblioteca em clusters, consulte Instalar uma biblioteca em clusters. Os pacotes específicos a serem instalados para MLflow são:
Para Python, selecione a biblioteca Source PyPI e insira
mlflow
no campo do pacote .Para R, selecione biblioteca Source CRAN e digite
mlflow
no campo pacote .Para Scala, instale estes dois pacotes:
Selecione a biblioteca Source Maven e digite
org.mlflow:mlflow-client:1.11.0
no campo Coordenadas .Selecione a biblioteca Source PyPI e insira
mlflow
no campo do pacote .
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")
Notebook de exemplo de log
Este Notebook mostra como logs a execução de um experimento Notebook e de um experimento workspace . Somente a execução de MLflow iniciada em um Notebook pode ser logs no experimento Notebook . A execução do MLflow lançada de qualquer Notebook ou das APIs pode ser logs em um experimento workspace . Para obter informações sobre como visualizar a execução logs , consulte o experimento View Notebook e o experimento View 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.