Implementación de paquetes de modelos en puntos de conexión en línea (versión preliminar)
El paquete de modelos es una función de Azure Machine Learning que permite recopilar todas las dependencias necesarias para implementar un modelo de aprendizaje automático en una plataforma de servicio. La creación de paquetes antes de implementar los modelos proporciona una implementación sólida y fiable y un flujo de trabajo de MLOps más eficaz. Los paquetes pueden moverse entre áreas de trabajo e incluso fuera de Azure Machine Learning. Obtenga más información sobre Paquetes de modelo (versión preliminar)
Importante
Esta característica actualmente está en su versión preliminar pública. Esta versión preliminar se ofrece sin un Acuerdo de Nivel de Servicio y no se recomienda para cargas de trabajo de producción. Es posible que algunas características no sean compatibles o que tengan sus funcionalidades limitadas.
Para más información, consulte Términos de uso complementarios de las Versiones Preliminares de Microsoft Azure.
En este artículo, aprenderá a empaquetar un modelo e implementarlo en un punto de conexión en línea en Azure Machine Learning.
Requisitos previos
Antes de seguir los pasos de este artículo, asegúrese de que tiene los siguientes 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. Si no tuvieras uno, sigue los pasos descritos en el artículo Cómo administrar áreas de trabajo para crear uno.
Los controles de acceso basado en rol de Azure (RBAC de Azure) se usan para conceder acceso a las operaciones en Azure Machine Learning. Para realizar los pasos de este artículo, su cuenta de usuario debe tener asignada la función de propietario o colaborador del área de trabajo de Azure Machine Learning, o una función personalizada. Para obtener más información, consulte Administración del acceso a un área de trabajo de Azure Machine Learning.
Acerca de este ejemplo
En este ejemplo, se empaqueta un modelo de tipo personalizado y se implementa en un punto de conexión en línea para la inferencia en línea.
El ejemplo de este artículo se basa en ejemplos de código incluidos en el repositorio azureml-examples. Para ejecutar los comandos de forma local sin tener que copiar/pegar YAML y otros archivos, primero clona el repositorio y luego cambia los directorios a la carpeta:
git clone https://github.com/Azure/azureml-examples --depth 1
cd azureml-examples/cli
Esta sección utiliza el ejemplo de la carpeta endpoints/online/deploy-packages/custom-model.
Conexión con su área de trabajo
Conéctese al área de trabajo de Azure Machine Learning donde realizará su trabajo.
az account set --subscription <subscription>
az configure --defaults workspace=<workspace> group=<resource-group> location=<location>
Empaquetar el modelo
Puede crear paquetes de modelos explícitamente para poder controlar cómo se realiza la operación de empaquetado. Puede crear paquetes de modelos especificando el:
- Modelo para empaquetar: cada paquete de modelo solo puede contener un único modelo. Azure Machine Learning no permite empaquetar varios modelos en el mismo paquete de modelos.
- Entorno base: los entornos son utilizan para indicar la imagen de base, y en los paquetes de Python dependencias que el modelo necesita. Para los modelos MLflow, Azure Machine Learning genera automáticamente el entorno base. Para los modelos personalizados, es necesario especificarlo.
- Tecnología de servicio: la pila de inferencia utilizada para ejecutar el modelo.
Sugerencia
Si su modelo es MLflow, no necesita crear el paquete del modelo manualmente. Podemos empaquetar automáticamente antes de la implementación. Consulte Implementación de modelos MLflow en puntos de conexión en línea.
Los paquetes de modelos requieren que el modelo esté registrado en su área de trabajo o en un registro de Azure Machine Learning. En este ejemplo, ya tiene una copia local del modelo en el repositorio, por lo que solo necesita publicar el modelo en el registro del área de trabajo. Puede omitir esta sección si el modelo que intenta implementar ya está registrado.
MODEL_NAME='sklearn-regression' MODEL_PATH='model' az ml model create --name $MODEL_NAME --path $MODEL_PATH --type custom_model
Nuestro modelo requiere los siguientes paquetes para ejecutarse y los tenemos especificados en un archivo conda:
conda.yaml
name: model-env channels: - conda-forge dependencies: - python=3.9 - numpy=1.23.5 - pip=23.0.1 - scikit-learn=1.2.2 - scipy=1.10.1 - xgboost==1.3.3
Nota:
Observe cómo solo los requisitos del modelo se indican en el conda YAML. Cualquier paquete necesario para el servidor de inferencias será incluido por la operación paquete.
Sugerencia
Si su modelo requiere paquetes alojados en fuentes privadas, puede configurar su paquete para incluirlos. Leer Empaquetar un modelo que tiene dependencias en fuentes privadas de Python.
Cree un entorno base que contenga los requisitos del modelo y una imagen base. En el entorno base solo se indican las dependencias que requiere su modelo. Para los modelos MLflow, el entorno base es opcional, en cuyo caso Azure Machine Learning lo genera de forma automática por usted.
Cree una definición de entorno base:
sklearn-regression-env.yml
$schema: https://azuremlschemas.azureedge.net/latest/environment.schema.json name: sklearn-regression-env image: mcr.microsoft.com/azureml/openmpi4.1.0-ubuntu22.04 conda_file: conda.yaml description: An environment for models built with XGBoost and Scikit-learn.
A continuación, cree el entorno como se indica de la siguiente manera:
az ml environment create -f environment/sklearn-regression-env.yml
Cree una especificación del paquete:
package-moe.yml
$schema: http://azureml/sdk-2-0/ModelVersionPackage.json base_environment_source: type: environment_asset resource_id: azureml:sklearn-regression-env:1 target_environment: sklearn-regression-online-pkg inferencing_server: type: azureml_online code_configuration: code: src scoring_script: score.py
Inicie la operación del paquete de modelos:
az ml model package -n $MODEL_NAME -v $MODEL_VERSION --file package-moe.yml
El resultado de la operación de empaquetado es un entorno.
Implementar el paquete modelo
Los paquetes de modelos pueden implementarse directamente en puntos de conexión en línea en Azure Machine Learning. Siga estos pasos para implementar un paquete en un punto de conexión en línea:
Elija un nombre para un punto de conexión para alojar la implementación del paquete y créelo:
ENDPOINT_NAME="sklearn-regression-online"
az ml online-endpoint create -n $ENDPOINT_NAME
Cree la implementación, utilizando el paquete. Observe cómo
environment
se configura con el paquete que ha creado.deployment.yml
$schema: https://azuremlschemas.azureedge.net/latest/managedOnlineDeployment.schema.json name: with-package endpoint_name: hello-packages environment: azureml:sklearn-regression-online-pkg@latest instance_type: Standard_DS3_v2 instance_count: 1
Sugerencia
Observe que no especifica el modelo ni el script de puntuación en este ejemplo; todos forman parte del paquete.
Iniciar la implementación:
az ml online-deployment create -f deployment.yml
En este punto, la implementación está lista para consumirse. Puede probar cómo funciona creando un archivo de solicitud de muestra:
sample-request.json
{ "data": [ [1,2,3,4,5,6,7,8,9,10], [10,9,8,7,6,5,4,3,2,1] ] }
Envíe la solicitud al punto de conexión
az ml online-endpoint invoke --name $ENDPOINT_NAME --deployment with-package -r sample-request.json