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


Обучение моделей с помощью пакета SDK Python для Машинного обучения Azure (версия 1)

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

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

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

  • Локальный компьютер
  • Удаленные виртуальные машины
  • Пулы Apache Spark (с поддержкой Azure Synapse Analytics)
  • Azure HDInsight
  • Пакетная служба Azure
  • Azure Databricks — используется в качестве целевого объекта вычислений обучения только в конвейерах машинного обучения
  • Аналитика озера данных Azure
  • Экземпляр контейнеров Azure
  • Kubernetes для Машинного обучения Azure

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

Внимание

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

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

Ограничения

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

    Если требуется повторно подключить целевой объект вычислений, например для изменения конфигурации TLS или другого кластера, необходимо сначала удалить существующее вложение.

Что такое целевой объект вычислений?

С помощью решения "Машинное обучение Azure" вы можете обучать модель, используя различные вычислительные ресурсы или среды, которые вместе называются целевыми объектами вычислений. Они могут быть локальными или облачными. Например, это может быть Вычислительная среда Машинного обучения Azure, Azure HDInsight или удаленная виртуальная машина. Также можно создать целевые объекты вычислений для развертывания моделей, как описано в статье Развертывание моделей с помощью Службы машинного обучения Azure.

Локальный компьютер

При использовании локального компьютера для обучения нет необходимости создавать целевой объект вычислений. Просто отправьте задание обучения с локального компьютера.

При использовании локального компьютера для вывода необходимо установить Docker. Чтобы выполнить развертывание, используйте LocalWebservice.deploy_configuration(), чтобы определить порт, который будет использовать веб-служба. Затем используйте стандартный процесс развертывания, описанный в разделе Развертывание моделей с помощью машинного обучения Azure.

Удаленные виртуальные машины

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

Совет

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

  1. Создание. Машинное обучение Azure не может создать удаленную виртуальную машину. Вместо этого необходимо создать виртуальную машину и подключить ее в рабочую область. Подробные сведения о создании DSVM см. в разделе Подготовка виртуальной машины Linux (Ubuntu) для обработки и анализа данных.

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

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

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

  2. Присоединение: присоединение DSVM к рабочей области с помощью Студия машинного обучения Azure.

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

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

  3. Настройка. Создание конфигурации запуска для целевого объекта вычислений DSVM. Для создания и настройки среды обучения на DSVM используются Docker и Conda.

    from azureml.core import ScriptRunConfig
    from azureml.core.environment import Environment
    from azureml.core.conda_dependencies import CondaDependencies
    
    # Create environment
    myenv = Environment(name="myenv")
    
    # Specify the conda dependencies
    myenv.python.conda_dependencies = CondaDependencies.create(conda_packages=['scikit-learn'])
    
    # If no base image is explicitly specified the default CPU image "azureml.core.runconfig.DEFAULT_CPU_IMAGE" will be used
    # To use GPU in DSVM, you should specify the default GPU base Docker image or another GPU-enabled image:
    # myenv.docker.enabled = True
    # myenv.docker.base_image = azureml.core.runconfig.DEFAULT_GPU_IMAGE
    
    # Configure the run configuration with the Linux DSVM as the compute target and the environment defined above
    src = ScriptRunConfig(source_directory=".", script="train.py", compute_target=compute, environment=myenv) 
    

Совет

Если вы хотите удалить (окончательно удалить) виртуальную машину из рабочей области, используйте метод RemoteCompute.detach().

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

Пулы Apache Spark

Интеграция Azure Synapse Analytics с машинным обучением Azure (предварительная версия) позволяет подключить пул Apache Spark, поддерживаемый Azure Synapse для интерактивного исследования и подготовки данных. Благодаря этой интеграции вы можете использовать выделенные ресурсы для первичной обработки данных в требуемом масштабе. Дополнительные сведения см. в статье Как подключить пулы Apache Spark на платформе Azure Synapse Analytics.

Azure HDInsight

Azure HDInsight — это популярная платформа для анализа больших данных. Она предоставляет Apache Spark, который можно использовать для обучения модели.

  1. Создание. Машинное обучение Azure не создает кластеры HDInsight. Вместо этого необходимо создать кластер, а затем присоединить его к своей рабочей области машинного обучения Azure. Дополнительные сведения см. в статье Создание кластера Apache Spark в HDInsight.

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

    Для машинного обучения Azure требуется, чтобы у кластера HDInsight был общедоступный IP-адрес.

    При создании кластера необходимо указать имя пользователя SSH и пароль. Запишите эти значения — они вам потребуются при использовании HDInsight в качестве целевого объекта вычислений.

    После создания кластера подключите его, указав такое имя узла: <имя кластера>-ssh.azurehdinsight.net, где <имя кластера> — это имя, которое вы указали для кластера.

  2. Присоединение: присоединение кластера HDInsight к рабочей области с помощью Студия машинного обучения Azure.

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

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

  3. Настройка. Создание конфигурации запуска для целевого объекта вычислений HDI.

    from azureml.core.runconfig import RunConfiguration
    from azureml.core.conda_dependencies import CondaDependencies
    
    
    # use pyspark framework
    run_hdi = RunConfiguration(framework="pyspark")
    
    # Set compute target to the HDI cluster
    run_hdi.target = hdi_compute.name
    
    # specify CondaDependencies object to ask system installing numpy
    cd = CondaDependencies()
    cd.add_conda_package('numpy')
    run_hdi.environment.python.conda_dependencies = cd
    

Совет

Если вы хотите удалить (окончательно удалить) кластер HDInsight из рабочей области, используйте метод HDInsightCompute.detach().

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

Пакетная служба Azure

Пакетная служба Azure используется для эффективного запуска приложений для крупномасштабных параллельных и высокопроизводительных вычислений (HPC) в облаке. В конвейере Машинного обучения Azure для отправки заданий в пул виртуальных машин пакетной службы Azure можно использовать AzureBatchStep.

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

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

Следующий код демонстрирует, как присоединить пакетную службу в качестве целевого объекта вычислений.

from azureml.core.compute import ComputeTarget, BatchCompute
from azureml.exceptions import ComputeTargetException

# Name to associate with new compute in workspace
batch_compute_name = 'mybatchcompute'

# Batch account details needed to attach as compute to workspace
batch_account_name = "<batch_account_name>"  # Name of the Batch account
# Name of the resource group which contains this account
batch_resource_group = "<batch_resource_group>"

try:
    # check if the compute is already attached
    batch_compute = BatchCompute(ws, batch_compute_name)
except ComputeTargetException:
    print('Attaching Batch compute...')
    provisioning_config = BatchCompute.attach_configuration(
        resource_group=batch_resource_group, account_name=batch_account_name)
    batch_compute = ComputeTarget.attach(
        ws, batch_compute_name, provisioning_config)
    batch_compute.wait_for_completion()
    print("Provisioning state:{}".format(batch_compute.provisioning_state))
    print("Provisioning errors:{}".format(batch_compute.provisioning_errors))

print("Using Batch compute:{}".format(batch_compute.cluster_resource_id))

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

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

Azure Databricks

Azure Databricks — это среда, которая лежит в основе Apache Spark в облаке Azure. Ее можно использовать как целевой объект вычислений с помощью конвейера Машинного обучения Azure.

Внимание

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

Чтобы подключить рабочую область Azure Databricks из другой подписки Azure, необходимо предоставить роль участника в рабочей области Azure Databricks (ваша учетная запись Microsoft Entra). Проверьте доступ на портале Azure.

Введите следующие данные, чтобы вложить Azure Databricks в качестве целевого объекта вычислений.

  • Имя вычисления Databricks. Имя, которое вы хотите назначить как вычислительный ресурс.
  • Имя рабочей области Databricks. Имя рабочей области Azure Databricks.
  • Маркер доступа Databricks. Маркер доступа, который используется для проверки подлинности в Azure Databricks. Чтобы создать маркер доступа, см. документ Проверка подлинности.

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

import os
from azureml.core.compute import ComputeTarget, DatabricksCompute
from azureml.exceptions import ComputeTargetException

databricks_compute_name = os.environ.get(
    "AML_DATABRICKS_COMPUTE_NAME", "<databricks_compute_name>")
databricks_workspace_name = os.environ.get(
    "AML_DATABRICKS_WORKSPACE", "<databricks_workspace_name>")
databricks_resource_group = os.environ.get(
    "AML_DATABRICKS_RESOURCE_GROUP", "<databricks_resource_group>")
databricks_access_token = os.environ.get(
    "AML_DATABRICKS_ACCESS_TOKEN", "<databricks_access_token>")

try:
    databricks_compute = ComputeTarget(
        workspace=ws, name=databricks_compute_name)
    print('Compute target already exists')
except ComputeTargetException:
    print('compute not found')
    print('databricks_compute_name {}'.format(databricks_compute_name))
    print('databricks_workspace_name {}'.format(databricks_workspace_name))
    print('databricks_access_token {}'.format(databricks_access_token))

    # Create attach config
    attach_config = DatabricksCompute.attach_configuration(resource_group=databricks_resource_group,
                                                           workspace_name=databricks_workspace_name,
                                                           access_token=databricks_access_token)
    databricks_compute = ComputeTarget.attach(
        ws,
        databricks_compute_name,
        attach_config
    )

    databricks_compute.wait_for_completion(True)

Более подробный пример см. в примере записной книжки на сайте GitHub.

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

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

Аналитика озера данных Azure

Azure Data Lake Analytics — это платформа аналитики больших данных в облаке Azure. Ее можно использовать как целевой объект вычислений с помощью конвейера Машинного обучения Azure.

Прежде чем ее использовать, создайте учетную запись Azure Data Lake Analytics. Чтобы создать этот ресурс, см. статью Начало работы с Azure Data Lake Analytics с помощью портала Azure.

Чтобы вложить Azure Data Lake Analytics в качестве целевого объекта вычислений, используйте пакет SDK машинного обучения Azure и укажите следующие сведения.

  • Имя вычисления. Имя, которое вы хотите назначить как вычислительный ресурс.
  • Группа ресурсов. Группа ресурсов, содержащая учетную запись Data Lake Analytics.
  • Имя учетной записи. Имя учетной записи Data Lake Analytics.

Следующий код демонстрирует, как вложить Data Lake Analytics в качестве целевого объекта вычислений.

import os
from azureml.core.compute import ComputeTarget, AdlaCompute
from azureml.exceptions import ComputeTargetException


adla_compute_name = os.environ.get(
    "AML_ADLA_COMPUTE_NAME", "<adla_compute_name>")
adla_resource_group = os.environ.get(
    "AML_ADLA_RESOURCE_GROUP", "<adla_resource_group>")
adla_account_name = os.environ.get(
    "AML_ADLA_ACCOUNT_NAME", "<adla_account_name>")

try:
    adla_compute = ComputeTarget(workspace=ws, name=adla_compute_name)
    print('Compute target already exists')
except ComputeTargetException:
    print('compute not found')
    print('adla_compute_name {}'.format(adla_compute_name))
    print('adla_resource_id {}'.format(adla_resource_group))
    print('adla_account_name {}'.format(adla_account_name))
    # create attach config
    attach_config = AdlaCompute.attach_configuration(resource_group=adla_resource_group,
                                                     account_name=adla_account_name)
    # Attach ADLA
    adla_compute = ComputeTarget.attach(
        ws,
        adla_compute_name,
        attach_config
    )

    adla_compute.wait_for_completion(True)

Более подробный пример см. в примере записной книжки на сайте GitHub.

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

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

Совет

Конвейеры машинного обучения Azure работают только с хранимыми данными в хранилище данных учетной записи Data Lake Analytics по умолчанию. Если данные, с которыми нужно работать, находятся в хранилище не по умолчанию, то для копирования данных перед обучением можно использовать DataTransferStep.

Экземпляр контейнеров Azure

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

Kubernetes

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

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

compute_target.detach()

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

При отключении кластера кластер не удаляется. Сведения о том, как удалить кластер Службы Azure Kubernetes, см. в статье Использование Azure CLI с AKS. Сведения о том, как удалить кластер Kubernetes с поддержкой Azure Arc, см. в кратком руководстве по Azure Arc.

Примеры записных книжек

Посмотрите примеры обучения различных целевых объектов вычислений в следующих записных книжках.

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

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