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 programações. O processo de dimensionamento automático permite executar automaticamente a quantidade ideal de recursos para lidar com a carga do 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 dessas regras são atendidas. Você pode configurar o dimensionamento baseado em métricas (como utilização de CPU maior que 70%), o dimensionamento baseado em programação (como regras de dimensionamento para horários comerciais de pico) ou uma combinação de ambos. Para saber mais, confira a Visão geral do dimensionamento automático no Microsoft Azure.
No momento, é possível gerenciar o dimensionamento automático usando a CLI do Azure, as APIs REST, o Azure Resource Manager, o SDK 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 diretrizes 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 Python a fim de gerenciar o serviço Azure Monitor, instale o pacote azure-mgmt-monitor com o seguinte comando:
pip install azure-mgmt-monitor
Como definir o perfil de dimensionamento automático
Para habilitar o dimensionamento automático para um ponto de extremidade online, primeiro defina 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 mostra como definir o número de instâncias de VM (máquina virtual) para a capacidade de escala padrão, mínima e máxima.
Se você ainda não definiu os padrões da CLI do Azure, salve as configurações padrão. Para evitar passar os valores para 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 do ponto de extremidade e da implantação:
# set your existing endpoint name
ENDPOINT_NAME=your-endpoint-name
DEPLOYMENT_NAME=blue
Obtenha a ID do Azure Resource Manager relativa à implantação e ao 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 workspace, 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 = []
)
]
}
)
Na lista de pontos de extremidade disponíveis, selecione aquele que será configurado:
Na guia Detalhes do ponto de extremidade selecionado, clique em Configurar dimensionamento automático:
Na opção Escolher como dimensionar recursos, selecione Dimensionamento automático personalizado a fim de iniciar a configuração.
Na opção de condição de escala Padrão, configure os seguintes valores:
Modo de escala: selecione Escala baseada 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.
Mantenha o painel de configuração aberto. Na próxima seção, você definirá as configurações das Regras.
Como criar uma regra de expansão com base em métricas de implantação
Uma regra de expansão comum consiste em aumentar o número de instâncias de VM quando a carga média da CPU estiver alta. Este exemplo mostra como alocar mais dois nós (até o máximo) quando a carga média da CPU for maior que 70% por 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 perfil my-scale-settings, em que autoscale-name corresponde à parte name 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 cinco minutos". Quando a condição é atendida, mais duas instâncias de VM são alocadas.
Essa regra se refere à média dos últimos cinco minutos do valor CPUUtilizationpercentage dos argumentos metric_name, time_window e time_aggregation. Quando o valor da métrica é maior que o threshold de 70, a implantação aloca mais duas instâncias de VM.
Atualize o perfil my-scale-settings para incluir esta regra:
As etapas a seguir dão sequência à configuração do dimensionamento automático.
Na opção Regras, selecione o link Adicionar regra. A página Regra de escala é exibida.
Na página Regra de escala, configure os seguintes valores:
Nome da métrica: selecione Porcentagem de utilização da CPU.
Operador: configurado como Maior que.
Limite de métrica: defina o valor como 70.
Duração (minutos): defina o valor como 5.
Estatística de granularidade de tempo: selecione Médio.
Operação: selecione Aumentar contagem por.
Contagem de instâncias: defina o valor como 2.
Selecione Adicionar para criar a regra:
Mantenha o painel de configuração aberto. Na próxima seção, você ajustará as configurações das Regras.
Como criar uma regra de redução com base em métricas de implantação
Quando a carga média da CPU é baixa, uma regra de redução pode reduzir o número de instâncias de VM. O exemplo a seguir mostra como liberar um único nó para um mínimo de dois quando a carga da CPU é inferior a 30% por cinco minutos.
As etapas a seguir ajustam a configuração das Regras para dar suporte a uma regra de redução.
Na opção Regras, selecione o link Adicionar regra. A página Regra de escala é exibida.
Na página Regra de escala, configure os seguintes valores:
Nome da métrica: selecione Porcentagem de utilização da CPU.
Operador: configurado como Menor que.
Limite de métrica: defina o valor como 30.
Duração (minutos): defina o valor como 5.
Estatística de granularidade de tempo: selecione Médio.
Operação: selecione Diminuir contagem por.
Contagem de instâncias: defina o valor como 1.
Selecione Adicionar para criar a regra:
Se você configurar as regras de expansão e redução, elas serão semelhantes à captura de tela a seguir. As regras especificam que, se a carga média da CPU exceder 70% por cinco minutos, mais dois nós devem ser alocados, até o limite de cinco. Se a carga da CPU for inferior a 30% por cinco minutos, um único nó será liberado, até o mínimo de dois.
Mantenha o painel de configuração aberto. Na próxima seção, você especificará outras configurações de escala.
Como criar uma regra de escala com base em métricas de ponto de extremidade
Nas seções anteriores, você criou regras para aumentar ou diminuir a escala com base em métricas de implantação. Também é possível 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 cinco minutos.
As etapas a seguir dão sequência à configuração da regra na página Dimensionamento automático personalizado.
Na parte inferior da página, selecione o link Adicionar condição de escala.
Na página Condição de escala, selecione Dimensionar com base em métrica e clique no link Adicionar regra. A página Regra de escala é exibida.
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 o ponto de extremidade.
Nome da métrica: selecione Latência de solicitação.
Operador: configurado como Maior que.
Limite de métrica: defina o valor como 70.
Duração (minutos): defina o valor como 5.
Estatística de granularidade de tempo: selecione Médio.
Operação: selecione Aumentar contagem por.
Contagem de instâncias: defina o valor como 1.
Selecione Adicionar para criar a regra:
Como encontrar IDs para as métricas aceitas
Para usar outras métricas no código a fim de configurar regras de dimensionamento automático usando a CLI do Azure ou o SDK, consulte a tabela em Métricas disponíveis.
Como criar uma regra de escala com base na programação
Você também pode criar regras que se aplicam apenas a determinados dias ou a determinados momentos. Nesta seção, você criará uma regra para definir a contagem de nós como dois nos fins de semana.
Siga as etapas a seguir para configurar 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 condição de escala.
Na página Condição de escala, selecione Dimensionar para uma contagem de instâncias específica e clique no link Adicionar regra. A página Regra de escala é exibida.
Na página Regra de escala, configure os seguintes valores:
Contagem de instâncias: defina o valor como 2.
Programação: selecione Repetir dias específicos.
Defina o padrão de programação: selecione Repetir todos e Sábado e Domingo.
Selecione Adicionar para criar a regra:
Como habilitar ou desabilitar o dimensionamento automático
É possível habilitar ou desabilitar um perfil de dimensionamento automático específico.
Para desabilitar um perfil de dimensionamento automático em uso, selecione Escala manual e clique em Salvar.
Para habilitar um perfil de dimensionamento automático, selecione Dimensionamento automático personalizado. O Estúdio lista todos os perfis de dimensionamento automático reconhecidos para o workspace. Selecione um perfil e clique em Salvar para habilitá-lo.
Excluir recursos
Se você não for usar as implantações, exclua os recursos seguindo 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