Implementación de un modelo en Azure Container Instances con CLI (v1)
Importante
En este artículo se muestra cómo usar la CLI y el SDK v1 para implementar un modelo. Para obtener el enfoque recomendado para v2, consulte Implementación y puntuación de un modelo de Machine Learning con un punto de conexión en línea.
Obtenga información sobre cómo usar Azure Machine Learning para implementar un modelo como un servicio web en Azure Container Instances (ACI). Use Azure Container Instances en los casos siguientes:
- Prefiere no administrar su propio clúster de Kubernetes.
- ¿Está bien con tener solo una sola réplica del servicio, lo que podría afectar al tiempo de actividad?
Para información de la disponibilidad de cuotas y regiones de ACI, consulte el artículo Disponibilidad de cuotas y regiones en Azure Container Instances.
Importante
Se recomienda depurar localmente antes de realizar la implementación en el servicio web para obtener más información, consulte Depurar localmente
También puede consultar Azure Machine Learning: Implementación en el cuaderno local.
Requisitos previos
Un área de trabajo de Azure Machine Learning. Para más información, consulte Creación de un área de trabajo de Azure Machine Learning.
Un modelo de Machine Learning registrado en el área de trabajo. Si no tiene un modelo registrado, consulte el artículo en el que se explica cómo y dónde se implementan los modelos.
La extensión de la CLI de Azure (v1) para Machine Learning Service, el SDK de Python para Azure Machine Learning o la extensión de Visual Studio Code para Azure Machine Learning.
Importante
Algunos de los comandos de la CLI de Azure de este artículo usan la extensión
azure-cli-ml
o v1 para Azure Machine Learning. La compatibilidad con la extensión v1 finalizará el 30 de septiembre de 2025. La extensión v1 se podrá instalar y usar hasta esa fecha.Se recomienda pasar a la extensión
ml
, o v2, antes del 30 de septiembre de 2025. Para más información sobre la extensión v2, consulte Extensión de la CLI de Azure ML y SDK de Python v2.En los fragmentos de código de Python de este artículo se supone que se han establecido las siguientes variables:
ws
: establézcalo en su área de trabajo.model
: establézcalo en el modelo registrado.inference_config
: establézcalo en la configuración de inferencia del modelo.
Para más información acerca de cómo establecer estas variables, consulte el artículo en el que se explica cómo y dónde se implementan los modelos.
En los fragmentos de código de la CLI de este artículo se supone que ha creado un documento
inferenceconfig.json
. Para más información acerca cómo crear este documento, consulte el artículo en el que se explica cómo y dónde se implementan los modelos.
Limitaciones
Cuando el área de trabajo de Azure Machine Learning está configurada con un punto de conexión privado, no soporta la implementación en Azure Container Instances en una red virtual. En su lugar, considere la posibilidad de usar un punto de conexión en línea administrado con aislamiento de red.
Implementación en ACI
Para implementar un modelo en Azure Container Instances, cree una configuración de implementación que describa los recursos de proceso necesarios. Por ejemplo, el número de núcleos y la memoria. También necesita una configuración de inferencia, que describe el entorno necesario para hospedar el modelo y el servicio web. Para más información sobre cómo crear la configuración de inferencia, consulte Cómo y dónde implementar modelos.
Nota
- ACI solo es adecuado para pequeños modelos con un tamaño inferior a 1 GB.
- Se recomienda el uso de AKS de un solo nodo para modelos de desarrollo y pruebas más grandes.
- El número de modelos que se implementará se limita a 1000 modelos por implementación (por contenedor).
Uso del SDK
SE APLICA A: SDK de Python azureml v1
from azureml.core.webservice import AciWebservice, Webservice
from azureml.core.model import Model
deployment_config = AciWebservice.deploy_configuration(cpu_cores = 1, memory_gb = 1)
service = Model.deploy(ws, "aciservice", [model], inference_config, deployment_config)
service.wait_for_deployment(show_output = True)
print(service.state)
Para más información acerca de las clases, los métodos y los parámetros que se usan en este ejemplo, consulte los siguientes documentos de referencia:
Uso de la CLI de Azure
SE APLICA A: Extensión de ML de la CLI de Azure v1
Para realizar una implementación con la CLI, use el siguiente comando. Reemplace mymodel:1
por el nombre y la versión del modelo registrado. Reemplace myservice
por el nombre que quiere asignar a este servicio:
az ml model deploy -n myservice -m mymodel:1 --ic inferenceconfig.json --dc deploymentconfig.json
Las entradas del documento deploymentconfig.json
se asignan a los parámetros de AciWebservice.deploy_configuration. En la tabla siguiente se describe la asignación entre las entidades del documento JSON y los parámetros del método:
Entidad JSON | Parámetro del método | Description |
---|---|---|
computeType |
N/D | El destino de proceso. Para ACI, el valor debe ser ACI . |
containerResourceRequirements |
N/D | Contenedor de las entidades de CPU y memoria. |
cpu |
cpu_cores |
Número de núcleos de CPU que se van a asignar. El valor predeterminado es 0.1 . |
memoryInGB |
memory_gb |
Cantidad de memoria (en GB) que se va a asignar a este servicio web. El valor predeterminado es 0.5 . |
location |
location |
Región de Azure en la que se implementará este servicio web. Si no se especifica, se usará la ubicación del área de trabajo. Aquí puede encontrar más información sobre las regiones disponibles: regiones de ACI |
authEnabled |
auth_enabled |
Indica si se debe habilitar la autenticación para este servicio web. El valor predeterminado es False. |
sslEnabled |
ssl_enabled |
Si se habilita TLS para este servicio web. El valor predeterminado es False. |
appInsightsEnabled |
enable_app_insights |
Indica si se debe habilitar AppInsights para este servicio web. El valor predeterminado es False. |
sslCertificate |
ssl_cert_pem_file |
El archivo de certificado necesario si TLS está habilitado |
sslKey |
ssl_key_pem_file |
El archivo de clave necesario si TLS está habilitado |
cname |
ssl_cname |
El CNAME para si TLS está habilitado |
dnsNameLabel |
dns_name_label |
Etiqueta del nombre DNS para el punto de conexión de puntuación. Si no se especifica, se generará una etiqueta de nombre DNS única para el punto de conexión de puntuación. |
El siguiente elemento JSON es un ejemplo de la configuración de implementación que se puede usar con la CLI:
{
"computeType": "aci",
"containerResourceRequirements":
{
"cpu": 0.5,
"memoryInGB": 1.0
},
"authEnabled": true,
"sslEnabled": false,
"appInsightsEnabled": false
}
Para obtener más información, consulte la referencia az ml model deploy.
Uso de Visual Studio Code
Consulte cómo administrar recursos en VS Code.
Importante
No es necesario crear un contenedor ACI para probar de antemano. Los contenedores ACI se crean según sea necesario.
Importante
Anexamos el identificador del área de trabajo con hash a todos los recursos ACI subyacentes que se crean, todos los nombres ACI de la misma área de trabajo tendrán el mismo sufijo. El nombre de Azure Machine Learning Service seguirá siendo el mismo "service_name" que proporcionó el cliente, y ninguna de las API del SDK de Azure Machine Learning de cara al usuario necesita ningún cambio. No se ofrece ninguna garantía sobre los nombres de los recursos subyacentes que se creen.
Pasos siguientes
- Cómo implementar un modelo con una imagen personalizada de Docker
- Solución de problemas de implementación
- Actualización del servicio web
- Uso de TLS para proteger un servicio web con Azure Machine Learning
- Consumir un modelo de ML que está implementado como un servicio web
- Supervisión de los modelos de Azure Machine Learning con Application Insights
- Recopilar datos de modelos en producción