Acompanhe as execuções de treinamento de ML e aprendizado profundo
O componente de rastreamento do MLflow permite registrar propriedades de origem, parâmetros, métricas, tags e artefatos relacionados ao treinamento de um modelo de aprendizado profundo automático. Para começar a usar o MLflow, experimente um dos tutoriais de início rápido do MLflow.
Acompanhamento do MLflow com experimentos e execuções
O acompanhamento do MLflow baseia-se em dois conceitos, experimentos e execuções:
Observação
A partir de 27 de março de 2024, o MLflow impõe um limite de cota no número total de parâmetros, tags e etapas de métricas para todas as execuções existentes e novas, e no número total de execuções para todos os experimentos novos e existentes. Veja Limites de recursos. Se você atingir a cota de execuções por experimento, o Databricks recomenda excluir execuções que não são mais necessárias usando a API de exclusão de execuções em Python. Se atingir outros limites de quota, a Databricks recomenda ajustar a sua estratégia de registo para se manter abaixo do limite. Se necessitar de um aumento para esse limite, contacte a sua equipa de conta da Databricks com uma breve explicação do seu caso de utilização, por que razão as abordagens de mitigação sugeridas não funcionam e o novo limite que solicita.
Um experimento do MLflow é a principal unidade da organização e o controle de acesso das execuções do MLflow. Todas as execuções de MLflow pertencem a um experimento. Os experimentos do MLflow permitem visualizar, pesquisar e comparar execuções, bem como baixar artefatos de execução ou metadados para análise em outras ferramentas.
Uma execução do MLflow corresponde a uma única execução do código do modelo.
Organizar execuções de treinamento com experimentos do MLflow
A API de Acompanhamento de MLflow registra parâmetros, métricas, marcas e artefatos de uma operação de modelo. A API de Acompanhamento se comunica com um servidor de acompanhamento do MLflow. Quando você usa o Databricks, um servidor de acompanhamento hospedado pelo Databricks registra os dados em logs. O servidor de acompanhamento do MLflow hospedado tem APIs Python, Java e R.
Observação
O MLflow é instalado em clusters Databricks Runtime ML. Para usar o MLflow em um cluster Databricks Runtime, você deve instalar a biblioteca mlflow
. Para obter instruções sobre como instalar uma biblioteca em um cluster, consulte Instalar uma biblioteca em um cluster. Os pacotes específicos para instalação do MLflow são:
- Para Python, selecione Origem da Biblioteca PyPI e insira
mlflow
no campo Pacote. - Para R, selecione Origem da Biblioteca CRAN e insira
mlflow
no campo Pacote. - Para Scala, instale estes dois pacotes:
- Selecione Origem da Biblioteca Maven e insira
org.mlflow:mlflow-client:1.11.0
no campo Coordenadas. - Selecione a Origem da Biblioteca PyPI e insira
mlflow
no campo Pacote.
- Selecione Origem da Biblioteca Maven e insira
Onde as execuções do MLflow são registradas
Todas as execuções do MLflow são registradas no experimento ativo, que pode ser definido usando qualquer uma das seguintes maneiras:
- Use o comando mlflow.set_experiment().
- Use o
experiment_id
parâmetro no comando mlflow.start_run(). - Defina uma das variáveis de ambiente MLflow MLFLOW_EXPERIMENT_NAME ou MLFLOW_EXPERIMENT_ID.
Se nenhum experimento ativo for definido, as execuções serão registradas no experimento de notebook.
Para registrar os resultados do experimento em um servidor de Acompanhamento do MLflow hospedado remotamente em um workspace diferente do que você está executando seu experimento, defina o URI de rastreamento para fazer referência ao workspace remoto com mlflow.set_tracking_uri()
e defina o caminho para o 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 fazendo experimentos localmente e quiser registrar os resultados do experimento no servidor de Acompanhamento de MLflow do Databricks, forneça a instância do workspace do Databricks (DATABRICKS_HOST
) e o token de acesso pessoal do Databricks (DATABRICKS_TOKEN
). Em seguida, você pode definir o URI de acompanhamento para referenciar o workspace com mlflow.set_tracking_uri()
e definir o caminho para o experimento usando mlflow.set_experiment()
. Consulte Executar a autenticação de token de acesso pessoal do Azure Databricks para obter detalhes sobre onde encontrar valores para as variáveis 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")
Registrar em log o notebook de exemplo
Este notebook mostra como registrar em log as execuções em um experimento de notebook e em um experimento de workspace. Somente as execuções do MLflow iniciadas em um notebook podem ser registradas no experimento de notebook. As execuções do MLflow lançadas de qualquer notebook ou das APIs podem ser registradas em um experimento de workspace. Para obter informações sobre como exibir as execuções registradas, consulte Exibir experimento de notebook e Exibir experimento de workspace.
Registrar o notebook de execuções de MLflow
Você pode usar as APIs do MLflow Python, Java ou Scala e R para iniciar as execuções e registrar dados de execução. Para obter detalhes, confira os notebooks de exemplo do MLflow.
Acessar o servidor de acompanhamento do MLflow fora do Azure Databricks
Você também pode gravar e ler no servidor de rastreamento de fora Azure Databricks, por exemplo, usando a CLI do MLflow. Consulte Acessar o servidor de rastreamento do MLflow de fora do Azure Databricks.
Analisar as execuções do MLflow programaticamente
Você pode acessar dados de execução do MLflow programaticamente usando as duas APIs de DataFrame a seguir:
- A API search_runs do cliente Python do MLflow retorna um DataFrame pandas.
- A fonte de dados do experimento MLflow retorna um DataFrame Apache Spark.
Este exemplo demonstra como usar o cliente Python do MLflow para criar um painel que visualize alterações 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 em todos os usuários:
Por que as métricas e saídas do treinamento do modelo podem variar
Muitos dos algoritmos usados no ML têm um elemento aleatório, como amostragem ou condições iniciais aleatórias dentro do próprio algoritmo. Quando você treina um modelo usando um desses algoritmos, os resultados podem não ser os mesmos a cada execução, mesmo que você inicie 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 por sementes. Alguns algoritmos são sensíveis à ordem dos dados, e algoritmos de ML distribuídos também podem ser afetados pela forma como os dados são particionados. Geralmente, essa 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 do PySpark repartition e sortWithinPartitions.
Exemplos de acompanhamento do MLflow
Os notebooks a seguir demonstram como treinar vários tipos de modelos e acompanhar os dados de treinamento no MLflow e como armazenar dados de acompanhamento no Delta Lake.