Configurar metas de computação para formação e implantação de modelos

Saiba como anexar recursos de computação Azure ao seu espaço de trabalho Azure Machine Learning. Em seguida, pode usar estes recursos como alvos de treinamento e inferência nas suas tarefas de aprendizagem automática.

Neste artigo, aprenda a configurar o seu espaço de trabalho para utilizar estes recursos computacional:

  • O seu computador local
  • Máquinas virtuais remotas
  • Piscinas Apache Spark (alimentadas por Azure Synapse Analytics)
  • Azure HDInsight
  • Azure Batch
  • Azure Databricks
  • Azure Data Lake Analytics
  • Instância de Contentor do Azure
  • Azure Kubernetes Service & Azure Arc habilitado Kubernetes (pré-visualização)

Para utilizar alvos de cálculo geridos por Azure Machine Learning, consulte:

Pré-requisitos

Limitações

  • Não crie anexos múltiplos e simultâneos ao mesmo cálculo do seu espaço de trabalho. Por exemplo, anexar um cluster de serviço Azure Kubernetes a um espaço de trabalho usando dois nomes diferentes. Cada novo acessório quebrará os acessórios existentes anteriores.

    Se pretender voltar a colocar um alvo de cálculo, por exemplo, para alterar TLS ou outra configuração de configuração do cluster, deve primeiro remover o acessório existente.

O que é um alvo computacional?

Com Azure Machine Learning, pode treinar o seu modelo em vários recursos ou ambientes, coletivamente referidos como metas de computação. Um alvo de computação pode ser uma máquina local ou um recurso em nuvem, como um Azure Machine Learning Compute, Azure HDInsight ou uma máquina virtual remota. Também utiliza alvos de cálculo para a implementação do modelo, conforme descrito em "Onde e como implementar os seus modelos".

Computador local

Quando utiliza o computador local para treinar, não há necessidade de criar um alvo de computação. Basta submeter o treino da sua máquina local.

Quando utilizar o computador local para inferência, deve instalar o Docker. Para efetuar a implementação, utilize LocalWebservice.deploy_configuration para definir a porta que o serviço web utilizará. Em seguida, utilize o processo de implantação normal, tal como descrito nos modelos Implementar com Azure Machine Learning.

Máquinas virtuais remotas

Azure Machine Learning também suporta a fixação de uma Máquina Virtual Azure. O VM deve ser uma Máquina Virtual Azure Data Science (DSVM). O VM oferece uma escolha curada de ferramentas e quadros para o desenvolvimento de aprendizagem automática de ciclo de vida completo. Para obter mais informações sobre como utilizar o DSVM com Azure Machine Learning, consulte configurar um ambiente de desenvolvimento.

Dica

Em vez de um VM remoto, recomendamos a utilização da Azure Machine Learning instância de computação. É uma solução computacional totalmente gerida e baseada em nuvem que é específica para Azure Machine Learning. Para obter mais informações, consulte criar e gerir Azure Machine Learning caso de computação.

  1. Criar: Azure Machine Learning não pode criar um VM remoto para si. Em vez disso, deve criar o VM e, em seguida, anexá-lo ao seu espaço de trabalho Azure Machine Learning. Para obter informações sobre a criação de um DSVM, consulte a Disposição da Máquina Virtual de Ciência de Dados para Linux (Ubuntu).

    Aviso

    Azure Machine Learning só suporta máquinas virtuais que executam Ubuntu. Quando criar um VM ou escolher um VM existente, tem de selecionar um VM que utilize Ubuntu.

    Azure Machine Learning também requer que a máquina virtual tenha um endereço IP público.

  2. Anexar: Para anexar uma máquina virtual existente como alvo de computação, tem de fornecer o ID, o nome de utilizador e a palavra-passe para a máquina virtual. O ID de recursos do VM pode ser construído usando o ID de subscrição, nome de grupo de recursos e nome VM usando o seguinte formato de cadeia: /subscriptions/<subscription_id>/resourceGroups/<resource_group>/providers/Microsoft.Compute/virtualMachines/<vm_name>

    from azureml.core.compute import RemoteCompute, ComputeTarget
    
    # Create the compute config 
    compute_target_name = "attach-dsvm"
    
    attach_config = RemoteCompute.attach_configuration(resource_id='<resource_id>',
                                                    ssh_port=22,
                                                    username='<username>',
                                                    password="<password>")
    
    # Attach the compute
    compute = ComputeTarget.attach(ws, compute_target_name, attach_config)
    
    compute.wait_for_completion(show_output=True)
    

    Ou pode anexar o DSVM ao seu espaço de trabalho utilizando Azure Machine Learning estúdio.

    Aviso

    Não crie ligações múltiplas e simultâneas ao mesmo DSVM do seu espaço de trabalho. Cada novo acessório quebrará os acessórios existentes anteriores.

  3. Configuração: Crie uma configuração de execução para o alvo de computação DSVM. Docker e conda são usados para criar e configurar o ambiente de treino no DSVM.

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

Dica

Se pretender remover (desprender) um VM do seu espaço de trabalho, utilize o método RemoteCompute.detach().

Azure Machine Learning não apaga o VM por si. Deve eliminar manualmente o VM utilizando o portal Azure, CLI ou o SDK para Azure VM.

Conjuntos do Apache Spark

A integração Azure Synapse Analytics com Azure Machine Learning (pré-visualização) permite-lhe anexar um conjunto Apache Spark apoiado pela Azure Synapse para a exploração e preparação interativa de dados. Com esta integração, você pode ter um computação dedicado para a disputa de dados em escala. Para obter mais informações, consulte como anexar piscinas Apache Spark alimentadas pela Azure Synapse Analytics.

Azure HDInsight

Azure HDInsight é uma plataforma popular para análise de big data. A plataforma fornece Apache Spark, que pode ser usado para treinar o seu modelo.

  1. Criar: Azure Machine Learning não pode criar um cluster HDInsight para si. Em vez disso, deve criar o cluster e, em seguida, anexá-lo ao seu espaço de trabalho Azure Machine Learning. Para obter mais informações, consulte Criar um Cluster de Faíscas em HDInsight.

    Aviso

    Azure Machine Learning requer que o cluster HDInsight tenha um endereço IP público.

    Ao criar o cluster, tem de especificar o nome de utilizador e a palavra-passe SSH. Tome nota destes valores, pois precisa que utilize o HDInsight como alvo de computação.

    Após a criação do cluster, conecte-se com o nome de hospedeiro <clustername> -ssh.azurehdinsight.net, onde <clustername> está o nome que forneceu para o cluster.

  2. Anexar: Para anexar um cluster HDInsight como alvo de computação, tem de fornecer o ID, o nome de utilizador e a palavra-passe do cluster HDInsight. O ID de recursos do cluster HDInsight pode ser construído usando o ID de subscrição, nome de grupo de recursos e nome de cluster HDInsight usando o seguinte formato de cadeia: /subscriptions/<subscription_id>/resourceGroups/<resource_group>/providers/Microsoft.HDInsight/clusters/<cluster_name>

    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(resource_id='<resource_id>',
                                                          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 pode anexar o cluster HDInsight ao seu espaço de trabalho utilizando Azure Machine Learning estúdio.

    Aviso

    Não crie múltiplos anexos simultâneos ao mesmo HDInsight do seu espaço de trabalho. Cada novo acessório quebrará os acessórios existentes anteriores.

  3. Configuração: Crie uma configuração de execução para o alvo do cálculo HDI.

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

Dica

Se pretender remover (desprender) um cluster HDInsight do espaço de trabalho, utilize o método HDInsightCompute.detach..

Azure Machine Learning não elimina o cluster HDInsight para si. Deve eliminá-lo manualmente utilizando o portal Azure, CLI ou o SDK para Azure HDInsight.

Azure Batch

O Azure Batch é utilizado para executar aplicações de computação paralela e de alto desempenho (HPC) de grande escala na nuvem. O AzureBatchStep pode ser usado num Pipeline Azure Machine Learning para submeter empregos a um conjunto de máquinas Azure Batch.

Para anexar o Azure Batch como alvo de computação, deve utilizar o Azure Machine Learning SDK e fornecer as seguintes informações:

  • Nome do cálculo Azure Batch: Um nome amigável a ser usado para o cálculo dentro do espaço de trabalho
  • Nome da conta Azure Batch: O nome da conta Azure Batch
  • Grupo de Recursos: O grupo de recursos que contém a conta Azure Batch.

O seguinte código demonstra como anexar o Azure Batch como alvo de computação:

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

Aviso

Não crie ligações múltiplas e simultâneas ao mesmo Azure Batch do seu espaço de trabalho. Cada novo acessório quebrará os acessórios existentes anteriores.

Azure Databricks

Azure Databricks é um ambiente baseado em Apache Spark na nuvem Azure. Pode ser usado como um alvo de computação com um Azure Machine Learning pipeline.

Importante

Azure Machine Learning não pode criar um alvo de computação Azure Databricks. Em vez disso, você deve criar um espaço de trabalho Azure Databricks e, em seguida, anexá-lo ao seu espaço de trabalho Azure Machine Learning. Para criar um recurso de espaço de trabalho, consulte o trabalho Run a Spark no documento Azure Databricks.

Para anexar um espaço de trabalho Azure Databricks a partir de uma subscrição Azure diferente, você (a sua conta Azure AD) deve ser concedido o papel de Contribuinte no espaço de trabalho Azure Databricks. Verifique o seu acesso no portal Azure.

Para anexar a Azure Databricks como alvo de computação, forneça as seguintes informações:

  • Databricks computação nome: O nome que pretende atribuir a este recurso de computação.
  • Databricks nome do espaço de trabalho: O nome do espaço de trabalho Azure Databricks.
  • Databricks acesso token: O token de acesso usado para autenticar a Azure Databricks. Para gerar um token de acesso, consulte o documento de Autenticação.

O seguinte código demonstra como anexar a Azure Databricks como alvo de computação com o Azure Machine Learning SDK:

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

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

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

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

    databricks_compute.wait_for_completion(True)

Para um exemplo mais detalhado, consulte um caderno de exemplo no GitHub.

Aviso

Não crie anexos múltiplos e simultâneos com as mesmas Azure Databricks do seu espaço de trabalho. Cada novo acessório quebrará os acessórios existentes anteriores.

Azure Data Lake Analytics

Azure Data Lake Analytics é uma grande plataforma de análise de dados na nuvem Azure. Pode ser usado como um alvo de computação com um Azure Machine Learning pipeline.

Crie uma conta Azure Data Lake Analytics antes de a utilizar. Para criar este recurso, consulte o Get start with Azure Data Lake Analytics documento.

Para anexar o Data Lake Analytics como um alvo de computação, deve utilizar o Azure Machine Learning SDK e fornecer as seguintes informações:

  • Nome do cálculo: O nome que pretende atribuir a este recurso de cálculo.
  • Grupo de Recursos: O grupo de recursos que contém a conta Data Lake Analytics.
  • Nome da conta: O nome da conta Data Lake Analytics.

O seguinte código demonstra como anexar o Data Lake Analytics como um alvo de computação:

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


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

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

    adla_compute.wait_for_completion(True)

Para um exemplo mais detalhado, consulte um caderno de exemplo no GitHub.

Aviso

Não crie múltiplos anexos simultâneos ao mesmo ADLA do seu espaço de trabalho. Cada novo acessório quebrará os acessórios existentes anteriores.

Dica

Azure Machine Learning os oleodutos só podem funcionar com dados armazenados na loja de dados predefinidos da conta Data Lake Analytics. Se os dados com os qual precisa trabalhar estiverem numa loja não padrão, pode utilizar um DataTransferStep para copiar os dados antes do treino.

Caso do contentor de Azure

As instâncias do recipiente Azure (ACI) são criadas dinamicamente quando se implementa um modelo. Não é possível criar ou anexar OCI ao seu espaço de trabalho de outra forma. Para obter mais informações, consulte implementar um modelo para Azure Container Instances.

Kubernetes (pré-visualização)

Azure Machine Learning fornece-lhe as seguintes opções para anexar os seus próprios clusters Kubernetes para treino:

Nota

Para criar e anexar um alvo de computação para a formação no Azure Arc, o cluster Kubernetes permitiu que o Configure Azure Arc Machine Learning

Para separar um cluster Kubernetes do seu espaço de trabalho, utilize o seguinte método:

compute_target.detach()

Aviso

Separar um cluster não apaga o cluster. Para eliminar um cluster de serviço Azure Kubernetes, consulte utilizar o Azure CLI com AKS. Para eliminar um aglomerado de Kubernetes ativado pelo Arco Azure, consulte o quickstart do Azure Arc.

Exemplos de cadernos

Consulte estes cadernos para exemplos de formação com vários alvos de computação:

Saiba como executar blocos de notas ao seguir o artigo Utilizar blocos de notas Jupyter para explorar este serviço.

Passos seguintes