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 (corrente)SDK Python azure-ai-ml v2 (corrente)

Azure Machine Learning offre diversi modi per inviare job di training di ML. Questo articolo illustra come inviare processi usando i metodi seguenti:

  • L'estensione interfaccia della riga di comando di Azure per il machine learning: l'estensione ml, nota anche come CLI 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 il 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 nell'Azure Machine Learning esempi GitHub repository. 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.

Esempio di lavoro

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

Eseguire il training nel cloud

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

1. Connettersi 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 vengono automaticamente selezionate 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. Usare questi dettagli nel MLClient dallo spazio dei nomi azure.ai.ml per ottenere un punto di controllo sull'area di lavoro di Azure Machine Learning necessaria. Per eseguire l'autenticazione, usare l'autenticazione Azure predefinita >example.

#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 l'elaborazione serverless, ignorare questo passaggio e passare al 3. Inviare il processo di training.

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

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, usare un command che esegue lo script main.py Python che si trova in ./sdk/python/jobs/single-step/lightgbm/iris/src/. Inviare il comando come job a Azure Machine Learning.

Nota

Per usare il calcolo serverless, elimina 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

Nei precedenti esempi, hai 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 usare un ambiente curato o pronto fornito da Azure Machine Learning denominato AzureML-lightgbm-3.3@latest. È anche possibile usare ambienti personalizzati specificando un'immagine Docker di base e specificando un yaml conda al suo posto.
  • inputs: dizionario di input con coppie nome-valore per il comando. La chiave è un nome per l'input nel contesto del processo e il valore è il valore dell'input. Fare riferimento agli input in command utilizzando l'espressione ${{inputs.<input_name>}} . Per usare file o cartelle come input, 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 job, il servizio restituisce un URL allo stato del job nell'Azure Machine Learning Studio. 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.

Importante

I processi di training e comando di Azure Machine Learning non supportano Registri Azure Container (ACR) che usano etichette di dominio personalizzate. Le attività che fanno riferimento a un registro di questo tipo potrebbero fallire durante l'avvio a causa di errori di pull dell'immagine o di risoluzione dell'ambiente. Per evitare questo problema:

  • Usare il formato predefinito del server di login (<registry-name>.azurecr.io) per il Registro Azure Container.
  • Quando si crea il registro, impostare Ambito etichetta nome di dominio su Insicuro.

Registra il modello addestrato

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

Suggerimento

Il processo di addestramento restituisce una proprietà name. Usare questo nome 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

Ora che hai un modello addestrato, scopri come distribuirlo usando un endpoint online.

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

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