Criar um cluster de cálculo Azure Machine Learning

Aprenda a criar e gerir um cluster de cálculo no seu espaço de trabalho Azure Machine Learning.

Você pode usar Azure Machine Learning cluster de cálculo para distribuir um processo de treino ou inferência de lote através de um conjunto de nós de cálculo CPU ou GPU na nuvem. Para obter mais informações sobre os tamanhos de VM que incluem GPUs, consulte os tamanhos de máquinas virtuais otimizadas pela GPU.

Neste artigo, saiba como:

  • Criar um cluster computacional
  • Reduza o custo do seu cluster de cálculo
  • Criar uma identidade gerida para o cluster

Pré-requisitos

O que é um cluster computacional?

Azure Machine Learning cluster de computação é uma infraestrutura de computação gerida que permite criar facilmente um único ou multi-nó compute compute. O cluster de cálculo é um recurso que pode ser partilhado com outros utilizadores no seu espaço de trabalho. O cálculo aumenta automaticamente quando um trabalho é submetido e pode ser colocado numa Rede Virtual Azure. O cálculo executa num ambiente contentorizado e embala as dependências do seu modelo num recipiente Docker.

Os clusters computativos podem executar empregos de forma segura num ambiente de rede virtual,sem exigir que as empresas abram portas SSH. O trabalho executa num ambiente contentorizado e embala as dependências do seu modelo num contentor Docker.

Limitações

  • Alguns dos cenários listados neste documento são marcados como pré-visualização. A funcionalidade de pré-visualização é fornecida sem um acordo de nível de serviço, e não é recomendado para cargas de trabalho de produção. Algumas funcionalidades poderão não ser suportadas ou poderão ter capacidades limitadas. Para obter mais informações, veja Termos Suplementares de Utilização para Pré-visualizações do Microsoft Azure.

  • Os clusters computacional podem ser criados numa região diferente do seu espaço de trabalho. Esta funcionalidade encontra-se em pré-visualização– e apenas está disponível para clusters compute, não para computar casos. Esta pré-visualização não está disponível se estiver a utilizar um espaço de trabalho privado com o ponto final.

    Aviso

    Ao utilizar um cluster de cálculo numa região diferente do seu espaço de trabalho ou datastores, poderá ver um aumento da latência da rede e dos custos de transferência de dados. A latência e os custos podem ocorrer na criação do cluster, e ao executar empregos nele.

  • Atualmente, apoiamos apenas a criação (e não atualização) de clusters através de modelos ARM. Para atualizar o cálculo, recomendamos a utilização do SDK, Azure CLI ou UX por enquanto.

  • Azure Machine Learning O Compute tem limites de incumprimento, como o número de núcleos que podem ser atribuídos. Para obter mais informações, consulte Gerir e solicitar quotas para recursos Azure.

  • O Azure permite-lhe colocar fechaduras nos recursos, para que não possam ser apagados ou lidos apenas. Não aplique bloqueios de recursos ao grupo de recursos que contém o seu espaço de trabalho. A aplicação de um bloqueio ao grupo de recursos que contém o seu espaço de trabalho impedirá as operações de escala para aglomerados de cálculo Azure ML. Para obter mais informações sobre os recursos de bloqueio, consulte os recursos de bloqueio para evitar alterações inesperadas.

Dica

Os clusters podem geralmente escalar até 100 nós, desde que tenha quota suficiente para o número de núcleos necessários. Por predefinição, os clusters são configurados com comunicação inter-nódoa ativada entre os nós do cluster para apoiar empregos de MPI, por exemplo. No entanto, pode escalar os seus clusters para 1000s de nós simplesmente levantando um bilhetede apoio, e solicitando para permitir a lista da sua subscrição, ou espaço de trabalho, ou um cluster específico para desativar a comunicação inter-nól.

Criar

Estimativa de tempo: Aproximadamente 5 minutos.

Azure Machine Learning O cálculo pode ser reutilizado através de corridas. O cálculo pode ser partilhado com outros utilizadores no espaço de trabalho e é mantido entre corridas, escalando automaticamente os nós para cima ou para baixo com base no número de runs submetidos, e o max_nodes definido no seu cluster. A definição min_nodes controla os nós mínimos disponíveis.

Os núcleos dedicados por região por quota familiar VM e quotas regionais totais, que se aplicam à criação de clusters de cálculo, são unificados e partilhados com Azure Machine Learning quota de instância de computação de formação.

Importante

Para evitar encargos quando não houver trabalhos, desemote os nós mínimos para 0. Esta definição permite que a Azure Machine Learning desaloque os nós quando não estão a ser utilizados. Qualquer valor superior a 0 manterá esse número de nós em funcionamento, mesmo que não estejam a ser utilizados.

A computação escala automaticamente para zero nós quando não é usada. VMs dedicados são criados para executar os seus trabalhos conforme necessário.

Para criar um recurso de Azure Machine Learning Compute persistente em Python, especifique as propriedades vm_size e max_nodes. Azure Machine Learning então usa predefinições inteligentes para as outras propriedades.

  • vm_size: A família VM dos nós criados pela Azure Machine Learning Compute.
  • max_nodes: O número máximo de nós para autoescalar até quando você tem um trabalho em 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:
    # To use a different region for the compute, add a location='<region>' parameter
    compute_config = AmlCompute.provisioning_configuration(vm_size='STANDARD_D2_V2',
                                                           max_nodes=4)
    cpu_cluster = ComputeTarget.create(ws, cpu_cluster_name, compute_config)

cpu_cluster.wait_for_completion(show_output=True)

Também pode configurar várias propriedades avançadas quando criar Azure Machine Learning Compute. As propriedades permitem criar um cluster persistente de tamanho fixo, ou dentro de uma Rede Virtual Azure existente na sua subscrição. Consulte a aula AmlCompute para mais detalhes.

Aviso

Ao definir o location parâmetro, se for uma região diferente do seu espaço de trabalho ou datastores poderá ver um aumento da latência da rede e custos de transferência de dados. A latência e os custos podem ocorrer na criação do cluster, e ao executar empregos nele.

Reduza o custo do seu cluster de cálculo

Também pode optar por utilizar VMs de baixa prioridade para executar algumas ou todas as suas cargas de trabalho. Estes VMs não têm disponibilidade garantida e podem ser antecipados durante a utilização. Terá que reiniciar um emprego preventivo.

Utilize qualquer uma destas formas de especificar um VM de baixa prioridade:

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

Configurar identidade gerida

Os clusters de computação Azure Machine Learning também suportam identidades geridas para autenticar o acesso aos recursos do Azure sem incluir credenciais no seu código. Existem dois tipos de identidades geridas:

  • Uma identidade gerida atribuída pelo sistema é ativada diretamente no cluster de cálculo de Aprendizagem de Máquinas Azure. O ciclo de vida de uma identidade atribuída ao sistema está diretamente ligado ao cluster compute. Se o cluster de cálculo for eliminado, o Azure limpa automaticamente as credenciais e a identidade em Azure AD.
  • Uma identidade gerida atribuída ao utilizador é um recurso autónomo da Azure fornecido através do serviço de Identidade Gerida Azure. Pode atribuir uma identidade gerida atribuída ao utilizador a vários recursos, e persiste durante o tempo que quiser.
  • Configure a identidade gerida na sua configuração de provisionamento:

    • Sistema atribuído identidade gerida criada num espaço de trabalho chamado ws

      # configure cluster with a system-assigned managed identity
      compute_config = AmlCompute.provisioning_configuration(vm_size='STANDARD_D2_V2',
                                                              max_nodes=5,
                                                              identity_type="SystemAssigned",
                                                              )
      cpu_cluster_name = "cpu-cluster"
      cpu_cluster = ComputeTarget.create(ws, cpu_cluster_name, compute_config)
      
    • Identidade gerida atribuída pelo utilizador criada num espaço de trabalho chamado ws

      # configure cluster with a user-assigned managed identity
      compute_config = AmlCompute.provisioning_configuration(vm_size='STANDARD_D2_V2',
                                                              max_nodes=5,
                                                              identity_type="UserAssigned",
                                                              identity_id=['/subscriptions/<subcription_id>/resourcegroups/<resource_group>/providers/Microsoft.ManagedIdentity/userAssignedIdentities/<user_assigned_identity>'])
      
      cpu_cluster_name = "cpu-cluster"
      cpu_cluster = ComputeTarget.create(ws, cpu_cluster_name, compute_config)
      
  • Adicione identidade gerida a um cluster de computação existente chamado cpu_cluster

    • Identidade gerida atribuída pelo sistema:

      # add a system-assigned managed identity
      cpu_cluster.add_identity(identity_type="SystemAssigned")
      
    • Identidade gerida atribuída pelo utilizador:

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

Nota

Os clusters de cálculo Azure Machine Learning suportam apenas uma identidade atribuída ao sistema ou múltiplas identidades atribuídas ao utilizador, não ambas simultaneamente.

Utilização de identidade gerida

A identidade gerida por defeito é a identidade gerida atribuída pelo sistema ou a primeira identidade gerida atribuída pelo utilizador.

Durante uma corrida existem duas aplicações de identidade:

  1. O sistema utiliza uma identidade para configurar os suportes de armazenamento do utilizador, o registo de contentores e as lojas de dados.

    • Neste caso, o sistema utilizará a identidade gerida por defeito.
  2. O utilizador aplica uma identidade para aceder a recursos a partir do código para uma execução submetida

    • Neste caso, forneça o client_id correspondente à identidade gerida que pretende utilizar para recuperar uma credencial.
    • Em alternativa, obtenha a identificação do cliente atribuído pelo utilizador através da variável ambiente DEFAULT_IDENTITY_CLIENT_ID.

    Por exemplo, para recuperar um símbolo para uma loja de dados com a identidade gerida por defeito:

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

Resolução de problemas

Existe a possibilidade de alguns utilizadores que criaram o seu espaço de trabalho Azure Machine Learning a partir do portal Azure antes do lançamento da AG poderem não conseguir criar a AmlCompute nesse espaço de trabalho. Pode levantar um pedido de apoio contra o serviço ou criar um novo espaço de trabalho através do portal ou o SDK para se desbloquear imediatamente.

Se o seu Azure Machine Learning cluster de computação aparecer preso na redimensionamento (0-> 0) para o estado do nó, este pode ser causado por bloqueios de recursos Azure.

O Azure permite-lhe colocar fechaduras nos recursos, para que não possam ser apagados ou lidos apenas. Bloquear um recurso pode levar a resultados inesperados. Algumas operações que não parecem modificar o recurso requerem ações que são bloqueadas pelo bloqueio.

Por exemplo, a aplicação de um bloqueio de eliminação no grupo de recursos para o seu espaço de trabalho impedirá operações de escala para clusters de computação Azure ML.

Para obter mais informações sobre os recursos de bloqueio, consulte os recursos de bloqueio para evitar alterações inesperadas.

Passos seguintes

Use o seu cluster de cálculo para: