Share via


Gerenciar código de treinamento com execuções do MLflow

Este artigo descreve as execuções do MLflow para gerenciar o treinamento do aprendizado de máquina. Ele também inclui diretrizes sobre como gerenciar e comparar execuções em Experimentos.

Uma execução do MLflow corresponde a uma única execução do código do modelo. Cada execução registra as seguintes informações:

  • Origem: nome do notebook que iniciou a execução ou o nome do projeto e o ponto de entrada para a execução.
    • Versão: hash de confirmação do Git se o notebook estiver armazenado em uma Pasta GIT do Databricks ou executado em um Projeto do MLflow. Caso contrário, revisão do bloco de anotações.
    • Hora de início e de término: hora de início e de término da execução.
    • Parâmetros: parâmetros de modelo salvos como pares chave-valor. As chaves e os valores são cadeias de caracteres.
    • Métricas: métricas de avaliação de modelo salvas como pares chave-valor. O valor é numérico. Cada métrica pode ser atualizada durante a operação (por exemplo, para acompanhar como a função de perda do modelo está convergindo) e registros MLflow e permite visualizar o histórico da métrica.
    • Marcas: execute metadados salvos como pares de chave-valor. Você pode atualizar marcações durante e após a conclusão de uma operação. As chaves e os valores são cadeias de caracteres.
    • Artefatos: arquivos de saída em qualquer formato. Por exemplo, você pode registrar imagens, modelos (por exemplo, um modelo scikit-learn em conserva) e arquivos de dados (por exemplo, um arquivo Parquet) como um artefato.

Todas as execuções do MLflow são registradas no experimento ativo. Se você não definiu explicitamente um experimento como o experimento ativo, as execuções serão registradas no experimento do notebook.

Exibir execuções

Você pode acessar uma execução de sua página de experimento pai ou diretamente do notebook que criou a execução.

Na página experimento, na tabela execuções, clique na hora de início de uma execução.

No notebook, clique em Link Externo ao lado da data e hora da execução na barra lateral Execuções de Experimentos.

A tela executar mostra os parâmetros usados para a execução, as métricas resultantes da execução e quaisquer marcas ou observações. Para exibir Notas, Parâmetros, Métricas ou Marcas para essa execução, clique em seta apontando para a direita à esquerda do rótulo.

Você também acessa os artefatos salvos de uma execução nesta tela.

Exibição da execução

Trechos de código para previsão

Se você registrar um modelo de uma execução, o modelo aparecerá na seção Artefatos desta página. Para exibir os trechos de código que ilustram como carregar e usar o modelo para fazer previsões em DataFrames Spark e pandas, clique no nome do modelo.

prever snippets de código

Exibir o notebook ou o projeto Git usado para uma execução

Para exibir a versão do notebook que criou uma execução:

  • Na página experimento, clique no link na coluna Origem.
  • Na página executar, clique no link ao lado de Origem.
  • No notebook, na barra lateral de execuções de Experimentos, clique no ícone NotebookÍcone da Versão do Bloco de Anotações na caixa da Execução do Experimento.

A versão do notebook associado à execução é exibida na janela principal com uma barra de realce mostrando a data e a hora da execução.

Se a execução tiver sido iniciada remotamente de um projeto Git, clique no link no campo Confirmação do Git para abrir a versão específica do projeto usado na execução. O link no campo Origem abre a ramificação principal do projeto Git usado na execução.

Adicionar uma marca a uma execução

As marcas são pares chave-valor que você pode criar e usar depois para pesquisar execuções.

  1. Na página de execução, clique em ícone de marca se ela ainda não estiver aberta. A tabela de marcas será exibida.

    tabela de marcas

  2. Clique nos campos Nome e Valor e digite a chave e o valor da sua marca.

  3. Clique em Adicionar.

    adicionar marca

Editar ou excluir uma marca para uma execução

Para editar ou excluir uma marca existente, use os ícones da coluna Ações.

ações de marca

Reproduzir o ambiente de software de uma execução

Você pode reproduzir o ambiente de software exato para a execução clicando em Reproduzir Execução. A caixa de diálogo a seguir é exibida:

