Neste artigo, você aprenderá a gerenciar o uso de recursos em uma implantação configurando o dimensionamento automático com base em métricas e agendas. O processo de dimensionamento automático permite executar automaticamente a quantidade certa de recursos para lidar com a carga em seu aplicativo. Os pontos de extremidade online no Azure Machine Learning dão suporte ao dimensionamento automático por meio da integração com o recurso de dimensionamento automático no Azure Monitor.
O dimensionamento automático do Azure Monitor permite definir regras que acionam uma ou mais ações de dimensionamento automático quando as condições das regras são atendidas. Você pode configurar o dimensionamento baseado em métricas (como utilização da CPU maior que 70%), o dimensionamento baseado em programação (como regras de dimensionamento para horários comerciais de pico) ou uma combinação dos dois. Para obter mais informações, consulte Visão geral do dimensionamento automático no Microsoft Azure.
Atualmente, você pode gerenciar o dimensionamento automático usando a CLI do Azure, as APIs REST, o Gerenciador de Recursos do Azure, o SDK do Python ou o portal do Azure baseado em navegador.
Para usar o dimensionamento automático, a função microsoft.insights/autoscalesettings/write deve ser atribuída à identidade que gerencia o dimensionamento automático. Você pode usar quaisquer funções internas ou personalizadas que permitam essa ação. Para obter orientações gerais sobre como gerenciar funções para o Azure Machine Learning, consulte Gerenciar usuários e funções. Para obter mais informações sobre as configurações de dimensionamento automático do Azure Monitor, consulte Microsoft.Insights autoscalesettings.
Para usar o SDK do Python para gerenciar o serviço Azure Monitor, instale o azure-mgmt-monitor pacote com o seguinte comando:
pip install azure-mgmt-monitor
Definir autoscale profile
Para habilitar o dimensionamento automático para um ponto de extremidade online, primeiro defina um perfil de dimensionamento automático. O perfil especifica a capacidade padrão, mínima e máxima do conjunto de escalas. O exemplo a seguir mostra como definir o número de instâncias de máquina virtual (VM) para a capacidade de escala padrão, mínima e máxima.
Se você ainda não definiu os padrões para a CLI do Azure, salve suas configurações padrão. Para evitar passar os valores da sua assinatura, espaço de trabalho e grupo de recursos várias vezes, execute este código:
az account set --subscription <subscription ID>
az configure --defaults workspace=<Azure Machine Learning workspace name> group=<resource group>
Defina os nomes de ponto de extremidade e implantação:
# set your existing endpoint name
ENDPOINT_NAME=your-endpoint-name
DEPLOYMENT_NAME=blue
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`
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
Defina variáveis para o espaço de trabalho, o ponto de extremidade e a implantação:
# Set a unique name for autoscale settings for this deployment. The following code appends a random number to create a unique name.
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, vá para seu espaço de trabalho e selecione Pontos de extremidade no menu à esquerda.
Na lista de pontos de extremidade disponíveis, selecione o ponto de extremidade a ser configurado:
Na guia Detalhes do ponto de extremidade selecionado, selecione Configurar dimensionamento automático:
Para a opção Escolha como dimensionar seus recursos , selecione Dimensionamento automático personalizado para iniciar a configuração.
Para a opção Condição de escala padrão , configure os seguintes valores:
Modo de escala: selecione Escala com base em uma métrica.
Limites>de instância Mínimo: defina o valor como 2.
Limites>de instância Máximo: defina o valor como 5.
Limites>de instância Padrão: defina o valor como 2.
Deixe o painel de configuração aberto. Na próxima seção, você define as configurações de regras .
Criar regra de expansão com base em métricas de implantação
Uma regra de expansão comum é aumentar o número de instâncias de VM quando a carga média da CPU é alta. O exemplo a seguir mostra como alocar mais dois nós (até o máximo) se a carga média da CPU for maior que 70% por 5 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, onde autoscale-name corresponde à name parte do perfil. O valor do argumento da regra condition indica que a regra é acionada quando "O consumo médio de CPU entre as instâncias de VM excede 70% por 5 minutos". Quando a condição é satisfeita, mais duas instâncias de VM são alocadas.
Nota
Para obter mais informações, consulte az monitor autoscale Azure CLI syntax reference.
Esta regra refere-se à média dos últimos 5 minutos do CPUUtilizationpercentage valor dos argumentos metric_name, time_windowe time_aggregation. Quando o valor da métrica é maior que 70 threshold , a implantação aloca mais duas instâncias de VM.
Atualize o my-scale-settings perfil para incluir esta regra:
As etapas a seguir continuam com a configuração de dimensionamento automático.
Para a opção Regras , selecione o link Adicionar uma regra . A página Regra de escala é aberta.
Na página Regra de escala , configure os seguintes valores:
Nome da métrica: Selecione Porcentagem de utilização da CPU.
Operador: Definido como Maior que.
Limite métrico: defina o valor como 70.
Duração (minutos): defina o valor como 5.
Estatística de grãos de tempo: Selecione Média.
Operação: Selecione Aumentar contagem por.
Contagem de instâncias: defina o valor como 2.
Selecione Adicionar para criar a regra:
Deixe o painel de configuração aberto. Na próxima seção, você ajusta as configurações de regras .
Criar regra de dimensionamento com base em métricas de implantação
Quando a carga média da CPU é leve, uma regra de dimensionamento pode reduzir o número de instâncias de VM. O exemplo a seguir mostra como liberar um único nó até um mínimo de dois, se a carga da CPU for inferior a 30% por 5 minutos.
As etapas a seguir ajustam a configuração de regras para dar suporte a uma escala na regra.
Para a opção Regras , selecione o link Adicionar uma regra . A página Regra de escala é aberta.
Na página Regra de escala , configure os seguintes valores:
Nome da métrica: Selecione Porcentagem de utilização da CPU.
Operador: Defina como Menos que.
Limite métrico: defina o valor como 30.
Duração (minutos): defina o valor como 5.
Estatística de grãos de tempo: Selecione Média.
Operação: Selecione Diminuir contagem por.
Contagem de instâncias: defina o valor como 1.
Selecione Adicionar para criar a regra:
Se você configurar regras de expansão e de expansão, suas regras serão semelhantes à captura de tela a seguir. As regras especificam que, se a carga média da CPU exceder 70% durante 5 minutos, mais dois nós devem ser alocados, até o limite de cinco. Se a carga da CPU for inferior a 30% durante 5 minutos, um único nó deve ser libertado, até ao mínimo de dois.
Deixe o painel de configuração aberto. Na próxima seção, especifique outras configurações de escala.
Criar regra de escala com base em métricas de endpoint
Nas seções anteriores, você criou regras para aumentar ou diminuir a escala com base nas métricas de implantação. Você também pode criar uma regra que se aplique ao ponto de extremidade de implantação. Nesta seção, você aprenderá a alocar outro nó quando a latência da solicitação for maior que uma média de 70 milissegundos por 5 minutos.
As etapas a seguir continuam a configuração da regra na página Dimensionamento automático personalizado.
Na parte inferior da página, selecione o link Adicionar uma condição de escala.
Na página Condição de escala, selecione Dimensionar com base na métrica e, em seguida, selecione o link Adicionar uma regra. A página Regra de escala é aberta.
Na página Regra de escala , configure os seguintes valores:
Origem da métrica: Selecione Outro recurso.
Tipo de recurso: Selecione Pontos de extremidade online do Machine Learning.
Recurso: Selecione seu ponto de extremidade.
Nome da métrica: Selecione Latência da solicitação.
Operador: Definido como Maior que.
Limite métrico: defina o valor como 70.
Duração (minutos): defina o valor como 5.
Estatística de grãos de tempo: Selecione Média.
Operação: Selecione Aumentar contagem por.
Contagem de instâncias: defina o valor como 1.
Selecione Adicionar para criar a regra:
Encontrar IDs para métricas suportadas
Se você quiser usar outras métricas no código para configurar regras de dimensionamento automático usando a CLI do Azure ou o SDK, consulte a tabela em Métricas disponíveis.
Criar regra de escala com base na programação
Você também pode criar regras que se aplicam apenas em determinados dias ou horários. Nesta seção, você cria uma regra que define a contagem de nós como 2 nos fins de semana.
As etapas a seguir configuram a regra com opções na página Dimensionamento automático personalizado no estúdio.
Na parte inferior da página, selecione o link Adicionar uma condição de escala.
Na página Condição de escala, selecione Dimensionar para uma contagem de instâncias específica e, em seguida, selecione o link Adicionar uma regra. A página Regra de escala é aberta.
Na página Regra de escala , configure os seguintes valores:
Contagem de instâncias: defina o valor como 2.
Agendar: Selecione Repetir dias específicos.
Defina o padrão de programação: Selecione Repetir todos os sábados e domingos.
Selecione Adicionar para criar a regra:
Ativar ou desativar o dimensionamento automático
Você pode habilitar ou desabilitar um perfil de dimensionamento automático específico.
Para desativar um perfil de dimensionamento automático em uso, selecione Escala manual e, em seguida, selecione Salvar.
Para habilitar um perfil de dimensionamento automático, selecione Dimensionamento automático personalizado. O estúdio lista todos os perfis de escala automática reconhecidos para o espaço de trabalho. Selecione um perfil e, em seguida, selecione Salvar para ativar.
Eliminar recursos
Se você não vai usar suas implantações, exclua os recursos com as etapas a seguir.
# 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