Criar e usar um cluster de computação
Após a experimentação e o desenvolvimento, o código deve estar 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ê vai querer usar um destino de computação que seja dimensionável.
No Azure Machine Learning, os clusters de computação são ideais para a execução de scripts. É possível criar um cluster de computação no Estúdio do Azure Machine Learning, usando a CLI (interface de linha de comando) do Azure ou por meio do 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, é possível 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 são esperados pela classe AmlCompute
, é possível examinar a documentação de referência.
Ao criar um cluster de computação, há três parâmetros principais que devem ser considerados:
size
: especifica o tipo de máquina virtual de cada nó no cluster de computação. Tem como base os tamanhos das máquinas virtuais no Azure. Além do tamanho, também é possível especificar se você deseja usar CPUs ou GPUs.max_instances
: especifica o número máximo de nós possíveis em uma expansão do cluster de computação. O número de cargas de trabalho paralelas que o cluster de computação pode manipular é análogo ao número máximo de nós possíveis ao realizar a expansão do cluster.tier
: especifica se suas máquinas virtuais são de baixa prioridade ou dedicadas. Definir como baixa prioridade pode reduzir os custos, pois não há garantia de disponibilidade.
Usar um cluster de computação
Existem 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.
- Execução de um trabalho do AutoML.
- 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 que você treine diversos modelos em paralelo, o que é uma prática comum quando você usa um 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.
Ao escolher uma abordagem com foco no código, é possível definir o destino de computação para o cluster de computação usando o SDK do Python.
Por exemplo, ao executar um script como um trabalho de comando, é possível definir o destino de computação como 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)
Após enviar um trabalho que usa um cluster de computação, esse cluster é ampliado para 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 é em execução, o cluster de computação está pronto e o trabalho está em execução.