Caixa de diálogo “Reproduzir execução”

Com as configurações padrão, quando você clica em Confirmar:

  • O notebook é clonado para o local mostrado na caixa de diálogo.
  • Se o cluster original ainda existir, o notebook clonado será anexado ao cluster original, e o cluster será iniciado.
  • Se o cluster original não existir mais, um novo cluster com a mesma configuração, incluindo todas as bibliotecas instaladas, será criado e iniciado. O notebook está anexado ao novo cluster.

Você pode selecionar um local diferente para o notebook clonado e inspecionar a configuração do cluster e as bibliotecas instaladas:

  • Para selecionar uma pasta diferente para salvar o notebook clonado, clique em Editar pasta.
  • Para ver a especificação do cluster, clique em Exibir especificação. Para clonar apenas o notebook e não o cluster, desmarque essa opção.
  • Para ver as bibliotecas instaladas no cluster original, clique em Exibir bibliotecas. Se você não se importa com a instalação das mesmas bibliotecas que no cluster original, desmarque essa opção.

Gerenciar execuções

Renomear execução

Para renomear uma execução, clique em ícone de três botões no canto superior direito da página da execução e selecione Renomear.

Filtrar execuções

Você pode pesquisar por execuções com base em valores de parâmetro ou métrica. Você também pode procurar execuções por marca.

  • Para pesquisar execuções que correspondam a uma expressão que contém valores de parâmetro e métrica, insira uma consulta no campo de pesquisa e clique em Pesquisar. Alguns exemplos de sintaxe de consulta são:

    metrics.r2 > 0.3

    params.elasticNetParam = 0.5

    params.elasticNetParam = 0.5 AND metrics.avg_areaUnderROC > 0.3

  • Para pesquisar as execuções por marca, insira marcas no formato: tags.<key>="<value>". Os valores de cadeia de caracteres devem estar entre aspas, conforme mostrado.

    tags.estimator_name="RandomForestRegressor"

    tags.color="blue" AND tags.size=5

    As chaves e os valores podem conter espaços. Se a chave incluir espaços, você deverá incluí-la nos ativos, conforme mostrado.

    tags.`my custom tag` = "my value"
    

Você também pode filtrar as execuções com base em seu estado (Ativo ou Excluído) e com base em se uma versão de modelo está associada à execução. Para isso, faça suas seleções nos menus suspensos Estado e Tempo Criado, respectivamente.

Filtrar execuções

Download de execuções

  1. Selecionar uma ou mais execuções.

  2. Clique em BaixarCSV. Um arquivo CSV que contém os seguintes downloads de campos:

    Run ID,Name,Source Type,Source Name,User,Status,<parameter1>,<parameter2>,...,<metric1>,<metric2>,...
    

Excluir as execuções

Você pode excluir execuções usando a interface do usuário do Machine Learning do Databricks com as seguintes etapas:

  1. No experimento, selecione uma ou mais execuções clicando na caixa de seleção à esquerda da execução.
  2. Clique em Excluir.
  3. Se a execução for pai, decida se você também deseja excluir as execuções descendentes. Por padrão, essa opção é selecionada.
  4. Clique em Excluir para confirmar. As execuções excluídas são salvas por 30 dias. Para exibir as execuções excluídas, selecione Excluído no campo Estado.

Exclusão em massa de execuções baseada no tempo de criação

Você pode usar o Python para excluir em massa as execuções de um experimento que foram criados antes ou em um carimbo de data/hora UNIX. Ao usar o Databricks Runtime 14.1 ou posterior, você pode chamar a API mlflow.delete_runs para excluir execuções e retornar o número de execuções excluídas.

Veja a seguir os parâmetros de mlflow.delete_runs:

  • experiment_id: a ID do experimento contendo as execuções a serem excluídas.
  • max_timestamp_millis: o carimbo de data/hora máximo de criação em milissegundos desde a época do UNIX para excluir as execuções. Somente as execuções criadas antes ou nesse carimbo de data/hora são excluídas.
  • max_runs: opcional. Um inteiro positivo que indica o número máximo de execuções a serem excluídas. O valor máximo permitido para max_runs é 10000. Se não for especificado, o padrão max_runs será 10000.
import mlflow

# Replace <experiment_id>, <max_timestamp_ms>, and <max_runs> with your values.
runs_deleted = mlflow.delete_runs(
  experiment_id=<experiment_id>,
  max_timestamp_millis=<max_timestamp_ms>,
  max_runs=<max_runs>
)
# Example:
runs_deleted = mlflow.delete_runs(
  experiment_id="4183847697906956",
  max_timestamp_millis=1711990504000,
  max_runs=10
)

Ao usar o Databricks Runtime 13.3 LTS ou anterior, você pode executar o código de cliente a seguir em um Notebook do Azure Databricks.

from typing import Optional

def delete_runs(experiment_id: str,
                max_timestamp_millis: int,
                max_runs: Optional[int] = None) -> int:
    """
    Bulk delete runs in an experiment that were created prior to or at the specified timestamp.
    Deletes at most max_runs per request.

    :param experiment_id: The ID of the experiment containing the runs to delete.
    :param max_timestamp_millis: The maximum creation timestamp in milliseconds
                                 since the UNIX epoch for deleting runs. Only runs
                                 created prior to or at this timestamp are deleted.
    :param max_runs: Optional. A positive integer indicating the maximum number
                     of runs to delete. The maximum allowed value for max_runs
                     is 10000. If not specified, max_runs defaults to 10000.
    :return: The number of runs deleted.
    """
    from mlflow.utils.databricks_utils import get_databricks_host_creds
    from mlflow.utils.request_utils import augmented_raise_for_status
    from mlflow.utils.rest_utils import http_request

    json_body = {"experiment_id": experiment_id, "max_timestamp_millis": max_timestamp_millis}
    if max_runs is not None:
        json_body["max_runs"] = max_runs
    response = http_request(
        host_creds=get_databricks_host_creds(),
        endpoint="/api/2.0/mlflow/databricks/runs/delete-runs",
        method="POST",
        json=json_body,
    )
    augmented_raise_for_status(response)
    return response.json()["runs_deleted"]

Consulte a documentação da API de Experimentos do Azure Databricks para obter os parâmetros e as especificações do valor retornado para excluir execuções com base na hora da criação.

Restaurar execuções

Você pode restaurar execuções excluídas anteriormente usando a interface do usuário do Machine Learning do Databricks.

  1. Na página Experimento, selecione Excluído no campo Estado para exibir as execuções excluídas.
  2. Selecione uma ou mais execuções clicando na caixa de seleção à esquerda da execução.
  3. Clique em Restaurar.
  4. Clique em Restaurar para confirmar. Para exibir as execuções restauradas, selecione Ativo no campo Estado.

Execuções de restauração em massa com base no tempo de exclusão

Você também pode usar o Python para restaurar em massa as execuções de um experimento que foram excluídas em ou após um carimbo de data/hora UNIX. Ao usar o Databricks Runtime 14.1 ou posterior, você pode chamar a API mlflow.restore_runs para restaurar as execuções e retornar o número de execuções restauradas.

Veja a seguir os parâmetros de mlflow.restore_runs:

  • experiment_id: a ID do experimento contendo as execuções a serem restauradas.
  • min_timestamp_millis: o carimbo de data/hora máximo de exclusão em milissegundos desde a época do UNIX para restaurar as execuções. Somente as execuções excluídas nesse carimbo de data/hora ou depois dele são restauradas.
  • max_runs: opcional. Um inteiro positivo que indica o número máximo de execuções a serem restauradas. O valor máximo permitido para max_runs é 10000. Se não for especificado, max_runs padrão será 10000.
import mlflow

# Replace <experiment_id>, <min_timestamp_ms>, and <max_runs> with your values.
runs_restored = mlflow.restore_runs(
  experiment_id=<experiment_id>,
  min_timestamp_millis=<min_timestamp_ms>,
  max_runs=<max_runs>
)
# Example:
runs_restored = mlflow.restore_runs(
  experiment_id="4183847697906956",
  min_timestamp_millis=1711990504000,
  max_runs=10
)

