Modellen trainen met Azure Machine Learning CLI, SDK en REST API

APPLIES TO:Azure CLI ml extension v2 (current)Python SDK azure-ai-ml v2 (current)

Azure Machine Learning biedt meerdere manieren om ML-trainingstaken in te dienen. In dit artikel leert u hoe u taken verzendt met behulp van de volgende methoden:

  • Azure CLI-extensie voor machine learning: de extensie ml, ook wel CLI v2 genoemd.
  • Python SDK v2 voor Azure Machine Learning.
  • REST API: de API waarop de CLI en SDK zijn gebouwd.

Voorwaarden

Als u de SDK wilt gebruiken, installeert u de Azure Machine Learning SDK v2 voor Python.

De opslagplaats met voorbeelden klonen

De codefragmenten in dit artikel zijn gebaseerd op voorbeelden in de Azure Machine Learning voorbeelden GitHub opslagplaats. Gebruik de volgende opdracht om de opslagplaats naar uw ontwikkelomgeving te klonen:

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

Tip

Gebruik --depth 1 om alleen de meest recente commit in de opslagplaats te klonen, waardoor de tijd voor het voltooien van de bewerking wordt verkort.

Voorbeeldtaak

In de voorbeelden in dit artikel wordt de irisbloemgegevensset gebruikt om een MLFlow-model te trainen.

Trainen in de cloud

Wanneer u in de cloud traint, moet u verbinding maken met uw Azure Machine Learning werkruimte en een rekenresource selecteren om de trainingstaak uit te voeren.

1. Verbinding maken met de werkruimte

Tip

Gebruik de volgende tabbladen om de methode te selecteren die u wilt gebruiken om een model te trainen. Als u een tabblad selecteert, worden alle tabbladen in dit artikel automatisch naar hetzelfde tabblad overgeschakeld. U kunt op elk gewenst moment een ander tabblad selecteren.

Als u verbinding wilt maken met de werkruimte, hebt u id-parameters nodig: een abonnement, resourcegroep en werkruimtenaam. Gebruik deze gegevens in de MLClient uit de azure.ai.ml naamruimte om een ingang te krijgen voor de vereiste Azure Machine Learning werkruimte. Gebruik de default Azure verificatie om te verifiëren. Zie dit voorbeeld voor meer informatie over het configureren van referenties en verbinding maken met een werkruimte.

#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. Een rekenresource maken voor training

Opmerking

Als u serverloze berekeningen wilt proberen, slaat u deze stap over en gaat u verder met 3. Dien de trainingstaak in.

Een Azure Machine Learning rekencluster is een volledig beheerde rekenresource die u kunt gebruiken om de trainingstaak uit te voeren. In de volgende voorbeelden maakt u een rekencluster met de naam 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. Verzend de trainingstaak

Als u dit script wilt uitvoeren, gebruikt u een command waarmee het main.py Python script wordt uitgevoerd dat zich onder ./sdk/python/jobs/single-step/lightgbm/iris/src/ bevindt. U verzendt de opdracht als een job naar Azure Machine Learning.

Opmerking

Als u serverless compute wilt gebruiken, verwijder compute="cpu-cluster" in deze code.

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

In de voorgaande voorbeelden hebt u het volgende geconfigureerd:

  • code - pad waar de code voor het uitvoeren van de opdracht zich bevindt.
  • command - opdracht die moet worden uitgevoerd.
  • environment - de omgeving die nodig is om het trainingsscript uit te voeren. In dit voorbeeld gebruikt u een gecureerde of kant-en-klare omgeving die wordt geleverd door Azure Machine Learning genaamd AzureML-lightgbm-3.3@latest. U kunt ook aangepaste omgevingen gebruiken door een basis-Docker-image op te geven en daarbovenop een conda YAML te specificeren.
  • inputs - woordenboek van invoerwaarden met behulp van naam-waardeparen voor het commando. De sleutel is een naam voor de invoer binnen de context van de taak en de waarde is de invoerwaarde. Gebruik de ${{inputs.<input_name>}} expressie om verwijzingsinvoer in de command aan te geven. Als u bestanden of mappen als invoer wilt gebruiken, gebruikt u de Input klasse. Zie SDK- en CLI v2-expressies voor meer informatie.

Zie de referentiedocumentatie voor meer informatie.

Wanneer u de taak verzendt, retourneert de service een URL naar de taakstatus in de Azure Machine Learning Studio. Gebruik de gebruikersinterface van Studio om de voortgang van de taak weer te geven. U kunt ook de huidige status van de taak met returned_job.status controleren.

Belangrijk

Azure Machine Learning trainings- en opdrachttaken bieden geen ondersteuning voor Azure containerregisters (ACR) die gebruikmaken van aangepaste domeinnaamlabels. Taken die naar een dergelijk register verwijzen, kunnen mislukken tijdens het opstarten vanwege fouten bij het ophalen van images of resolutieproblemen bij de omgeving. Ga als volgt te werk om dit probleem te voorkomen:

  • Gebruik de standaardindeling van de aanmeldingsserver (<registry-name>.azurecr.io) voor uw ACR.
  • Wanneer u het register maakt, stelt u het labelbereik van de domeinnaam in op Onbeveiligd.

Het getrainde model registreren

In de volgende voorbeelden ziet u hoe u een model registreert in uw Azure Machine Learning werkruimte.

Tip

De trainingsopdracht geeft een eigenschap name terug. Gebruik deze naam als onderdeel van het pad naar het model.

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)

Volgende stappen

Nu u een getraind model hebt, leert u hoe u het implementeert met behulp van een online-eindpunt.

Zie de opslagplaats Azure Machine Learning voorbeelden GitHub voor meer voorbeelden.

Zie de volgende referentiedocumentatie voor meer informatie over de Azure CLI-opdrachten, Python SDK-klassen of REST API's die in dit artikel worden gebruikt: