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

VAN TOEPASSING OP: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 ml extensie, ook wel CLI v2 genoemd.
  • Python SDK v2 voor Azure Machine Learning.
  • REST API: de API waarop de CLI en SDK zijn gebouwd.

Vereisten

Als u de SDK-informatie 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 GitHub-opslagplaats voor Azure Machine Learning-voorbeelden. 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 dit om alleen de meest recente doorvoering naar de opslagplaats te klonen, waardoor de bewerking minder lang duurt.

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 die wordt gebruikt om de trainingstaak uit te voeren.

1. Verbinding maken naar de werkruimte

Tip

Gebruik de onderstaande 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. U gebruikt deze gegevens in de MLClientazure.ai.ml naamruimte om een ingang te krijgen tot de vereiste Azure Machine Learning-werkruimte. Voor verificatie gebruikt u de standaardVerificatie van Azure. Bekijk dit voorbeeld voor meer informatie over het configureren van referenties en het maken van verbinding 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

Notitie

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 kan worden gebruikt om de trainingstaak uit te voeren. In de volgende voorbeelden wordt een rekencluster met de naam cpu-compute gemaakt.

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 script dat wordt uitgevoerd main.py Python-script onder ./sdk/python/jobs/single-step/lightgbm/iris/src/. De opdracht wordt uitgevoerd door deze als een job naar Azure Machine Learning te verzenden.

Notitie

Als u serverloze berekeningen wilt gebruiken, verwijdert compute="cpu-cluster" u 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 bovenstaande 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 gebruiken we een gecureerde of kant-en-klare omgeving die wordt geleverd door Azure Machine Learning genaamd AzureML-lightgbm-3.2-ubuntu18.04-py37-cpu. We gebruiken de nieuwste versie van deze omgeving met behulp van de @latest richtlijn. U kunt ook aangepaste omgevingen gebruiken door een basis-Docker-installatiekopieën op te geven en er een conda yaml bovenop op te geven.
  • inputs - woordenlijst van invoer met behulp van naam-waardeparen voor de opdracht. De sleutel is een naam voor de invoer binnen de context van de taak en de waarde is de invoerwaarde. In de command${{inputs.<input_name>}} expressie wordt verwezen naar invoer. Als u bestanden of mappen als invoer wilt gebruiken, kunt u de Input klasse gebruiken. Zie SDK- en CLI v2-expressies voor meer informatie.

Zie de referentiedocumentatie voor meer informatie.

Wanneer u de taak verzendt, wordt er een URL geretourneerd 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 returned_job.status huidige status van de taak controleren.

Het getrainde model registreren

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

Tip

De name eigenschap die door de trainingstaak wordt geretourneerd, wordt gebruikt 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 GitHub-opslagplaats met Azure Machine Learning-voorbeelden 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: