Utilización de modelos en Azure Machine Learning

SE APLICA A:Extensión ML de la CLI de Azure v2 (actual)SDK de Python azure-ai-ml v2 (actual)

Azure Machine Learning permite trabajar con diferentes tipos de modelos. En este artículo, obtendrá información sobre el uso de Azure Machine Learning para trabajar con varios tipos de modelos, como personalizado, MLflow y Triton. También aprenderá a registrar un modelo desde ubicaciones diferentes y a usar el SDK de Azure Machine Learning, la interfaz de usuario (UI) y la CLI de Azure Machine Learning para administrar los modelos.

Sugerencia

Si tiene recursos de modelos creados con el SDK o la CLI v1, puede usarlos con el SDK o la CLI v2. Se proporciona compatibilidad con versiones anteriores. El tipo custom se asigna a todos los modelos registrados con el SDK v1.

Requisitos previos

Además, deberá:

Rutas de acceso admitidas

Al proporcionar un modelo que quiere registrar, deberá especificar un parámetro path que apunte a la ubicación de los datos o trabajo. A continuación se muestra una tabla con las diferentes ubicaciones de datos admitidas en Azure Machine Learning y ejemplos del parámetro path:

Ubicación Ejemplos
Ruta de acceso en la máquina local mlflow-model/model.pkl
Una ruta de acceso en un almacén de datos de Azure Machine Learning azureml://datastores/<datastore-name>/paths/<path_on_datastore>
Una ruta de acceso de un trabajo de Azure Machine Learning azureml://jobs/<job-name>/outputs/<output-name>/paths/<path-to-model-relative-to-the-named-output-location>
Ruta de acceso de un trabajo de MLflow runs:/<run-id>/<path-to-model-relative-to-the-root-of-the-artifact-location>
Una ruta de acceso de un recurso de modelo en el área de trabajo de Azure Machine Learning azureml:<model-name>:<version>
Una ruta de acceso de un recurso de modelo en el registro de Azure Machine Learning azureml://registries/<registry-name>/models/<model-name>/versions/<version>

Modos admitidos

Al ejecutar un trabajo con entradas y salidas de modelos, puede especificar el modo (por ejemplo, si desea que el modelo se monte o descargue en modo de solo lectura en el destino de proceso). En la tabla siguiente se muestran los modos posibles para diferentes combinaciones de tipo, modo, entrada y salida:

Tipo Entrada/salida upload download ro_mount rw_mount direct
Archivo custom Entrada
custom Entrada
mlflow Entrada
Archivo custom Output
custom Output
mlflow Output

Siga estos pasos en Jupyter Notebooks

Puede seguir este ejemplo en una instancia de Jupyter Notebook. En el repositorio azureml-examples, abra el cuaderno model.ipynb.

Creación de un modelo en el registro de modelos

El registro de modelos le permite almacenar y versionar los modelos en la nube de Azure, en su área de trabajo. El registro de modelos le permite organizar los modelos entrenados y llevar un seguimiento de los mismos.

Los fragmentos de código de esta sección abarcan cómo:

  • Registrar el modelo como recurso en Machine Learning mediante la CLI
  • Registrar el modelo como recurso en Machine Learning mediante el SDK
  • Registrar el modelo como recurso en Machine Learning mediante la UI

Estos fragmentos de código usan custom y mlflow.

  • custom es un tipo que hace referencia a un archivo de modelo o carpeta entrenado con un estándar personalizado no admitido actualmente por Azure Machine Learning.
  • mlflow es un tipo que hace referencia a un modelo entrenado con mlflow. Los modelos entrenados de MLflow están en una carpeta que contiene el archivo MLmodel, el archivo del modelo, el archivo de las dependencias de Conda y el archivo requirements.txt.

Conexión con su área de trabajo

En primer lugar, vamos a conectarnos al área de trabajo de Azure Machine Learning en la que vamos a trabajar.

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

Registro del modelo como recurso en Machine Learning mediante la CLI

Use las pestañas siguientes para seleccionar dónde se encuentra el 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 un ejemplo completo, consulte el modelo YAML.

Registro del modelo como recurso en Machine Learning mediante el SDK

Use las pestañas siguientes para seleccionar dónde se encuentra el 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)

Registro del modelo como recurso en Machine Learning mediante la UI

Para crear un modelo en Machine Learning, en la interfaz de usuario, abra la página Modelos. Seleccione Registrar modelo y seleccione dónde se encuentra el modelo. Rellene los campos obligatorios y, a continuación, seleccione Registrar.

Captura de pantalla de la interfaz de usuario para registrar un modelo.


Administración de modelos

El SDK y la CLI (v2) también le permiten administrar el ciclo de vida de los recursos del modelo de Azure Machine Learning.

List

Enumerar todos los modelos del área de trabajo:

az ml model list

Enumerar todas las versiones del modelo con un nombre determinado:

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

Mostrar

Obtener los detalles de un modelo específico:

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

Actualizar

Actualizar propiedades mutables de un 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

En los modelos solo se pueden actualizar description y tags. Todas las demás propiedades son inmutables; si necesita cambiar alguna de esas propiedades, debe crear una nueva versión del modelo.

Archivo

El archivado de un modelo lo ocultará de forma predeterminada de las consultas de lista (az ml model list). Todavía puede seguir haciendo referencia a un modelo archivado y usarlo en los flujos de trabajo. Puede archivar todas las versiones de un modelo, o bien solo una versión específica.

Si no especifica una versión, se archivarán todas las versiones del modelo con ese nombre determinado. Si crea una nueva versión de modelo en un contenedor de modelo archivado, esa nueva versión también se establecerá automáticamente como archivada.

Archivar todas las versiones de un modelo:

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

Archivar una versión de modelo específica:

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

Uso del modelo para el entrenamiento

El SDK y la CLI (v2) también permiten usar un modelo en un trabajo de entrenamiento como entrada o salida.

Uso del modelo como entrada en un trabajo

Cree un archivo YAML de especificación de trabajo (<file-name>.yml). Especifique en la sección inputs del trabajo:

  1. El valor type; independientemente de si el modelo es mlflow_model,custom_model o triton_model.
  2. El valor de path donde se encuentran los datos; puede ser cualquiera de las rutas de acceso que se describen en la sección Rutas de acceso admitidas.
$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

A continuación, ejecute en la CLI:

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

Para obtener un ejemplo completo, consulte el repositorio de GitHub del modelo.

Uso del modelo como salida en un trabajo

En su trabajo, puede escribir el modelo en el almacenamiento basado en la nube mediante outputs.

Cree un archivo YAML de especificación de trabajo (<file-name>.yml), con la sección outputs rellenada con el tipo y la ruta de acceso donde desea escribir los datos:

$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

A continuación, cree un trabajo mediante la CLI:

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

Para obtener un ejemplo completo, consulte el repositorio de GitHub del modelo.

Pasos siguientes