Dimensionamento automático de ponto de extremidade online

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

O dimensionamento automático executa automaticamente a quantidade certa de recursos para lidar com a carga em seu aplicativo. Os pontos de extremidade online dão suporte ao dimensionamento automático por meio da integração com o recurso de dimensionamento automático do Azure Monitor.

O dimensionamento automático do Azure Monitor dá suporte a um conjunto avançado de regras. Você pode configurar o dimensionamento baseado em métricas (por exemplo, utilização da CPU >70%), o dimensionamento baseado em agendamento (por exemplo, regras de dimensionamento para horário comercial de pico) ou uma combinação deles. Para saber mais, confira a Visão geral do dimensionamento automático no Microsoft Azure.

Diagrama da instância de adição/remoção de dimensionamento automático conforme a necessidade

Hoje, você pode gerenciar o dimensionamento automático com a CLI do Azure, REST, ARM ou o portal do Azure em um navegador. Outros SDKs do Azure Machine Learning, como o SDK do Python, adicionarão suporte mais adiante.

Pré-requisitos

Definir um perfil de autoescala

Para habilitar o dimensionamento automático em um ponto de extremidade, primeiro você definirá um perfil de dimensionamento automático. Esse perfil define a capacidade padrão, mínima e máxima do conjunto de dimensionamento. O exemplo a seguir define a capacidade padrão e mínima como duas instâncias de VM e a capacidade máxima como cinco:

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

O trecho abaixo define os nomes do ponto de extremidade e da implantação:

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

Em seguida, obtenha o ID do Azure Resource Manager para a implantação e o ponto de extremidade:

# 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 trecho abaixo 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

Observação

Para saber mais, confira a página de referência do dimensionamento automático

Criar uma regra para escalar horizontalmente com métricas

Uma regra comum de colocação em escala horizontal é aquela que aumenta o número de instâncias de VM quando a carga de CPU média está alta. O seguinte exemplo alocará mais dois nós (até o máximo) se a média da CPU tiver uma carga maior que 70% por cinco minutos:

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

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

A regra faz parte do perfil my-scale-settings (autoscale-name corresponde ao name do perfil). O valor do argumento condition dessa regra diz que ela deverá disparar quando "O consumo médio de CPU entre as instâncias de VM exceder 70% por cinco minutos". Quando essa condição é atendida, duas instâncias adicionais de VM são alocadas.

Observação

Para saber mais sobre a sintaxe da CLI, confira az monitor autoscale.

Criar uma regra para reduzir horizontalmente com métricas

Quando a carga é leve, uma regra de redução horizontal pode diminuir o número de instâncias de VM. O exemplo a seguir liberará um único nó, até um mínimo de dois, se a carga da CPU for inferior a 30% por cinco minutos:

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

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

Criar uma regra de colocação em escala com base nas métricas do ponto de extremidade

As regras anteriores se aplicavam à implantação. Agora, adicione uma regra que se aplique ao ponto de extremidade. Neste exemplo, se a latência da solicitação for maior que uma média de 70 milissegundos por cinco minutos, aloque outro nó.

APLICA-SE A:Extensão de ML da CLI do Azure v2 (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 colocação em escala com base em um agendamento

Você também pode criar regras que se aplicam apenas a determinados dias ou a determinados momentos. Neste exemplo, a contagem de nós é definida como 2 no final de semana.

APLICA-SE A:Extensão de ML da CLI do Azure v2 (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"

Excluir recursos

Se você não for usar suas implantações, exclua-as:

APLICA-SE A:Extensão de ML da CLI do Azure v2 (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

Próximas etapas

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