Partilhar via


Executar Projetos do MLflow no Azure Databricks

Um projeto MLflow é um formato para empacotar código de ciência de dados de forma reutilizável e reproduzível. O componente MLflow Projects inclui uma API e ferramentas de linha de comando para executar projetos, que também se integram ao componente Tracking para registrar automaticamente os parâmetros e git commit do seu código-fonte para reprodutibilidade.

Este artigo descreve o formato de um projeto MLflow e como executar um projeto MLflow remotamente em clusters do Azure Databricks usando a CLI MLflow, o que facilita o dimensionamento vertical do código de ciência de dados.

Formato do projeto MLflow

Qualquer diretório local ou repositório Git pode ser tratado como um projeto MLflow. As seguintes convenções definem um projeto:

  • O nome do projeto é o nome do diretório.
  • O ambiente de software é especificado em python_env.yaml, se presente. Se nenhum python_env.yaml arquivo estiver presente, o MLflow usará um ambiente virtualenv contendo apenas Python (especificamente, o Python mais recente disponível para virtualenv) ao executar o projeto.
  • Qualquer .py arquivo ou .sh no projeto pode ser um ponto de entrada, sem parâmetros explicitamente declarados. Quando você executa esse comando com um conjunto de parâmetros, MLflow passa cada parâmetro na linha de comando usando --key <value> sintaxe.

Você especifica mais opções adicionando um arquivo MLproject, que é um arquivo de texto na sintaxe YAML. Um exemplo de arquivo MLproject tem esta aparência:

name: My Project

python_env: python_env.yaml

entry_points:
  main:
    parameters:
      data_file: path
      regularization: {type: float, default: 0.1}
    command: "python train.py -r {regularization} {data_file}"
  validate:
    parameters:
      data_file: path
    command: "python validate.py {data_file}"

Executar um projeto MLflow

Para executar um projeto MLflow em um cluster do Azure Databricks no espaço de trabalho padrão, use o comando:

mlflow run <uri> -b databricks --backend-config <json-new-cluster-spec>

onde <uri> é um URI de repositório Git ou pasta que contém um projeto MLflow e <json-new-cluster-spec> é um documento JSON que contém uma estrutura new_cluster. O URI do Git deve ter a seguinte forma: https://github.com/<repo>#<project-folder>.

Um exemplo de especificação de cluster é:

{
  "spark_version": "7.3.x-scala2.12",
  "num_workers": 1,
  "node_type_id": "Standard_DS3_v2"
}

Se você precisar instalar bibliotecas no trabalhador, use o formato "especificação de cluster". Observe que os arquivos de roda Python devem ser carregados no DBFS e especificados como pypi dependências. Por exemplo:

{
  "new_cluster": {
    "spark_version": "7.3.x-scala2.12",
    "num_workers": 1,
    "node_type_id": "Standard_DS3_v2"
  },
  "libraries": [
    {
      "pypi": {
        "package": "tensorflow"
      }
    },
    {
      "pypi": {
         "package": "/dbfs/path_to_my_lib.whl"
      }
    }
  ]
}

Importante

  • .egg e .jar dependências não são suportadas para projetos MLflow.
  • Não há suporte para a execução de projetos MLflow com ambientes Docker.
  • Você deve usar uma nova especificação de cluster ao executar um projeto MLflow no Databricks. Não há suporte para a execução de projetos em clusters existentes.

Usando o SparkR

Para usar o SparkR em uma execução de projeto MLflow, o código do projeto deve primeiro instalar e importar o SparkR da seguinte maneira:

if (file.exists("/databricks/spark/R/pkg")) {
    install.packages("/databricks/spark/R/pkg", repos = NULL)
} else {
    install.packages("SparkR")
}

library(SparkR)

Seu projeto pode então inicializar uma sessão do SparkR e usar o SparkR normalmente:

sparkR.session()
...

Exemplo

Este exemplo mostra como criar um experimento, executar o projeto tutorial MLflow em um cluster do Azure Databricks, exibir a saída da execução do trabalho e exibir a execução no experimento.

Requisitos

  1. Instale o MLflow usando pip install mlflowo .
  2. Instale e configure a CLI do Databricks. O mecanismo de autenticação da CLI do Databricks é necessário para executar trabalhos em um cluster do Azure Databricks.

Etapa 1: Criar um experimento

  1. No espaço de trabalho, selecione Criar > experiência MLflow.

  2. No campo Nome, digite Tutorial.

  3. Clique em Criar. Observe a ID do experimento. Neste exemplo, é 14622565.

    ID do experimento

Etapa 2: Executar o projeto tutorial MLflow

As etapas a seguir configuram a MLFLOW_TRACKING_URI variável de ambiente e executam o projeto, registrando os parâmetros de treinamento, as métricas e o modelo treinado para o experimento observado na etapa anterior:

  1. Defina a MLFLOW_TRACKING_URI variável de ambiente para o espaço de trabalho do Azure Databricks.

    export MLFLOW_TRACKING_URI=databricks
    
  2. Execute o projeto tutorial MLflow, treinando um modelo de vinho. Substitua <experiment-id> pelo ID do experimento que você anotou na etapa anterior.

    mlflow run https://github.com/mlflow/mlflow#examples/sklearn_elasticnet_wine -b databricks --backend-config cluster-spec.json --experiment-id <experiment-id>
    
    === Fetching project from https://github.com/mlflow/mlflow#examples/sklearn_elasticnet_wine into /var/folders/kc/l20y4txd5w3_xrdhw6cnz1080000gp/T/tmpbct_5g8u ===
    === Uploading project to DBFS path /dbfs/mlflow-experiments/<experiment-id>/projects-code/16e66ccbff0a4e22278e4d73ec733e2c9a33efbd1e6f70e3c7b47b8b5f1e4fa3.tar.gz ===
    === Finished uploading project to /dbfs/mlflow-experiments/<experiment-id>/projects-code/16e66ccbff0a4e22278e4d73ec733e2c9a33efbd1e6f70e3c7b47b8b5f1e4fa3.tar.gz ===
    === Running entry point main of project https://github.com/mlflow/mlflow#examples/sklearn_elasticnet_wine on Databricks ===
    === Launched MLflow run as Databricks job run with ID 8651121. Getting run status page URL... ===
    === Check the run's status at https://<databricks-instance>#job/<job-id>/run/1 ===
    
  3. Copie a URL https://<databricks-instance>#job/<job-id>/run/1 na última linha da saída de execução do MLflow.

Etapa 3: Exibir a execução do trabalho do Azure Databricks

  1. Abra a URL copiada na etapa anterior em um navegador para exibir a saída de execução do trabalho do Azure Databricks:

    Saída da execução do trabalho

Etapa 4: Exibir o experimento e os detalhes da execução do MLflow

  1. Navegue até o experimento em seu espaço de trabalho do Azure Databricks.

    Ir para a experiência

  2. Clique no experimento.

    Ver experiência

  3. Para exibir os detalhes da execução, clique em um link na coluna Data.

    Detalhes da execução

Você pode visualizar os logs da sua execução clicando no link Logs no campo Saída do trabalho.

Recursos

Para alguns exemplos de projetos MLflow, consulte a Biblioteca de aplicativos MLflow, que contém um repositório de projetos prontos para execução com o objetivo de facilitar a inclusão da funcionalidade de ML em seu código.