Compartilhar via


Criar um cluster de cálculo do Azure Machine Learning com a CLI v1

APLICA-SE A:Extensão de ML da CLI do Azure v1SDK do Python do Azure ML v1

Saiba como criar e gerenciar clusters de cálculo em seu workspace do Azure Machine Learning.

É possível usar um cluster de cálculo do Azure Machine Learning para distribuir o um processo de treinamento ou lote de inferência em um cluster de nós de computação de CPU ou GPU na nuvem. Para obter mais informações sobre os tamanhos de máquina virtual que incluem GPUs, consulte os Tamanhos de máquinas virtuais com GPU otimizadas.

Neste artigo, aprenda a:

  • Criar um cluster de cálculo
  • Reduzir o custo do cluster de cálculo
  • Configurar uma identidade gerenciada para o cluster

Pré-requisitos

O que é um cluster de cálculo?

Um cluster de cálculo do Machine Learning do Azure é uma infraestrutura de computação gerenciada que permite ao que você crie facilmente uma computação de um ou vários nós. O cluster de cálculo é um recurso que pode ser compartilhado com outros usuários de seu workspace. A computação escala verticalmente e automaticamente quando um trabalho é enviado e pode ser colocada em uma Rede Virtual do Azure. O cluster de computação também não é compatível com a implantação de IP público na rede virtual. A computação é executada em um ambiente em contêineres, empacotando as dependências do modelo em um contêiner do Docker.

Os clusters de cálculo podem executar trabalhos com segurança em um ambiente de rede virtual, sem exigir que as empresas abram portas SSH. O trabalho é executado em um ambiente de contêineres e empacota as dependências do modelo em um contêiner do Docker.

Limitações

  • É possível criar clusters de cálculo em uma região diferente da região de seu workspace. No entanto, essa funcionalidade só está disponível usando o SDK v2, a CLI v2 ou o studio. Para obter mais informações, consulte a versão v2 de ambientes de treinamento seguros.

  • No momento, nós damos suporte apenas à criação (e não à atualização) de clusters por meio de modelos do ARM. Para atualizar a computação, por enquanto, é recomendável usar o SDK, a UX ou a CLI do Azure.

  • A Computação do Machine Learning do Azure tem limites padrão como o número de núcleos que podem ser alocados. Para obter mais informações, consulte Gerenciar e solicitar cotas para recursos do Azure.

  • O Azure permite que você coloque bloqueios em recursos, para que eles não possam ser excluídos ou sejam somente leitura. Não aplique bloqueios de recurso ao grupo de recursos que contém seu workspace. A aplicação de um bloqueio ao grupo de recursos que contém o workspace impedirá operações de escala para clusters de cálculo do Azure Machine Learning. Para saber mais sobre como bloquear recursos, confira Bloquear recursos para impedir alterações inesperadas.

Dica

Os clusters geralmente podem ser escalados verticalmente para até 100 nós, desde que você tenha cota suficiente para o número de núcleos necessários. Por padrão, os clusters são configurados com a comunicação entre nós habilitada entre os nós do cluster para dar suporte a trabalhos de MPI, por exemplo. No entanto, você pode dimensionar seus clusters para milhares de nós ao simplesmente gerar um tíquete de suporte e solicitar a lista de permissões da sua assinatura ou do workspace, ou um cluster específico para desabilitar a comunicação entre nós.

Criar

Tempo estimado: aproximadamente 5 minutos.

Uma Computação do Azure Machine Learning pode ser reutilizada entre execuções. A computação pode ser compartilhada com outros usuários no espaço de trabalho e é mantida entre as execuções, escalando ou reduzindo vertical e automaticamente os nós com base no número de execuções enviadas e o max_nodes definido no cluster. A configuração min_nodes controla os nós mínimos disponíveis.

Os núcleos dedicados por região por cota de família de VM e cota regional total, que se aplicam à criação de cluster de cálculo, são unificados e compartilhados com a cota de instância de cálculo de treinamento do Azure Machine Learning.

Importante

Para evitar cobranças quando nenhum trabalho estiver em execução, defina os nós mínimos para 0. Essa configuração permite que o Azure Machine Learning desaloque os nós quando eles não estiverem em uso. Qualquer valor maior que 0 manterá esse número de nós em execução, mesmo se eles não estiverem em uso.

A computação é reduzida automaticamente até zero nó quando não é usada. VMs dedicadas são criadas para executar seus trabalhos conforme necessário.

Para criar um recurso persistente de Computação do Azure Machine Learning em Python, especifique as propriedades vm_size e max_nodes. O Azure Machine Learning usará padrões inteligentes para o restante das propriedades.

  • vm_size: A família de VMs dos nós criados pela Computação do Machine Learning do Azure.
  • max_nodes: O número máximo de nós a serem dimensionados automaticamente durante a execução de um trabalho na Computação do Azure Machine Learning.

APLICA-SE A: SDK azureml para Pythonv1

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 é possível configurar várias propriedades avançadas ao criar a Computação do Azure Machine Learning. Essas propriedades permitem que criar um cluster persistente de tamanho fixo ou dentro de uma Rede Virtual do Azure existente na assinatura. Veja AmlCompute classe para obter detalhes.

Aviso

Ao configurar o parâmetro location, se a região for diferente de onde se encontra seu workspace ou seus armazenamentos de dados, você poderá observar maiores custos de latência de rede e transferência de dados. A latência e os custos podem ocorrer ao criar o cluster e ao executar trabalhos nele.

Reduzir o custo do cluster de cálculo

Você também pode optar por usar máquinas virtuais de baixa prioridade para executar algumas ou todas as suas cargas de trabalho. Essas VMs não têm disponibilidade garantida e podem ser substituídas enquanto estiverem em uso. Você precisará reiniciar um trabalho substituído.

APLICA-SE A: SDK azureml para Pythonv1

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

Definir identidade gerenciada

Os clusters de cálculo do Azure Machine Learning também dão suporte a identidades gerenciadas para autenticar o acesso aos recursos do Azure sem incluir credenciais no código. Há dois tipos de identidades gerenciadas:

  • Uma identidade gerenciada atribuída ao sistema é habilitada diretamente no cluster de cálculo e na instância de computação do Azure Machine Learning. O ciclo de vida de uma identidade atribuída ao sistema está diretamente associado ao cluster de cálculo ou instância de computação. Quando o cluster de cálculo ou a instância de computação é excluída, o Azure limpa automaticamente as credenciais e a identidade no Microsoft Entra ID.
  • Uma identidade gerenciada atribuída ao usuário é um recurso autônomo do Azure fornecido por meio do serviço de identidade gerenciada do Azure. Você pode designar uma identidade gerenciada atribuída ao usuário para vários recursos e ela persistirá pelo tempo desejado. Essa identidade gerenciada precisa ser criada com antecedência e, em seguida, passada como a identity_id como um parâmetro necessário.

APLICA-SE A: SDK azureml para Pythonv1

  • Configure a identidade gerenciada na sua configuração de provisionamento:

    • Identidade gerenciada atribuída ao sistema criada em um workspace 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 gerenciada atribuída ao usuário criada em um workspace 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)
      
  • Adicionar a identidade gerenciada a um cluster de cálculo existente chamado cpu_cluster

    • Identidade gerenciada atribuída ao sistema:

      # add a system-assigned managed identity
      cpu_cluster.add_identity(identity_type="SystemAssigned")
      
    • Identidade gerenciada atribuída ao usuário:

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

Observação

Os clusters de computação do Azure Machine Learning oferecem suporte a apenas uma identidade atribuída pelo sistema ou a várias identidades atribuídas pelo usuário, não a ambas ao mesmo tempo.

Uso da identidade gerenciada

A identidade gerenciada padrão é a identidade gerenciada atribuída pelo sistema ou a primeira identidade gerenciada atribuída pelo usuário.

Durante uma execução, existem duas aplicações de uma identidade:

  1. O sistema usa uma identidade para configurar as montagens de armazenamento do usuário, o registro do contêiner e os armazenamentos de dados.

    • Nesse caso, o sistema usará a identidade gerenciada por padrão.
  2. O usuário aplica uma identidade para acessar recursos de dentro do código para uma execução enviada

    • Nesse caso, forneça o client_id correspondente à identidade gerenciada que você deseja usar para recuperar uma credencial.
    • Como alternativa, obtenha o ID do cliente da identidade atribuída pelo usuário por meio da variável de ambiente DEFAULT_IDENTITY_CLIENT_ID.

    Por exemplo, para recuperar um token para um armazenamento de dados com a identidade gerenciada por padrão:

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

Solução de problemas

Há uma chance de que alguns usuários que criaram seu workspace do Azure Machine Learning no portal do Azure antes da versão GA não consigam criar a AmlCompute nesse workspace. Você pode gerar uma solicitação de suporte no serviço ou criar um novo workspace por meio do portal ou do SDK para desbloqueio imediato.

Preso no redimensionamento

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

O Azure permite que você coloque bloqueios em recursos, para que eles não possam ser excluídos ou sejam somente leitura. O bloqueio de um recurso pode levar a resultados inesperados. Algumas operações que parecem não modificar o recurso, na verdade, requerem ações que são bloqueadas pelo bloqueio.

Com o Azure Machine Learning, aplicar um bloqueio de exclusão ao grupo de recursos do seu espaço de trabalho impedirá operações de dimensionamento para clusters de computação do Azure ML. Para contornar esse problema, é recomendável remover o bloqueio do grupo de recursos e, em vez disso, aplicá-lo a itens individuais no grupo.

Importante

Não aplique o bloqueio aos seguintes recursos:

Nome do recurso Tipo de recurso
<GUID>-azurebatch-cloudservicenetworksecurityggroup Grupo de segurança de rede
<GUID>-azurebatch-cloudservicepublicip Endereço IP público
<GUID>-azurebatch-cloudserviceloadbalancer Balanceador de carga

Esses recursos são usados para se comunicar com o e executar operações como o dimensionamento no cluster de computação. A remoção do bloqueio de recursos desses recursos deve permitir o dimensionamento automático para seus clusters de computação.

Para obter mais informações sobre como bloquear recursos, consulte Bloquear recursos para evitar alterações inesperadas.

Próximas etapas

Use o cluster de cálculo para: