Настройка целевых объектов вычислений для обучения моделейSet up compute targets for model training

С помощью Службы машинного обучения Azure вы можете обучать модель, используя разные вычислительные ресурсы или среды, которые вместе называются целевыми объектами вычислений.With Azure Machine Learning service, you can train your model on a variety of resources or environments, collectively referred to as compute targets. Они могут быть локальными или облачными, например Вычислительная среда машинного обучения Azure, Azure HDInsight или удаленная виртуальная машина.A compute target can be a local machine or a cloud resource, such as an Azure Machine Learning Compute, Azure HDInsight or a remote virtual machine. Можно также создать целевые объекты вычислений для развертывания моделей, как описано в статье Развертывание моделей с помощью Службы машинного обучения Azure.You can also create compute targets for model deployment as described in "Where and how to deploy your models".

Для создания целевых объектов вычислений и управления ими можно использовать пакет SDK для Машинного обучения Azure, портал Azure или Azure CLI.You can create and manage a compute target using the Azure Machine Learning SDK, Azure portal, or Azure CLI. Если у вас есть целевые объекты вычислений, созданные другой службой (например, кластером HDInsight), вы можете подключить их к своей рабочей области Службы машинного обучения Azure.If you have compute targets that were created through another service (for example, an HDInsight cluster), you can use them by attaching them to your Azure Machine Learning service workspace.

В этой статье вы узнаете об использовании разных целевых объектов вычисления для обучения моделей.In this article, you learn how to use various compute targets for model training. Шаги для всех вычислительных целей выполняются в том же рабочем процессе.The steps for all compute targets follow the same workflow:

  1. Создание целевого объекта вычислений, если такого еще нет.Create a compute target if you don’t already have one.
  2. Присоединение целевого объекта вычислений в рабочую область.Attach the compute target to your workspace.
  3. Настройка целевого объекта вычислений так, чтобы он содержал необходимые сценарии зависимости среды и пакет Python.Configure the compute target so that it contains the Python environment and package dependencies needed by your script.

Примечание

Код в этой статье протестирован с помощью пакета SDK для Машинного обучения Azure версии 1.0.6.Code in this article was tested with Azure Machine Learning SDK version 1.0.6.

Целевые объекты вычислений для обученияCompute targets for training

Служба машинного обучения Azure по-разному поддерживает разные целевые объекты вычислений.Azure Machine Learning service has varying support across different compute targets. Жизненный цикл разработки обычной модели начинается с разработки и экспериментов с небольшим объемом данных.A typical model development lifecycle starts with dev/experimentation on a small amount of data. На этом этапе мы рекомендуем использовать локальную среду.At this stage, we recommend using a local environment. Например, ваш локальный компьютер или облачную виртуальную машину.For example, your local computer or a cloud-based VM. По мере перехода к обучению на больших наборах данных или распределенному обучению мы рекомендуем использовать Вычислительную среду Машинного обучения Azure, чтобы создать одно- или многоузловой кластер, который автоматически масштабируется при каждой отправке запроса на запуск.As you scale up your training on larger data sets, or do distributed training, we recommend using Azure Machine Learning Compute to create a single- or multi-node cluster that autoscales each time you submit a run. Можно также подключить собственный вычислительный ресурс, хотя не все сценарии могут поддерживаться. Подробнее об этом рассказывается ниже.You can also attach your own compute resource, although support for various scenarios may vary as detailed below:

Целевой объект вычислений для обученияCompute target for training Ускорение GPUGPU acceleration АвтоматическиAutomated
Настройка гиперпараметровhyperparameter tuning
АвтоматическиAutomated
машинное обучение;machine learning
Конвейеры Машинного обучение AzureAzure Machine Learning Pipelines
Локальный компьютерLocal computer ВозможноMaybe    
Вычислительная среда Машинного обучения AzureAzure Machine Learning Compute
Удаленная виртуальная машинаRemote VM
Azure DatabricksAzure Databricks    
Аналитика озера данных AzureAzure Data Lake Analytics      
Azure HDInsightAzure HDInsight      
Пакетная служба AzureAzure Batch      

Все целевые объекты вычислений могут использоваться повторно для нескольких заданий обучения.All compute targets can be reused for multiple training jobs. Например, после присоединения удаленной виртуальной машины к рабочей области ее можно повторно использовать для нескольких заданий.For example, once you attach a remote VM to your workspace, you can reuse it for multiple jobs.

Примечание

Вычислительную среду Машинного обучения Azure можно создать как постоянный ресурс или создать динамически при запросе запуска.Azure Machine Learning Compute can be created as a persistent resource or created dynamically when you request a run. Созданные при запуске целевые объекты вычислений будут удалены после завершения обучающего запуска, поэтому объекты вычислений, созданные таким способом, невозможно использовать повторно.Run-based creation removes the compute target after the training run is complete, so you cannot reuse compute targets created this way.

Что являет собой конфигурация запуска?What's a run configuration?

При обучении этот учебный сценарий обычно запускают на локальном компьютере, а затем запускают в другом целевом объекте вычислений.When training, it is common to start on your local computer, and later run that training script on a different compute target. Служба машинного обучения Azure позволяет запускать сценарий для различных целевых объектов вычислений без необходимости изменения сценария.With Azure Machine Learning service, you can run your script on various compute targets without having to change your script.

Вам нужно лишь определить среду для каждого целевого объекта вычислений с помощью конфигурации запуска.All you need to do is define the environment for each compute target with a run configuration. Затем, если вы хотите запустить обучающий эксперимент на другом целевом объекте вычислений, укажите конфигурацию запуска для этого вычисления.Then, when you want to run your training experiment on a different compute target, specify the run configuration for that compute.

Дополнительные сведения об отправке экспериментов см. в конце этой статьи.Learn more about submitting experiments at the end of this article.

Управление средой и зависимостямиManage environment and dependencies

При создании конфигурации запуска необходимо выбрать способ управления средой и зависимостями на целевом объекте вычислений.When you create a run configuration, you need to decide how to manage the environment and dependencies on the compute target.

Среда, управляемая системойSystem-managed environment

Если необходимо, чтобы Conda управляла средой Python и зависимостями сценария, используйте среду, управляемую системой.Use a system-managed environment when you want Conda to manage the Python environment and the script dependencies for you. Наиболее распространенным по умолчанию вариантом считается среда, управляемая системой.A system-managed environment is assumed by default and the most common choice. Это полезно для удаленных целевых объектов вычислений, особенно когда невозможно настроить эту цель.It is useful on remote compute targets, especially when you cannot configure that target.

Вам нужно лишь указать каждую зависимость пакета с помощью класса CondaDependency. Затем Conda создаст файл с именем conda_dependencies.yml в каталоге рабочей области aml_config с помощью списка зависимостей пакета и настроит среду Python при отправке обучающего эксперимента.All you need to do is specify each package dependency using the CondaDependency class Then Conda creates a file named conda_dependencies.yml in the aml_config directory in your workspace with your list of package dependencies and sets up your Python environment when you submit your training experiment.

Первоначальная настройка новой среды может занять несколько минут в зависимости от размера необходимых зависимостей.The initial setup of a new environment can take several minutes depending on the size of the required dependencies. Пока список пакетов остается неизменным, настройка происходит только один раз.As long as the list of packages remains unchanged, the setup time happens only once.

В следующем коде показан пример для среды, управляемой системой, которая требует scikit-learn.The following code shows an example for a system-managed environment requiring scikit-learn:

from azureml.core.runconfig import RunConfiguration
from azureml.core.conda_dependencies import CondaDependencies

run_system_managed = RunConfiguration()

# Specify the conda dependencies with scikit-learn
run_system_managed.environment.python.conda_dependencies = CondaDependencies.create(conda_packages=['scikit-learn'])

Среда, управляемая пользователемUser-managed environment

В среде, управляемой пользователем, вы несете ответственность за настройку среды и установку каждого пакета, который необходим вашему обучающему сценарию на целевом объекте вычислений.For a user-managed environment, you're responsible for setting up your environment and installing every package your training script needs on the compute target. Если ваша учебная среда уже настроена (например, на локальном компьютере), вы можете пропустить этот шаг настройки, задав user_managed_dependencies значение "True".If your training environment is already configured (such as on your local machine), you can skip the setup step by setting user_managed_dependencies to True. Conda не будет проверять вашу среду или устанавливать что-либо за вас.Conda will not check your environment or install anything for you.

Следующий код представляет собой пример настройки запусков обучения для среды, управляемой пользователем.The following code shows an example of configuring training runs for a user-managed environment:

from azureml.core.runconfig import RunConfiguration

run_user_managed = RunConfiguration()
run_user_managed.environment.python.user_managed_dependencies = True

# Choose a specific Python environment by pointing to a Python path. For example: 
# run_config.environment.python.interpreter_path = '/home/ninghai/miniconda3/envs/sdk2/bin/python'

Настройка целевых объектов вычислений с помощью PythonSet up compute targets with Python

Чтобы настроить эти целевые объекты вычислений, используйте следующие разделы.Use the sections below to configure these compute targets:

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

  1. Создание и присоединение. Нет необходимости создавать или присоединять целевой объект вычислений, чтобы использовать локальный компьютер в качестве среды обучения.Create and attach: There's no need to create or attach a compute target to use your local computer as the training environment.

  2. Настройка. При использовании локального компьютера в качестве целевого объекта вычислений обучающий код запускается в вашей среде разработки.Configure: When you use your local computer as a compute target, the training code is run in your development environment. Если эта среда уже содержит пакеты Python, необходимо использовать среду, управляемую пользователем.If that environment already has the Python packages you need, use the user-managed environment.

from azureml.core.runconfig import RunConfiguration

# Edit a run configuration property on the fly.
run_local = RunConfiguration()

run_local.environment.python.user_managed_dependencies = True

Теперь, после подключения вычислительной среды и настройки запуска, следующий шаг — отправить запуск на выполнение обучения.Now that you’ve attached the compute and configured your run, the next step is to submit the training run.

Вычислительная среда Машинного обучения AzureAzure Machine Learning Compute

Вычислительная среда Машинного обучения Azure — это управляемая вычислительная инфраструктура, которая позволяет пользователю легко создавать одно- и многоузловые вычислительные среды.Azure Machine Learning Compute is a managed-compute infrastructure that allows the user to easily create a single or multi-node compute. Она создается в регионе вашей рабочей области и является ресурсом, который можно использовать совместно с другими пользователями в этой рабочей области.The compute is created within your workspace region as a resource that can be shared with other users in your workspace. Вычислительная среда автоматически масштабируется при отправке задания, а также может быть размещена в виртуальной сети Azure.The compute scales up automatically when a job is submitted, and can be put in an Azure Virtual Network. Она выполняется в контейнерной среде, упаковывая зависимости вашей модели в контейнер Docker.The compute executes in a containerized environment and packages your model dependencies in a Docker container.

Вычислительную среду Машинного обучения Azure можно использовать для распространения процесса обучения в кластере вычислительных узлов на основе ЦП или GPU, размещенном в облаке.You can use Azure Machine Learning Compute to distribute the training process across a cluster of CPU or GPU compute nodes in the cloud. Дополнительные сведения о размерах виртуальных машин, которые содержат GPU, см. в статье Размеры виртуальных машин, оптимизированных для GPU.For more information on the VM sizes that include GPUs, see GPU-optimized virtual machine sizes.

Вычислительная среда Машинного обучения Azure имеет ограничения по умолчанию, такие как количество ядер, которые могут быть выделены.Azure Machine Learning Compute has default limits, such as the number of cores that can be allocated. Дополнительные сведения см. в статье Управление квотами для ресурсов Azure и их запрашивание.For more information, see Manage and request quotas for Azure resources.

Можно создать Вычислительную среду Машинного обучения Azure по запросу при запланированном запуске или создать ее в качестве постоянного ресурса.You can create an Azure Machine Learning compute environment on demand when you schedule a run, or as a persistent resource.

Создание при запускеRun-based creation

Вы можете создать Вычислительную среду Машинного обучения Azure в качестве целевого объекта вычислений во время выполнения.You can create Azure Machine Learning Compute as a compute target at run time. Вычислительная среда создается автоматически для запуска.The compute is automatically created for your run. Эта среда автоматически удаляется после завершения выполнения запуска.The compute is deleted automatically once the run completes.

Примечание

Чтобы указать максимальное количество узлов для использования, обычно устанавливается node_count до числа узлов.To specify the max number of nodes to use, you would normally set node_count to the number of nodes. Сейчас (04/04/2019) ошибку, которая препятствует работе.There is currently (04/04/2019) a bug that prevents this from working. Чтобы обойти это ограничение, используйте amlcompute._cluster_max_node_count свойства конфигурации при запуске.As a workaround, use the amlcompute._cluster_max_node_count property of the run configuration. Например, run_config.amlcompute._cluster_max_node_count = 5.For example, run_config.amlcompute._cluster_max_node_count = 5.

Важно!

Функция создания Вычислительной среды Машинного обучения Azure при запуске в настоящее время находится в предварительной версии.Run-based creation of Azure Machine Learning compute is currently in Preview. Не применяйте создание при запуске, если вы используете автоматическую настройку гиперпараметров или автоматическое машинное обучение.Don't use run-based creation if you use automated hyperparameter tuning or automated machine learning. Чтобы использовать настройку гиперпараметров или автоматическое машинное обучение, создайте постоянный целевой объект вычислений вместо этого.To use hyperparameter tuning or automated machine learning, create a persistent compute target instead.

  1. Создание, присоединение и настройка. Создание при запуске выполняет все необходимые шаги для создания, присоединения и настройки целевого объекта вычислений с конфигурацией запуска.Create, attach, and configure: The run-based creation performs all the necessary steps to create, attach, and configure the compute target with the run configuration.
from azureml.core.compute import ComputeTarget, AmlCompute

# First, list the supported VM families for Azure Machine Learning Compute
print(AmlCompute.supported_vmsizes(workspace=ws))

from azureml.core.runconfig import RunConfiguration
# Create a new runconfig object
run_temp_compute = RunConfiguration()

# Signal that you want to use AmlCompute to execute the script
run_temp_compute.target = "amlcompute"

# AmlCompute is created in the same region as your workspace
# Set the VM size for AmlCompute from the list of supported_vmsizes
run_temp_compute.amlcompute.vm_size = 'STANDARD_D2_V2'

Теперь, после подключения вычислительной среды и настройки запуска, следующий шаг — отправить запуск на выполнение обучения.Now that you’ve attached the compute and configured your run, the next step is to submit the training run.

Постоянная вычислительная средаPersistent compute

Постоянную Вычислительную среду машинного обучения Azure можно многократно использовать в заданиях.A persistent Azure Machine Learning Compute can be reused across jobs. Ее можно использовать совместно с другими пользователями в рабочей области, и она сохраняется после выполнения заданий.The compute can be shared with other users in the workspace and is kept between jobs.

  1. Создание и присоединение. Чтобы создать постоянный ресурс Вычислительной среды машинного обучения Azure в Python, необходимо указать свойства vm_size и max_nodes.Create and attach: To create a persistent Azure Machine Learning Compute resource in Python, specify the vm_size and max_nodes properties. Затем Машинное обучение Azure использует интеллектуальные значения по умолчанию для остальных свойств.Azure Machine Learning then uses smart defaults for the other properties. Когда вычислительная среда не используется, она автоматически масштабируется до нуля узлов.The compute autoscales down to zero nodes when it isn't used. Выделенные виртуальные машины создаются для выполнения заданий по мере необходимости.Dedicated VMs are created to run your jobs as needed.

    • vm_size. Семейство виртуальных машин узлов, создаваемых Вычислительной средой Машинного обучения Azure.vm_size: The VM family of the nodes created by Azure Machine Learning Compute.
    • max_nodes. Максимальное количество узлов для автомасштабирования при запуске задания в Вычислительной среде Машинного обучения Azure.max_nodes: The max number of nodes to autoscale up to when you run a job on Azure Machine Learning Compute.
    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:
        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 вы можете также настроить несколько дополнительных свойств.You can also configure several advanced properties when you create Azure Machine Learning Compute. Эти свойства позволяют создать постоянный кластер фиксированного размера, который может размещаться в существующей виртуальной сети Azure в вашей подписке.The properties allow you to create a persistent cluster of fixed size, or within an existing Azure Virtual Network in your subscription. Дополнительные сведения см. в разделе о классе AmlCompute.See the AmlCompute class for details.

    Или вы можете создать и присоединить постоянный ресурс Вычислительной среды Машинного обучения на портале Azure.Or you can create and attach a persistent Azure Machine Learning Compute resource in the Azure portal.

  2. Настройка. Создайте конфигурацию запуска для постоянного целевого объекта вычислений.Configure: Create a run configuration for the persistent compute target.

    from azureml.core.runconfig import RunConfiguration
    from azureml.core.conda_dependencies import CondaDependencies
    from azureml.core.runconfig import DEFAULT_CPU_IMAGE
    
    # Create a new runconfig object
    run_amlcompute = RunConfiguration()
    
    # Use the cpu_cluster you created above. 
    run_amlcompute.target = cpu_cluster
    
    # Enable Docker
    run_amlcompute.environment.docker.enabled = True
    
    # Set Docker base image to the default CPU-based image
    run_amlcompute.environment.docker.base_image = DEFAULT_CPU_IMAGE
    
    # Use conda_dependencies.yml to create a conda environment in the Docker image for execution
    run_amlcompute.environment.python.user_managed_dependencies = False
    
    # Auto-prepare the Docker image when used for execution (if it is not already prepared)
    run_amlcompute.auto_prepare_environment = True
    
    # Specify CondaDependencies obj, add necessary packages
    run_amlcompute.environment.python.conda_dependencies = CondaDependencies.create(conda_packages=['scikit-learn'])
    

Теперь, после подключения вычислительной среды и настройки запуска, следующий шаг — отправить запуск на выполнение обучения.Now that you’ve attached the compute and configured your run, the next step is to submit the training run.

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

Машинное обучение Azure также поддерживает использование собственных вычислительных ресурсов и подключение их к рабочей области.Azure Machine Learning also supports bringing your own compute resource and attaching it to your workspace. К такому типу ресурсов относится произвольная удаленная виртуальная машина, если она доступна из Службы машинного обучения Azure.One such resource type is an arbitrary remote VM, as long as it's accessible from Azure Machine Learning service. Ресурсом может быть виртуальная машина Azure, удаленный или локальный сервер в вашей организации.The resource can be an Azure VM, a remote server in your organization, or on-premises. В частности, указав IP-адрес и учетные данные (имя пользователя и пароль или ключ SSH), можно использовать любую доступную виртуальную машину для удаленного запуска.Specifically, given the IP address and credentials (user name and password, or SSH key), you can use any accessible VM for remote runs.

Можно использовать системную среду Conda, существующую среду Python или контейнер Docker.You can use a system-built conda environment, an already existing Python environment, or a Docker container. Для выполнения контейнера Docker на виртуальной машине должен быть запущен модуль Docker.To execute on a Docker container, you must have a Docker Engine running on the VM. Эта функция особенно удобна в случаях, когда необходима более гибкая облачная среда разработки и проведения экспериментов, чем локальный компьютер.This functionality is especially useful when you want a more flexible, cloud-based dev/experimentation environment than your local machine.

Используйте Виртуальную машину для обработки и анализа данных в качестве виртуальной машины Azure.Use the Azure Data Science Virtual Machine (DSVM) as the Azure VM of choice for this scenario. Эта виртуальная машина является предварительно настроенной обработкой и анализом данных и средой разработки искусственного интеллекта в Azure.This VM is a pre-configured data science and AI development environment in Azure. Виртуальная машина предлагает выбор средств и платформ для разработки машинного обучения в течение всего жизненного цикла.The VM offers a curated choice of tools and frameworks for full-lifecycle machine learning development. Дополнительных сведения об использовании DSVM со Службой машинного обучения Azure см. в статье Настройка среды разработки для Машинного обучения Azure.For more information on how to use the DSVM with Azure Machine Learning, see Configure a development environment.

  1. Создание. Создайте DSVM перед ее использованием для обучения модели.Create: Create a DSVM before using it to train your model. Подробные сведения о создании этого ресурса см. в разделе Подготовка виртуальной машины Linux (Ubuntu) для обработки и анализа данных.To create this resource, see Provision the Data Science Virtual Machine for Linux (Ubuntu).

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

    Машинное обучение Azure поддерживает только виртуальные машины под управлением Ubuntu.Azure Machine Learning only supports virtual machines that run Ubuntu. Поэтому создаваемая виртуальная или существующая виртуальная машина, которую вы выбираете, должна работать под управлением Ubuntu.When you create a VM or choose an existing VM, you must select a VM that uses Ubuntu.

  2. Присоединение. Чтобы присоединить имеющуюся виртуальную машину как целевой объект вычислений, необходимо указать ее полное доменное имя, имя входа и пароль.Attach: To attach an existing virtual machine as a compute target, you must provide the fully qualified domain name (FQDN), user name, and password for the virtual machine. В приведенном примере замените <fqdn> на общедоступное полное доменное имя виртуальной машины или общедоступный IP-адрес.In the example, replace <fqdn> with the public FQDN of the VM, or the public IP address. Замените <username> и <password> именем пользователя и паролем SSH для виртуальной машины.Replace <username> and <password> with the SSH user name and password for the VM.

    from azureml.core.compute import RemoteCompute, ComputeTarget
    
    # Create the compute config 
    compute_target_name = "attach-dsvm"
    attach_config = RemoteCompute.attach_configuration(address = "<fqdn>",
                                                     ssh_port=22,
                                                     username='<username>',
                                                     password="<password>")
    
    # If you authenticate with SSH keys instead, use this code:
    #                                                  ssh_port=22,
    #                                                  username='<username>',
    #                                                  password=None,
    #                                                  private_key_file="<path-to-file>",
    #                                                  private_key_passphrase="<passphrase>")
    
    # Attach the compute
    compute = ComputeTarget.attach(ws, compute_target_name, attach_config)
    
    compute.wait_for_completion(show_output=True)
    

    Или вы можете присоединить DSVM к рабочей области, используя портал Azure.Or you can attach the DSVM to your workspace using the Azure portal.

  3. Настройка. Создайте конфигурацию запуска для целевого объекта вычислений DSVM.Configure: Create a run configuration for the DSVM compute target. Для создания и настройки среды обучения на DSVM используются Docker и Conda.Docker and conda are used to create and configure the training environment on the DSVM.

    import azureml.core
    from azureml.core.runconfig import RunConfiguration
    from azureml.core.conda_dependencies import CondaDependencies
    
    run_dsvm = RunConfiguration(framework = "python")
    
    # Set the compute target to the Linux DSVM
    run_dsvm.target = compute_target_name 
    
    # Use Docker in the remote VM
    run_dsvm.environment.docker.enabled = True
    
    # Use the CPU base image 
    # To use GPU in DSVM, you must also use the GPU base Docker image "azureml.core.runconfig.DEFAULT_GPU_IMAGE"
    run_dsvm.environment.docker.base_image = azureml.core.runconfig.DEFAULT_CPU_IMAGE
    print('Base Docker image is:', run_dsvm.environment.docker.base_image)
    
    # Specify the CondaDependencies object
    run_dsvm.environment.python.conda_dependencies = CondaDependencies.create(conda_packages=['scikit-learn'])
    

Теперь, после подключения вычислительной среды и настройки запуска, следующий шаг — отправить запуск на выполнение обучения.Now that you’ve attached the compute and configured your run, the next step is to submit the training run.

Azure HDInsightAzure HDInsight

Azure HDInsight — это популярная платформа для анализа больших данных.Azure HDInsight is a popular platform for big-data analytics. Она предоставляет Apache Spark, который можно использовать для обучения модели.The platform provides Apache Spark, which can be used to train your model.

  1. Создание. Прежде чем использовать кластер HDInsight для обучения модели, создайте его.Create: Create the HDInsight cluster before you use it to train your model. Инструкции по созданию Spark в кластере HDInsight см. в статье Краткое руководство. Создание кластера Apache Spark в HDInsight с помощью шаблона.To create a Spark on HDInsight cluster, see Create a Spark Cluster in HDInsight.

    При создании кластера необходимо указать имя пользователя SSH и пароль.When you create the cluster, you must specify an SSH user name and password. Запишите эти значения — они вам потребуются при использовании HDInsight в качестве целевого объекта вычислений.Take note of these values, as you need them to use HDInsight as a compute target.

    После создания кластера подключите его, указав такое имя узла: <имя кластера>-ssh.azurehdinsight.net, где <имя кластера> — это имя, которое вы указали для кластера.After the cluster is created, connect to it with the hostname <clustername>-ssh.azurehdinsight.net, where <clustername> is the name that you provided for the cluster.

  2. Присоединение. Чтобы присоединить кластер HDInsight в качестве целевого объекта вычислений, необходимо указать имя узла, а также имя пользователя и пароль для кластера HDInsight.Attach: To attach an HDInsight cluster as a compute target, you must provide the hostname, user name, and password for the HDInsight cluster. В следующем примере пакет SDK используется для присоединения кластера к рабочей области.The following example uses the SDK to attach a cluster to your workspace. В примере замените <имя кластера> именем кластера.In the example, replace <clustername> with the name of your cluster. Замените <username> и <password> именем пользователя и паролем SSH для кластера.Replace <username> and <password> with the SSH user name and password for the cluster.

    from azureml.core.compute import ComputeTarget, HDInsightCompute
    from azureml.exceptions import ComputeTargetException
    
    try:
     # if you want to connect using SSH key instead of username/password you can provide parameters private_key_file and private_key_passphrase
     attach_config = HDInsightCompute.attach_configuration(address='<clustername>-ssh.azureinsight.net', 
                                                           ssh_port=22, 
                                                           username='<ssh-username>', 
                                                           password='<ssh-pwd>')
     hdi_compute = ComputeTarget.attach(workspace=ws, 
                                        name='myhdi', 
                                        attach_configuration=attach_config)
    
    except ComputeTargetException as e:
     print("Caught = {}".format(e.message))
    
    hdi_compute.wait_for_completion(show_output=True)
    

    Вы также можете присоединить кластер HDInsight к рабочей области, используя портал Azure.Or you can attach the HDInsight cluster to your workspace using the Azure portal.

  3. Настройка. Создайте конфигурацию запуска для целевого объекта вычислений HDI.Configure: Create a run configuration for the HDI compute target.

    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
    

Теперь, после подключения вычислительной среды и настройки запуска, следующий шаг — отправить запуск на выполнение обучения.Now that you’ve attached the compute and configured your run, the next step is to submit the training run.

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

Пакетная служба Azure используется для эффективного запуска приложений для крупномасштабных параллельных и высокопроизводительных вычислений (HPC) в облаке.Azure Batch is used to run large-scale parallel and high-performance computing (HPC) applications efficiently in the cloud. AzureBatchStep можно использовать в конвейер машинного обучения Azure для отправки заданий в пуле пакетной службы Azure машин.AzureBatchStep can be used in an Azure Machine Learning Pipeline to submit jobs to an Azure Batch pool of machines.

Чтобы присоединить пакетной службы Azure в качестве целевого объекта вычислений, необходимо с помощью пакета SDK Azure Machine Learning и укажите следующие сведения:To attach Azure Batch as a compute target, you must use the Azure Machine Learning SDK and provide the following information:

  • Пакетная служба Azure имя вычислений: Понятное имя, используемое для вычислительных ресурсов в рабочей областиAzure Batch compute name: A friendly name to be used for the compute within the workspace
  • Имя учетной записи пакетной службы Azure: Имя учетной записи пакетной службы AzureAzure Batch account name: The name of the Azure Batch account
  • Группа ресурсов. Группа ресурсов, которая содержит учетную запись пакетной службы Azure.Resource Group: The resource group that contains the Azure Batch account.

Следующий код демонстрирует присоединение пакетной службы Azure в качестве целевого объекта вычислений:The following code demonstrates how to attach Azure Batch as a compute target:

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

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

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

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))

Настройка вычислительной среды на портале AzureSet up compute in the Azure portal

Вы можете получить доступ к целевым объектам вычислений, связанным с вашей рабочей областью, на портале Azure.You can access the compute targets that are associated with your workspace in the Azure portal. Вы можете использовать портал для таких целей.You can use the portal to:

После того как целевой объект будет создан и присоединен к рабочему пространству, вы будете использовать его в конфигурации запуска с объектом ComputeTarget.After a target is created and attached to your workspace, you will use it in your run configuration with a ComputeTarget object:

from azureml.core.compute import ComputeTarget
myvm = ComputeTarget(workspace=ws, name='my-vm-name')

Просмотр целевых объектов вычисленийView compute targets

Чтобы просмотреть целевые объекты вычислений для своей рабочей области, сделайте следующее:To see the compute targets for your workspace, use the following steps:

  1. Перейдите на портал Azure и откройте свою рабочую область.Navigate to the Azure portal and open your workspace.

  2. В разделе Приложения выберите Вычисления.Under Applications, select Compute.

    Просмотр вкладки вычислений

Создание целевого объекта вычисленийCreate a compute target

Выполните указанные выше шаги, чтобы просмотреть список целевых объектов вычислений.Follow the previous steps to view the list of compute targets. Затем выполните следующие действия, чтобы создать целевой объект вычислений.Then use these steps to create a compute target:

  1. Щелкните значок плюса (+), чтобы добавить целевой объект вычислений.Select the plus sign (+) to add a compute target.

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

  2. Введите имя для целевого объекта вычислений.Enter a name for the compute target.

  3. Выберите Вычислительная среда Машинного обучения в качестве типа вычислительной среды для среды обучения.Select Machine Learning Compute as the type of compute to use for Training.

    Примечание

    Вычислительная среда Машинного обучения Azure — это единственный ресурс управляемых вычислений, который вы можете создать на портале Azure.Azure Machine Learning Compute is the only managed-compute resource you can create in the Azure portal. После создания все вычислительные ресурсы можно присоединить.All other compute resources can be attached after they are created.

  4. Заполните форму.Fill out the form. Введите значения для обязательных свойств, в частности, укажите семейство виртуальных машин и максимальное количество узлов, до которого можно развернуть вычислительный объект.Provide values for the required properties, especially VM Family, and the maximum nodes to use to spin up the compute.

    Заполнение формы

  5. Нажмите кнопку Создать.Select Create.

  6. Чтобы увидеть состояние операции создания, выберите целевой объект вычислений из списка.View the status of the create operation by selecting the compute target from the list:

    Выбор целевого объекта вычислений, чтобы просмотреть состояние операции создания

  7. Ниже приведены сведения о выбранном целевом объекте вычислений.You then see the details for the compute target:

    Просмотр сведений о целевом объекте вычислений

Присоединение целевых объектов вычисленийAttach compute targets

Чтобы использовать целевые объекты вычислений, созданные за пределами рабочей области Службы машинного обучения Azure, необходимо их присоединить.To use compute targets created outside the Azure Machine Learning service workspace, you must attach them. Присоединение целевого объекта вычислений сделает его доступным для рабочей области.Attaching a compute target makes it available to your workspace.

Выполните описанные ранее шаги, чтобы просмотреть список целевых объектов вычислений.Follow the steps described earlier to view the list of compute targets. Выполните следующие действия, чтобы присоединить целевой объект вычислений.Then use the following steps to attach a compute target:

  1. Щелкните значок плюса (+), чтобы добавить целевой объект вычислений.Select the plus sign (+) to add a compute target.

  2. Введите имя для целевого объекта вычислений.Enter a name for the compute target.

  3. Выберите тип вычислительной среды, который нужно подключить для обучения.Select the type of compute to attach for Training:

    Важно!

    Не все типы вычислительных сред можно подключить с помощью портала Azure.Not all compute types can be attached from the Azure portal. Типы вычислительных сред, которые в настоящее время можно подключить для обучения:The compute types that can currently be attached for training include:

    • Удаленная виртуальная машина.A remote VM
    • Azure Databricks (для использования в конвейерах машинного обучения).Azure Databricks (for use in machine learning pipelines)
    • Azure Data Lake Analytics (для использования в конвейерах машинного обучения).Azure Data Lake Analytics (for use in machine learning pipelines)
    • Azure HDInsightAzure HDInsight
  4. Заполните форму и укажите значения для обязательных свойств.Fill out the form and provide values for the required properties.

    Примечание

    Корпорация Майкрософт рекомендует использовать ключи SSH, так как они безопаснее, чем пароли.Microsoft recommends that you use SSH keys, which are more secure than passwords. Пароли подвержены атакам методом подбора.Passwords are vulnerable to brute force attacks. Ключи SSH задействуют криптографические подписи.SSH keys rely on cryptographic signatures. Сведения о создании ключей SSH для использования на Виртуальных машинах Azure см. в следующих документах:For information on how to create SSH keys for use with Azure Virtual Machines, see the following documents:

  5. Выберите Подключить.Select Attach.

  6. Чтобы просмотреть состояние операции подключения, выберите целевой объект вычислений из списка.View the status of the attach operation by selecting the compute target from the list.

Настройка вычислительной среды с помощью интерфейса командной строкиSet up compute with the CLI

Чтобы получить доступ к целевым объектам вычислений, которые связаны с вашим рабочим пространством, используйте расширение CLI для Службы машинного обучения Azure.You can access the compute targets that are associated with your workspace using the CLI extension for Azure Machine Learning service. Вы можете использовать Azure CLI для таких целей.You can use the CLI to:

  • Создание управляемого целевого объекта вычислений.Create a managed compute target
  • Обновление управляемого целевого объекта вычислений.Update a managed compute target
  • Присоединение управляемого целевого объекта вычислений.Attach an unmanaged compute target

Дополнительные сведения см. в разделе Управление ресурсами.For more information, see Resource management.

Отправка запуска на выполнение обученияSubmit training run

После создания конфигурации запуска, используйте ее для выполнения эксперимента.After you create a run configuration, you use it to run your experiment. Шаблон кода для отправки запуска на выполнение обучения одинаковый для всех типов целевых объектов вычислений.The code pattern to submit a training run is the same for all types of compute targets:

  1. Создание эксперимента для запускаCreate an experiment to run
  2. Выполните прогон.Submit the run.
  3. Дождитесь завершения прогона.Wait for the run to complete.

Важно!

При отправке выполнения обучения, моментальный снимок в каталог, содержащий скрипты обучения создается и отправляется целевого объекта вычислений.When you submit the training run, a snapshot of the directory that contains your training scripts is created and sent to the compute target. Он также сохранится как часть эксперимента в рабочей области.It is also stored as part of the experiment in your workspace. Если изменить файлы и отправьте запуска еще раз, будет отправляться только измененные файлы.If you change files and submit the run again, only the changed files will be uploaded.

Чтобы заблокировать развертывание файлов, включаемого в моментальном снимке, создайте .gitignore или .amlignore в каталоге и добавьте файлы к нему.To prevent files from being included in the snapshot, create a .gitignore or .amlignore file in the directory and add the files to it. .amlignore Файл использует тот же синтаксис и шаблоны как .gitignore файла.The .amlignore file uses the same syntax and patterns as the .gitignore file. Если существуют оба файла, .amlignore файл имеет приоритет.If both files exist, the .amlignore file takes precedence.

Дополнительные сведения см. в разделе о моментальных снимках.For more information, see Snapshots.

Создание экспериментаCreate an experiment

Сначала создайте эксперимент в рабочей области.First, create an experiment in your workspace.

from azureml.core import Experiment
experiment_name = 'my_experiment'

exp = Experiment(workspace=ws, name=experiment_name)

Отправка экспериментаSubmit the experiment

Отправка эксперимента с помощью объекта ScriptRunConfig.Submit the experiment with a ScriptRunConfig object. Этот объект включает в себя следующее.This object includes the:

  • source_directory: исходный каталог, который содержит сценарий обучения.source_directory: The source directory that contains your training script
  • script: определение сценария обучения.script: Identify the training script
  • run_config: конфигурация запуска, которая, в свою очередь, определяет, где будет проходить обучение.run_config: The run configuration, which in turn defines where the training will occur.

Например, чтобы использовать локальную конфигурацию целевого объекта, выполните следующее.For example, to use the local target configuration:

from azureml.core import ScriptRunConfig
import os 

script_folder = os.getcwd()
src = ScriptRunConfig(source_directory = script_folder, script = 'train.py', run_config = run_local)
run = exp.submit(src)
run.wait_for_completion(show_output = True)

Переключите тот же эксперимент для запуска в другом целевом объекте вычислений, используя другую конфигурацию запуска, такую ​​как amlcompute target.Switch the same experiment to run in a different compute target by using a different run configuration, such as the amlcompute target:

from azureml.core import ScriptRunConfig

src = ScriptRunConfig(source_directory = script_folder, script = 'train.py', run_config = run_amlcompute)
run = exp.submit(src)
run.wait_for_completion(show_output = True)

Также вы можете:Or you can:

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

Посмотрите примеры обучения различных целевых объектов вычислений в следующих записных книжках.See these notebooks for examples of training with various compute targets:

Узнайте, как запускать записные книжки, следуя указаниям из статьи о том, как изучить эту службу с помощью записных книжек Jupyter.Learn how to run notebooks by following the article, Use Jupyter notebooks to explore this service.

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