Dimensionar automaticamente um ponto final online

APLICA-SE A:Extensão v2 da CLI do Azure (atual)SDK python azure-ai-ml v2 (atual)

O dimensionamento automático executa a quantidade certa de recursos para processar a carga da aplicação. Os pontos finais online suportam o dimensionamento automático através da integração com a funcionalidade de dimensionamento automático do Azure Monitor.

O dimensionamento automático do Azure Monitor suporta um conjunto avançado de regras. Pode configurar o dimensionamento baseado em métricas (por exemplo, a utilização >da CPU 70%), o dimensionamento baseado na agenda (por exemplo, regras de dimensionamento para horas de ponta) ou uma combinação. Para obter mais informações, veja Descrição geral do dimensionamento automático no Microsoft Azure.

Diagrama para adicionar/remover instâncias de dimensionamento automático conforme necessário

Atualmente, pode gerir o dimensionamento automático com a CLI do Azure, REST, ARM ou o portal do Azure baseado no browser. Outros SDKs do Azure Machine Learning, como o SDK python, irão adicionar suporte ao longo do tempo.

Pré-requisitos

Definir um perfil de dimensionamento automático

Para ativar o dimensionamento automático para um ponto final, primeiro defina um perfil de dimensionamento automático. Este perfil define a capacidade predefinida, máxima e mínima do conjunto de dimensionamento. O exemplo seguinte define a capacidade predefinida e mínima como duas instâncias de VM e a capacidade máxima como cinco:

APLICA-SE A:Extensão v2 da CLI do Azure (atual)

O fragmento seguinte define os nomes de ponto final e implementação:

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

Em seguida, obtenha o ID de Resource Manager do Azure da implementação e do ponto final:

# 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`

O fragmento seguinte cria o perfil de dimensionamento automático:

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

Nota

Para obter mais informações, veja a página de referência do dimensionamento automático

Criar uma regra para aumentar horizontalmente com métricas

Uma regra de aumento horizontal comum é uma regra que aumenta o número de instâncias de VM quando a carga média da CPU é elevada. O exemplo seguinte alocará mais dois nós (até ao máximo) se a média da CPU for superior a 70% durante cinco minutos:

APLICA-SE A:Extensão v2 da CLI do Azure (atual)

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

A regra faz parte do my-scale-settings perfil (autoscale-name corresponde ao name do perfil). O valor do argumento diz que a regra deve ser acionada quando "O consumo médio da condition CPU entre as instâncias da VM excede 70% durante cinco minutos". Quando essa condição é satisfeita, são alocadas mais duas instâncias de VM.

Nota

Para obter mais informações sobre a sintaxe da CLI, consulte az monitor autoscale.

Criar uma regra para reduzir horizontalmente com métricas

Quando a carga é leve, uma regra de dimensionamento pode reduzir o número de instâncias de VM. O exemplo seguinte irá libertar um único nó, até um mínimo de 2, se a carga da CPU for inferior a 30% durante 5 minutos:

APLICA-SE A:Extensão v2 da CLI do Azure (atual)

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

Criar uma regra de dimensionamento com base em métricas de ponto final

As regras anteriores aplicadas à implementação. Agora, adicione uma regra que se aplique ao ponto final. Neste exemplo, se a latência do pedido for superior a uma média de 70 milissegundos durante 5 minutos, aloque outro nó.

APLICA-SE A:Extensão v2 da CLI do Azure (atual)

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

Criar regras de dimensionamento com base numa agenda

Também pode criar regras que se aplicam apenas em determinados dias ou em determinadas alturas. Neste exemplo, a contagem de nós está definida como 2 no fim de semana.

APLICA-SE A:Extensão v2 da CLI do Azure (atual)

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

Se não pretender utilizar as suas implementações, elimine-as:

APLICA-SE A:Extensão v2 da CLI do Azure (atual)

# 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

Passos seguintes

Para saber mais sobre o dimensionamento automático com o Azure Monitor, veja os seguintes artigos: