Como dimensionar automaticamente pontos de extremidade online no Azure Machine Learning

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

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.

Diagrama que mostra como o dimensionamento automático adiciona e remove instâncias conforme necessário.

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.

Pré-requisitos

  • Um ponto de extremidade implantado. Para saber mais, confira Implantar e classificar um modelo de machine learning usando um ponto de extremidade online.

  • 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.

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

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>
  1. Defina os nomes do ponto de extremidade e da implantação:

    # set your existing endpoint name
    ENDPOINT_NAME=your-endpoint-name
    DEPLOYMENT_NAME=blue
    
  2. 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`
    
  3. Crie 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, consulte a referência Dimensionamento automático do Azure Monitor.

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:

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

Observação

Para saber mais, confira a referência de sintaxe da CLI do Azure Dimensionamento automático do Azure Monitor.

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.

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

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

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.

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

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

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.

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

Como habilitar ou desabilitar o dimensionamento automático

É possível habilitar ou desabilitar um perfil de dimensionamento automático específico.

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

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

Excluir recursos

Se você não for usar as implantações, exclua os recursos seguindo as etapas a seguir.

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