Dimensionamento automático de pontos de extremidade online no Azure Machine Learning

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

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.

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

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.

Pré-requisitos

  • Um ponto de extremidade implantado. Para obter mais informações, consulte Implantar e pontuar um modelo de aprendizado de máquina 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 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.

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

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

    # set your existing endpoint name
    ENDPOINT_NAME=your-endpoint-name
    DEPLOYMENT_NAME=blue
    
  2. 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`
    
  3. Crie o perfil de escala automática:

    az monitor autoscale create \
      --name $AUTOSCALE_SETTINGS_NAME \
      --resource $DEPLOYMENT_RESOURCE_ID \
      --min-count 2 --max-count 5 --count 2
    

Nota

Para obter mais informações, consulte a referência az monitor autoscale .

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:

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

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.

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

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

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 habilitar ou desabilitar um 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 os recursos com as etapas a seguir.

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