Благодаря автомасштабированию автоматически запускается именно тот объем ресурсов, который нужен для обработки нагрузки в вашем приложении. Сетевые конечные точки поддерживают автоматическое масштабирование через интеграцию с функцией автомасштабирования Azure Monitor.
Автомасштабирование Azure Monitor поддерживает широкий набор правил. Можно настроить масштабирование на основе метрик (например, загрузка ЦП >70%), масштабирование на основе расписания (например, правила масштабирования для пиковых рабочих часов) или их сочетание. Дополнительные сведения см. в разделе Общие сведения об автомасштабировании в Microsoft Azure.
Сейчас автомасштабированием можно управлять с помощью Azure CLI, RESTFUL, ARM или портала Azure на основе браузера. Другие пакеты SDK для Машинного обучения Azure, такие как пакет SDK для Python, со временем будут добавлять поддержку.
Чтобы использовать автомасштабирование, роль microsoft.insights/autoscalesettings/write должна быть назначена удостоверению, управляющее автомасштабированием. Вы можете использовать любые встроенные или настраиваемые роли, которые разрешают это действие. Общие рекомендации по управлению ролями для Машинного обучения Azure см. в статье Управление пользователями и ролями. Дополнительные сведения о параметрах автомасштабирования из Azure Monitor см. в статье Параметры автомасштабирования Microsoft.Insights.
Определение профиля автомасштабирования
Чтобы включить автомасштабирование для конечной точки, сначала определите профиль автомасштабирования. Этот профиль определяет используемую по умолчанию, минимальную и максимальную емкости масштабируемого набора. В следующем примере минимальная емкость и емкость по умолчанию составляют два экземпляра виртуальных машин, а максимальная — пять.
В следующем фрагменте кода задаются имена конечной точки и развертывания:
# 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`
Следующий фрагмент кода создает профиль автомасштабирования:
from azure.ai.ml import MLClient
from azure.identity import DefaultAzureCredential
from azure.mgmt.monitor import MonitorManagementClient
from azure.mgmt.monitor.models import AutoscaleProfile, ScaleRule, MetricTrigger, ScaleAction, Recurrence, RecurrentSchedule
import random
import datetime
Определите переменные для рабочей области, конечной точки и развертывания:
# 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 = f"autoscale-{endpoint_name}-{deployment_name}-{random.randint(0,1000)}"
mon_client.autoscale_settings.create_or_update(
resource_group,
autoscale_settings_name,
parameters = {
"location" : endpoint.location,
"target_resource_uri" : deployment.id,
"profiles" : [
AutoscaleProfile(
name="my-scale-settings",
capacity={
"minimum" : 2,
"maximum" : 5,
"default" : 2
},
rules = []
)
]
}
)
В студии Машинного обучения Azure выберите свою рабочую область, а затем в левой части страницы выберите Конечные точки. Когда появится список конечных точек, выберите ту, которую нужно настроить.
На вкладке Сведения для конечной точки выберите пункт Настроить автоматическое масштабирование.
В разделе Выберите способ масштабирования ресурсов щелкните Пользовательское автомасштабирование, чтобы начать настройку. Для условия масштабирования по умолчанию используйте следующие значения:
Для параметра Режим масштабирования — значение Масштабировать на основе метрики.
Для параметра Минимум — значение 2.
Для параметра Максимум — значение 5.
Для параметра По умолчанию — значение 2.
Создание правила для увеличения масштаба с помощью метрик
Обычное правило масштабирования увеличивает количество экземпляров виртуальных машин при высокой средней загрузке ЦП. В следующем примере выделяются еще два узла (до максимального количества), если средняя нагрузка ЦП превышает 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.
Это правило относится к последним 5-минутным средним значениям CPUUtilizationpercentage из аргументов metric_name, time_window и time_aggregation. Когда значение метрики больше threshold из 70, выделяются еще два экземпляра виртуальных машин.
Обновите профиль my-scale-settings, чтобы включить это правило:
В разделе Правила выберите Добавить правило. Отобразится страница Правило масштабирования. Заполните поля на этой странице, используя следующие сведения:
Задайте для параметра Имя метрики значение Процент использования ЦП.
Задайте для параметра Оператор значение Больше, а для параметра Пороговое значение метрики — значение 70.
Задайте для параметра Длительность (в минутах) значение 5. Для параметра Статистика интервала времени оставьте значение Средний.
Задайте для параметра Операция значение Увеличить на, а для параметра Число экземпляров — значение 2.
Наконец, нажмите кнопку Добавить, чтобы создать правило.
Создание правила для уменьшения масштаба с помощью метрик
Когда нагрузка невелика, уменьшение масштаба по правилу может уменьшить количество экземпляров виртуальных машин. В следующем примере один узел освобождается, так что количество узлов сокращается до минимальных двух, если загрузка ЦП составляет меньше 30 % в течение 5 минут:
В разделе Правила выберите Добавить правило. Отобразится страница Правило масштабирования. Заполните поля на этой странице, используя следующие сведения:
Задайте для параметра Имя метрики значение Процент использования ЦП.
Задайте для параметра Оператор значение Меньше, а для параметра Пороговое значение метрики — значение 30.
Задайте для параметра Длительность (в минутах) значение 5.
Задайте для параметра Операция значение Уменьшить на, а для параметра Число экземпляров — значение 1.
Наконец, нажмите кнопку Добавить, чтобы создать правило.
Если вы используете правила увеличения и уменьшения масштаба, они будут выглядеть примерно как на представленном ниже снимке экрана. Вы указали, что если средняя загрузка ЦП превышает 70 % в течение 5 минут, выделяются 2 дополнительных узла — до ограничения в 5 узлов. Если загрузка ЦП составляет меньше 30 % в течение 5 минут, освобождается один узел — до минимального количества в 2 узла.
Создание правила масштабирования на основе метрик конечной точки
К развертыванию применяются предыдущие правила. Теперь добавьте правило, которое применяется к конечной точке. В этом примере, если задержка запроса превышает среднее значение в 70 миллисекунд в течение 5 минут, выделяется другой узел.
В нижней части страницы выберите + Добавить условие масштабирования.
Выберите Масштабирование на основе метрики, а затем Добавить правило. Отобразится страница Правило масштабирования. Заполните поля на этой странице, используя следующие сведения:
Задайте для параметра Источник метрики значение Другой ресурс.
Задайте для параметра Тип ресурса значение Сетевые конечные точки Машинного обучения Azure.
Для параметра Ресурс в качестве значения укажите свою конечную точку.
Задайте для параметра Имя метрики значение Задержка запросов.
Задайте для параметра Оператор значение Больше, а для параметра Пороговое значение метрики — значение 70.
Задайте для параметра Длительность (в минутах) значение 5.
Задайте для параметра Операция значение Увеличить на, а для параметра Число экземпляров — значение 1.
Создание правил масштабирования на основе расписания
Кроме прочего можно создавать правила, действующие только в определенные дни или моменты времени. В этом примере число узлов в выходные составляет 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