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.
  • Acepta tener solo una única réplica del servicio, lo que puede 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 realizar una depuración local antes de la implementación en el servicio web. Para obtener más información, vea Depuración local.

También puede consultar Azure Machine Learning: Implementación en el cuaderno local.

Requisitos previos

Limitaciones

Cuando el área de trabajo de Azure Machine Learning está configurada con un punto de conexión privado, no se admite 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:Azure ML del SDK de Python 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 Indica si se debe habilitar SSL 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 Archivo de certificado necesario si SSL está habilitado
sslKey ssl_key_pem_file Archivo de clave necesario si SSL está habilitado
cname ssl_cname CNAME si SSL 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