Compartir vía


Escalabilidad automática de puntos de conexión en línea en Azure Machine Learning

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 administrar el uso de recursos en una implementación configurando la escalabilidad automática en función de métricas y programaciones. El proceso de escalabilidad automática le permite ejecutar automáticamente la cantidad adecuada de recursos para controlar la carga de su aplicación. Los puntos de conexión en línea de Azure Machine Learning son compatibles con la escalabilidad automática mediante la integración de la característica de escalabilidad automática en Azure Monitor.

La escalabilidad automática de Azure Monitor le permite establecer reglas que desencadenan una o más acciones de escalabilidad automática cuando se cumplen las condiciones de las reglas. Puede configurar un escalado basado en métricas (como una utilización de la CPU superior al 70 %), un escalado basado en programación (como reglas de escalado para las horas punta de trabajo) o una combinación de ambos. Para conocer los detalles, consulte Información general sobre el escalado automático en Microsoft Azure.

Diagrama que muestra cómo la escalabilidad automática agrega y elimina instancias según sea necesario.

Actualmente puede administrar la escalabilidad automática usando la CLI de Azure, las API de REST, Azure Resource Manager, el SDK de Python o Azure Portal basado en explorador.

Requisitos previos

Definición del perfil de escalabilidad automática

Para habilitar la escalabilidad automática para un punto de conexión en línea, primero debe definir un perfil de escalabilidad automática. El perfil establece la capacidad predeterminada, mínima y máxima del conjunto de escalado. El siguiente ejemplo muestra cómo establecer el número de instancias de máquina virtual (VM) para la capacidad de escalado predeterminada, mínima y máxima.

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

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>
  1. Establezca los nombres del punto de conexión y de la implementación:

    # set your existing endpoint name
    ENDPOINT_NAME=your-endpoint-name
    DEPLOYMENT_NAME=blue
    
  2. Obtenga el id. de Azure Resource Manager de la implementación y del punto de conexión:

    # ARM id of the deployment
    DEPLOYMENT_RESOURCE_ID=$(az ml online-deployment show -e $ENDPOINT_NAME -n $DEPLOYMENT_NAME -o tsv --query "id")
    # ARM id of the deployment. todo: change to --query "id"
    ENDPOINT_RESOURCE_ID=$(az ml online-endpoint show -n $ENDPOINT_NAME -o tsv --query "properties.\"azureml.onlineendpointid\"")
    # set a unique name for autoscale settings for this deployment. The below will append a random number to make the name unique.
    AUTOSCALE_SETTINGS_NAME=autoscale-$ENDPOINT_NAME-$DEPLOYMENT_NAME-`echo $RANDOM`
    
  3. Cree el perfil de escalabilidad automática:

    az monitor autoscale create \
      --name $AUTOSCALE_SETTINGS_NAME \
      --resource $DEPLOYMENT_RESOURCE_ID \
      --min-count 2 --max-count 5 --count 2
    

Nota:

Para más información, consulte la referencia Escalabilidad automática de Azure Monitor.

Creación de una regla de escalabilidad horizontal basada en métricas de implementación

Una regla común de escalabilidad horizontal consiste en aumentar el número de instancias de máquinas virtuales cuando la carga media de la CPU es alta. El siguiente ejemplo muestra cómo asignar dos nodos más (hasta el máximo) si la carga media de la CPU es superior al 70 % durante 5 minutos:

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

az monitor autoscale rule create \
  --autoscale-name $AUTOSCALE_SETTINGS_NAME \
  --condition "CpuUtilizationPercentage > 70 avg 5m" \
  --scale out 2

La regla forma parte del perfil my-scale-settings, donde autoscale-name coincide con la parte name del perfil. El valor del argumento de la regla condition indica que la regla se desencadena cuando "El consumo medio de CPU entre las instancias de la máquina virtual supera el 70 % durante 5 minutos." Cuando se cumple esa condición, se asignan dos instancias de máquina virtual más.

Nota:

Para más información, consulte la referencia de sintaxis de la CLI de Azure Escalabilidad automática de Azure Monitor.

Creación de una regla de escalado basada en las métricas de implementación

Cuando la carga media de la CPU es ligera, una regla de escalado puede reducir el número de instancias de máquinas virtuales. El siguiente ejemplo muestra cómo liberar un único nodo hasta un mínimo de dos, si la carga de la CPU es inferior al 30 % durante 5 minutos.

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

az monitor autoscale rule create \
  --autoscale-name $AUTOSCALE_SETTINGS_NAME \
  --condition "CpuUtilizationPercentage < 25 avg 5m" \
  --scale in 1

Creación de una regla de escalado basada en métricas de punto de conexión

En las secciones anteriores, creó reglas para escalar o reducir horizontalmente en función de las métricas de implementación. También puede crear una regla que se aplique al punto de conexión de implementación. En esta sección, aprenderá a asignar otro nodo cuando la latencia de la solicitud sea superior a una media de 70 milisegundos durante 5 minutos.

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

az monitor autoscale rule create \
 --autoscale-name $AUTOSCALE_SETTINGS_NAME \
 --condition "RequestLatency > 70 avg 5m" \
 --scale out 1 \
 --resource $ENDPOINT_RESOURCE_ID

Búsqueda de identificadores para métricas admitidas

Si quiere usar otras métricas en código para establecer reglas de escalabilidad automática usando la CLI de Azure o el SDK, consulte la tabla en Métricas disponibles.

Creación de una regla de escalado basada en una programación

También puede crear reglas que se apliquen solo en determinados días u horas. En esta sección se crea una regla que establece el recuento de nodos en 2 los fines de semana.

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

az monitor autoscale profile create \
  --name weekend-profile \
  --autoscale-name $AUTOSCALE_SETTINGS_NAME \
  --min-count 2 --count 2 --max-count 2 \
  --recurrence week sat sun --timezone "Pacific Standard Time"

Habilitar o deshabilitar la escalabilidad automática

Puede habilitar o deshabilitar un perfil de escalabilidad automática específico.

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

az monitor autoscale update \
  --autoscale-name $AUTOSCALE_SETTINGS_NAME \
  --enabled false

Eliminar recursos

Si no va a usar sus implementaciones, elimine los recursos con los siguientes pasos.

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

# delete the autoscaling profile
az monitor autoscale delete -n "$AUTOSCALE_SETTINGS_NAME"

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