Criar um cluster de computação do Azure Machine Learning

APLICA-SE A:Azure CLI ml extension v2 (current)Python SDK azure-ai-ml v2 (current)

Este artigo explica como criar e gerenciar um cluster de computação em seu espaço de trabalho do Azure Machine Learning.

Você pode usar o cluster de computação do Aprendizado de Máquina do Azure para distribuir um processo de treinamento ou inferência em lote em um cluster de nós de computação de CPU ou GPU na nuvem. Para obter mais informações sobre os tamanhos de VM que incluem GPUs, consulte Tamanhos de máquina virtual otimizados para GPU.

Aprenda a:

  • Crie um cluster de computação.
  • Reduza o custo do cluster de computação com VMs de baixa prioridade.
  • Configure uma identidade gerenciada para o cluster.

Nota

Em vez de criar um cluster de computação, use a computação sem servidor para descarregar o gerenciamento do ciclo de vida da computação para o Azure Machine Learning.

Pré-requisitos

Selecione a guia apropriada para o restante dos pré-requisitos com base no seu método preferido de criação do cluster de computação.

  • Se você não estiver executando seu código em uma instância de computação, instale o SDK Python do Azure Machine Learning. Este SDK já está instalado para você em uma instância de computação.

  • Anexe ao espaço de trabalho em seu script Python:

    Execute este código para se conectar ao seu espaço de trabalho do Azure Machine Learning.

    Substitua sua ID de assinatura, nome do grupo de recursos e nome do espaço de trabalho no código a seguir. Para encontrar estes valores:

    1. Entre no estúdio do Azure Machine Learning.
    2. Abra o espaço de trabalho que deseja usar.
    3. Selecione o nome do seu espaço de trabalho na barra de ferramentas do estúdio do Azure Machine Learning no canto superior direito.
    4. Copie o valor para espaço de trabalho, grupo de recursos e ID de assinatura para o código.

    APLICA-SE A: Python SDK azure-ai-ml v2 (atual)

    # Enter details of your AML workspace
    subscription_id = "<SUBSCRIPTION_ID>"
    resource_group = "<RESOURCE_GROUP>"
    workspace = "<AML_WORKSPACE_NAME>"
    # get a handle to the workspace
    from azure.ai.ml import MLClient
    from azure.identity import DefaultAzureCredential
    
    ml_client = MLClient(
        DefaultAzureCredential(), subscription_id, resource_group, workspace
    )

    ml_client é um manipulador para o espaço de trabalho que você usa para gerenciar outros recursos e trabalhos.

O que é um cluster de computação?

O cluster de computação do Azure Machine Learning é uma infraestrutura de computação gerenciada que permite criar facilmente uma computação de um ou vários nós. O cluster de computação é um recurso que pode ser compartilhado com outros usuários em seu espaço de trabalho. A computação aumenta automaticamente quando um trabalho é enviado e pode ser colocada em uma Rede Virtual do Azure. O cluster de computação não suporta nenhuma implantação de IP público, bem como na rede virtual. A computação é executada em um ambiente conteinerizado e empacota as dependências do modelo em um contêiner do Docker.

Os clusters de computação podem executar trabalhos com segurança em uma rede virtual gerenciada ou em uma rede virtual do Azure, sem exigir que as empresas abram portas SSH. O trabalho é executado em um ambiente conteinerizado e empacota suas dependências de modelo em um contêiner do Docker.

Limitações

  • Os clusters de computação podem ser criados em uma região diferente do seu espaço de trabalho. Essa funcionalidade só está disponível para clusters de computação, não para instâncias de computação.

    Aviso

    Ao usar um cluster de computação em uma região diferente do seu espaço de trabalho ou armazenamentos de dados, você pode ver maior latência de rede e custos de transferência de dados. A latência e os custos podem ocorrer ao criar o cluster e ao executar trabalhos nele.

  • O Azure Machine Learning Compute 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 recursos ao grupo de recursos que contém seu espaço de trabalho. A aplicação de um bloqueio ao grupo de recursos que contém seu espaço de trabalho impede operações de dimensionamento para clusters de computação do Azure Machine Learning. Para obter mais informações sobre como bloquear recursos, consulte Bloquear recursos para evitar alterações inesperadas.

Criar

Estimativa de tempo: Aproximadamente cinco minutos.

Nota

Se você usar computação sem servidor, não precisará criar um cluster de computação.

O Azure Machine Learning Compute pode ser reutilizado em execuções. A computação pode ser compartilhada com outros usuários no espaço de trabalho e é mantida entre execuções, dimensionando automaticamente os nós para cima ou para baixo com base no número de execuções enviadas e no max_nodes conjunto no cluster. A min_nodes configuração 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 aplica à criação de cluster de computação, são unificados e compartilhados com a cota de instância de computação de treinamento do Azure Machine Learning.

Importante

Para evitar cobranças quando nenhum trabalho estiver em execução, defina os nós mínimos como 0. Essa configuração permite que o Aprendizado de Máquina do Azure desaaloque 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 que eles não estejam em uso.

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

Use os exemplos a seguir para criar um cluster de computação:

Para criar um recurso de computação persistente do Azure Machine Learning em Python, especifique as size propriedades e max_instances . Em seguida, o Azure Machine Learning usa padrões inteligentes para as outras propriedades.

  • size: A família VM dos nós criados pelo Azure Machine Learning Compute.
  • max_instances: O número máximo de nós a serem dimensionados automaticamente até quando você executa um trabalho no Azure Machine Learning Compute.

APLICA-SE A: Python SDK azure-ai-ml v2 (atual)

from azure.ai.ml.entities import AmlCompute

cluster_basic = AmlCompute(
    name="basic-example",
    type="amlcompute",
    size="STANDARD_DS3_v2",
    location="westus",
    min_instances=0,
    max_instances=2,
    idle_time_before_scale_down=120,
)
ml_client.begin_create_or_update(cluster_basic).result()

Você também pode configurar várias propriedades avançadas ao criar o Azure Machine Learning Compute. As propriedades permitem que você crie um cluster persistente de tamanho fixo ou dentro de uma Rede Virtual do Azure existente em sua assinatura. Consulte a classe AmlCompute para obter detalhes.

Aviso

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

Reduza o custo do cluster de computação com VMs de baixa prioridade

Você também pode optar por usar VMs de baixa prioridade para executar algumas ou todas as suas cargas de trabalho. Essas VMs não têm disponibilidade garantida e podem ser antecipadas durante o uso. Você tem que reiniciar um trabalho antecipado.

A utilização das Máquinas Virtuais de Baixa Prioridade do Azure permite-lhe tirar partido da capacidade não utilizada do Azure com uma poupança de custos significativa. A qualquer momento em que o Azure precisa da capacidade de volta, a infraestrutura do Azure remove as Máquinas Virtuais de Baixa Prioridade do Azure. Portanto, a Máquina Virtual de Baixa Prioridade do Azure é ótima para cargas de trabalho que podem lidar com interrupções. A quantidade de capacidade disponível pode variar com base no tamanho, região, hora do dia e muito mais. Ao implantar as Máquinas Virtuais de Baixa Prioridade do Azure, o Azure aloca as VMs se houver capacidade disponível, mas não há SLA para essas VMs. Uma Máquina Virtual de Baixa Prioridade do Azure não oferece garantias de alta disponibilidade. A qualquer momento em que o Azure precisa da capacidade de volta, a infraestrutura do Azure remove as Máquinas Virtuais de Baixa Prioridade do Azure.

Use qualquer uma destas maneiras para especificar uma VM de baixa prioridade:

APLICA-SE A: Python SDK azure-ai-ml v2 (atual)

from azure.ai.ml.entities import AmlCompute

cluster_low_pri = AmlCompute(
    name="low-pri-example",
    size="STANDARD_DS3_v2",
    min_instances=0,
    max_instances=2,
    idle_time_before_scale_down=120,
    tier="low_priority",
)
ml_client.begin_create_or_update(cluster_low_pri).result()

Delete

Enquanto o cluster de computação é reduzido para zero nós quando não está em uso, os nós não provisionados contribuem para o uso da cota. A exclusão do cluster de computação remove o destino de computação do espaço de trabalho e libera a cota.

APLICA-SE A: Python SDK azure-ai-ml v2 (atual)

Isso exclui o cluster de computação básico, criado a partir do create_basic objeto anteriormente neste artigo.

from azure.ai.ml.entities import AmlCompute

ml_client.compute.begin_delete(cluster_basic.name).wait()

Configurar identidade gerenciada

Para obter informações sobre como configurar uma identidade gerenciada com seu cluster de computação, consulte Configurar a autenticação entre o Azure Machine Learning e outros serviços.

Resolução de Problemas

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

Importante

Se sua instância de computação ou clusters de computação forem baseados em qualquer uma dessas séries, recrie com outro tamanho de VM.

Estas séries se aposentaram em 31 de agosto de 2023:

Estas séries foram aposentadas em 31 de agosto de 2024:

Preso no redimensionamento

Se o cluster de computação do Azure Machine Learning parecer bloqueado no redimensionamento (0 -> 0) para o estado do nó, os bloqueios de recursos do Azure podem ser a causa.

O Azure permite que você coloque bloqueios em recursos, para que eles não possam ser excluídos ou sejam somente leitura. Bloquear um recurso pode produzir resultados inesperados. Na verdade, algumas operações que não parecem modificar o recurso requerem ações que estã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, recomendamos 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 e executar operações como 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 bloqueio de recursos, consulte Bloquear recursos para evitar alterações inesperadas.

Próximo passo

Use seu cluster de computação para: