Eseguire il training di modelli con l'interfaccia della riga di comando di Azure Machine Learning, l'SDK e l'API REST

SI APPLICA A:Estensione Ml dell'interfaccia della riga di comando di Azure v2 (current)Python SDK azure-ai-ml v2 (current)

Azure Machine Learning offre diversi modi per inviare processi di training di Machine Learning. In questo articolo si apprenderà come inviare processi usando i metodi seguenti:

  • Estensione dell'interfaccia della riga di comando di Azure per Machine Learning: l'estensione ml , detta anche interfaccia della riga di comando v2.
  • Python SDK v2 per Azure Machine Learning.
  • API REST: API su cui si basano l'interfaccia della riga di comando e l'SDK.

Prerequisiti

Per usare le informazioni sull'SDK, installare Azure Machine Learning SDK v2 per Python.

Clonare il repository di esempi

I frammenti di codice in questo articolo sono basati su esempi nel repository GitHub degli esempi di Azure Machine Learning. Per clonare il repository nell'ambiente di sviluppo, usare il comando seguente:

git clone --depth 1 https://github.com/Azure/azureml-examples

Suggerimento

Usare --depth 1 per clonare solo il commit più recente nel repository, riducendo il tempo necessario per completare l'operazione.

Processo di esempio

Gli esempi in questo articolo usano il set di dati dei fiori iris per eseguire il training di un modello MLFlow.

Eseguire il training nel cloud

Quando si esegue il training nel cloud, è necessario connettersi all'area di lavoro di Azure Machine Learning e selezionare una risorsa di calcolo che verrà usata per eseguire il processo di training.

1. Connessione all'area di lavoro

Suggerimento

Usare le schede seguenti per selezionare il metodo da usare per eseguire il training di un modello. Se si seleziona una scheda, tutte le schede di questo articolo verranno automaticamente visualizzate nella stessa scheda. È possibile selezionare un'altra scheda in qualsiasi momento.

Per connettersi all'area di lavoro, sono necessari parametri di identificatore, ovvero una sottoscrizione, un gruppo di risorse e un nome dell'area di lavoro. Questi dettagli verranno usati nello MLClient spazio dei nomi per azure.ai.ml ottenere un handle per l'area di lavoro di Azure Machine Learning necessaria. Per eseguire l'autenticazione, usare l'autenticazione di Azure predefinita. Per altre informazioni su come configurare le credenziali e connettersi a un'area di lavoro, vedere questo esempio .

#import required libraries
from azure.ai.ml import MLClient
from azure.identity import DefaultAzureCredential

#Enter details of your Azure Machine Learning workspace
subscription_id = '<SUBSCRIPTION_ID>'
resource_group = '<RESOURCE_GROUP>'
workspace = '<AZUREML_WORKSPACE_NAME>'

#connect to the workspace
ml_client = MLClient(DefaultAzureCredential(), subscription_id, resource_group, workspace)

2. Creare una risorsa di calcolo per il training

Nota

Per provare il calcolo serverless, ignorare questo passaggio e procedere con 3. Inviare il processo di training.

Un cluster di calcolo di Azure Machine Learning è una risorsa di calcolo completamente gestita che può essere usata per eseguire il processo di training. Negli esempi seguenti viene creato un cluster di calcolo denominato cpu-compute .

from azure.ai.ml.entities import AmlCompute

# specify aml compute name.
cpu_compute_target = "cpu-cluster"

try:
    ml_client.compute.get(cpu_compute_target)
except Exception:
    print("Creating a new cpu compute target...")
    compute = AmlCompute(
        name=cpu_compute_target, size="STANDARD_D2_V2", min_instances=0, max_instances=4
    )
    ml_client.compute.begin_create_or_update(compute).result()

3. Inviare il processo di training

Per eseguire questo script, si userà un oggetto command che esegue main.py script Python disponibile in ./sdk/python/jobs/single-step/lightgbm/iris/src/. Il comando verrà eseguito inviandolo come a job Azure Machine Learning.

Nota

Per usare il calcolo serverless, eliminare compute="cpu-cluster" in questo codice.

from azure.ai.ml import command, Input

# define the command
command_job = command(
    code="./src",
    command="python main.py --iris-csv ${{inputs.iris_csv}} --learning-rate ${{inputs.learning_rate}} --boosting ${{inputs.boosting}}",
    environment="AzureML-lightgbm-3.2-ubuntu18.04-py37-cpu@latest",
    inputs={
        "iris_csv": Input(
            type="uri_file",
            path="https://azuremlexamples.blob.core.windows.net/datasets/iris.csv",
        ),
        "learning_rate": 0.9,
        "boosting": "gbdt",
    },
    compute="cpu-cluster",
)
# submit the command
returned_job = ml_client.jobs.create_or_update(command_job)
# get a URL for the status of the job
returned_job.studio_url

Negli esempi precedenti è stato configurato:

  • code - percorso in cui si trova il codice per eseguire il comando
  • command - comando che deve essere eseguito
  • environment : l'ambiente necessario per eseguire lo script di training. In questo esempio viene usato un ambiente curato o pronto fornito da Azure Machine Learning denominato AzureML-lightgbm-3.2-ubuntu18.04-py37-cpu. Per usare la @latest direttiva viene usata la versione più recente di questo ambiente. È anche possibile usare ambienti personalizzati specificando un'immagine Docker di base e specificando un yaml conda al suo posto.
  • inputs : dizionario di input che usano coppie nome-valore al comando. La chiave è un nome per l'input all'interno del contesto del processo e il valore è il valore di input. Viene fatto riferimento agli input nell'oggetto command utilizzando l'espressione ${{inputs.<input_name>}} . Per usare file o cartelle come input, è possibile usare la Input classe . Per altre informazioni, vedere Espressioni SDK e dell'interfaccia della riga di comando v2.

Per altre informazioni, vedere la documentazione di riferimento.

Quando si invia il processo, viene restituito un URL allo stato del processo nel studio di Azure Machine Learning. Usare l'interfaccia utente di Studio per visualizzare lo stato del processo. È anche possibile usare returned_job.status per controllare lo stato corrente del processo.

Registrare il modello sottoposto a training

Gli esempi seguenti illustrano come registrare un modello nell'area di lavoro di Azure Machine Learning.

Suggerimento

La name proprietà restituita dal processo di training viene utilizzata come parte del percorso del modello.

from azure.ai.ml.entities import Model
from azure.ai.ml.constants import AssetTypes

run_model = Model(
    path="azureml://jobs/{}/outputs/artifacts/paths/model/".format(returned_job.name),
    name="run-model-example",
    description="Model created from run.",
    type=AssetTypes.MLFLOW_MODEL
)

ml_client.models.create_or_update(run_model)

Passaggi successivi

Dopo aver creato un modello sottoposto a training, vedere come distribuirlo usando un endpoint online.

Per altri esempi, vedere il repository GitHub degli esempi di Azure Machine Learning.

Per altre informazioni sui comandi dell'interfaccia della riga di comando di Azure, sulle classi Python SDK o sulle API REST usate in questo articolo, vedere la documentazione di riferimento seguente: