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
- Uma assinatura do Azure. Caso não tenha uma assinatura do Azure, crie uma conta gratuita antes de começar. Experimente a versão gratuita ou paga do Azure Machine Learning.
- Um Workspace do Azure Machine Learning.
- O SDK v2 para Python do Azure Machine Learning.
- A CLI v2 do Azure Machine Learning.
Além disso, será necessário:
- Instale a CLI do Azure e a extensão ml na CLI do Azure. Para obter mais informações, confira Instalar, configurar e usar a CLI (v2).
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 path
parâ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.
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:
- O
type
; se o modelo for ummlflow_model
,custom_model
outriton_model
. - 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.