Использование низкоприоритетных виртуальных машин в пакетных развертываниях

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

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

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

Низкоприоритетные виртуальные машины предлагаются по значительно сниженной цене по сравнению с выделенными виртуальными машинами. Сведения о ценах см. в статье Цены на Машинное обучение Azure.

Как пакетное развертывание работает с низкоприоритетными виртуальными машинами

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

  • Задания пакетного развертывания используют низкоприоритетные виртуальные машины, запуская в вычислительных кластерах Машинного обучения Azure, созданных с низкоприоритетными виртуальными машинами. После того как развертывание будет связано с кластером виртуальных машин с низким приоритетом, все задания, созданные таким развертыванием, будут использовать низкоприоритетные виртуальные машины. Настройка для каждого задания невозможна.
  • Задания пакетного развертывания автоматически ищут целевое число виртуальных машин в доступном вычислительном кластере на основе количества отложенных задач. Если виртуальные машины вытесняются или недоступны, задания пакетного развертывания пытаются заменить потерянную емкость, поместив в очередь невыполненные задачи в кластер.
  • Виртуальные машины с низким приоритетом имеют отдельную квоту виртуальных ЦП, которая отличается от квоты для выделенных виртуальных машин. Квота ядер с низким приоритетом на регион по умолчанию составляет от 100 до 3000, в зависимости от типа предложения подписки. Количество ядер с низким приоритетом для каждой подписки можно увеличить, и оно является одним значением в разных семействах виртуальных машин. См. статью Квоты вычислений Машинного обучения Azure.

Рекомендации и варианты использования

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

При развертывании моделей в пакетных конечных точках можно перепланировать на уровне мини-пакета. Это имеет дополнительное преимущество в том, что освобождение влияет только на те мини-пакеты, которые в настоящее время обрабатываются и не завершены на затронутом узле. Каждый завершенный ход выполнения сохраняется.

Создание пакетных развертываний с низкоприоритетными виртуальными машинами

Задания пакетного развертывания используют низкоприоритетные виртуальные машины, запуская в вычислительных кластерах Машинного обучения Azure, созданных с низкоприоритетными виртуальными машинами.

Примечание

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

Вы можете создать низкоприоритетный вычислительный кластер Машинного обучения Azure следующим образом:

Создайте определение YAML вычислений, например следующее:

low-pri-cluster.yml

$schema: https://azuremlschemas.azureedge.net/latest/amlCompute.schema.json 
name: low-pri-cluster
type: amlcompute
size: STANDARD_DS3_v2
min_instances: 0
max_instances: 2
idle_time_before_scale_down: 120
tier: low_priority

Создайте вычисление с помощью следующей команды:

az ml compute create -f low-pri-cluster.yml

После создания новых вычислительных ресурсов можно создать или обновить развертывание, чтобы использовать новый кластер:

Чтобы создать или обновить развертывание в новом вычислительном кластере, создайте конфигурацию, подобную YAML следующей:

$schema: https://azuremlschemas.azureedge.net/latest/batchDeployment.schema.json
endpoint_name: heart-classifier-batch
name: classifier-xgboost
description: A heart condition classifier based on XGBoost
type: model
model: azureml:heart-classifier@latest
compute: azureml:low-pri-cluster
resources:
  instance_count: 2
settings:
  max_concurrency_per_instance: 2
  mini_batch_size: 2
  output_action: append_row
  output_file_name: predictions.csv
  retry_settings:
    max_retries: 3
    timeout: 300

Затем создайте развертывание с помощью следующей команды:

az ml batch-endpoint create -f endpoint.yml

Просмотр и мониторинг освобождения узла

В портал Azure доступны новые метрики для виртуальных машин с низким приоритетом для мониторинга виртуальных машин с низким приоритетом. Это такие метрики:

  • Замещенные узлы
  • Вытесняемые ядра

Для просмотра метрик на портале Azure

  1. Перейдите в рабочую область Машинного обучения Azure в портал Azure.
  2. В разделе Мониторинг щелкните Метрики.
  3. Выберите нужные показатели из списка Показатель.

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

Ограничения

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

Предупреждение

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