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
- Uma subscrição do Azure. Se não tiver uma subscrição do Azure, crie uma conta gratuita antes de começar. Experimente a versão gratuita ou paga do Azure Machine Learning.
- Uma área de trabalho do Azure Machine Learning.
- O SDK do Azure Machine Learning v2 para Python.
- A CLI v2 do Azure Machine Learning.
Além disso, terá de:
- Instale a CLI do Azure e a extensão ml para a CLI do Azure. Para obter mais informações, veja Instalar, configurar e utilizar a CLI (v2).
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.
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:
- O
type
; se o modelo é ummlflow_model
,custom_model
outriton_model
. - 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.