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 notebooks. Ao executar um script, você deseja usar um destino de computação escaloná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 CLI (interface de linha de comando) do Azure ou o SDK (kit de desenvolvimento de software) do Python.

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

Para criar um cluster de computação com o SDK do Python, 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 examinar a documentação de referência .

Ao criar 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. Com base nos tamanhos de 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 para os quais o cluster de computação pode ser dimensionado. O número de cargas de trabalho paralelas que seu cluster de computação pode manipular é análogo ao número de nós que seu cluster pode dimensionar.
  • tier: Especifica se as suas máquinas virtuais são de baixa prioridade ou dedicadas. A configuração como baixa prioridade pode reduzir os custos, pois você 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:

  • Execução de um trabalho de pipeline criado no Designer.
  • Executando um trabalho de Machine Learning automatizado.
  • Execução de um script como um trabalho.

Em cada um desses cenários, um cluster de computação é ideal porque é ampliado 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 Machine Learning Automatizado.

É possível executar um trabalho de pipeline do Designer e um trabalho de AutoML por meio do Estúdio do Azure Machine Learning. Ao enviar o trabalho por meio do Estúdio, é possível definir o destino de computação para o cluster de computação criado.

Quando você prefere uma abordagem orientada a código, pode definir o alvo de computação para o seu cluster de computação usando o SDK do Python.

Por exemplo, ao executar um script como um trabalho de comando, você pode definir o destino de computação para o 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 utiliza um cluster de computação, o cluster de computação se expande para incluir um ou mais nós. O redimensionamento leva alguns minutos e seu trabalho começa a ser executado assim que os nós necessários são provisionados. Quando o status de um trabalho está em preparo, o cluster de computação está passando pela preparação. Quando o status está em execução, o cluster de computação está pronto e o trabalho está em execução.