Acompanhe as experiências de ML do Azure Synapse Analytics com o MLflow e o Azure Machine Learning

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

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

Se você tiver um Projeto MLflow para treinar com o Azure Machine Learning, consulte Treinar modelos de ML com Projetos MLflow e Azure Machine Learning (visualização).

Pré-requisitos

Instalar bibliotecas

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

  1. Crie um requirements.txt arquivo com os pacotes que seus experimentos exigem, mas certificando-se de que ele também inclua os seguintes pacotes:

    requisitos.txt

    mlflow
    azureml-mlflow
    azure-ai-ml
    
  2. Navegue até o portal do Espaço de Trabalho do Azure Analytics.

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

  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 ficheiro CSV requirements.txt.

  7. Aguarde até que o cluster reinicie.

Controlar experiências com o MLflow

O Azure Synapse Analytics pode ser configurado para controlar experimentos usando MLflow para o espaço de trabalho 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 um caminho mais fácil para a implantação usando as opções de implantação do Azure Machine Learning.

Configurando seus blocos de anotações para usar o MLflow conectado ao Azure Machine Learning

Para usar o Azure Machine Learning como seu repositório centralizado para experimentos, você pode aproveitar o MLflow. Em cada bloco de anotações em que você está trabalhando, você precisa configurar o URI de rastreamento para apontar para o espaço de trabalho que você usará. O exemplo a seguir mostra como isso pode ser feito:

Configurar URI de rastreamento

  1. Obtenha o URI de acompanhamento para seu espaço de trabalho:

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

    1. Faça login e configure seu espaço de trabalho:

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

      az ml workspace show --query mlflow_tracking_uri
      
  2. Configurando o URI de rastreamento:

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

    import mlflow
    
    mlflow.set_tracking_uri(mlflow_tracking_uri)
    

    Gorjeta

    Ao trabalhar em ambientes compartilhados, como um cluster do Azure Databricks, cluster do Azure Synapse Analytics ou similar, é útil definir a variável MLFLOW_TRACKING_URI de ambiente 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 a autenticação

Depois que o rastreamento estiver configurado, você também precisará configurar como a autenticação precisa acontecer com o espaço de trabalho associado. Por padrão, o plug-in do Azure Machine Learning para MLflow executará 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 formas adicionais de configurar a autenticação para MLflow nos espaços de trabalho do Azure Machine Learning.

Para trabalhos interativos em que há um usuário conectado à sessão, você pode confiar na 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. Não é uma opção adequada para autenticação em ambientes autônomos, como trabalhos de treinamento. Recomendamos configurar outro modo de autenticação.

Para os cenários em que a execução autônoma é necessária, você terá que 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>"

Gorjeta

Ao trabalhar em ambientes compartilhados, é aconselhável configurar essas variáveis de ambiente na computação. Como prática recomendada, gerencie-os 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 forma 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 documentação semelhante em sua plataforma.

Nomes de experiências no Azure Machine Learning

Por padrão, as faixas do Aprendizado de Máquina do Azure são executadas em um experimento padrão chamado Default. Geralmente, é uma boa ideia definir o experimento em que você vai trabalhar. Use a sintaxe a seguir 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 & exibir métricas e arquivos de log.

Registrando modelos no registro com MLflow

Os modelos podem ser registrados no espaço de trabalho do Azure Machine Learning, que oferece um repositório centralizado para gerenciar seu ciclo de vida. O exemplo a seguir registra um modelo treinado com o Spark MLLib e também o registra 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 já existir um modelo registrado com o nome, o método criará uma nova versão do modelo e retornará o objeto version.

Você pode gerenciar modelos registrados no Azure Machine Learning usando MLflow. Veja Gerir registos de modelos no Azure Machine Learning com MLflow para obter mais detalhes.

Implantando e consumindo modelos registrados no Azure Machine Learning

Os modelos registrados no Serviço de Aprendizado de Máquina do Azure usando MLflow podem ser consumidos como:

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

  • Objetos de modelo MLFlow ou UDFs Pandas, que podem ser usados em blocos de anotações do Azure Synapse Analytics em pipelines de streaming ou em lote.

Implantar modelos em pontos de extremidade do Azure Machine Learning

Você pode aproveitar o azureml-mlflow plug-in para implantar um modelo em seu espaço de trabalho do Azure Machine Learning. Consulte a página Como implantar modelos MLflow para obter um detalhe completo sobre como implantar modelos nos diferentes destinos.

Importante

Os modelos precisam ser registrados no registro do Azure Machine Learning para implantá-los. A implantação de modelos não registrados não é suportada no Azure Machine Learning.

Implantar modelos para pontuação em lote usando UDFs

Você pode escolher clusters do Azure Synapse Analytics para pontuação em lote. O modelo MLFlow é carregado e usado como um Spark Pandas UDF 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) 

Clean up resources (Limpar recursos)

Se desejar manter seu espaço de trabalho do Azure Synapse Analytics, mas não precisar mais do espaço de trabalho do Azure Machine Learning, você poderá excluir o espaço de trabalho do Azure Machine Learning. Se você não planeja usar as métricas e artefatos registrados em seu espaço de trabalho, a capacidade de excluí-los individualmente não está disponível no momento. Em vez disso, exclua o grupo de recursos que contém a conta de armazenamento e o espaço de trabalho, para não incorrer em nenhum custo:

  1. No portal do Azure, selecione Grupos de recursos na extremidade esquerda.

    Delete in the Azure portal

  2. Na lista, selecione o grupo de recursos que criou.

  3. Selecione Eliminar grupo de recursos.

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

Próximos passos