Nota
El acceso a esta página requiere autorización. Puede intentar iniciar sesión o cambiar directorios.
El acceso a esta página requiere autorización. Puede intentar cambiar los directorios.
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.
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
Un punto de conexión implementado. Para más información, vea Implementación y puntuación de un modelo de Machine Learning mediante un punto de conexión en línea.
Para usar el escalado automático, el rol
microsoft.insights/autoscalesettings/write
debe asignarse a la identidad que administra el escalado automático. Puede usar cualquier rol integrado o personalizado que permita esta acción. Para obtener instrucciones generales sobre cómo administrar roles para Azure Machine Learning, consulte Administración de usuarios y roles. Para más información sobre la configuración de escalado automático de Azure Monitor, consulte Configuración de escalabilidad automática de Microsoft.Insights.Para usar el SDK de Python para administrar el servicio de Azure Monitor, instale el paquete
azure-mgmt-monitor
con el siguiente comando:pip install azure-mgmt-monitor
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>
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
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`
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
Puede usar otras métricas al usar la CLI de Azure o el SDK para configurar reglas de escalado automático.
- Para conocer los nombres de las métricas de punto de conexión que se van a usar en el código, consulte los valores de la columna Nombre en la API de REST de la tabla en Métricas admitidas para Microsoft.MachineLearningServices/workspaces/onlineEndpoints.
- Para conocer los nombres de las métricas de implementación que se van a usar en el código, consulte los valores de la columna Nombre en la API de REST de las tablas de Métricas admitidas para Microsoft.MachineLearningServices/workspaces/onlineEndpoints/deployments.
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