Автомасштабирование сетевой конечной точки

ПРИМЕНИМО К:Расширение машинного обучения Azure CLI версии 2 (в настоящее время)Пакет SDK для Python azure-ai-ml версии 2 (текущая версия)

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

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

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

Сейчас автомасштабированием можно управлять с помощью Azure CLI, RESTFUL, ARM или портала Azure на основе браузера. Другие пакеты SDK для Машинного обучения Azure, такие как пакет SDK для Python, со временем будут добавлять поддержку.

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

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

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

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

В следующем фрагменте кода задаются имена конечной точки и развертывания:

# set your existing endpoint name
ENDPOINT_NAME=your-endpoint-name
DEPLOYMENT_NAME=blue

Затем получите идентификатор 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`

Следующий фрагмент кода создает профиль автомасштабирования:

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

Примечание

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

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

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

ОБЛАСТЬ ПРИМЕНЕНИЯ:Расширение ml для 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 % в течение пяти минут". При соблюдении этого условия выделяются два дополнительных экземпляра виртуальных машин.

Примечание

Дополнительные сведения о синтаксисе интерфейса командной строки см. в разделе az monitor autoscale.

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

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

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

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

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

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

ОБЛАСТЬ ПРИМЕНЕНИЯ:Расширение ml для 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

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

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

ОБЛАСТЬ ПРИМЕНЕНИЯ:Расширение ml для 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"

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

Если вы не собираетесь использовать развертывания, удалите их:

ОБЛАСТЬ ПРИМЕНЕНИЯ:Расширение ml для 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

Дальнейшие действия

Дополнительные сведения об автомасштабировании с помощью Azure Monitor см. в следующих статьях: