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
Um Workspace do Azure Machine Learning. Para obter mais informações, consulte Criar um espaço de trabalho do Azure Machine Learning.
A extensão da CLI do Azure para o serviço do Machine Learning (v1), o SDK do Python do Azure Machine Learning ou a extensão Visual Studio Code do Azure Machine Learning.
Importante
Alguns comandos da CLI do Azure neste artigo usam a extensão
azure-cli-ml
ou v1 do Azure Machine Learning. O suporte à extensão v1 terminará em 30 de setembro de 2025. Você poderá instalar e usar a extensão v1 até essa data.Recomendamos que você faça a transição para a extensão
ml
ou v2, antes de 30 de setembro de 2025. Para obter mais informações sobre a extensão v2, confira Extensão da CLI do Azure ML e SDK do Python v2.Ao usar o SDK de Python, configure o seu ambiente de desenvolvimento com um workspace. Depois de configurar o ambiente, conecte-o ao workspace do seu script Python:
APLICA-SE A: SDK azureml para Pythonv1
from azureml.core import Workspace ws = Workspace.from_config()
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:
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.
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: