Implementación y puntuación de un modelo de aprendizaje automático mediante un punto de conexión en línea

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

En este artículo, aprenderá a implementar el modelo en un punto de conexión en línea para usarlo en inferencia en tiempo real. Para empezar, implemente un modelo en la máquina local para depurar los errores. A continuación, implementará y probará el modelo en Azure, verá los registros de implementación y supervisará el acuerdo de nivel de servicio (SLA). Al final de este artículo, tendrá un punto de conexión HTTPS/REST escalable que puede usar para la inferencia en tiempo real.

Los puntos de conexión en línea son puntos de conexión que se usan para las inferencias en tiempo real. Hay dos tipos de puntos de conexión en línea: puntos de conexión en línea administrados y puntos de conexión en línea de Kubernetes. Para más información sobre los puntos de conexión y las diferencias entre los puntos de conexión en línea administrados y los puntos de conexión en línea de Kubernetes, consulte ¿Qué son los puntos de conexión de Azure Machine Learning?.

Los puntos de conexión en línea administrados ayudan a implementar los modelos de aprendizaje automático de forma inmediata. Los puntos de conexión en línea administrados funcionan con máquinas eficaces de CPU y GPU en Azure de una manera escalable y totalmente administrada. Los puntos de conexión en línea administrados se encargan de atender, escalar, proteger y supervisar los modelos, lo que le libera de la sobrecarga de configurar y administrar la infraestructura subyacente.

En el ejemplo principal de este documento se usan puntos de conexión en línea administrados para la implementación. Para usar Kubernetes en su lugar, consulte las notas de este documento insertadas en la explicación de los puntos de conexión en línea administrados.

Requisitos previos

SE APLICA A: Extensión de ML de la CLI de Azure v2 (actual)

Antes de seguir los pasos de este artículo, asegúrese de que tiene los siguientes requisitos previos:

  • 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 descritos en este artículo, la cuenta de usuario debe tener asignado el rol de propietario o colaborador para el área de trabajo de Azure Machine Learning, o un rol personalizado que permita Microsoft.MachineLearningServices/workspaces/onlineEndpoints/*. Si usa Studio para crear o administrar puntos de conexión o implementaciones en línea, necesitará un permiso adicional "Microsoft.Resources/deployments/write" del propietario del grupo de recursos. Para obtener más información, consulte Administración del acceso a un área de trabajo de Azure Machine Learning.

  • (Opcional) Para implementar localmente, debe instalar el motor de Docker en el equipo local. Se recomienda esta opción, para que sea más sencillo depurar los problemas.

  • Asegúrese de que tiene asignada suficiente cuota de máquina virtual (VM) para la implementación. Azure Machine Learning reserva el 20 % de los recursos de proceso para realizar actualizaciones en algunas SKU de máquina virtual. Por ejemplo, si solicita 10 instancias en una implementación, debe tener una cuota de 12 para cada número de núcleos para la SKU de máquina virtual. Si no se tienen en cuenta los recursos de proceso adicionales, se produce un error. Hay algunas SKU de máquina virtual que están exentas de la reserva de cuota adicional. Para más información sobre la asignación de cuotas, consulte asignación de la cuota de máquina virtual para la implementación.

  • Como alternativa, podría usar la cuota del grupo de cuotas compartidas de Azure Machine Learning durante un tiempo limitado. Azure Machine Learning proporciona un grupo de cuotas compartido desde el que los usuarios de varias regiones pueden acceder a la cuota para realizar pruebas durante un tiempo limitado, en función de la disponibilidad. Cuando se usa Studio para implementar modelos Llama-2, Phi, Nemotron, Mistral, Dolly y Deci-Deci-DeciLM desde el catálogo de modelos en un punto de conexión en línea administrado, Azure Machine Learning le permite acceder a su grupo de cuotas compartidas durante un breve tiempo para poder realizar pruebas. Para más información sobre el grupo de cuotas compartidas, consulte Cuota compartida de Azure Machine Learning.

Preparación del sistema

Establecimiento de variables de entorno

Si aún no ha establecido los valores predeterminados de la CLI de Azure, guarde la configuración predeterminada. Para evitar pasar los valores de la suscripción, el área de trabajo y el grupo de recursos varias veces, ejecute este código:

az account set --subscription <subscription ID>
az configure --defaults workspace=<Azure Machine Learning workspace name> group=<resource group>

Clone el repositorio de ejemplos

Para seguir este artículo, primero clone el repositorio de ejemplos (azureml-examples). A continuación, ejecute el código siguiente para ir al directorio cli/ del repositorio:

git clone --depth 1 https://github.com/Azure/azureml-examples
cd azureml-examples
cd cli

Sugerencia

Use --depth 1 para clonar solamente la confirmación más reciente en el repositorio, lo cual reduce el tiempo para completar la operación.

Los comandos de este tutorial están en los archivos deploy-local-endpoint.sh y deploy-managed-online-endpoint.sh en el directorio cli, y los archivos de configuración YAML se encuentran en el subdirectorio endpoints/online/managed/sample/.

Nota

Los archivos de configuración de YAML para los puntos de conexión en línea de Kubernetes están en el endpoints/online/kubernetes/ subdirectorio.

Definición del punto de conexión

Para definir un punto de conexión en línea, especifique el nombre del punto de conexión y el modo de autenticación. Para obtener más información sobre los puntos de conexión en línea administrados, consulte Puntos de conexión en línea.

Establecimiento de un nombre de punto de conexión

Para establecer el nombre del punto de conexión, ejecute el siguiente comando. Reemplace YOUR_ENDPOINT_NAME por un nombre único en la región de Azure. Para más información acerca de las reglas de nomenclatura, consulte límites del punto de conexión.

Para Linux, ejecute este comando:

export ENDPOINT_NAME="<YOUR_ENDPOINT_NAME>"

Configuración del punto de conexión

El siguiente fragmento de código muestra el archivo endpoints/online/managed/sample/endpoint.yml:

$schema: https://azuremlschemas.azureedge.net/latest/managedOnlineEndpoint.schema.json
name: my-endpoint
auth_mode: key

La referencia para el formato YAML del punto de conexión se describe en la tabla siguiente. Para aprender a especificar estos atributos, consulte la referencia de YAML de puntos de conexión en línea. Para obtener información sobre los límites relacionados con los puntos de conexión administrados, consulte límites para los puntos de conexión en línea.

Clave Descripción
$schema (Opcional) El esquema de YAML. Para ver todas las opciones disponibles en el archivo YAML, puede ver el esquema del fragmento de código anterior en un explorador.
name Nombre del punto de conexión.
auth_mode Use key para la autenticación basada en claves.
Use aml_token para la autenticación basada en tokens de Azure Machine Learning.
Use aad_token para la autenticación basada en tokens de Microsoft Entra (versión preliminar).
Para obtener más información sobre la autenticación, vea Autenticar clientes para puntos de conexión en línea.

Definir la implementación

Una implementación es un conjunto de recursos necesarios para hospedar el modelo que realiza la inferencia real. En este ejemplo, implementará un modelo scikit-learn que realiza la regresión y usará un script de puntuación score.py para ejecutar el modelo en una solicitud de entrada determinada.

Para obtener información sobre los atributos clave de una implementación, consulte Implementaciones en línea.

Configuración de una implementación

La configuración de implementación usa la ubicación del modelo que desea implementar.

El fragmento de código siguiente muestra el archivo endpoints/online/managed/sample/blue-deployment.yml con todas las entradas necesarias para configurar una implementación:

blue-deployment.yml

$schema: https://azuremlschemas.azureedge.net/latest/managedOnlineDeployment.schema.json
name: blue
endpoint_name: my-endpoint
model:
  path: ../../model-1/model/
code_configuration:
  code: ../../model-1/onlinescoring/
  scoring_script: score.py
environment: 
  conda_file: ../../model-1/environment/conda.yaml
  image: mcr.microsoft.com/azureml/openmpi4.1.0-ubuntu20.04:latest
instance_type: Standard_DS3_v2
instance_count: 1

El archivo blue-deployment.yml especifica los siguientes atributos de implementación:

  • model: especifica las propiedades del modelo insertadas mediante el path (desde dónde cargar los archivos). La CLI carga automáticamente los archivos de modelo y registra el modelo con un nombre generado automáticamente.
  • environment: mediante definiciones insertadas que incluyen dónde cargar los archivos, la CLI carga automáticamente el archivo conda.yaml y registra el entorno. Más adelante, para compilar el entorno, la implementación usa image (en este ejemplo, es mcr.microsoft.com/azureml/openmpi4.1.0-ubuntu20.04:latest) para la imagen base y las dependencias de conda_file se instalan encima de la imagen base.
  • code_configuration: durante la implementación, los archivos locales, como el origen de Python para el modelo de puntuación, se cargan desde el entorno de desarrollo.

Para más información sobre el esquema de YAML, consulte la referencia de YAML del punto de conexión en línea.

Nota:

Para usar puntos de conexión de Kubernetes en lugar de puntos de conexión en línea administrados como destino de proceso:

  1. Cree el clúster de Kubernetes y asócielo como destino de proceso al área de Azure Machine Learning mediante Estudio de Azure Machine Learning.
  2. Utilice el archivo YAML de punto de conexión para usar Kubernetes como destino en lugar del archivo YAML del punto de conexión administrado. Debe editar el archivo YAML para cambiar el valor de compute por el nombre del destino de proceso registrado. Puede usar este archivo deployment.yaml que tiene propiedades adicionales aplicables a una implementación de Kubernetes.

Todos los comandos que se usan en este artículo para los puntos de conexión en línea administrados también se aplican a los puntos de conexión de Kubernetes, excepto las siguientes funcionalidades que no se aplican a los puntos de conexión de Kubernetes:

Descripción del script de puntuación

Sugerencia

El formato del script de puntuación para los puntos de conexión en línea es el mismo que se usaba en la versión anterior de la CLI y en el SDK de Python.

El script de puntuación especificado en code_configuration.scoring_script debe tener una función init() y una función run().

En este ejemplo se usa el archivo score.py: score.py

import os
import logging
import json
import numpy
import joblib


def init():
    """
    This function is called when the container is initialized/started, typically after create/update of the deployment.
    You can write the logic here to perform init operations like caching the model in memory
    """
    global model
    # AZUREML_MODEL_DIR is an environment variable created during deployment.
    # It is the path to the model folder (./azureml-models/$MODEL_NAME/$VERSION)
    # Please provide your model's folder name if there is one
    model_path = os.path.join(
        os.getenv("AZUREML_MODEL_DIR"), "model/sklearn_regression_model.pkl"
    )
    # deserialize the model file back into a sklearn model
    model = joblib.load(model_path)
    logging.info("Init complete")


def run(raw_data):
    """
    This function is called for every invocation of the endpoint to perform the actual scoring/prediction.
    In the example we extract the data from the json input and call the scikit-learn model's predict()
    method and return the result back
    """
    logging.info("model 1: request received")
    data = json.loads(raw_data)["data"]
    data = numpy.array(data)
    result = model.predict(data)
    logging.info("Request processed")
    return result.tolist()

Se llama a la función init() cuando se inicializa o se inicia el contenedor. La inicialización suele producirse poco después de crear o actualizar la implementación. La función init es el lugar para escribir lógica para operaciones de inicialización global, como almacenar en caché el modelo en memoria (como se muestra en este archivo score.py).

Se llama a la función run() cada vez que se invoca el punto de conexión y realiza la puntuación y predicción reales. En este archivo score.py, la función run() extrae datos de una entrada JSON, llama al método predict() del modelo scikit-learn y, a continuación, devuelve el resultado de la predicción.

Implementación y depuración local mediante un punto de conexión local

Se recomienda encarecidamente que pruebe el punto de conexión localmente para validar y depurar el código y la configuración antes de implementarlo en Azure. La CLI de Azure y el SDK de Python admiten puntos de conexión e implementaciones locales, mientras que las plantillas de ARM y Estudio de Azure Machine Learning, no.

Para realizar la implementación localmente, deberá tener instalado y ejecutándose el motor de Docker. Este motor normalmente se inicia cuando se inicia el equipo. Si no lo hace, puede solucionar el problema aquí.

Sugerencia

Puede usar el paquete de Python del servidor HTTP de inferencia de Azure Machine Learning para depurar el script de puntuación localmente sin Docker Engine. La depuración con el servidor de inferencia le ayuda a depurar el script de puntuación antes de implementar en los puntos de conexión locales para que pueda depurar sin verse afectado por las configuraciones del contenedor de implementación.

Para más información sobre cómo depurar puntos de conexión en línea localmente antes de implementar en Azure, consulte Depuración de puntos de conexión en línea.

Implementación del modelo localmente

En primer lugar, cree un punto de conexión. Opcionalmente, en el caso de un punto de conexión local, puede omitir este paso y crear directamente la implementación (paso siguiente), lo que, a su vez, crea los metadatos necesarios. La implementación de modelos localmente es útil para fines de desarrollo y pruebas.

az ml online-endpoint create --local -n $ENDPOINT_NAME -f endpoints/online/managed/sample/endpoint.yml

Ahora cree una implementación de nombre blue en el punto de conexión.

az ml online-deployment create --local -n blue --endpoint $ENDPOINT_NAME -f endpoints/online/managed/sample/blue-deployment.yml

La marca --local indica a la CLI que implemente el punto de conexión en el entorno de Docker.

Sugerencia

Use Visual Studio Code para probar y depurar los puntos de conexión localmente. Para más información, consulte Depuración local de puntos de conexión en línea en Visual Studio Code.

Comprobación de que la implementación local se realizó correctamente

Compruebe el estado de implementación para ver si el modelo se implementó sin error:

az ml online-endpoint show -n $ENDPOINT_NAME --local

La salida debe tener un aspecto similar al del siguiente JSON. El valor de provisioning_state es Succeeded.

{
  "auth_mode": "key",
  "location": "local",
  "name": "docs-endpoint",
  "properties": {},
  "provisioning_state": "Succeeded",
  "scoring_uri": "http://localhost:49158/score",
  "tags": {},
  "traffic": {}
}

La tabla siguiente contiene los posibles valores para provisioning_state:

Valor Descripción
Creating Se está creando el recurso.
Actualizando Se está actualizando el recurso.
Eliminando Se está eliminando el recurso.
Correcto La operación de creación o actualización se realizó correctamente.
Con error Error en la operación de creación, actualización y eliminación.

Invocación del punto de conexión local para puntuar los datos con el modelo

Invoque el punto de conexión para puntuar el modelo mediante el comando invoke y pasar parámetros de consulta almacenados en un archivo JSON:

az ml online-endpoint invoke --local --name $ENDPOINT_NAME --request-file endpoints/online/model-1/sample-request.json

Si desea usar un cliente REST (como curl), debe tener el URI de puntuación. Para obtener el identificador URI de puntuación, ejecute az ml online-endpoint show --local -n $ENDPOINT_NAME. En los datos devueltos, busque el atributo scoring_uri.

Revisión de los registros para obtener la salida de la operación de invocación

En el archivo score.py de ejemplo, el método run() registra alguna salida en la consola.

Puede ver esta salida usando el comando get-logs:

az ml online-deployment get-logs --local -n blue --endpoint $ENDPOINT_NAME

Implementación del punto de conexión en línea en Azure

A continuación, implemente el punto de conexión en línea en Azure. Como procedimiento recomendado para producción, se recomienda registrar el modelo y el entorno que usará en la implementación.

Registro del modelo y el entorno

Se recomienda registrar el modelo y el entorno antes de la implementación en Azure para que pueda especificar sus nombres y versiones registrados durante la implementación. El registro de los recursos le permite reutilizarlos sin necesidad de cargarlos cada vez que cree implementaciones, lo que aumenta la reproducibilidad y la rastreabilidad.

Nota:

A diferencia de la implementación en Azure, la implementación local no admite el uso de modelos y entornos registrados. En su lugar, la implementación local usa archivos de modelo local y usa entornos solo con archivos locales. Para la implementación en Azure, puede usar recursos locales o registrados (modelos y entornos). En esta sección del artículo, la implementación en Azure usa recursos registrados, pero tiene la opción de usar recursos locales en su lugar. Para obtener un ejemplo de una configuración de implementación que carga los archivos locales que se van a usar para la implementación local, consulte Configuración de una implementación.

Para registrar el modelo y el entorno, use el formulario model: azureml:my-model:1 o environment: azureml:my-env:1. Para el registro, puede extraer las definiciones de YAML de model y environment en archivos YAML diferentes y usar los comandos az ml model create y az ml environment create. Para más información sobre estos comandos, ejecute az ml model create -h y az ml environment create -h.

  1. Cree una definición de YAML para el modelo:

    $schema: https://azuremlschemas.azureedge.net/latest/model.schema.json
    name: my-model
    path: ../../model-1/model/
    
  2. Registrar el modelo:

    az ml model create -n my-model -v 1 -f ./model.yaml
    
  3. Cree una definición de YAML para el entorno:

    $schema: https://azuremlschemas.azureedge.net/latest/environment.schema.json
    name: my-env
    image: mcr.microsoft.com/azureml/openmpi4.1.0-ubuntu20.04:latest
    conda_file: ../../model-1/environment/conda.yaml
    
  4. Registre el entorno:

    az ml environment create -n my-env -v 1 -f ./environment.yaml
    

Para más información sobre cómo registrar el modelo como un recurso, consulte Registro del modelo como recurso en Machine Learning mediante la CLI. Para más información sobre cómo crear un entorno, consulte Administración de entornos de Azure Machine Learning con la CLI y el SDK (v2).

Configuración de una implementación que usa recursos registrados

La configuración de implementación usa el modelo registrado que desea implementar y el entorno registrado.

Use los recursos registrados (modelo y entorno) en la definición de implementación. En el fragmento de código siguiente se muestra el archivo endpoints/online/managed/sample/blue-deployment-with-registered-assets.yml, con todas las entradas necesarias para configurar una implementación:

blue-deployment-with-registered-assets.yml

$schema: https://azuremlschemas.azureedge.net/latest/managedOnlineDeployment.schema.json
name: blue
endpoint_name: my-endpoint
model: azureml:my-model:1
code_configuration:
  code: ../../model-1/onlinescoring/
  scoring_script: score.py
environment: azureml:my-env:1
instance_type: Standard_DS3_v2
instance_count: 1

Uso de diferentes tipos de instancia de CPU y GPU e imágenes

Puede especificar los tipos de instancia de CPU o GPU e imágenes en la definición de implementación para la implementación local y la implementación en Azure.

La definición de implementación en el archivo blue-deployment-with-registered-assets.yml usó una instancia de tipo de uso general Standard_DS3_v2 y una imagen de Docker que no es de GPU mcr.microsoft.com/azureml/openmpi4.1.0-ubuntu20.04:latest. Para el proceso de GPU, elija una SKU de tipo de proceso de GPU y una imagen de Docker de GPU.

Para ver los tipos de instancia de GPU y de uso general admitidos, consulte Las SKU de máquina virtual compatibles con los puntos de conexión en línea administrados. Para obtener una lista de las imágenes base de GPU y CPU de Azure Machine Learning, consulte las imágenes base de Azure Machine Learning.

Nota:

Para usar Kubernetes, en lugar de puntos de conexión administrados, como destino de proceso, consulte Introducción al destino de proceso de Kubernetes.

A continuación, implemente el punto de conexión en línea en Azure.

Implementar en Azure

  1. Cree el punto de conexión en la nube de Azure.

    az ml online-endpoint create --name $ENDPOINT_NAME -f endpoints/online/managed/sample/endpoint.yml
    
  2. Cree la implementación denominada blue en el punto de conexión.

    az ml online-deployment create --name blue --endpoint $ENDPOINT_NAME -f endpoints/online/managed/sample/blue-deployment-with-registered-assets.yml --all-traffic
    

    La creación de la implementación puede tardar hasta 15 minutos, en función de si el entorno o la imagen subyacentes se compilan por primera vez. Las implementaciones posteriores que usan el mismo entorno se procesan más rápido.

    Sugerencia

    • Si prefiere no bloquear la consola de la CLI, puede agregar la marca --no-wait al comando. Sin embargo, esta opción detendrá la presentación interactiva del estado de implementación.

    Importante

    La marca --all-traffic en el código az ml online-deployment create que se usa para crear la implementación asigna el 100 % del tráfico del punto de conexión a la implementación azul recién creada. Aunque esto resulta útil para fines de desarrollo y pruebas, para producción, es posible que quiera enrutar el tráfico a la nueva implementación a través de un comando explícito. Por ejemplo, az ml online-endpoint update -n $ENDPOINT_NAME --traffic "blue=100".

Para depurar errores en la implementación, consulte Solución de problemas de implementaciones de puntos de conexión en línea.

Comprobación del estado del punto de conexión

  1. Use el comando show para mostrar información en el provisioning_state para el punto de conexión y la implementación:

    az ml online-endpoint show -n $ENDPOINT_NAME
    
  2. Enumere todos los puntos de conexión del área de trabajo en un formato de tabla mediante el comando list:

    az ml online-endpoint list --output table
    

Comprobación del estado de la implementación en línea

Compruebe los registros para ver si el modelo se implementó sin errores.

  1. Para ver la salida del registro de un contenedor, use el siguiente comando de la CLI:

    az ml online-deployment get-logs --name blue --endpoint $ENDPOINT_NAME
    

    De forma predeterminada, los registros se extraen del contenedor del servidor de inferencia. Para ver los registros del contenedor del inicializador de almacenamiento, agregue la marca --container storage-initializer. Para más información sobre los registros de implementación, consulte Obtención de registros de contenedor.

Invocación del punto de conexión para puntuar los datos con el modelo

  1. Use el comando invoke o un cliente REST de su elección para invocar el punto de conexión y puntuar algunos datos:

    az ml online-endpoint invoke --name $ENDPOINT_NAME --request-file endpoints/online/model-1/sample-request.json
    
  2. Obtenga la clave que se usa para autenticarse en el punto de conexión:

    Sugerencia

    Puede controlar qué entidades de seguridad de Microsoft Entra pueden obtener la clave de autenticación mediante su asignación a un rol personalizado que permita Microsoft.MachineLearningServices/workspaces/onlineEndpoints/token/action y Microsoft.MachineLearningServices/workspaces/onlineEndpoints/listkeys/action. Para más información sobre cómo administrar la autorización en las áreas de trabajo, consulte Administración del acceso a un área de trabajo de Azure Machine Learning.

    ENDPOINT_KEY=$(az ml online-endpoint get-credentials -n $ENDPOINT_NAME -o tsv --query primaryKey)
    
  3. Use curl para puntuar los datos.

    SCORING_URI=$(az ml online-endpoint show -n $ENDPOINT_NAME -o tsv --query scoring_uri)
    
    curl --request POST "$SCORING_URI" --header "Authorization: Bearer $ENDPOINT_KEY" --header 'Content-Type: application/json' --data @endpoints/online/model-1/sample-request.json
    

    Observe que usa los comandos show y get-credentials para obtener las credenciales de autenticación. Observe también que usa la marca --query para filtrar solo los atributos necesarios. Para más información sobre la marca de --query, consulte Consulta de la salida del comando de la CLI de Azure.

  4. Para ver los registros de invocación, vuelva a ejecutar get-logs.

(Opcional) Actualización de la implementación

Si quiere actualizar el código, el modelo o el entorno, actualice el archivo YAML y ejecute el comando az ml online-endpoint update.

Nota

Si actualiza el recuento de instancias (para escalar la implementación) junto con otras configuraciones del modelo (como código, modelo o entorno) en un solo comando update: se realizará la operación de escalado en primer lugar y, luego, se aplicarán las demás actualizaciones. Se recomienda realizar estas operaciones por separado en un entorno de producción.

Para comprender cómo funciona update:

  1. Abra el archivo online/model-1/onlinescoring/score.py.

  2. Cambie la última línea de la función init(): después de logging.info("Init complete"), agregue logging.info("Updated successfully").

  3. Guarde el archivo.

  4. Ejecute este comando:

    az ml online-deployment update -n blue --endpoint $ENDPOINT_NAME -f endpoints/online/managed/sample/blue-deployment-with-registered-assets.yml
    

    Nota:

    La actualización mediante YAML es declarativa. Es decir, los cambios en el archivo YAML se reflejan en los recursos de Azure Resource Manager subyacentes (puntos de conexión e implementaciones). El enfoque declarativo facilita GitOps: Todos los cambios en los puntos de conexión o implementaciones (incluso instance_count) pasan por YAML.

    Sugerencia

    • Puede usar parámetros de actualización genéricos, como el parámetro --set, con el comando de la CLI update para invalidar atributos en YAML o para establecer atributos específicos sin pasarlos en el archivo YAML. El uso de --set para atributos únicos es especialmente valioso en escenarios de implementación y pruebas. Por ejemplo, para escalar verticalmente el valor de instance_count de la primera implementación, podría usar la marca --set instance_count=2. Sin embargo, como YAML no está actualizado, esta técnica no facilita GitOps.
    • La especificación del archivo YAML NO es obligatoria. Por ejemplo, si deseara probar una configuración de simultaneidad diferente para una implementación determinada, podría probar algo parecido a az ml online-deployment update -n blue -e my-endpoint --set request_settings.max_concurrent_requests_per_instance=4 environment_variables.WORKER_COUNT=4. Esto mantendrá toda la configuración existente, pero actualizará solo los parámetros especificados.
  5. Dado que ha modificado la función init(), que se ejecuta cuando se crea o actualiza el punto de conexión, el mensaje Updated successfully estará en los registros. Recupere los registros ejecutando:

    az ml online-deployment get-logs --name blue --endpoint $ENDPOINT_NAME
    

El comando update también funciona con implementaciones locales. Use el mismo comando az ml online-deployment update con la marca --local.

Nota:

La actualización de la implementación en esta sección es un ejemplo de una actualización gradual local.

  • En el caso de un punto de conexión en línea administrado, la implementación se actualizará a la nueva configuración con un 20 % de nodos a la vez. Es decir, si la implementación tiene 10 nodos, se actualizan 2 nodos a la vez.
  • Para un punto de conexión en línea de Kubernetes, el sistema crea de forma iterativa una nueva instancia de implementación con la nueva configuración y elimina la antigua.
  • Para uso de producción, debería considerar la implementación azul-verde, que ofrece una alternativa más segura para actualizar un servicio web.

(Opcional) Configuración de la escalabilidad automática

La escalabilidad automática ejecuta automáticamente la cantidad adecuada de recursos para controlar la carga en la aplicación. Los puntos de conexión administrados en línea admiten la escalabilidad automática mediante la integración con la característica de escalabilidad automática de Azure Monitor. Para configurar la escalabilidad automática, vea Escalabilidad automática de puntos de conexión en línea.

(Opcional) Supervisión del Acuerdo de Nivel de Servicio mediante Azure Monitor

Para ver las métricas y establecer alertas en función del Acuerdo de Nivel de Servicio, complete los pasos que se describen en Supervisión de puntos de conexión en línea.

(Opcional) Integración con Log Analytics

El comando get-logs para la CLI o el método get_logs para el SDK solo proporciona los últimos cientos de líneas de registros de una instancia seleccionada automáticamente. Sin embargo, Log Analytics proporciona una manera de almacenar y analizar los registros de forma duradera. Para más información sobre el uso del registro, consulte Supervisión de puntos de conexión en línea.

Eliminación del punto de conexión y la implementación

Elimine el punto de conexión y todas sus implementaciones subyacentes:

az ml online-endpoint delete --name $ENDPOINT_NAME --yes --no-wait