Partilhar via


Dimensionar automaticamente um ponto final online

APLICA-SE A:Azure CLI ml extension v2 (current)Python SDK azure-ai-ml v2 (current)

O dimensionamento automático executa a quantidade certa de recursos para processar a carga da aplicação. 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 rico conjunto de regras. Você pode configurar o dimensionamento baseado em métricas (por exemplo, utilização >da CPU 70%), o dimensionamento baseado em programação (por exemplo, regras de dimensionamento para horários comerciais de pico) ou uma combinação. Para obter mais informações, consulte Visão geral do dimensionamento automático no Microsoft Azure.

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

Hoje, você pode gerenciar o dimensionamento automático usando a CLI do Azure, REST, ARM ou o portal do Azure baseado em navegador. Outros SDKs do Azure Machine Learning, como o SDK do Python, adicionarão suporte ao longo do tempo.

Pré-requisitos

Definir um perfil de dimensionamento automático

Para habilitar o dimensionamento automático para um ponto de extremidade, 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 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: Azure CLI ml extension v2 (atual)

O trecho a seguir define os nomes de ponto de extremidade e implantação:

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

Em seguida, obtenha a ID do Azure Resource Manager da implantação e do 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 a seguir 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 saber mais, consulte a página de referência para dimensionamento automático

Criar uma regra para expandir usando métricas de implantação

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

APLICA-SE A: Azure CLI ml extension 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 my-scale-settings perfil (autoscale-name corresponde ao name do perfil). O valor de seu condition argumento diz que a regra deve ser acionada quando "O consumo médio de CPU entre as instâncias de VM exceder 70% por cinco minutos". Quando essa condição é satisfeita, mais duas instâncias de VM são alocadas.

Nota

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

Criar uma regra para dimensionar usando métricas de implantação

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

APLICA-SE A: Azure CLI ml extension v2 (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 endpoint

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 5 minutos, aloque outro nó.

APLICA-SE A: Azure CLI ml extension v2 (atual)

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

Encontrar IDs de métricas suportados

Se você quiser usar outras métricas no código (CLI ou SDK) para configurar regras de dimensionamento automático, consulte a tabela em Métricas disponíveis.

Criar regras de dimensionamento com base em uma agenda

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

APLICA-SE A: Azure CLI ml extension 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"

Ativar ou desativar o dimensionamento automático

Você pode ativar ou desativar o perfil de dimensionamento automático específico.

APLICA-SE A: Azure CLI ml extension v2 (atual)

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

Eliminar recursos

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

APLICA-SE A: Azure CLI ml extension 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óximos passos

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