Creare e usare un cluster di calcolo

Completato

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.