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


Автомасштабирование сетевых конечных точек в Машинное обучение Azure

ОБЛАСТЬ ПРИМЕНЕНИЯ:Расширение машинного обучения Azure CLI версии 2 (current)Python SDK azure-ai-ml версии 2 (current)

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

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

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

В настоящее время можно управлять автомасштабированием с помощью Azure CLI, REST API, Azure Resource Manager, пакета SDK Python или портал Azure на основе браузера.

Необходимые компоненты

  • Развернутая конечная точка. Дополнительные сведения см. в статье "Развертывание и оценка модели машинного обучения с помощью сетевой конечной точки".

  • Чтобы использовать автомасштабирование, роль microsoft.insights/autoscalesettings/write должна быть назначена удостоверению, которое управляет автомасштабированием. Вы можете использовать все встроенные или пользовательские роли, которые позволяют этому действию. Общие рекомендации по управлению ролями для Машинное обучение Azure см. в разделе "Управление пользователями и ролями". Дополнительные сведения о параметрах автомасштабирования из Azure Monitor см. в разделе автомасштабирование Microsoft.Insights.

  • Чтобы использовать пакет SDK Python для управления службой Azure Monitor, установите azure-mgmt-monitor пакет с помощью следующей команды:

    pip install azure-mgmt-monitor
    

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

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

ОБЛАСТЬ ПРИМЕНЕНИЯ: расширение машинного обучения Azure CLI версии 2 (текущее)

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

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

    # set your existing endpoint name
    ENDPOINT_NAME=your-endpoint-name
    DEPLOYMENT_NAME=blue
    
  2. Получите идентификатор 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`
    
  3. Создайте профиль автомасштабирования:

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

Примечание.

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

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

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

ОБЛАСТЬ ПРИМЕНЕНИЯ: расширение машинного обучения Azure CLI версии 2 (текущее)

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 % в течение 5 минут. При выполнении условия выделяется еще два экземпляра виртуальной машины.

Примечание.

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

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

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

ОБЛАСТЬ ПРИМЕНЕНИЯ: расширение машинного обучения Azure CLI версии 2 (текущее)

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

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

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

ОБЛАСТЬ ПРИМЕНЕНИЯ: расширение машинного обучения Azure CLI версии 2 (текущее)

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

Поиск идентификаторов для поддерживаемых метрик

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

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

Кроме прочего можно создавать правила, действующие только в определенные дни или моменты времени. В этом разделе описано, как создать правило, которое задает количество узлов в 2 в выходные дни.

ОБЛАСТЬ ПРИМЕНЕНИЯ: расширение машинного обучения Azure CLI версии 2 (текущее)

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"

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

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

ОБЛАСТЬ ПРИМЕНЕНИЯ: расширение машинного обучения Azure CLI версии 2 (текущее)

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

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

Если вы не собираетесь использовать развертывания, удалите ресурсы, выполнив следующие действия.

ОБЛАСТЬ ПРИМЕНЕНИЯ: расширение машинного обучения Azure CLI версии 2 (текущее)

# 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