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
- Suscripción a Azure. Si no tiene una suscripción de Azure, cree una cuenta gratuita antes de empezar. Pruebe la versión gratuita o de pago de Azure Machine Learning.
- Un área de trabajo de Azure Machine Learning.
- El SDK v2 para Python de Azure Machine Learning.
- La CLI v2 de Azure Machine Learning.
Además, deberá:
- Instale la CLI de Azure y la extensión de ml en la CLI de Azure. Para más información, consulte Instalación, configuración y uso de la CLI v2.
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.
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:
- El valor
type
; independientemente de si el modelo esmlflow_model
,custom_model
otriton_model
. - 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.