Ao usar o Databricks Runtime 13.3 LTS ou anterior, você pode executar o código de cliente a seguir em um Notebook do Azure Databricks.

from typing import Optional

def restore_runs(experiment_id: str,
                 min_timestamp_millis: int,
                 max_runs: Optional[int] = None) -> int:
    """
    Bulk restore runs in an experiment that were deleted at or after the specified timestamp.
    Restores at most max_runs per request.

    :param experiment_id: The ID of the experiment containing the runs to restore.
    :param min_timestamp_millis: The minimum deletion timestamp in milliseconds
                                 since the UNIX epoch for restoring runs. Only runs
                                 deleted at or after this timestamp are restored.
    :param max_runs: Optional. A positive integer indicating the maximum number
                     of runs to restore. The maximum allowed value for max_runs
                     is 10000. If not specified, max_runs defaults to 10000.
    :return: The number of runs restored.
    """
    from mlflow.utils.databricks_utils import get_databricks_host_creds
    from mlflow.utils.request_utils import augmented_raise_for_status
    from mlflow.utils.rest_utils import http_request
    json_body = {"experiment_id": experiment_id, "min_timestamp_millis": min_timestamp_millis}
    if max_runs is not None:
        json_body["max_runs"] = max_runs
    response = http_request(
        host_creds=get_databricks_host_creds(),
        endpoint="/api/2.0/mlflow/databricks/runs/restore-runs",
        method="POST",
        json=json_body,
    )
    augmented_raise_for_status(response)
    return response.json()["runs_restored"]

Consulte a documentação da API de Experimentos do Azure Databricks para obter os parâmetros e as especificações do valor retornado para a restauração de execuções com base na hora da exclusão.

Comparar execuções

Você pode comparar execuções de um único experimento ou de vários experimentos. A página Comparando Execuções apresenta informações sobre as execuções selecionadas em formatos gráficos e tabulares. Você também pode criar visualizações de resultados de execução e tabelas de informações de execução, parâmetros de execução e métricas.

Para criar uma visualização:

  1. Selecione o tipo de plotagem (Gráfico de Coordenadas Paralelas, Gráfico de Dispersão ou Gráfico de Contorno).
    1. Para um Gráfico de Coordenadas Paralelas, selecione os parâmetros e as métricas a serem plotados. A partir daí, você pode identificar as relações entre os parâmetros e métricas selecionados, o que o ajuda a definir melhor o espaço de ajuste de hiperparâmetros para seus modelos.

      visualização da página de comparação de execuções

    2. Para um Gráfico de Dispersão ou Gráfico de Contorno, selecione o parâmetro ou a métrica a ser exibida em cada eixo.

As tabelas Parâmetros e Métricas exibem os parâmetros de execução e as métricas de todas as execuções selecionadas. As colunas nessas tabelas são identificadas pela tabela Detalhes da Execução imediatamente acima. Para simplificar, você pode ocultar parâmetros e métricas que são idênticos em todas as execuções selecionadas, alternando Botão Mostrar somente diferenciação.

tabelas da página de comparação de execuções

Comparar execuções de um único experimento

  1. Na página do experimento, selecione duas ou mais execuções clicando na caixa de seleção à esquerda da execução ou selecione todas as execuções marcando a caixa na parte superior da coluna.
  2. Clique em Comparar. A tela Comparação <N> é exibida.

Comparar execuções de vários experimentos

  1. Na página de experimentos, selecione os experimentos que você deseja comparar clicando na caixa à esquerda do nome do experimento.
  2. Clique em Comparar (n) (n é o número de experimentos selecionados). Uma tela é exibida mostrando todas as execuções dos experimentos selecionados.
  3. Selecione duas ou mais execuções clicando na caixa de seleção à esquerda da execução ou selecione todas as execuções marcando a caixa na parte superior da coluna.
  4. Clique em Comparar. A tela Comparação <N> é exibida.

Copiar execuções entre workspaces

Para importar ou exportar execuções do MLflow para o workspace do Databricks, é possível usar o projeto de software livre orientado pela comunidade MLflow Export-Import.