Creare e usare un cluster di calcolo
Dopo la sperimentazione e lo sviluppo, si vuole che il codice sia pronto per la produzione. Quando si esegue il codice negli ambienti di produzione, è preferibile usare script anziché notebook. Quando si esegue uno script, si vuole usare una destinazione di calcolo scalabile.
All'interno di Azure Machine Learning, i cluster di calcolo sono ideali per l'esecuzione di script. È possibile creare un cluster di calcolo in Azure Machine Learning Studio usando l'interfaccia della riga di comando di Azure o Python Software Development Kit (SDK).
Creare un cluster di calcolo con Python SDK
Per creare un cluster di calcolo con Python SDK, è possibile usare il codice seguente:
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()
Per comprendere i parametri previsti dalla classe AmlCompute, è possibile esaminare la documentazione di riferimento .
Quando si crea un cluster di calcolo, è necessario considerare tre parametri principali:
size: specifica il tipo di macchina virtuale di ogni nodo all'interno del cluster di calcolo. Si basa sulle dimensioni delle macchine virtuali in Azure. Accanto alle dimensioni, è anche possibile specificare se si vogliono usare CPU o GPU.max_instances: Specifica il numero massimo di nodi che è possibile aggiungere al cluster di elaborazione. Il numero di carichi di lavoro paralleli che il cluster di calcolo può gestire è analogo al numero di nodi a cui il cluster può essere ridimensionato.tier: Specifica se le macchine virtuali sono con priorità bassa o dedicate. L'impostazione su priorità bassa può ridurre i costi perché la disponibilità non è garantita.
Usare un cluster di calcolo
Esistono tre scenari principali in cui è possibile usare un cluster di calcolo:
- Esecuzione di un processo della pipeline compilato nella finestra di progettazione.
- Esecuzione di un processo di Machine Learning automatizzato.
- Esecuzione di uno script come processo.
In ognuno di questi scenari, un cluster di calcolo è ideale perché si espande automaticamente quando viene avviato un processo e si arresta automaticamente al completamento del processo.
Un cluster di calcolo consente anche di eseguire il training di più modelli in parallelo, una procedura comune quando si usa Machine Learning automatizzato.
È possibile eseguire un processo della pipeline di Progettazione e un processo di Machine Learning automatizzato tramite Azure Machine Learning Studio. Quando si invia il processo tramite lo studio, è possibile impostare la destinazione di calcolo sul cluster di elaborazione creato.
Quando si preferisce un approccio code-first, è possibile impostare la destinazione di calcolo sul cluster di calcolo usando Python SDK.
Ad esempio, quando si esegue uno script come processo di comando, è possibile impostare la destinazione di calcolo sul cluster di calcolo con il codice seguente:
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)
Dopo l'invio di un processo che usa un cluster di calcolo, il cluster di calcolo viene ridimensionato a uno o più nodi. Il ridimensionamento richiede alcuni minuti e l'esecuzione del processo inizia dopo il provisioning dei nodi necessari. Quando lo stato di un lavoro è in preparazione, il cluster di elaborazione è in fase di preparazione. Quando lo stato è in esecuzione, il cluster di calcolo è pronto e il processo è in esecuzione.