Trabalhar com modelos no Azure Machine Learning

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

O Azure Machine Learning permite-lhe trabalhar com diferentes tipos de modelos. Neste artigo, vai aprender a utilizar o Azure Machine Learning para trabalhar com diferentes tipos de modelo, como personalizado, MLflow e Triton. Também vai aprender a registar um modelo a partir de localizações diferentes e a utilizar o SDK do Azure Machine Learning, a interface de utilizador (IU) e a CLI do Azure Machine Learning para gerir os seus modelos.

Dica

Se tiver recursos de modelo criados que utilizam o SDK/CLI v1, ainda pode utilizá-los com o SDK/CLI v2. É fornecida uma retrocompatibilidade completa. Todos os modelos registados com o SDK V1 recebem o tipo custom.

Pré-requisitos

Além disso, terá de:

Caminhos suportados

Quando fornecer um modelo que pretende registar, terá de especificar um path parâmetro que aponte para a localização dos dados ou da tarefa. Segue-se uma tabela que mostra as diferentes localizações de dados suportadas no Azure Machine Learning e exemplos para o path parâmetro :

Localização Exemplos
Um caminho no seu computador local mlflow-model/model.pkl
Um caminho num Arquivo de Dados do Azure Machine Learning azureml://datastores/<datastore-name>/paths/<path_on_datastore>
Um caminho de uma tarefa do Azure Machine Learning azureml://jobs/<job-name>/outputs/<output-name>/paths/<path-to-model-relative-to-the-named-output-location>
Um caminho de uma tarefa do MLflow runs:/<run-id>/<path-to-model-relative-to-the-root-of-the-artifact-location>
Um caminho de um Recurso de Modelo na Área de Trabalho do Azure Machine Learning azureml:<model-name>:<version>
Um caminho de um Recurso de Modelo no Registo do Azure Machine Learning azureml://registries/<registry-name>/models/<model-name>/versions/<version>

Modos suportados

Quando executa uma tarefa com entradas/saídas de modelos, pode especificar o modo , por exemplo, se pretende que o modelo seja montado apenas de leitura ou transferido para o 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
custom ficheiro Entrada
custom pasta Entrada
mlflow Entrada
custom ficheiro Saída
custom pasta Saída
mlflow Saída

Acompanhe os Blocos de Notas do Jupyter

Pode acompanhar este exemplo numa Jupyter Notebook. No repositório azureml-examples , abra o bloco de notas: model.ipynb.

Criar um modelo no registo de modelos

O registo de modelos permite-lhe armazenar e criar uma versão dos seus modelos na cloud do Azure, na sua área de trabalho. O registo de modelos ajuda-o a organizar e a controlar os seus modelos preparados.

Os fragmentos de código nesta secção abrangem como:

  • Registe o seu modelo como um recurso no Machine Learning com a CLI.
  • Registe o modelo como um recurso no Machine Learning com o SDK.
  • Registe o modelo como um recurso no Machine Learning com a IU.

Estes fragmentos utilizam custom e mlflow.

  • custom é um tipo que se refere a um ficheiro de modelo ou pasta preparada com um padrão personalizado que não é atualmente suportado pelo Azure Machine Learning.
  • mlflow é um tipo que se refere a um modelo preparado com mlflow. Os modelos preparados para MLflow estão numa pasta que contém o ficheiro MLmodel , o ficheiro de modelo , o ficheiro de dependências conda e o ficheiro derequirements.txt .

Ligar à sua área de trabalho

Primeiro, vamos ligar à área de trabalho do Azure Machine Learning onde vamos trabalhar.

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

Registar o modelo como um recurso no Machine Learning com a CLI

Utilize os seguintes separadores para selecionar onde está localizado 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 obter um exemplo completo, veja o modelo YAML.

Registar o modelo como um recurso no Machine Learning com o SDK

Utilize os seguintes separadores para selecionar onde está localizado 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)

Registar o modelo como um recurso no Machine Learning com a IU

Para criar um modelo no Machine Learning, a partir da IU, abra a página Modelos . Selecione Registar modelo e selecione onde está localizado o modelo. Preencha os campos necessários e, em seguida, selecione Registar.

Captura de ecrã a mostrar a IU para registar um modelo.


Gerir modelos

O SDK e a CLI (v2) também lhe permitem gerir o ciclo de vida dos recursos do modelo do Azure Machine Learning.

Lista

Liste todos os modelos na área de trabalho:

az ml model list

Liste todas as versões do modelo com 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 o modelo, apenas description e tags pode ser atualizado. Todas as outras propriedades são imutáveis; Se precisar de alterar qualquer uma dessas propriedades, deve criar uma nova versão do modelo.

Arquivo

Arquivar um modelo irá ocultá-lo por predefinição das consultas de lista (az ml model list). Ainda pode continuar a referenciar e utilizar um modelo arquivado nos seus fluxos de trabalho. Pode arquivar todas as versões de um modelo ou apenas uma versão específica.

Se não especificar uma versão, todas as versões do modelo abaixo desse nome serão arquivadas. Se criar uma nova versão de modelo num contentor de modelo arquivado, essa nova versão também será automaticamente definida como arquivada.

Arquivar todas as versões de um modelo:

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

Arquivar uma versão de modelo específica:

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

Utilizar o modelo para preparação

O SDK e a CLI (v2) também lhe permitem utilizar um modelo numa tarefa de preparação como entrada ou saída.

Utilizar o modelo como entrada numa tarefa

Crie um ficheiro YAML de especificação de tarefa (<file-name>.yml). Especifique na inputs secção da tarefa:

  1. O type; se o modelo é um mlflow_model,custom_model ou triton_model.
  2. O path local onde os seus dados estão localizados; pode ser qualquer um dos caminhos descritos na secção Caminhos Suportados .
$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, veja o repositório do GitHub do modelo.

Utilizar o modelo como saída numa tarefa

Na sua tarefa, pode escrever um modelo no seu armazenamento baseado na cloud com saídas.

Crie um ficheiro YAML de especificação de tarefa (<file-name>.yml), com a outputs secção preenchida com o tipo e caminho onde pretende escrever os 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 uma tarefa com a CLI:

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

Para obter um exemplo completo, veja o repositório do GitHub do modelo.

Passos seguintes