Criar e usar um cluster de computação

Concluído

Após a experimentação e o desenvolvimento, você deseja que seu código esteja pronto para produção. Quando você executa código em ambientes de produção, é melhor usar scripts em vez de blocos de anotações. Ao executar um script, você deseja usar um destino de computação que seja escalável.

No Azure Machine Learning, os clusters de computação são ideais para executar scripts. Você pode criar um cluster de computação no estúdio do Azure Machine Learning, usando a interface de linha de comando (CLI) do Azure ou o kit de desenvolvimento de software (SDK) do Python.

Criar um cluster de computação com o Python SDK

Para criar um cluster de computação com o Python SDK, você pode usar o seguinte código:

from azure.ai.ml.entities import AmlCompute

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

Para entender quais parâmetros a classe AmlCompute espera, você pode revisar a documentação de referência .

Quando você cria um cluster de computação, há três parâmetros principais que você precisa considerar:

  • size: Especifica o tipo de máquina virtual de cada nó dentro do cluster de computação. Baseado nos tamanhos para máquinas virtuais no Azure. Ao lado do tamanho, você também pode especificar se deseja usar CPUs ou GPUs.
  • max_instances: Especifica o número máximo de nós o cluster de computação pode ser expandido. O número de cargas de trabalho paralelas que seu cluster de computação pode lidar é análogo ao número de nós para os quais seu cluster pode ser dimensionado.
  • tier: Especifica se as suas máquinas virtuais estão de baixa prioridade ou dedicadas. Definir como baixa prioridade pode reduzir os custos, uma vez que não tem disponibilidade garantida.

Usar um cluster de computação

Há três cenários principais nos quais você pode usar um cluster de computação:

  • Executando um trabalho de pipeline que você criou no Designer.
  • Executando um trabalho de Aprendizado de Máquina Automatizado.
  • Executando um script como uma tarefa.

Em cada um desses cenários, um cluster de computação é ideal, pois escalona automaticamente quando um trabalho é enviado e é desligado automaticamente quando um trabalho é concluído.

Um cluster de computação também permite treinar vários modelos em paralelo, o que é uma prática comum ao usar o Automated Machine Learning.

Você pode executar uma tarefa de pipeline do Designer e uma tarefa do Automated Machine Learning através do Azure Machine Learning Studio. Ao enviar o trabalho por meio do estúdio, pode definir o alvo de computação para o cluster de computação criado.

Quando preferir uma abordagem code-first, pode definir o destino de computação para o seu cluster computacional usando o Python SDK.

Por exemplo, ao executar um script como um trabalho de comando, você pode definir o destino de computação para seu cluster de computação com o seguinte código:

from azure.ai.ml import command

# configure job
job = command(
    code="./src",
    command="python diabetes-training.py",
    environment="AzureML-sklearn-0.24-ubuntu18.04-py37-cpu@latest",
    compute="cpu-cluster",
    display_name="train-with-cluster",
    experiment_name="diabetes-training"
    )

# submit job
returned_job = ml_client.create_or_update(job)
aml_url = returned_job.studio_url
print("Monitor your job at", aml_url)

Depois de enviar um trabalho que usa um cluster de computação, o cluster de computação é expandido para um ou mais nós. O redimensionamento leva alguns minutos e o seu trabalho começa a ser executado assim que os nós necessários são disponibilizados. Quando o estado de um trabalho está em preparação, o cluster computacional está a ser preparado. Quando o status está em execução, o cluster de computação está pronto e o trabalho está em execução.