Configurar e usar destinos de computação para treinamento de modeloSet up and use compute targets for model training

Com o Azure Machine Learning, você pode treinar seu modelo em uma variedade de recursos ou ambientes, coletivamente chamados de destinos de computação.With Azure Machine Learning, you can train your model on a variety of resources or environments, collectively referred to as compute targets. Um destino de computação pode ser um computador local ou um recurso de nuvem, como um Azure Machine Learning computação, Azure HDInsight ou uma máquina virtual remota.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. Você também pode criar destinos de computação para implantação de modelo, conforme descrito em "onde e como implantar seus modelos".You can also create compute targets for model deployment as described in "Where and how to deploy your models".

Você pode criar e gerenciar um destino de computação usando o SDK do Azure Machine Learning, portal do Azure, sua página de aterrissagem do espaço de trabalho (versão prévia), CLI do Azure ou Azure Machine Learning VS Code extensão.You can create and manage a compute target using the Azure Machine Learning SDK, Azure portal, your workspace landing page (preview), Azure CLI or Azure Machine Learning VS Code extension. Se você tiver destinos de computação criados por meio de outro serviço (por exemplo, um cluster HDInsight), poderá usá-los anexando-os ao seu espaço de trabalho do Azure Machine Learning.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 workspace.

Neste artigo, você aprenderá a usar vários destinos de computação para treinamento de modelo.In this article, you learn how to use various compute targets for model training. As etapas para todos os destinos de computação seguem o mesmo fluxo de trabalho:The steps for all compute targets follow the same workflow:

  1. Crie um destino de computação se você ainda não tiver um.Create a compute target if you don’t already have one.
  2. Anexe o destino de computação ao seu espaço de trabalho.Attach the compute target to your workspace.
  3. Configure o destino de computação para que ele contenha o ambiente Python e as dependências de pacote necessárias para seu script.Configure the compute target so that it contains the Python environment and package dependencies needed by your script.

Nota

O código deste artigo foi testado com Azure Machine Learning SDK versão 1.0.39.Code in this article was tested with Azure Machine Learning SDK version 1.0.39.

Destinos de computação para treinamentoCompute targets for training

Azure Machine Learning tem suporte variado em diferentes destinos de computação.Azure Machine Learning has varying support across different compute targets. Inicia um ciclo de vida de desenvolvimento do modelo típico com dev/experimentação numa pequena quantidade de dados.A typical model development lifecycle starts with dev/experimentation on a small amount of data. Nesta fase, recomendamos que utilize um ambiente local.At this stage, we recommend using a local environment. Por exemplo, seu computador local ou uma VM com base na cloud.For example, your local computer or a cloud-based VM. À medida que aumentar verticalmente o seu treinamento em conjuntos de dados maiores ou fazer o treinamento distribuído, recomendamos que utilize a computação do Azure Machine Learning para criar um cluster único ou vários node que é dimensionado automaticamente sempre que submete uma execução.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. Também pode anexar seus próprios recursos de computação, embora o suporte para vários cenários podem variar como detalhadas abaixo:You can also attach your own compute resource, although support for various scenarios may vary as detailed below:

Computação destinos podem ser reutilizados a partir de uma tarefa de preparação para a próxima.Compute targets can be reused from one training job to the next. Por exemplo, depois de anexar uma VM remota à área de trabalho, pode reutilizá-lo para várias tarefas.For example, once you attach a remote VM to your workspace, you can reuse it for multiple jobs.

Treinamento  destinosTraining  targets Suporte GPUGPU support ML automatizadaAutomated ML Pipelines de MLML pipelines Visual interfaceVisual interface
Computador localLocal computer Talvezmaybe simyes    
Computação do Azure Machine LearningAzure Machine Learning Compute simyes Sim &yes &
hyperparameter tuninghyperparameter tuning
simyes simyes
VM remotaRemote VM simyes Sim &yes &
a otimização de hiper-parâmetroshyperparameter tuning
simyes  
Azure DatabricksAzure Databricks   simyes simyes  
Azure Data Lake AnalyticsAzure Data Lake Analytics     simyes  
O Azure HDInsightAzure HDInsight     simyes  
Azure BatchAzure Batch     simyes  

Nota

Azure Machine Learning computação pode ser criada como um recurso persistente ou criada dinamicamente quando você solicita uma execução.Azure Machine Learning Compute can be created as a persistent resource or created dynamically when you request a run. A criação baseada em execução remove o destino de computação após a conclusão da execução de treinamento, portanto, não é possível reutilizar os destinos de computação criados dessa maneira.Run-based creation removes the compute target after the training run is complete, so you cannot reuse compute targets created this way.

O que é uma configuração de execução?What's a run configuration?

Ao treinar, é comum iniciar em seu computador local e, posteriormente, executar esse script de treinamento em um destino de computação diferente.When training, it is common to start on your local computer, and later run that training script on a different compute target. Com o Azure Machine Learning, você pode executar o script em vários destinos de computação sem precisar alterar o script.With Azure Machine Learning, you can run your script on various compute targets without having to change your script.

Tudo o que você precisa fazer é definir o ambiente para cada destino de computação em uma configuração de execução.All you need to do is define the environment for each compute target within a run configuration. Em seguida, quando você quiser executar o teste de treinamento em um destino de computação diferente, especifique a configuração de execução para essa computação.Then, when you want to run your training experiment on a different compute target, specify the run configuration for that compute. Para obter detalhes de como especificar um ambiente e associá-lo para executar a configuração, consulte criar e gerenciar ambientes para treinamento e implantação.For details of specifying an environment and binding it to run configuration, see Create and manage environments for training and deployment.

Saiba mais sobre como Enviar experimentos no final deste artigo.Learn more about submitting experiments at the end of this article.

O que é um estimador?What's an estimator?

Para facilitar o treinamento de modelo usando estruturas populares, o SDK do Python Azure Machine Learning fornece uma abstração alternativa de nível superior, a classe do estimador.To facilitate model training using popular frameworks, the Azure Machine Learning Python SDK provides an alternative higher-level abstraction, the estimator class. Essa classe permite que você construa facilmente configurações de execução.This class allows you to easily construct run configurations. Você pode criar e usar um estimador genérico para enviar scripts de treinamento que usam qualquer estrutura de aprendizado que você escolher (como scikit-learn).You can create and use a generic Estimator to submit training scripts that use any learning framework you choose (such as scikit-learn).

Para as tarefas PyTorch, TensorFlow e Chainer, Azure Machine Learning também fornece os respectivos estimadores PyTorch, TensorFlowe Chainer para simplificar o uso dessas estruturas.For PyTorch, TensorFlow, and Chainer tasks, Azure Machine Learning also provides respective PyTorch, TensorFlow, and Chainer estimators to simplify using these frameworks.

Para obter mais informações, consulte treinar modelos de ml com estimadores.For more information, see Train ML Models with estimators.

O que é um pipeline de ML?What's an ML Pipeline?

Com pipelines de ML, você pode otimizar seu fluxo de trabalho com simplicidade, velocidade, portabilidade e reutilização.With ML pipelines, you can optimize your workflow with simplicity, speed, portability, and reuse. Ao criar pipelines com Azure Machine Learning, você pode se concentrar em sua experiência, aprendizado de máquina, em vez de infraestrutura e automação.When building pipelines with Azure Machine Learning, you can focus on your expertise, machine learning, rather than on infrastructure and automation.

Os pipelines ML são construídos a partir de várias etapas, que são unidades computacionais distintas no pipeline.ML pipelines are constructed from multiple steps, which are distinct computational units in the pipeline. Cada etapa pode ser executada de forma independente e usar recursos de computação isolados.Each step can run independently and use isolated compute resources. Isso permite que vários cientistas de dados funcionem no mesmo pipeline ao mesmo tempo sem sobrecarregar recursos de computação, além de facilitar o uso de diferentes tipos/tamanhos de computação para cada etapa.This allows multiple data scientists to work on the same pipeline at the same time without over-taxing compute resources, and also makes it easy to use different compute types/sizes for each step.

Dica

Os pipelines ML podem usar a configuração de execução ou os estimadores ao treinar modelos.ML Pipelines can use run configuration or estimators when training models.

Embora os pipelines ML possam treinar modelos, eles também podem preparar dados antes de treinar e implantar modelos após o treinamento.While ML pipelines can train models, they can also prepare data before training and deploy models after training. Um dos principais casos de uso para pipelines é a pontuação em lote.One of the primary use cases for pipelines is batch scoring. Para obter mais informações, consulte pipelines: Otimize os fluxos de trabalhodo Machine Learning.For more information, see Pipelines: Optimize machine learning workflows.

Configurar no PythonSet up in Python

Use as seções abaixo para configurar esses destinos de computação:Use the sections below to configure these compute targets:

Computador localLocal computer

  1. Criar e anexar: Não é necessário criar ou anexar um destino de computação para usar o computador local como o ambiente de treinamento.Create and attach: There's no need to create or attach a compute target to use your local computer as the training environment.

  2. Configurar: Quando você usa seu computador local como um destino de computação, o código de treinamento é executado em seu ambiente de desenvolvimento.Configure: When you use your local computer as a compute target, the training code is run in your development environment. Se esse ambiente já tiver os pacotes python de que você precisa, use o ambiente gerenciado pelo usuário.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

Agora que você anexou a computação e configurou sua execução, a próxima etapa é enviar a execução de treinamento.Now that you’ve attached the compute and configured your run, the next step is to submit the training run.

Computação do Azure Machine LearningAzure Machine Learning Compute

Azure Machine Learning computação é uma infraestrutura de computação gerenciada que permite ao usuário criar facilmente uma computação de vários nós ou um único nó.Azure Machine Learning Compute is a managed-compute infrastructure that allows the user to easily create a single or multi-node compute. A computação é criada dentro de sua região de espaço de trabalho como um recurso que pode ser compartilhado com outros usuários em seu espaço de trabalho.The compute is created within your workspace region as a resource that can be shared with other users in your workspace. A computação é dimensionada automaticamente quando um trabalho é enviado e pode ser colocada em uma rede virtual do Azure.The compute scales up automatically when a job is submitted, and can be put in an Azure Virtual Network. A computação é executada em um ambiente em contêiner e empacota suas dependências de modelo em um contêiner do Docker.The compute executes in a containerized environment and packages your model dependencies in a Docker container.

Pode usar a computação do Azure Machine Learning para distribuir o processo de treinamento em clusters de nós de computação de CPU ou de GPU na cloud.You can use Azure Machine Learning Compute to distribute the training process across a cluster of CPU or GPU compute nodes in the cloud. Para obter mais informações sobre os tamanhos de VM que incluem GPUs, consulte tamanhos de máquina virtual com otimização de GPU.For more information on the VM sizes that include GPUs, see GPU-optimized virtual machine sizes.

Azure Machine Learning computação tem limites padrão, como o número de núcleos que podem ser alocados.Azure Machine Learning Compute has default limits, such as the number of cores that can be allocated. Para obter mais informações, consulte gerenciar e solicitar cotas para recursos do Azure.For more information, see Manage and request quotas for Azure resources.

Você pode criar um ambiente de computação Azure Machine Learning sob demanda ao agendar uma execução ou como um recurso persistente.You can create an Azure Machine Learning compute environment on demand when you schedule a run, or as a persistent resource.

Criação baseados em execuçãoRun-based creation

Você pode criar Azure Machine Learning computação como um destino de computação em tempo de execução.You can create Azure Machine Learning Compute as a compute target at run time. A computação é criada automaticamente para sua execução.The compute is automatically created for your run. A computação é excluída automaticamente quando a execução é concluída.The compute is deleted automatically once the run completes.

Nota

Para especificar o número máximo de nós a serem usados, você normalmente definiria node_count como o número de nós.To specify the max number of nodes to use, you would normally set node_count to the number of nodes. Atualmente, há (04/04/2019) um bug que impede que isso funcione.There is currently (04/04/2019) a bug that prevents this from working. Como alternativa, use a amlcompute._cluster_max_node_count propriedade da configuração de execução.As a workaround, use the amlcompute._cluster_max_node_count property of the run configuration. Por exemplo, run_config.amlcompute._cluster_max_node_count = 5.For example, run_config.amlcompute._cluster_max_node_count = 5.

Importante

A criação baseada em execução do Azure Machine Learning computação está atualmente em visualização.Run-based creation of Azure Machine Learning compute is currently in Preview. Não use a criação baseada em execução se usar o ajuste de hiperparâmetro automatizado ou o aprendizado de máquina automatizado.Don't use run-based creation if you use automated hyperparameter tuning or automated machine learning. Para usar o ajuste de hiperparâmetro ou o aprendizado de máquina automatizado, crie um destino de computação persistente em vez disso.To use hyperparameter tuning or automated machine learning, create a persistent compute target instead.

  1. Criar, anexar e configurar: A criação baseada em execução executa todas as etapas necessárias para criar, anexar e configurar o destino de computação com a configuração de execução.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'

Agora que você anexou a computação e configurou sua execução, a próxima etapa é enviar a execução de treinamento.Now that you’ve attached the compute and configured your run, the next step is to submit the training run.

Computação persistentePersistent compute

Uma computação persistente de Azure Machine Learning pode ser reutilizada entre trabalhos.A persistent Azure Machine Learning Compute can be reused across jobs. A computação pode ser compartilhada com outros usuários no espaço de trabalho e é mantida entre os trabalhos.The compute can be shared with other users in the workspace and is kept between jobs.

  1. Criar e anexar: Para criar um recurso de computação persistente Azure Machine Learning em Python, especifique as propriedades vm_size e 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 Machine Learning, em seguida, usa padrões inteligentes para as outras propriedades.Azure Machine Learning then uses smart defaults for the other properties. A computação é ajustada à escala vertical para zero nós quando ela não é usada.The compute autoscales down to zero nodes when it isn't used. As VMs dedicadas são criadas para executar seus trabalhos conforme necessário.Dedicated VMs are created to run your jobs as needed.

    • vm_size: A família de VMs dos nós criados por Azure Machine Learning computação.vm_size: The VM family of the nodes created by Azure Machine Learning Compute.
    • max_nodes: O número máximo de nós para fazer o dimensionamento automático para quando você executa um trabalho em Azure Machine Learning computação.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)
    

    Você também pode configurar várias propriedades avançadas ao criar Azure Machine Learning computação.You can also configure several advanced properties when you create Azure Machine Learning Compute. As propriedades permitem que você crie um cluster persistente de tamanho fixo ou dentro de um Entrada na Rede virtual do Azure existente em sua assinatura.The properties allow you to create a persistent cluster of fixed size, or within an existing Azure Virtual Network in your subscription. Consulte a classe AmlCompute para obter detalhes.See the AmlCompute class for details.

    Ou você pode criar e anexar um recurso de computação persistente Azure Machine Learning no portal do Azure.Or you can create and attach a persistent Azure Machine Learning Compute resource in the Azure portal.

  2. Configurar: Crie uma configuração de execução para o destino de computação persistente.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'])
    

Agora que você anexou a computação e configurou sua execução, a próxima etapa é enviar a execução de treinamento.Now that you’ve attached the compute and configured your run, the next step is to submit the training run.

Máquinas virtuais remotasRemote virtual machines

O Azure Machine Learning também suporta a colocarem os seus próprios recursos de computação e ligá-la à sua área de trabalho.Azure Machine Learning also supports bringing your own compute resource and attaching it to your workspace. Um desses tipos de recurso é uma VM remota arbitrária, desde que seja acessível a partir de Azure Machine Learning.One such resource type is an arbitrary remote VM, as long as it's accessible from Azure Machine Learning. O recurso pode ser uma VM do Azure, um servidor remoto em sua organização ou local.The resource can be an Azure VM, a remote server in your organization, or on-premises. Especificamente, dado o endereço IP e as credenciais (nome de usuário e senha ou chave SSH), você pode usar qualquer VM acessível para execuções remotas.Specifically, given the IP address and credentials (user name and password, or SSH key), you can use any accessible VM for remote runs.

Pode utilizar um ambiente de sistema criado conda, um ambiente de Python já existente ou um contentor do Docker.You can use a system-built conda environment, an already existing Python environment, or a Docker container. Para executar em um contêiner do Docker, você deve ter um mecanismo do Docker em execução na VM.To execute on a Docker container, you must have a Docker Engine running on the VM. Esta funcionalidade é especialmente útil quando pretender que um ambiente de dev/experimentação mais flexível, com base na cloud que o seu computador local.This functionality is especially useful when you want a more flexible, cloud-based dev/experimentation environment than your local machine.

Use o Máquina Virtual de Ciência de Dados do Azure (DSVM) como a VM do Azure escolhida para esse cenário.Use the Azure Data Science Virtual Machine (DSVM) as the Azure VM of choice for this scenario. Essa VM é um ambiente de desenvolvimento pré-configurado de ciência de dados e de ia no Azure.This VM is a pre-configured data science and AI development environment in Azure. A VM oferece uma opção organizada de ferramentas e estruturas para desenvolvimento de aprendizado de máquina em todo o ciclo de vida.The VM offers a curated choice of tools and frameworks for full-lifecycle machine learning development. Para obter mais informações sobre como usar o DSVM com Azure Machine Learning, consulte configurar um ambiente de desenvolvimento.For more information on how to use the DSVM with Azure Machine Learning, see Configure a development environment.

  1. Criar: Crie um DSVM antes de usá-lo para treinar seu modelo.Create: Create a DSVM before using it to train your model. Para criar esse recurso, consulte provisionar o máquina virtual de ciência de dados para Linux (Ubuntu).To create this resource, see Provision the Data Science Virtual Machine for Linux (Ubuntu).

    Aviso

    Azure Machine Learning só dá suporte a máquinas virtuais que executam o Ubuntu.Azure Machine Learning only supports virtual machines that run Ubuntu. Ao criar uma VM ou escolher uma VM existente, você deve selecionar uma VM que usa o Ubuntu.When you create a VM or choose an existing VM, you must select a VM that uses Ubuntu.

  2. Anexar: Para anexar uma máquina virtual existente como um destino de computação, você deve fornecer o FQDN (nome de domínio totalmente qualificado), o nome de usuário e a senha para a máquina virtual.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. No exemplo, substitua <o FQDN > pelo FQDN público da VM ou pelo endereço IP público.In the example, replace <fqdn> with the public FQDN of the VM, or the public IP address. Substitua <username > e <password > pelo nome de usuário e senha ssh para a VM.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)
    

    Ou você pode anexar o DSVM ao seu espaço de trabalho usando o portal do Azure.Or you can attach the DSVM to your workspace using the Azure portal.

  3. Configurar: Crie uma configuração de execução para o destino de computação DSVM.Configure: Create a run configuration for the DSVM compute target. O Docker e o Conda são usados para criar e configurar o ambiente de treinamento no DSVM.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'])
    

Agora que você anexou a computação e configurou sua execução, a próxima etapa é enviar a execução de treinamento.Now that you’ve attached the compute and configured your run, the next step is to submit the training run.

O Azure HDInsightAzure HDInsight

O Azure HDInsight é uma plataforma popular para análise de Big Data.Azure HDInsight is a popular platform for big-data analytics. A plataforma fornece Apache Spark, que pode ser usada para treinar seu modelo.The platform provides Apache Spark, which can be used to train your model.

  1. Criar: Crie o cluster HDInsight antes de usá-lo para treinar seu modelo.Create: Create the HDInsight cluster before you use it to train your model. Para criar um Spark no cluster HDInsight, consulte criar um cluster Spark no hdinsight.To create a Spark on HDInsight cluster, see Create a Spark Cluster in HDInsight.

    Ao criar o cluster, você deve especificar um nome de usuário e uma senha SSH.When you create the cluster, you must specify an SSH user name and password. Anote esses valores, pois você precisa que eles usem o HDInsight como um destino de computação.Take note of these values, as you need them to use HDInsight as a compute target.

    Após a criação do cluster, conecte-se a ele com <o nome de host ClusterName > <-SSH.azurehdinsight.net, em que ClusterName > é aquele que você forneceu para o cluster.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. Anexar: Para anexar um cluster do HDInsight como um destino de computação, você deve fornecer o nome de host, o nomes de usuário e a senha para o cluster HDInsight.Attach: To attach an HDInsight cluster as a compute target, you must provide the hostname, user name, and password for the HDInsight cluster. O exemplo seguinte utiliza o SDK para anexar um cluster a sua área de trabalho.The following example uses the SDK to attach a cluster to your workspace. No exemplo, substitua <ClusterName > pelo nome do cluster.In the example, replace <clustername> with the name of your cluster. Substitua <username > e <password > pelo nome de usuário e senha ssh para o cluster.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)
    

    Ou você pode anexar o cluster HDInsight ao seu espaço de trabalho usando o portal do Azure.Or you can attach the HDInsight cluster to your workspace using the Azure portal.

  3. Configurar: Crie uma configuração de execução para o destino de computação 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
    

Agora que você anexou a computação e configurou sua execução, a próxima etapa é enviar a execução de treinamento.Now that you’ve attached the compute and configured your run, the next step is to submit the training run.

Lote do AzureAzure Batch

O lote do Azure é usado para executar aplicativos de HPC (computação de alto desempenho) e paralelos em grande escala com eficiência na nuvem.Azure Batch is used to run large-scale parallel and high-performance computing (HPC) applications efficiently in the cloud. AzureBatchStep pode ser usado em um pipeline Azure Machine Learning para enviar trabalhos para um pool de computadores do lote do Azure.AzureBatchStep can be used in an Azure Machine Learning Pipeline to submit jobs to an Azure Batch pool of machines.

Para anexar o lote do Azure como um destino de computação, você deve usar o SDK do Azure Machine Learning e fornecer as seguintes informações:To attach Azure Batch as a compute target, you must use the Azure Machine Learning SDK and provide the following information:

  • Nome de computação do lote do Azure: Um nome amigável a ser usado para a computação no espaço de trabalhoAzure Batch compute name: A friendly name to be used for the compute within the workspace
  • Nome da conta do lote do Azure: O nome da conta do lote do AzureAzure Batch account name: The name of the Azure Batch account
  • Grupo de recursos: O grupo de recursos que contém a conta do lote do Azure.Resource Group: The resource group that contains the Azure Batch account.

O código a seguir demonstra como anexar o lote do Azure como um destino de computação: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

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

Configurar no portal do AzureSet up in Azure portal

Você pode acessar os destinos de computação associados ao seu espaço de trabalho no portal do Azure.You can access the compute targets that are associated with your workspace in the Azure portal. Você pode usar o portal para:You can use the portal to:

Depois que um destino é criado e anexado ao seu espaço de trabalho, você o usará em sua configuração ComputeTarget de execução com um objeto: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')

Exibir destinos de computaçãoView compute targets

Para ver os destinos de computação para seu espaço de trabalho, use as seguintes etapas:To see the compute targets for your workspace, use the following steps:

  1. Navegue até a portal do Azure e abra seu espaço de trabalho.Navigate to the Azure portal and open your workspace. Você também pode acessar essas mesmas etapas na página de aterrissagem do espaço de trabalho (versão prévia), embora as imagens abaixo mostrem o portal do Azure.You can also access these same steps in your workspace landing page (preview), although the images below show the Azure portal.

  2. Em aplicativos, selecione computação.Under Applications, select Compute.

    Exibir guia de computaçãoView compute tab

Criar um destino de computaçãoCreate a compute target

Siga as etapas anteriores para exibir a lista de destinos de computação.Follow the previous steps to view the list of compute targets. Em seguida, use estas etapas para criar um destino de computação:Then use these steps to create a compute target:

  1. Selecione o sinal de adição (+) para adicionar um destino de computação.Select the plus sign (+) to add a compute target.

    Adicionar um destino de computação

  2. Insira um nome para o destino de computação.Enter a name for the compute target.

  3. Selecione computação do Machine Learning como o tipo de computação a ser usado para treinamento.Select Machine Learning Compute as the type of compute to use for Training.

    Nota

    Azure Machine Learning computação é o único recurso de computação gerenciada que você pode criar na portal do Azure.Azure Machine Learning Compute is the only managed-compute resource you can create in the Azure portal. Todos os outros recursos de computação podem ser anexados depois de criados.All other compute resources can be attached after they are created.

  4. Preencha o formulário.Fill out the form. Forneça valores para as propriedades necessárias, especialmente a família de VMse o máximo de nós a serem usados para criar a computação.Provide values for the required properties, especially VM Family, and the maximum nodes to use to spin up the compute.

  5. Selecione Criar.Select Create.

  6. Exiba o status da operação de criação selecionando o destino de computação na lista:View the status of the create operation by selecting the compute target from the list:

    Selecione um destino de computação para exibir o status da operação de criação

  7. Em seguida, você verá os detalhes do destino de computação:You then see the details for the compute target:

    Exibir os detalhes de destino do computador

Anexar destinos de computaçãoAttach compute targets

Para usar os destinos de computação criados fora do espaço de trabalho Azure Machine Learning, você deve anexá-los.To use compute targets created outside the Azure Machine Learning workspace, you must attach them. Anexar um destino de computação torna-o disponível para seu espaço de trabalho.Attaching a compute target makes it available to your workspace.

Siga as etapas descritas anteriormente para exibir a lista de destinos de computação.Follow the steps described earlier to view the list of compute targets. Em seguida, use as seguintes etapas para anexar um destino de computação:Then use the following steps to attach a compute target:

  1. Selecione o sinal de adição (+) para adicionar um destino de computação.Select the plus sign (+) to add a compute target.

  2. Insira um nome para o destino de computação.Enter a name for the compute target.

  3. Selecione o tipo de computação a ser anexado para treinamento:Select the type of compute to attach for Training:

    Importante

    Nem todos os tipos de computação podem ser anexados do portal do Azure.Not all compute types can be attached from the Azure portal. Os tipos de computação que podem ser anexados atualmente para treinamento incluem:The compute types that can currently be attached for training include:

    • Uma VM remotaA remote VM
    • Azure Databricks (para uso em pipelines de aprendizado de máquina)Azure Databricks (for use in machine learning pipelines)
    • Azure Data Lake Analytics (para uso em pipelines de aprendizado de máquina)Azure Data Lake Analytics (for use in machine learning pipelines)
    • Azure HDInsightAzure HDInsight
  4. Preencha o formulário e forneça valores para as propriedades necessárias.Fill out the form and provide values for the required properties.

    Nota

    A Microsoft recomenda que você use chaves SSH, que são mais seguras do que senhas.Microsoft recommends that you use SSH keys, which are more secure than passwords. As senhas são vulneráveis a ataques de força bruta.Passwords are vulnerable to brute force attacks. As chaves SSH dependem de assinaturas criptográficas.SSH keys rely on cryptographic signatures. Para obter informações sobre como criar chaves SSH para uso com máquinas virtuais do Azure, consulte os seguintes documentos:For information on how to create SSH keys for use with Azure Virtual Machines, see the following documents:

  5. Selecione anexar.Select Attach.

  6. Exiba o status da operação de anexação selecionando o destino de computação na lista.View the status of the attach operation by selecting the compute target from the list.

Configurar com a CLISet up with CLI

Você pode acessar os destinos de computação associados ao seu espaço de trabalho usando a extensão da CLI para Azure Machine Learning.You can access the compute targets that are associated with your workspace using the CLI extension for Azure Machine Learning. Você pode usar a CLI para:You can use the CLI to:

  • Criar um destino de computação gerenciadoCreate a managed compute target
  • Atualizar um destino de computação gerenciadoUpdate a managed compute target
  • Anexar um destino de computação não gerenciadoAttach an unmanaged compute target

Para obter mais informações, consulte Gerenciamento de recursos.For more information, see Resource management.

Configurar com VS CodeSet up with VS Code

Você pode acessar, criar e gerenciar os destinos de computação associados ao seu espaço de trabalho usando a extensão vs Code para Azure Machine Learning.You can access, create and manage the compute targets that are associated with your workspace using the VS Code extension for Azure Machine Learning.

Enviar execução de treinamento usando Azure Machine Learning SDKSubmit training run using Azure Machine Learning SDK

Depois de criar uma configuração de execução, use-a para executar o experimento.After you create a run configuration, you use it to run your experiment. O padrão de código para enviar uma execução de treinamento é o mesmo para todos os tipos de destinos de computação:The code pattern to submit a training run is the same for all types of compute targets:

  1. Criar um experimento para executarCreate an experiment to run
  2. Submeta a execução.Submit the run.
  3. Aguarde a execução concluir.Wait for the run to complete.

Importante

Quando você envia a execução de treinamento, um instantâneo do diretório que contém seus scripts de treinamento é criado e enviado para o destino de computação.When you submit the training run, a snapshot of the directory that contains your training scripts is created and sent to the compute target. Ele também é armazenado como parte do experimento em seu espaço de trabalho.It is also stored as part of the experiment in your workspace. Se você alterar os arquivos e enviar a execução novamente, somente os arquivos alterados serão carregados.If you change files and submit the run again, only the changed files will be uploaded.

Para impedir que arquivos sejam incluídos no instantâneo, crie um arquivo . gitignore ou .amlignore no diretório e adicione os arquivos a ele.To prevent files from being included in the snapshot, create a .gitignore or .amlignore file in the directory and add the files to it. O .amlignore arquivo usa a mesma sintaxe e padrões que o arquivo . gitignore .The .amlignore file uses the same syntax and patterns as the .gitignore file. Se ambos os arquivos existirem .amlignore , o arquivo terá precedência.If both files exist, the .amlignore file takes precedence.

Para obter mais informações, consulte instantâneos.For more information, see Snapshots.

Criar uma experimentaçãoCreate an experiment

Primeiro, crie um experimento em seu espaço de trabalho.First, create an experiment in your workspace.

from azureml.core import Experiment
experiment_name = 'my_experiment'

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

Submeter a experimentaçãoSubmit the experiment

Envie o experimento com um ScriptRunConfig objeto.Submit the experiment with a ScriptRunConfig object. Esse objeto inclui:This object includes the:

  • pasta_de_origem: O diretório de origem que contém o script de treinamentosource_directory: The source directory that contains your training script
  • script: Identificar o script de treinamentoscript: Identify the training script
  • run_config: A configuração de execução, que, por sua vez, define onde o treinamento ocorrerá.run_config: The run configuration, which in turn defines where the training will occur.

Por exemplo, para usar a configuração de destino local :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)

Alterne o mesmo experimento para ser executado em um destino de computação diferente usando uma configuração de execução diferente, como o destino amlcompute: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)

Dica

Este exemplo usa como padrão apenas um nó do destino de computação para treinamento.This example defaults to only using one node of the compute target for training. Para usar mais de um nó, defina a node_count configuração de execução para o número de nós desejado.To use more than one node, set the node_count of the run configuration to the desired number of nodes. Por exemplo, o código a seguir define o número de nós usados para treinamento para quatro:For example, the following code sets the number of nodes used for training to four:

src.run_config.node_count = 4

Ou você pode:Or you can:

Para obter mais informações, consulte a documentação do ScriptRunConfig e do RunConfiguration .For more information, see the ScriptRunConfig and RunConfiguration documentation.

Criar configuração de execução e enviar execução usando Azure Machine Learning CLICreate run configuration and submit run using Azure Machine Learning CLI

Você pode usar CLI do Azure e Machine Learning extensão da CLI para criar configurações de execução e enviar execuções em diferentes destinos de computação.You can use Azure CLI and Machine Learning CLI extension to create run configurations and submit runs on different compute targets. Os exemplos a seguir pressupõem que você tenha um Workspace do Azure Machine Learning existente e que tenha feito logon no az login Azure usando o comando da CLI.The following examples assume that you have an existing Azure Machine Learning Workspace and you have logged in to Azure using az login CLI command.

Criar configuração de execuçãoCreate run configuration

A maneira mais simples de criar a configuração de execução é navegar na pasta que contém os scripts do Python do Machine Learning e usar o comando da CLIThe simplest way to create run configuration is to navigate the folder that contains your machine learning Python scripts, and use CLI command

az ml folder attach

Este comando cria uma subpasta .azureml que contém arquivos de configuração de execução de modelo para destinos de computação diferentes.This command creates a subfolder .azureml that contains template run configuration files for different compute targets. Você pode copiar e editar esses arquivos para personalizar sua configuração, por exemplo, para adicionar pacotes do Python ou alterar as configurações do Docker.You can copy and edit these files to customize your configuration, for example to add Python packages or change Docker settings.

Estrutura do arquivo de configuração de execuçãoStructure of run configuration file

O arquivo de configuração de execução é YAML formatado, com as seções a seguirThe run configuration file is YAML formatted, with following sections

  • O script a ser executado e seus argumentosThe script to run and its arguments
  • Nome de destino de computação, "local" ou nome de uma computação no espaço de trabalho.Compute target name, either "local" or name of a compute under the workspace.
  • Parâmetros para executar a execução: Framework, Communicator para execuções distribuídas, duração máxima e número de nós de computação.Parameters for executing the run: framework, communicator for distributed runs, maximum duration, and number of compute nodes.
  • Seção de ambiente.Environment section. Consulte criar e gerenciar ambientes para treinamento e implantação para obter detalhes dos campos nesta seção.See Create and manage environments for training and deployment for details of the fields in this section.
    • Para especificar os pacotes do Python a serem instalados para a execução, crie o arquivo de ambiente Condae defina o campo condaDependenciesFile .To specify Python packages to install for the run, create conda environment file, and set condaDependenciesFile field.
  • Execute os detalhes do histórico para especificar a pasta do arquivo de log e para habilitar ou desabilitar a coleta de saída e instantâneos de histórico de execução.Run history details to specify log file folder, and to enable or disable output collection and run history snapshots.
  • Detalhes de configuração específicos para a estrutura selecionada.Configuration details specific to the framework selected.
  • Referência de dados e detalhes do armazenamento de dados.Data reference and data store details.
  • Detalhes de configuração específicos para Computação do Machine Learning para criar um novo cluster.Configuration details specific for Machine Learning Compute for creating a new cluster.

Criar uma experimentaçãoCreate an experiment

Primeiro, crie um experimento para suas execuçõesFirst, create an experiment for your runs

az ml experiment create -n <experiment>

Execução de scriptScript run

Para enviar uma execução de script, execute um comandoTo submit a script run, execute a command

az ml run submit-script -e <experiment> -c <runconfig> my_train.py

HyperDrive executarHyperDrive run

Você pode usar HyperDrive com CLI do Azure para executar as execuções de ajuste de parâmetro.You can use HyperDrive with Azure CLI to perform parameter tuning runs. Primeiro, crie um arquivo de configuração HyperDrive no formato a seguir.First, create a HyperDrive configuration file in the following format. Consulte ajustar hiperparâmetros para seu artigo de modelo para obter detalhes sobre parâmetros de ajuste de hiperparâmetro.See Tune hyperparameters for your model article for details on hyperparameter tuning parameters.

# hdconfig.yml
sampling: 
    type: random # Supported options: Random, Grid, Bayesian
    parameter_space: # specify a name|expression|values tuple for each parameter.
    - name: --penalty # The name of a script parameter to generate values for.
      expression: choice # supported options: choice, randint, uniform, quniform, loguniform, qloguniform, normal, qnormal, lognormal, qlognormal
      values: [0.5, 1, 1.5] # The list of values, the number of values is dependent on the expression specified.
policy: 
    type: BanditPolicy # Supported options: BanditPolicy, MedianStoppingPolicy, TruncationSelectionPolicy, NoTerminationPolicy
    evaluation_interval: 1 # Policy properties are policy specific. See the above link for policy specific parameter details.
    slack_factor: 0.2
primary_metric_name: Accuracy # The metric used when evaluating the policy
primary_metric_goal: Maximize # Maximize|Minimize
max_total_runs: 8 # The maximum number of runs to generate
max_concurrent_runs: 2 # The number of runs that can run concurrently.
max_duration_minutes: 100 # The maximum length of time to run the experiment before cancelling.

Adicione esse arquivo junto com os arquivos de configuração de execução.Add this file alongside the run configuration files. Em seguida, envie uma execução de HyperDrive usando:Then submit a HyperDrive run using:

az ml run submit-hyperdrive -e <experiment> -c <runconfig> --hyperdrive-configuration-name <hdconfig> my_train.py

Observe a seção argumentos em runconfig e o espaço de parâmetro em hyperdrive config. Eles contêm os argumentos de linha de comando a serem passados para o script de treinamento.Note the arguments section in runconfig and parameter space in HyperDrive config. They contain the command-line arguments to be passed to training script. O valor em runconfig permanece o mesmo para cada iteração, enquanto o intervalo na configuração de HyperDrive é iterado.The value in runconfig stays the same for each iteration, while the range in HyperDrive config is iterated over. Não especifique o mesmo argumento em ambos os arquivos.Do not specify the same argument in both files.

Para obter mais detalhes sobre az ml esses comandos da CLI e conjunto completo de argumentos, consulte a documentação de referência.For more details on these az ml CLI commands and full set of arguments, see the reference documentation.

Acompanhamento e integração de gitGit tracking and integration

Quando você inicia uma execução de treinamento onde o diretório de origem é um repositório git local, as informações sobre o repositório são armazenadas no histórico de execuções.When you start a training run where the source directory is a local Git repository, information about the repository is stored in the run history. Por exemplo, a ID de confirmação atual para o repositório é registrada como parte do histórico.For example, the current commit ID for the repository is logged as part of the history.

Exemplos de notebookNotebook examples

Consulte estes blocos de anotações para obter exemplos de treinamento com vários destinos de computação:See these notebooks for examples of training with various compute targets:

Saiba como executar blocos de notas, seguindo o artigo blocos de notas do Jupyter de utilização para explorar este serviço.Learn how to run notebooks by following the article, Use Jupyter notebooks to explore this service.

Passos SeguintesNext steps