Share via


Acompanhar os experimentos de ML do Azure Synapse Analytics com MLflow e o Azure Machine Learning

Neste artigo, saiba como habilitar o MLflow para se conectar ao Azure Machine Learning enquanto trabalha em um workspace do Azure Synapse Analytics. Você pode aproveitar essa configuração para acompanhamento, gerenciamento de modelos e implantação de modelo.

O MLflow é uma biblioteca de open-source para gerenciar o ciclo de vida dos experimentos de aprendizado de máquina. MLFlow Tracking é um componente do MLflow que registra e rastreia suas métricas de execução de treinamento e artefatos do modelo. Saiba mais sobre MLflow.

Se você tiver um Projeto do MLflow para treinar com Azure Machine Learning, confira Treinar modelos de ML com os Projetos do MLflow e o Azure Machine Learning (versão prévia).

Pré-requisitos

Instalar bibliotecas

Para instalar bibliotecas em seu cluster dedicado no Azure Synapse Analytics:

  1. Crie um arquivo requirements.txt com os pacotes necessários para seus experimentos, mas verifique se ele também inclui os seguintes pacotes:

    requirements.txt

    mlflow
    azureml-mlflow
    azure-ai-ml
    
  2. Navegue até o portal do Workspace do Azure Analytics.

  3. Navegue até a guia Gerenciar e selecione Pools do Apache Spark.

  4. Clique nos três pontos ao lado do nome do cluster e selecione Pacotes.

    install mlflow packages in Azure Synapse Analytics

  5. Na seção Arquivos de requisitos, clique em Carregar.

  6. Carregue o arquivo requirements.txt.

  7. Aguarde a reinicialização do cluster.

Acompanhar experimentos com o MLflow

O Azure Synapse Analytics pode ser configurado para acompanhar experimentos usando o MLflow para o workspace do Azure Machine Learning. O Azure Machine Learning fornece um repositório centralizado para gerenciar todo o ciclo de vida de experimentos, modelos e implantações. Ele também tem a vantagem de habilitar o caminho mais fácil para a implantação usando opções de implantação do Azure Machine Learning.

Configurando seus notebooks para usar o MLflow conectado ao Azure Machine Learning

Para usar o Azure Machine Learning como repositório centralizado para experimentos, você pode aproveitar o MLflow. Em cada notebook em que está trabalhando, você precisa configurar o URI de acompanhamento para apontar para o workspace que você usará. Este exemplo mostra como isso pode ser feito:

Configurar o URI de acompanhamento

  1. Obtenha o URI de acompanhamento para seu workspace:

    APLICA-SE A:Extensão do ML da CLI do Azure v2 (atual)

    1. Faça logon e configure o seu workspace:

      az account set --subscription <subscription>
      az configure --defaults workspace=<workspace> group=<resource-group> location=<location> 
      
    2. Você pode obter o URI de acompanhamento usando o comando az ml workspace:

      az ml workspace show --query mlflow_tracking_uri
      
  2. Ao configurar o URI de acompanhamento:

    Em seguida, o método set_tracking_uri() aponta o URI de acompanhamento de MLflow para esse URI.

    import mlflow
    
    mlflow.set_tracking_uri(mlflow_tracking_uri)
    

    Dica

    Ao trabalhar em ambientes compartilhados, como um cluster do Azure Databricks, um cluster do Azure Synapse Analytics ou semelhante, é útil definir a variável de ambiente MLFLOW_TRACKING_URI no nível do cluster para configurar automaticamente o URI de acompanhamento do MLflow para apontar para o Azure Machine Learning para todas as sessões em execução no cluster, em vez de fazê-lo por sessão.

Configurar autenticação

Após configurar o acompanhamento, você também precisará configurar como a autenticação precisa acontecer com o workspace associado. Por padrão, o plug-in do Azure Machine Learning para MLflow executará a autenticação interativa abrindo o navegador padrão para solicitar credenciais. Consulte Configurar o MLflow para o Azure Machine Learning: configurar a autenticação para conhecer outras maneiras de configurar a autenticação para o MLflow em workspaces do Azure Machine Learning.

Para trabalhos interativos em que há um usuário conectado à sessão, você pode contar com a Autenticação Interativa e, portanto, nenhuma ação adicional é necessária.

Aviso

A autenticação interativa do navegador bloqueará a execução de código ao solicitar credenciais. Ela não é uma opção adequada para autenticação em ambientes não supervisionados, como trabalhos de treinamento. Recomendamos configurar outro modo de autenticação.

Para cenários em que a execução não supervisionada é necessária, você precisará configurar uma entidade de serviço para se comunicar com o Azure Machine Learning.

import os

os.environ["AZURE_TENANT_ID"] = "<AZURE_TENANT_ID>"
os.environ["AZURE_CLIENT_ID"] = "<AZURE_CLIENT_ID>"
os.environ["AZURE_CLIENT_SECRET"] = "<AZURE_CLIENT_SECRET>"

Dica

Ao trabalhar em ambientes compartilhados, é aconselhável configurar essas variáveis de ambiente na computação. Como melhor prática, gerencie-as como segredos em uma instância do Azure Key Vault sempre que possível. Por exemplo, no Azure Databricks, você pode usar segredos em variáveis de ambiente da seguinte maneira na configuração do cluster: AZURE_CLIENT_SECRET={{secrets/<scope-name>/<secret-name>}}. Consulte Referenciar um segredo em uma variável de ambiente para saber como fazer isso no Azure Databricks ou consulte uma documentação semelhante em sua plataforma.

Nomes do experimento no Azure Machine Learning

Por padrão, o Azure Machine Learning acompanha as execuções em um experimento padrão chamado Default. Geralmente, é uma boa ideia definir o experimento em que você vai trabalhar. Use a seguinte sintaxe para definir o nome do experimento:

mlflow.set_experiment(experiment_name="experiment-name")

Acompanhamento de parâmetros, métricas e artefatos

Você pode usar o MLflow no Azure Synapse Analytics da mesma maneira que está acostumado. Para obter detalhes, consulte Log e exibir arquivos de log e métricas.

Registrando modelos no registro com MLflow

Os modelos podem ser registrados no workspace do Azure Machine Learning, que oferece um repositório centralizado para gerenciar o ciclo de vida. O exemplo a seguir registra um modelo treinado com o Spark MLLib e também o grava no registro.

mlflow.spark.log_model(model, 
                       artifact_path = "model", 
                       registered_model_name = "model_name")  
  • Se um modelo registrado com o nome não existir, o método registrará um novo modelo, criará a versão 1 e retornará um objeto ModelVersion MLflow.

  • Se um modelo registrado com o nome já existir, o método criará uma versão do modelo e retornará o objeto de versão.

Você pode gerenciar modelos registrados no Azure Machine Learning usando o MLflow. Confira Gerenciar registros de modelos no Azure Machine Learning com o MLflow para obter mais detalhes.

Implantando e consumindo modelos registrados em Azure Machine Learning

Os modelos registrados no serviço do Azure Machine Learning usando o MLflow podem ser consumidos como:

  • Um ponto de extremidade do Azure Machine Learning (em tempo real e lote): essa implantação permite que você aproveite recursos de implantação do Azure Machine Learning para inferência em tempo real e em lote no ACI (Instâncias de Contêiner do Azure), no AKS (Azure Kubernetes) ou em nossos pontos de extremidade gerenciados.

  • Objetos de modelo de MLFlow ou UDFs Pandas, que podem ser usados ​​em notebooks do Azure Synapse Analytics em pipelines de streaming ou em lote.

Implantar modelos para ponto de extremidade do Azure Machine Learning

Você pode aproveitar o plugin azureml-mlflow para implantar um modelo em seu workspace do Azure Machine Learning. Confira Como implantar a página de modelos do MLflow para obter detalhes completos sobre como implantar modelos nos diferentes destinos.

Importante

Os modelos precisam ser registrados no registro Azure Machine Learning para implantá-los. Não há suporte para a implantação de modelos não registrados no Azure Machine Learning.

Implantar modelos para pontuação de lote usando UDFs

Você pode escolher clusters do Azure Synapse Analytics para pontuação de lote. O modelo do MLFlow é carregado e usado como um UDF do Spark Pandas para pontuar novos dados.

from pyspark.sql.types import ArrayType, FloatType 

model_uri = "runs:/"+last_run_id+ {model_path} 

#Create a Spark UDF for the MLFlow model 
pyfunc_udf = mlflow.pyfunc.spark_udf(spark, model_uri) 

#Load Scoring Data into Spark Dataframe 
scoreDf = spark.table({table_name}).where({required_conditions}) 

#Make Prediction 
preds = (scoreDf 
           .withColumn('target_column_name', pyfunc_udf('Input_column1', 'Input_column2', ' Input_column3', …)) 
        ) 

display(preds) 

Limpar recursos

Caso deseje manter o workspace do Azure Synapse Analytics, mas não precise mais do workspace do Azure Machine Learning, exclua o workspace do Azure Machine Learning. Se você não planeja usar as métricas registradas e os artefatos no workspace, a opção de excluí-los individualmente não fica disponível neste momento. Em vez disso, exclua o grupo de recursos que contém a conta de armazenamento e o workspace, para que você não incorra nenhum encargo:

  1. No portal do Azure, selecione Grupos de recursos no canto esquerdo.

    Delete in the Azure portal

  2. Selecione o grupo de recursos criado na lista.

  3. Selecione Excluir grupo de recursos.

  4. Insira o nome do grupo de recursos. Em seguida, selecione Excluir.

Próximas etapas