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.
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.
Para utilizar o dimensionamento automático, a função microsoft.insights/autoscalesettings/write tem de ser atribuída à identidade que gere o dimensionamento automático. Pode utilizar quaisquer funções incorporadas ou personalizadas que permitam esta ação. Para obter orientações gerais sobre a gestão de funções do Azure Machine Learning, veja Gerir utilizadores e funções. Para obter mais informações sobre as definições de dimensionamento automático do Azure Monitor, veja Definições de dimensionamento automático do Microsoft.Insights.
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:
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:
from azure.ai.ml import MLClient
from azure.identity import DefaultAzureCredential
from azure.mgmt.monitor import MonitorManagementClient
from azure.mgmt.monitor.models import AutoscaleProfile, ScaleRule, MetricTrigger, ScaleAction, Recurrence, RecurrentSchedule
import random
import datetime
Definir variáveis para a área de trabalho, o ponto final e a implementação:
# 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 = f"autoscale-{endpoint_name}-{deployment_name}-{random.randint(0,1000)}"
mon_client.autoscale_settings.create_or_update(
resource_group,
autoscale_settings_name,
parameters = {
"location" : endpoint.location,
"target_resource_uri" : deployment.id,
"profiles" : [
AutoscaleProfile(
name="my-scale-settings",
capacity={
"minimum" : 2,
"maximum" : 5,
"default" : 2
},
rules = []
)
]
}
)
No estúdio do Azure Machine Learning, selecione a área de trabalho e, em seguida, selecione Pontos finais no lado esquerdo da página. Assim que os pontos finais estiverem listados, selecione aquele que pretende configurar.
No separador Detalhes do ponto final, selecione Configurar dimensionamento automático.
Em Escolher como dimensionar os seus recursos, selecione Dimensionamento automático personalizado para iniciar a configuração. Para a condição de dimensionamento predefinida, utilize os seguintes valores:
Defina o Modo de dimensionamento como Dimensionamento com base numa métrica.
Defina Mínimo como 2.
Defina Máximo como 5.
Defina Predefinição como 2.
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:
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.
Esta regra refere-se à média dos últimos 5 minutos dos CPUUtilizationpercentage argumentos metric_namee time_windowtime_aggregation. Quando o valor da métrica é maior do que o threshold de 70, são alocadas mais duas instâncias de VM.
Atualize o my-scale-settings perfil para incluir esta regra:
Na secção Regras , selecione Adicionar uma regra. A página Regra de dimensionamento é apresentada. Utilize as seguintes informações para preencher os campos nesta página:
Defina o Nome da métrica como Percentagem de Utilização da CPU.
Defina Operador como Maior que e defina o limiar de Métrica como 70.
Defina Duração (minutos) como 5. Deixe a estatística Intervalo de agregação como Média.
Defina Operação como Aumentar contagem por e defina Contagem de instâncias como 2.
Por fim, selecione o botão Adicionar para criar a regra.
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:
Na secção Regras , selecione Adicionar uma regra. A página Regra de dimensionamento é apresentada. Utilize as seguintes informações para preencher os campos nesta página:
Defina o Nome da métrica como Percentagem de Utilização da CPU.
Defina Operador como Menor que e o limiar de Métrica como 30.
Defina Duração (minutos) como 5.
Defina Operação como Diminuir contagem por e defina Contagem de instâncias como 1.
Por fim, selecione o botão Adicionar para criar a regra.
Se tiver regras de aumento horizontal e redução horizontal, as regras terão um aspeto semelhante à seguinte captura de ecrã. Especificou que, se a carga média da CPU exceder 70% durante 5 minutos, devem ser alocados mais 2 nós, até ao limite de 5. Se a carga da CPU for inferior a 30% durante 5 minutos, deverá ser libertado um único nó, até ao mínimo de 2.
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ó.
Na parte inferior da página, selecione + Adicionar uma condição de dimensionamento.
Selecione Dimensionar com base na métrica e, em seguida, selecione Adicionar uma regra. A página Regra de dimensionamento é apresentada. Utilize as seguintes informações para preencher os campos nesta página:
Defina origem da métrica como Outro recurso.
Defina o Tipo de recurso como pontos finais online do Machine Learning.
Defina Recurso para o ponto final.
Defina Nome da métrica como Latência do pedido.
Defina Operador como Maior do que e defina Limiar de métrica como 70.
Defina Duração (minutos) como 5.
Defina Operação para Aumentar contagem por e defina Contagem de instâncias como 1
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.
Na parte inferior da página, selecione + Adicionar uma condição de dimensionamento. Na nova condição de dimensionamento, utilize as seguintes informações para preencher os campos:
Selecione Dimensionar para uma contagem de instâncias específica.
Defina a Contagem de instâncias como 2.
Defina a Agenda como Repetir dias específicos.
Defina a agenda para Repetir todos ossábados e domingos.
Eliminar recursos
Se não pretender utilizar as suas implementações, elimine-as:
# 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