Observação
O acesso a essa página exige autorização. Você pode tentar entrar ou alterar diretórios.
O acesso a essa página exige autorização. Você pode tentar alterar os diretórios.
O acompanhamento do MLflow permite registrar notebooks e conjuntos de dados de treinamento, parâmetros, métricas, rótulos e artefatos relacionados ao treinamento de um modelo de machine learning ou de aprendizado profundo. Para obter um notebook de exemplo para começar a usar o MLflow, consulte Tutorial: Modelos de ML clássicos de ponta a ponta no Azure Databricks.
Rastreamento do MLflow com experimentos, execuções e modelos
O processo de desenvolvimento de modelos é iterativo e pode ser desafiador acompanhar seu trabalho à medida que você desenvolve e otimiza um modelo. No Azure Databricks, você pode usar o acompanhamento do MLflow para ajudá-lo a acompanhar o processo de desenvolvimento do modelo, incluindo configurações de parâmetro ou combinações que você tentou e como eles afetaram o desempenho do modelo.
O acompanhamento do MLflow usa experimentos, execuções e modelos para registrar e acompanhar o desenvolvimento de modelos de ML e aprendizado profundo. Uma execução é uma execução única do código do modelo. Durante uma execução do MLflow, você pode registrar em log os parâmetros e os resultados do modelo. Um experimento é uma coleção de tentativas relacionadas. Em um experimento, você pode comparar e filtrar execuções para entender como seu modelo é executado e como seu desempenho depende das configurações de parâmetro, dados de entrada e assim por diante. Um modelo é uma coleção de artefatos que representam um modelo de machine learning treinado.
Com o MLflow 3, LoggedModels
eleva o conceito de um modelo produzido por uma execução, estabelecendo-o como uma entidade distinta para acompanhar o ciclo de vida do modelo em diferentes execuções de treinamento e avaliação.
- Organizar execuções de treinamento com experimentos do MLflow
- Acompanhar e comparar modelos usando modelos registrados no MLflow
- Exibir resultados de treinamento com execuções do MLflow
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.
API de acompanhamento 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.
O MLflow é pré-instalado em clusters ML do Databricks Runtime. 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. Para usar o MLflow 3 e seus recursos de acompanhamento de última geração, atualize para a versão mais recente (consulte Instalar o MLflow 3).
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")
Execuções de log e modelos em um experimento
O MLflow pode registrar automaticamente o código de treinamento escrito em muitas estruturas de aprendizado de máquina e aprendizado profundo. Essa é a maneira mais fácil de começar a usar o acompanhamento do MLflow. Consulte o notebook de exemplo.
Para obter mais controle sobre quais parâmetros e métricas são registrados ou para registrar artefatos adicionais, como arquivos CSV ou gráficos, use a API de log do MLflow. Consulte o notebook de exemplo.
Usar o registro automático para acompanhar o desenvolvimento de modelos
Este notebook de exemplo mostra como usar o registro automático com scikit-learn. Para obter informações sobre o registro automático com outras bibliotecas do Python, consulte a documentação de registro automático do MLflow.
MLflow 3
Registro automático do MLflow no notebook Python para MLflow 3
MLflow 2.x
Notebook Python de registro automático do MLflow
Use a API de log de eventosg para acompanhar o desenvolvimento do modelo
Este notebook de exemplo mostra como usar a API de log do Python. O MLflow também tem APIs REST, R e Java.
MLflow 3
Notebook Python da API de registro em log do MLflow para MLflow 3
MLflow 2.x
Notebook Python da API de log de eventos do MLflow
Registrar execuções em um experimento do espaço de trabalho
Por padrão, quando você treina um modelo em um notebook do Databricks, as execuções são registradas no experimento do notebook. 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 registrar execuções em um experimento do espaço de trabalho, use um código semelhante ao seguinte no 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 de workspace, consulte Criar experimento de workspace. Para obter informações sobre como exibir as execuções registradas, consulte Exibir experimento de notebook e Exibir experimento de workspace.
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 acompanhar o desenvolvimento de modelos usando o MLflow.