Partilhar via


Trabalhar com modelos registados no Azure Machine Learning

APLICA-SE A:Azure CLI ml extension v2 (current)Python SDK azure-ai-ml v2 (current)

Neste artigo, você aprende a registrar e trabalhar com modelos no Azure Machine Learning usando:

  • A interface do usuário do estúdio do Azure Machine Learning.
  • A CLI do Azure Machine Learning V2.
  • O SDK do Python Azure Machine Learning V2.

Sabe como:

  • Crie modelos registrados no registro modelo a partir de arquivos locais, datastores ou saídas de trabalho.
  • Trabalhe com diferentes tipos de modelos, como personalizados, MLflow e Triton.
  • Utilize modelos como entradas ou saídas em trabalhos de formação.
  • Gerencie o ciclo de vida dos ativos do modelo.

Registo do modelo

O registo de modelos permite-lhe armazenar e disponibilizar versões dos seus modelos na sua área de trabalho na nuvem do Azure. O registro de modelos ajuda você a organizar e acompanhar seus modelos treinados. Você pode registrar modelos como ativos no Aprendizado de Máquina do Azure usando a CLI do Azure, o SDK do Python ou a interface do usuário do estúdio de Aprendizado de Máquina.

Caminhos suportados

Para registrar um modelo, você precisa especificar um caminho que aponte para os dados ou o local do trabalho. A tabela a seguir mostra os vários locais de dados suportados pelo Azure Machine Learning e a sintaxe do path parâmetro:

Location Sintaxe
Computador local <model-folder>/<model-filename>
Armazenamento de dados do Azure Machine Learning azureml://datastores/<datastore-name>/paths/<path_on_datastore>
Trabalho do Azure Machine Learning azureml://jobs/<job-name>/outputs/<output-name>/paths/<path-to-model-relative-to-the-named-output-location>
Trabalho MLflow runs:/<run-id>/<path-to-model-relative-to-the-root-of-the-artifact-location>
Ativo de modelo em um espaço de trabalho de Aprendizado de Máquina azureml:<model-name>:<version>
Ativo de modelo em um registro de Aprendizado de Máquina azureml://registries/<registry-name>/models/<model-name>/versions/<version>

Modos suportados

Ao usar modelos para entradas ou saídas, você pode especificar um dos seguintes modos. Por exemplo, você pode especificar se o modelo deve ser montado somente leitura ou baixado para o destino de computação.

  • ro_mount: Monte os dados no destino de computação como somente leitura.
  • rw_mount: Leitura-gravação montar os dados.
  • download: Faça o download dos dados para o destino de computação.
  • upload: Carregue os dados do destino de computação.
  • direct: Passe o URI como uma cadeia de caracteres.

A tabela a seguir mostra as opções de modo disponíveis para diferentes entradas e saídas de tipo de modelo.

Type upload download ro_mount rw_mount direct
custom Entrada de arquivo
custom Entrada de pasta
mlflow entrada
custom saída do arquivo
custom saída da pasta
mlflow Saída

Pré-requisitos

  • Uma subscrição do Azure com uma versão gratuita ou paga do Azure Machine Learning. Se não tiver uma subscrição do Azure, crie uma conta gratuita antes de começar.
  • Um espaço de trabalho do Azure Machine Learning.

Para executar os exemplos de código neste artigo e trabalhar com a CLI do Azure Machine Learning V2 ou o SDK do Python Azure Machine Learning V2, você também precisa:

  • Azure CLI versão 2.38.0 ou superior instalada.

  • V2 da ml extensão instalada executando o seguinte comando. Para obter mais informações, consulte Instalar, configurar e usar a CLI (v2).

    az extension add -n ml
    

Nota

V2 fornece total compatibilidade com versões anteriores. Você ainda pode usar ativos de modelo do SDK v1 ou da CLI. Todos os modelos registrados com a CLI ou SDK v1 recebem o tipo custom.

Registrar um modelo usando a interface do usuário do estúdio

Para registrar um modelo usando a interface do usuário do estúdio de Aprendizado de Máquina do Azure:

  1. No seu espaço de trabalho no estúdio, selecione Modelos na navegação à esquerda.

  2. Na página Lista de Modelos, selecione Registrar e selecione um dos seguintes locais na lista suspensa:

    • A partir de ficheiros locais
    • A partir de uma saída de trabalho
    • Do armazenamento de dados
    • De arquivos locais (com base na estrutura)
  3. Na primeira tela do modelo de registro :

    1. Navegue até o arquivo local, armazenamento de dados ou saída de trabalho para seu modelo.
    2. Selecione o tipo de modelo de entrada: MLflow, Triton ou Tipo não especificado.
  4. Na tela Configurações do modelo , forneça um nome e outras configurações opcionais para seu modelo registrado e selecione Avançar.

  5. Na tela Revisão, revise a configuração e selecione Registrar.

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

Registrar um modelo usando a CLI do Azure ou o SDK do Python

Os trechos de código a seguir abordam como registrar um modelo como um ativo no Azure Machine Learning usando a CLI do Azure ou o SDK do Python. Esses trechos usam custom e mlflow modelam tipos.

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

Gorjeta

Você pode acompanhar as versões Python dos exemplos a seguir executando o bloco de anotações model.ipynb no repositório azureml-examples .

Ligar à sua área de trabalho

A área de trabalho é o recurso de nível superior do Azure Machine Learning que proporciona um local centralizado para trabalhar com todos os artefactos que cria quando utiliza o Azure Machine Learning. Nesta seção, você se conecta ao seu espaço de trabalho do Azure Machine Learning para criar o modelo registrado.

  1. Entre no Azure executando az login e seguindo os prompts.

  2. Nos comandos a seguir, substitua <subscription-id>, <workspace-name>, <resource-group>e <location> espaços reservados pelos valores para seu ambiente.

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

Criar o modelo registado

Você pode criar um modelo registrado a partir de um modelo que:

  • Localizado no seu computador local.
  • Localizado em um armazenamento de dados do Azure Machine Learning.
  • Saída de um trabalho do Azure Machine Learning.

Arquivo ou pasta local

  1. Crie um arquivo <YAML file-name>.yml. No arquivo, forneça um nome para seu modelo registrado, um caminho para o arquivo de modelo local e uma descrição. Por exemplo:

    $schema: https://azuremlschemas.azureedge.net/latest/model.schema.json
    name: local-file-example
    path: mlflow-model/model.pkl
    description: Model created from local file.
    
  2. Execute o seguinte comando, usando o nome do seu arquivo YAML:

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

Para obter um exemplo completo, consulte o modelo YAML.

Arquivo de dados

Você pode criar um modelo a partir de um caminho de nuvem usando qualquer um dos formatos de URI suportados.

O exemplo a seguir usa o esquema abreviado azureml para apontar para um caminho no armazenamento de dados usando a sintaxe azureml://datastores/<datastore-name>/paths/<path_on_datastore>.

az ml model create --name my-model --version 1 --path azureml://datastores/myblobstore/paths/models/cifar10/cifar.pt

Para obter um exemplo completo, consulte a referência da CLI.

Saída da tarefa

Se os dados do modelo vierem de uma saída de trabalho, você terá duas opções para especificar o caminho do modelo. Você pode usar o formato URI MLflow runs: ou o azureml://jobs formato URI.

Nota

A palavra-chave artifacts reserved representa a saída do local do artefato padrão.

  • MLflow é executado: formato URI

    Essa opção é otimizada para usuários do MLflow, que provavelmente já estão familiarizados com o formato URI do MLflow runs: . Esta opção cria um modelo a partir de artefatos no local de artefato padrão, onde todos os modelos e artefatos registrados em MLflow estão localizados. Esta opção também estabelece uma linhagem entre um modelo registrado e a execução da qual o modelo veio.

    Formato: runs:/<run-id>/<path-to-model-relative-to-the-root-of-the-artifact-location>

    Exemplo:

    az ml model create --name my-registered-model --version 1 --path runs:/my_run_0000000000/model/ --type mlflow_model
    

  • azureml://jobs formato URI

    A azureml://jobs opção URI de referência permite registrar um modelo de artefatos em qualquer um dos caminhos de saída do trabalho. Esse formato se alinha com o azureml://datastores formato URI de referência e também oferece suporte à referência de artefatos de saídas nomeadas diferentes do local de artefato padrão.

    Se você não registrou diretamente seu modelo no script de treinamento usando MLflow, poderá usar essa opção para estabelecer uma linhagem entre um modelo registrado e o trabalho a partir do qual ele foi treinado.

    Formato: azureml://jobs/<run-id>/outputs/<output-name>/paths/<path-to-model>

    • Local do artefato padrão: azureml://jobs/<run-id>/outputs/artifacts/paths/<path-to-model>/. Este local é equivalente ao MLflow runs:/<run-id>/<model>.
    • Pasta de saída nomeada: azureml://jobs/<run-id>/outputs/<named-output-folder>
    • Arquivo específico dentro da pasta de saída nomeada: azureml://jobs/<run-id>/outputs/<named-output-folder>/paths/<model-filename>
    • Caminho da pasta específica dentro da pasta de saída nomeada: azureml://jobs/<run-id>/outputs/<named-output-folder>/paths/<model-folder-name>

    Exemplo:

    Salve um modelo de uma pasta de saída nomeada:

    az ml model create --name run-model-example --version 1 --path azureml://jobs/my_run_0000000000/outputs/artifacts/paths/model/
    

    Para obter um exemplo completo, consulte a referência da CLI.


Utilizar modelos para formação

A CLI do Azure v2 e o SDK do Python também permitem que você use modelos como entradas ou saídas em trabalhos de treinamento.

Usar um modelo como entrada em um trabalho de treinamento

  1. Crie um arquivo YAML de especificação de trabalho, <file-name>.yml. inputs Na seção do trabalho, especifique:

    • O modelo type, que pode ser mlflow_model, custom_modelou triton_model.
    • O path local onde seu modelo está localizado, que pode ser qualquer um dos caminhos listados no comentário do exemplo a seguir.
    $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
    
  2. Execute o seguinte comando, substituindo o nome do arquivo YAML.

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

Para obter um exemplo completo, consulte o modelo de repositório GitHub.

Escrever um modelo como saída para um trabalho

Seu trabalho pode escrever um modelo em seu armazenamento baseado em nuvem usando saídas.

  1. Crie um nome de arquivo YAML de <especificação de trabalho.yml.> Preencha a outputs seção com o tipo e o caminho do modelo de saída.

    $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
    
  2. Crie um trabalho usando a CLI:

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

Para obter um exemplo completo, consulte o modelo de repositório GitHub.

Gerir modelos

A CLI do Azure e o SDK do Python também permitem que você gerencie o ciclo de vida dos ativos de modelo do Azure Machine Learning.

Listagem

Liste todos os modelos em seu espaço de trabalho:

az ml model list

Liste todas as versões do modelo sob 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:

Importante

Para modelos, apenas description e tags pode ser atualizado. Todas as outras propriedades são imutáveis e, se você precisar alterá-las, deverá criar uma nova versão do modelo.

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

Arquivo

O arquivamento de um modelo o oculta de consultas de lista, como az ml model list por padrão. Você pode continuar a fazer referência e usar um modelo arquivado em seus fluxos de trabalho.

Você pode arquivar todas as versões ou apenas versões específicas de um modelo. Se você não especificar uma versão, todas as versões do modelo serão arquivadas. Se você criar uma nova versão do modelo em um contêiner de modelo arquivado, a nova versão também será definida automaticamente como arquivada.

Arquivar todas as versões de um modelo:

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

Arquivar uma versão específica do modelo:

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