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

ОБЛАСТЬ ПРИМЕНЕНИЯ:Расширение Машинного обучения для Azure CLI версии 1пакет SDK для Python azureml версии 1

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

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

В этой статье раскрываются следующие темы:

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

Что такое вычислительный кластер?

Вычислительный кластер Машинного обучения Azure — это управляемая вычислительная инфраструктура, которая позволяет c легкостью создавать одно- и многоузловые вычислительные среды. Вычислительный кластер — это ресурс, который можно использовать совместно с другими пользователями в рабочей области. Вычислительная среда автоматически масштабируется при отправке задания, а также может быть размещена в виртуальной сети Azure. Вычислительный кластер не поддерживает развертывание общедоступных IP-адресов , а также в виртуальной сети. Она выполняется в контейнерной среде, упаковывая зависимости вашей модели в контейнер Docker.

Вычислительные кластеры безопасно запускают задания в среде виртуальной сети, не требуя, чтобы предприятия открывали порт SSH. Задание выполняется в контейнерной среде и упаковывает зависимости модели в контейнер Docker.

Ограничения

  • Вычислительные кластеры можно создавать в другом регионе и виртуальной сети, отличной от рабочей области. Однако эта функция доступна только с помощью пакета SDK версии 2, CLI версии 2 или студии. Дополнительные сведения см. в версии 2 безопасных учебных сред.

  • В настоящее время поддерживается только создание (не обновление) кластеров с помощью шаблонов ARM. Для обновления вычислений в настоящее время рекомендуется использовать пакет SDK, Azure CLI или UX.

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

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

Совет

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

Создание

Примерное время: приблизительно 5 минут.

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

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

Внимание

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

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

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

  • vm_size: семейство виртуальных машин узлов, созданных Машинное обучение Azure вычислений.
  • max_nodes. Максимальное число узлов для автомасштабирования до запуска задания в Машинное обучение Azure вычислений.

ОБЛАСТЬ ПРИМЕНЕНИЯ: Пакет SDK для Python версии 1

from azureml.core.compute import ComputeTarget, AmlCompute
from azureml.core.compute_target import ComputeTargetException

# Choose a name for your CPU cluster
cpu_cluster_name = "cpucluster"

# Verify that cluster does not exist already
try:
    cpu_cluster = ComputeTarget(workspace=ws, name=cpu_cluster_name)
    print('Found existing cluster, use it.')
except ComputeTargetException:
    # To use a different region for the compute, add a location='<region>' parameter
    compute_config = AmlCompute.provisioning_configuration(vm_size='STANDARD_D2_V2',
                                                           max_nodes=4)
    cpu_cluster = ComputeTarget.create(ws, cpu_cluster_name, compute_config)

cpu_cluster.wait_for_completion(show_output=True)

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

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

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

Снижение стоимости вычислительного кластера

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

ОБЛАСТЬ ПРИМЕНЕНИЯ: Пакет SDK для Python версии 1

compute_config = AmlCompute.provisioning_configuration(vm_size='STANDARD_D2_V2',
                                                            vm_priority='lowpriority',
                                                            max_nodes=4)

Настройка управляемого удостоверения

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

  • Управляемое удостоверение, назначаемое системой, включено непосредственно в Машинное обучение Azure вычислительном кластере и вычислительном экземпляре. Жизненный цикл назначаемого системой удостоверения напрямую привязан к вычислительному кластеру или экземпляру. Если вычислительный кластер или экземпляр удален, Azure автоматически очищает учетные данные и удостоверение в идентификаторе Microsoft Entra.
  • Управляемое удостоверение, назначаемое пользователем — это автономный ресурс Azure, предоставляемый через службу управляемых удостоверений Azure. Управляемое удостоверение, назначаемое пользователем, можно назначить нескольким ресурсам, и хранить его в течение неограниченного периода времени. Это управляемое удостоверение необходимо создать заранее, а затем передать как identity_id в качестве обязательного параметра.

ОБЛАСТЬ ПРИМЕНЕНИЯ: Пакет SDK для Python версии 1

  • Настройте управляемое удостоверение в конфигурации подготовки:

    • Создайте управляемое удостоверение, назначаемое системой, в рабочей области ws.

      # configure cluster with a system-assigned managed identity
      compute_config = AmlCompute.provisioning_configuration(vm_size='STANDARD_D2_V2',
                                                              max_nodes=5,
                                                              identity_type="SystemAssigned",
                                                              )
      cpu_cluster_name = "cpu-cluster"
      cpu_cluster = ComputeTarget.create(ws, cpu_cluster_name, compute_config)
      
    • Создайте управляемое удостоверение, назначаемое пользователем, в рабочей области ws.

      # configure cluster with a user-assigned managed identity
      compute_config = AmlCompute.provisioning_configuration(vm_size='STANDARD_D2_V2',
                                                              max_nodes=5,
                                                              identity_type="UserAssigned",
                                                              identity_id=['/subscriptions/<subcription_id>/resourcegroups/<resource_group>/providers/Microsoft.ManagedIdentity/userAssignedIdentities/<user_assigned_identity>'])
      
      cpu_cluster_name = "cpu-cluster"
      cpu_cluster = ComputeTarget.create(ws, cpu_cluster_name, compute_config)
      
  • Добавьте управляемое удостоверение в существующий вычислительный кластер cpu_cluster.

    • Управляемое удостоверение, назначаемое системой:

      # add a system-assigned managed identity
      cpu_cluster.add_identity(identity_type="SystemAssigned")
      
    • Управляемое удостоверение, назначаемое пользователем:

      # add a user-assigned managed identity
      cpu_cluster.add_identity(identity_type="UserAssigned", 
                                  identity_id=['/subscriptions/<subcription_id>/resourcegroups/<resource_group>/providers/Microsoft.ManagedIdentity/userAssignedIdentities/<user_assigned_identity>'])
      

Примечание.

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

Использование управляемого удостоверения

Управляемым удостоверением по умолчанию является управляемое удостоверение, назначенное системой, или первое назначенное пользователю управляемое удостоверение.

Во время работы существует два варианта применения удостоверения:

  1. Система использует удостоверение для настройки подключений к хранилищу, реестру контейнеров и хранилищам данных пользователя.

    • В этом случае система использует управляемое удостоверение по умолчанию.
  2. Пользователь применяет удостоверение для доступа к ресурсам из кода для отправленного выполнения

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

    Например, чтобы получить маркер для хранилища данных с помощью управляемого удостоверения по умолчанию:

    client_id = os.environ.get('DEFAULT_IDENTITY_CLIENT_ID')
    credential = ManagedIdentityCredential(client_id=client_id)
    token = credential.get_token('https://storage.azure.com/')
    

Устранение неполадок

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

Зависание при изменении размера

Если при изменении размера узла (0 -> 0) в кластере служба "Машинное обучение Azure" зависает, это может быть вызвано блокировкой ресурсов Azure.

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

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

Внимание

Не применяйте блокировку к следующим ресурсам:

Имя ресурса Тип ресурса
<GUID>-azurebatch-cloudservicenetworksecurityggroup группу безопасности сети;
<GUID>-azurebatch-cloudservicepublicip Общедоступный IP-адрес
<GUID>-azurebatch-cloudserviceloadbalancer Подсистема балансировки нагрузки

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

Дополнительные сведения о блокировке ресурсов см. в статье Блокировка ресурсов для предотвращения непредвиденных изменений.

Следующие шаги

Используйте вычислительный кластер для следующего: