Criar e usar um cluster de computação
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 espera, você pode revisar a AmlCompute
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. Com base nos tamanhos das 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 seu 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 suas máquinas virtuais sã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 um trabalho.
Em cada um desses cenários, um cluster de computação é ideal, pois um cluster de computação aumenta automaticamente a escala 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 um trabalho de pipeline do Designer e um trabalho do Aprendizado de Máquina Automatizado por meio do estúdio do Azure Machine Learning. Ao enviar o trabalho por meio do estúdio, você pode definir o destino de computação para o cluster de computação criado.
Quando preferir uma abordagem code-first, você pode definir o destino de computação para seu cluster de computação 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 seu trabalho começa a ser executado assim que os nós necessários são provisionados. Quando o status de um trabalho está se preparando, o cluster de computação está sendo preparado. Quando o status está em execução, o cluster de computação está pronto e o trabalho está em execução.