Compartir a través de


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, tiene 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 las diferencias, consulte Puntos de conexión en línea administrados frente a puntos de conexión en línea de Kubernetes.

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. Esta ayuda le libera de la sobrecarga de configuración y administración de la infraestructura subyacente.

En el ejemplo principal de este artículo 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)

  • El control de acceso basado en rol de Azure (RBAC de Azure) se usa 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 Propietario o Colaborador para el área de trabajo de Azure Machine Learning o un rol personalizado debe permitir Microsoft.MachineLearningServices/workspaces/onlineEndpoints/*. Si usa Azure Machine Learning Studio para crear y administrar puntos de conexión o implementaciones en línea, necesita el permiso Microsoft.Resources/deployments/write adicional 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 encarecidamente esta opción, lo que facilita la depuración de 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 versiones 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 versión de la máquina virtual. Si no se tienen en cuenta los recursos de proceso adicionales, se produce un error. Algunas versiones de máquina virtual están exentas de la reserva de cuota adicional. Para más información sobre la asignación de cuotas, consulte Asignación de cuota de máquina virtual para la implementación.

  • Como alternativa, puede 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, clone primero el repositorio azureml-examples y, a continuación, cambie al directorio azureml-examples/cli del repositorio:

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

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

Los comandos de este tutorial se encuentran en los archivos deploy-local-endpoint.sh y deploy-managed-online-endpoint.sh en el directorio cli . Los archivos de configuración de 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 se encuentran en el subdirectorio endpoints/online/kubernetes/ .

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 obtener más información sobre las reglas de nomenclatura, consulte Límites de puntos de conexión.

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 más información sobre los límites relacionados con los puntos de conexión administrados, consulte Puntos de conexión en línea y puntos de conexión por lotes de Azure Machine Learning.

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 scikit-learn modelo que realiza la regresión y usará un script de puntuación score.py para ejecutar el modelo en una solicitud de entrada específica.

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:

$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-ubuntu22.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 mediante el parámetro path (desde dónde se cargan los archivos). La CLI carga automáticamente los archivos de modelo y registra el modelo con un nombre generado automáticamente.
  • environment: usa definiciones insertadas que incluyen dónde cargar 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 el image parámetro para la imagen base. En este ejemplo, es mcr.microsoft.com/azureml/openmpi4.1.0-ubuntu20.04:latest. Las conda_file dependencias se instalan sobre la imagen base.
  • code_configuration: carga los archivos locales, como el origen de Python para el modelo de puntuación, desde el entorno de desarrollo durante la implementación.

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 otras propiedades que se aplican 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

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 del repositorio que ha clonado o descargado anteriormente:

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. Realiza la puntuación y la 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 probar la ejecución del punto de conexión localmente para validar y depurar el código y la configuración antes de realizar la implementación en Azure. La CLI de Azure y el SDK de Python admiten puntos de conexión e implementaciones locales, pero las plantillas de Azure Machine Learning Studio y ARM 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í.

Puede usar el paquete de Python del servidor HTTP de inferencia de Azure Machine Learning para depurar su 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, para un punto de conexión local, puede omitir este paso. Puede crear la implementación directamente (paso siguiente), 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 provisioning_state parámetro 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.
Updating Se está actualizando el recurso.
Deleting Se está eliminando el recurso.
Succeeded La operación de creación o actualización se realizó correctamente.
Failed Error en la operación de creación, actualización o 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 use 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. Después de registrar los recursos, puede reutilizarlos sin necesidad de cargarlos cada vez que cree implementaciones. Esta práctica aumenta la reproducibilidad y la rastreabilidad.

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 independientes en la carpeta endpoints/online/managed/sample 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. Asigne al archivo el nombre model.yml:

    $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 endpoints/online/managed/sample/model.yml
    
  3. Cree una definición de YAML para el entorno. Asigne al archivo el nombre environment.yml:

    $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 endpoints/online/managed/sample/environment.yml
    

Para más información sobre cómo registrar el modelo como un recurso, consulte Registro de un modelo mediante la CLI de Azure o el SDK de Python. Para obtener más información sobre cómo crear un entorno, consulte Creación de un entorno personalizado.

Importante

Al definir un entorno personalizado para la implementación, asegúrese de que el azureml-inference-server-http paquete se incluye en el archivo conda. Este paquete es esencial para que el servidor de inferencia funcione correctamente. Si no está familiarizado con cómo crear su propio entorno personalizado, use uno de nuestros entornos seleccionados, como minimal-py-inference (para modelos personalizados que no usan mlflow) o mlflow-py-inference (para modelos que usan mlflow). Puede encontrar estos entornos mantenidos en la pestaña Entornos de la instancia de Azure Machine Learning Studio.

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. El fragmento de código siguiente muestra el archivo endpoints/online/managed/sample/blue-deployment-with-registered-assets.yml con todas las entradas necesarias para configurar una implementación:

$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 Standard_DS3_v2 de uso general y la imagen mcr.microsoft.com/azureml/openmpi4.1.0-ubuntu20.04:latestde Docker que no es de GPU. Para cálculo de GPU, elija una versión de tipo de cálculo de GPU y una imagen de Docker para GPU.

Para ver los tipos de instancia de GPU y de uso general admitidos, consulte Lista de SKU de 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.

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

    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. El uso de esta marca es útil para fines de desarrollo y pruebas, pero para producción, es posible que desee enrutar el tráfico a la nueva implementación a través de un comando explícito. Por ejemplo, use 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 en línea

  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.

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:

    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 á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
    

    Tenga en cuenta que usa los comandos show y get-credentials para obtener las credenciales de autenticación. Observe también que usa la --query marca para filtrar solo los atributos que son 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 desea actualizar el código, el modelo o el entorno, actualice el archivo YAML. A continuación, ejecute el comando az ml online-endpoint update.

Si actualiza el recuento de instancias (para escalar la implementación) junto con otras opciones de configuración del modelo (como código, modelo o entorno) en un solo update comando, primero se realiza la operación de escalado. Las otras actualizaciones se aplican a continuación. 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
    

    La actualización mediante YAML es declarativa. Es decir, los cambios en YAML se reflejan en los recursos subyacentes de Resource Manager (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.

    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 desea probar diferentes configuraciones de simultaneidad para una implementación específica, puede intentar algo como az ml online-deployment update -n blue -e my-endpoint --set request_settings.max_concurrent_requests_per_instance=4 environment_variables.WORKER_COUNT=4. Este enfoque mantiene toda la configuración existente, pero solo actualiza los parámetros especificados.

  5. Dado que modificó la init() función , que se ejecuta cuando se crea o actualiza el punto de conexión, el mensaje Updated successfully aparece 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 producción, considere el despliegue 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 en línea administrados admiten el escalado automático mediante la integración con la característica de escalabilidad automática de Azure Monitor. Para configurar el escalado automático, vea Escalado automático 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 basadas en el Acuerdo de Nivel de Servicio, siga los pasos que se describen en Supervisión de puntos de conexión en línea.

(Opcional) Integración con Log Analytics

El get-logs comando para la CLI o el get_logs método para el SDK proporciona solo las últimas 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 obtener más información sobre cómo usar el registro, consulte Uso de registros.

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

Use el siguiente comando para eliminar el punto de conexión y todas sus implementaciones subyacentes:

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