Поделиться через


Автомасштабирование онлайн-конечных точек в Azure Machine Learning

ОБЛАСТЬ ПРИМЕНЕНИЯ:ML-расширение Azure CLI версии 2 (текущая версия)Python SDK azure-ai-ml версии 2 (текущая версия)

В этой статье описано, как управлять использованием ресурсов в развертывании путем настройки автомасштабирования на основе метрик и расписаний. Процесс автомасштабирования позволяет автоматически запускать нужный объем ресурсов для обработки нагрузки в приложении.

Онлайн конечные точки в Azure Machine Learning поддерживают автомасштабирование благодаря интеграции с функцией автомасштабирования в Azure Monitor. Дополнительные сведения о параметрах автомасштабирования из Azure Monitor см. в Microsoft.Insights autoscalesettings.

Автомасштабирование Azure Monitor позволяет задавать правила, которые активируют одно или несколько действий автомасштабирования при выполнении условий правил. Масштабирование можно использовать для таких метрик, как использование ЦП, расписание, например пиковые рабочие часы или сочетание двух. Дополнительные сведения см. в разделе Общие сведения об автомасштабировании в Microsoft Azure.

Схема, показывающая, как автомасштабирование добавляет и удаляет экземпляры по мере необходимости.

Автоматическое масштабирование можно управлять с помощью REST API, Azure Resource Manager, Azure CLI версии 2, пакета SDK Python версии 2 или портала Azure с помощью Студии машинного обучения Azure.

Предварительные требования

Определите профиль автомасштабирования

Чтобы реализовать автомасштабирование для онлайн-конечной точки, включите параметры автомасштабирования, а затем определите профиль автомасштабирования по умолчанию, указывающий минимальную, максимальную и стандартную емкость масштабируемого набора. Следующая процедура включает автомасштабирование и задает количество экземпляров виртуальной машины для минимальной, максимальной и масштабируемой емкости по умолчанию.

  1. Если вы еще не установили значения по умолчанию для Azure CLI, выполните следующие команды, чтобы избежать многократного указания значений для подписки, рабочей области и группы ресурсов.

    az account set --subscription <subscription ID>
    az configure --defaults workspace=<Azure Machine Learning workspace name> group=<resource group>
    
  2. Задайте имена конечных точек и развертываний:

    # set your existing endpoint name
    ENDPOINT_NAME=your-endpoint-name
    DEPLOYMENT_NAME=blue
    
  3. Получите идентификатор Azure Resource Manager для развертывания и конечной точки:

    # 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`
    
  4. Создайте профиль автомасштабирования:

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

Для получения дополнительной информации см. справочник az monitor по автомасштабированию.

Создание правила горизонтального масштабирования на основе метрик развертывания

Обычное правило горизонтального масштабирования увеличивает количество экземпляров виртуальных машин при высокой средней нагрузке ЦП. В следующем примере показано, как выделить два дополнительных узла до максимального значения, если средняя загрузка ЦП превышает 70% в течение пяти минут.

az monitor autoscale rule create \
  --autoscale-name $AUTOSCALE_SETTINGS_NAME \
  --condition "CpuUtilizationPercentage > 70 avg 5m" \
  --scale out 2

Правило является частью my-scale-settings профиля, где autoscale-name соответствует name части профиля. Значение аргумента condition указывает, что правило активирует, когда среднее потребление ЦП среди экземпляров виртуальной машины превышает 70% в течение пяти минут. Автоматическое масштабирование выделяет два дополнительных экземпляра виртуальных машин при выполнении условия.

Для получения дополнительной информации см. справочник синтаксиса az monitor autoscale в Azure CLI.

Создание правила масштабирования на основе метрик развертывания

Правило уменьшения масштаба может уменьшить число виртуальных машин, когда средняя загрузка ЦП низкая. В следующем примере показано, как освободить один узел до минимума двух, если загрузка ЦП меньше 30% в течение пяти минут.

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

Создание правила масштабирования на основе метрик конечных точек

В предыдущих разделах вы создали правила для масштабирования в зависимости от метрик развертывания. Вы также можете создавать правила, которые применяются к метрикам конечной точки развертывания. Например, можно выделить другой узел, если задержка запроса больше 70 миллисекунда в течение пяти минут.

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

Поиск других поддерживаемых метрик

При настройке правил автомасштабирования можно использовать другие метрики.

  • Имена метрик конечных точек, которые используются в коде, см. в столбце Name in REST API в таблице поддерживаемых метрик для Microsoft.MachineLearningServices/workspaces/onlineEndpoints.

  • Имена метрик развертывания, используемых в коде, см. в столбце «Имя в REST API» в таблицах метрик, поддерживаемых Microsoft.MachineLearningServices/workspaces/onlineEndpoints/deployments.

  • Чтобы выбрать другие метрики на экране правила масштабирования портала Azure, выберите источник метрик в источнике метрик, а затем выберите доступные метрики под именем метрик.

Создание правила масштабирования на основе расписания

Вы можете создавать правила автомасштабирования, которые применяются только в определенные дни или в определенное время. Например, можно создать правило, которое задает количество узлов равным двум в выходные дни.

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"

Включение или отключение автомасштабирования

Вы можете включить или отключить определенный профиль автомасштабирования.

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

Удаление ресурсов

Следующие команды удаляют профиль автомасштабирования и конечную точку.

# 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