Escalabilidad automática de 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)

El escalado automático ejecuta automáticamente la cantidad adecuada de recursos para controlar la carga en la aplicación. Los puntos de conexión en línea admiten la escalabilidad automática mediante la integración con la característica de escalabilidad automática de Azure Monitor.

La escalabilidad automática de Azure Monitor admite un amplio conjunto de reglas. Puede configurar escalado basado en métricas (por ejemplo, uso de CPU > 70 %), escalado basado en programación (por ejemplo, reglas de escalado para horario comercial punta) o una combinación. Para conocer los detalles, consulte Información general sobre el escalado automático en Microsoft Azure.

Diagrama de la escalabilidad automática agregando o quitando instancias según necesidad

En la actualidad puede administrar la escalabilidad automática mediante la CLI de Azure, REST, ARM o Azure Portal basado en el explorador. Otros SDK de Azure Machine Learning, como el de Python, van a agregar compatibilidad con el tiempo.

Prerrequisitos

Definición de un perfil de escalado automático

Para habilitar la escalabilidad automática en un punto de conexión, primero defina un perfil de escalabilidad automática. Este perfil define la capacidad predeterminada, mínima y máxima del conjunto de escalado. En el ejemplo siguiente se establece la capacidad predeterminada y mínima en dos instancias de máquina virtual, y la capacidad máxima en cinco:

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

El fragmento de código siguiente establece los nombres del punto de conexión y la implementación:

# set your existing endpoint name
ENDPOINT_NAME=your-endpoint-name
DEPLOYMENT_NAME=blue

Luego obtenga el identificador de Azure Resource Manager de la implementación y el 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`

El fragmento de código siguiente crea 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 obtener más información, vea la página de referencia de la escalabilidad automática

Creación de una regla para escalar horizontalmente mediante métricas

Una regla de escalabilidad horizontal común es aquella que aumenta el número de instancias de máquina virtual cuando la carga media de CPU es alta. En el ejemplo siguiente se asignan dos nodos más (hasta el máximo) si la carga media de CPU es superior al 70 % durante cinco 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 (autoscale-name coincide con el valor name del perfil). El valor de su argumento condition indica que la regla debe desencadenarse cuando "El consumo medio de CPU entre las instancias de máquina virtual supera el 70% durante cinco minutos". Cuando se cumple esa condición, se asignan dos instancias de máquina virtual más.

Nota

Para obtener más información sobre la sintaxis de la CLI, vea az monitor autoscale.

Creación de una regla para reducir horizontalmente mediante métricas

Si la carga es ligera, una regla de reducción horizontal puede reducir el número de instancias de máquina virtual. En el ejemplo siguiente se libera un solo nodo, hasta un mínimo de 2, si la carga de 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 escalabilidad basada en métricas del punto de conexión

Las reglas anteriores se aplicaban a la implementación. Ahora, agregue una regla que se aplique al punto de conexión. En este ejemplo, si la latencia de la solicitud supera una media de 70 milisegundos durante 5 minutos, asigne otro nodo.

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

Creación de reglas de escalabilidad basadas en una programación

También puede crear reglas que se apliquen solo en determinados días u horas. En este ejemplo, el recuento de nodos se establece en 2 el fin 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"

Eliminar recursos

Si no va a usar las implementaciones, elimínelas:

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

Pasos siguientes

Para obtener más información sobre la escalabilidad automática con Azure Monitor, vea los siguientes artículos: