Trabalhar com modelos no Azure Machine Learning

APLICA-SE A:Extensão de ML da CLI do Azure v2 (atual)SDK do Python azure-ai-ml v2 (atual)

O Azure Machine Learning permite que você trabalhe com diferentes tipos de modelos. Neste artigo, você aprenderá a usar o Azure Machine Learning para trabalhar com diferentes tipos de modelo, como personalizado, MLflow e Triton. Você também aprenderá a registrar um modelo de diferentes locais e como usar o SDK do Azure Machine Learning, a interface do usuário e a CLI do Azure Machine Learning para gerenciar seus modelos.

Dica

Se você ainda tiver ativos de modelo criados com o SDK/a CLI v1, poderá usá-los com o SDK/a CLI v2. A compatibilidade total com versões anteriores é fornecida. Todos os modelos registrados com o SDK V1 recebem o tipo custom.

Pré-requisitos

Além disso, será necessário:

Caminhos com suporte

Ao fornecer um modelo que deseja registrar, você precisará especificar um parâmetro path que aponte para o local dos dados ou do trabalho. Veja abaixo uma tabela que mostra os diferentes locais de dados com suporte no Azure Machine Learning e exemplos para o pathparâmetro:

Localização Exemplos
Um caminho no computador local mlflow-model/model.pkl
Um caminho em um Armazenamento de Dados do Azure Machine Learning azureml://datastores/<datastore-name>/paths/<path_on_datastore>
Um caminho a partir de um trabalho do Azure Machine Learning azureml://jobs/<job-name>/outputs/<output-name>/paths/<path-to-model-relative-to-the-named-output-location>
Um caminho de um trabalho do MLflow runs:/<run-id>/<path-to-model-relative-to-the-root-of-the-artifact-location>
Um caminho a partir de um Ativo de Modelo no Workspace do Azure Machine Learning azureml:<model-name>:<version>
Um caminho de um ativo de modelo no Registro do Azure Machine Learning azureml://registries/<registry-name>/models/<model-name>/versions/<version>

Modos com suporte

Ao executar um trabalho com entradas/saídas de modelo, você pode especificar o modo: por exemplo, se deseja que o modelo seja montado como somente leitura ou baixado no destino de computação. A tabela abaixo mostra os modos possíveis para diferentes combinações de tipo/modo/entrada/saída:

Tipo Entrada/Saída upload download ro_mount rw_mount direct
Arquivo custom Entrada
custom pasta Entrada
mlflow Entrada
Arquivo custom Saída
custom pasta Saída
mlflow Saída

Acompanhar em Jupyter Notebooks

Você pode acompanhar este exemplo em um Jupyter Notebook. No repositório azureml-examples, abra o notebook: model.ipynb.

Criar modelo no registro de modelos

O registro de modelo permite que você armazene e controle a versão de seus modelos na nuvem do Azure em seu workspace. O registro de modelos ajuda você a organizar e manter o controle sobre seus modelos treinados.

Os snippets de código desta seção abordam os seguintes cenários:

  • Registre seu modelo como um ativo no Machine Learning usando a CLI.
  • Registre seu modelo como um ativo no Machine Learning usando o SDK.
  • Registre seu modelo como um ativo no Machine Learning usando a interface do usuário.

Esses snippets usam custom e mlflow.

  • custom é um tipo que se refere a um arquivo ou pasta de modelo treinado com um padrão personalizado atualmente não suportado pelo Azure Machine Learning.
  • mlflow é um tipo que se refere a um modelo treinado com mlflow. Os modelos treinados do MLflow estão em uma pasta que contém o arquivo MLmodel, o arquivo de modelo, o arquivo de dependências do conda e o arquivo requirements.txt.

Conectar-se ao workspace

Primeiro, vamos nos conectar ao workspace do Azure Machine Learning no qual vamos trabalhar.

az account set --subscription <subscription>
az configure --defaults workspace=<workspace> group=<resource-group> location=<location>

Registre seu modelo como um ativo no Machine Learning usando a CLI

Use as guias a seguir para selecionar em que local estará o modelo.

$schema: https://azuremlschemas.azureedge.net/latest/model.schema.json
name: local-file-example
path: mlflow-model/model.pkl
description: Model created from local file.
az ml model create -f <file-name>.yml

Para um exemplo completo, veja o modelo YAML.

Registre seu modelo como um ativo no Machine Learning usando o SDK

Use as guias a seguir para selecionar em que local estará o modelo.

from azure.ai.ml.entities import Model
from azure.ai.ml.constants import AssetTypes

file_model = Model(
    path="mlflow-model/model.pkl",
    type=AssetTypes.CUSTOM_MODEL,
    name="local-file-example",
    description="Model created from local file.",
)
ml_client.models.create_or_update(file_model)

Registrar seu modelo como um ativo no Machine Learning usando a interface do usuário

Para criar um modelo no Machine Learning, na interface do usuário, abra a página Modelos. Selecione Registrar modelo e selecione o local em que o modelo está. Preencha os campos necessários e selecione Registrar.

Captura de tela da interface do usuário para registrar um modelo.


Gerenciar modelos

O SDK e a CLI (v2) também permitem que você gerencie o ciclo de vida de seus ativos de modelo do Azure Machine Learning.

Lista

Liste todos os modelos em seu workspace:

az ml model list

Listar todas as versões de modelo em um determinado nome:

az ml model list --name run-model-example

Mostrar

Obtenha os detalhes de um modelo específico:

az ml model show --name run-model-example --version 1

Atualizar

Atualizar propriedades mutáveis de um modelo específico:

az ml model update --name  run-model-example --version 1 --set description="This is an updated description." --set tags.stage="Prod"

Importante

Para modelo, podem ser atualizados somente description e tags. Todas as outras propriedades são imutáveis. Se você precisar alterar uma dessas propriedades, crie uma nova versão do modelo.

Arquivos

O arquivamento de um modelo irá ocultá-lo por padrão em consultas de lista (az ml model list). Você ainda pode continuar a referenciar e usar um modelo arquivado em seus fluxos de trabalho. Você pode arquivar todas as versões de um modelo ou apenas uma versão específica.

Se você não especificar uma versão, todas as versões do modelo nesse determinado nome serão arquivadas. Se você criar uma nova versão de modelo em um contêiner de modelo arquivado, essa nova versão será automaticamente definida como arquivada também.

Arquivar todas as versões de um modelo:

az ml model archive --name run-model-example

Arquivar um modelo de versão específico:

az ml model archive --name run-model-example --version 1

Usar modelo para treinamento

O SDK e a CLI (v2) também permitem que você use um modelo em um trabalho de treinamento como uma entrada ou saída.

Usar o modelo como entrada em um trabalho

Crie um arquivo YAML de especificação de trabalho (<file-name>.yml). Especifique na seção inputs do trabalho:

  1. O type; se o modelo for um mlflow_model, custom_model ou triton_model.
  2. O path do local dos dados. O caminho pode ser um dos descritos na seção Caminhos com suporte.
$schema: https://azuremlschemas.azureedge.net/latest/commandJob.schema.json

# Possible Paths for models:
# AzureML Datastore: azureml://datastores/<datastore-name>/paths/<path_on_datastore>
# MLflow run: runs:/<run-id>/<path-to-model-relative-to-the-root-of-the-artifact-location>
# Job: azureml://jobs/<job-name>/outputs/<output-name>/paths/<path-to-model-relative-to-the-named-output-location>
# Model Asset: azureml:<my_model>:<version>

command: |
  ls ${{inputs.my_model}}
inputs:
  my_model:
    type: mlflow_model # List of all model types here: https://learn.microsoft.com/azure/machine-learning/reference-yaml-model#yaml-syntax
    path: ../../assets/model/mlflow-model
environment: azureml://registries/azureml/environments/sklearn-1.0/labels/latest

Em seguida, execute na CLI

az ml job create -f <file-name>.yml

Para obter um exemplo completo, confira o repositório de modelos do GitHub.

Usar o modelo como saída em um trabalho

No trabalho, você pode gravar modelos no armazenamento baseado em nuvem usando saídas.

Crie um arquivo YAML de especificação de trabalho (<file-name>.yml), com a seção outputs preenchida com o tipo e o caminho do local em que deseja gravar seus dados:

$schema: https://azuremlschemas.azureedge.net/latest/commandJob.schema.json

# Possible Paths for Model:
# Local path: mlflow-model/model.pkl
# AzureML Datastore: azureml://datastores/<datastore-name>/paths/<path_on_datastore>
# MLflow run: runs:/<run-id>/<path-to-model-relative-to-the-root-of-the-artifact-location>
# Job: azureml://jobs/<job-name>/outputs/<output-name>/paths/<path-to-model-relative-to-the-named-output-location>
# Model Asset: azureml:<my_model>:<version>

code: src
command: >-
  python hello-model-as-output.py 
  --input_model ${{inputs.input_model}} 
  --custom_model_output ${{outputs.output_folder}}
inputs:
  input_model: 
    type: mlflow_model # mlflow_model,custom_model, triton_model
    path: ../../assets/model/mlflow-model
outputs:
  output_folder: 
    type: custom_model # mlflow_model,custom_model, triton_model
environment: azureml://registries/azureml/environments/sklearn-1.0/labels/latest

Em seguida, crie um trabalho usando a CLI:

az ml job create --file <file-name>.yml

Para obter um exemplo completo, confira o repositório de modelos do GitHub.

Próximas etapas