Delen via


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 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

Aanbeveling

Gebruik --depth 1 om alleen de meest recente commit naar de repository te klonen, wat de tijd voor het voltooien van de operatie vermindert.

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

Aanbeveling

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 MLClientazure.ai.ml naamruimte om een ingang te krijgen naar de vereiste Azure Machine Learning-werkruimte. Gebruik de standaardverificatie van Azure om te verifiëren. Voor meer informatie over het configureren van referenties en het maken van verbinding met een werkruimte, zie dit voorbeeld.

#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 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 script dat zich onder ./sdk/python/jobs/single-step/lightgbm/iris/src/main.py Python-script bevindt. U verzendt de opdracht als een job naar Azure Machine Learning.

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 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 met de naam AzureML-lightgbm-3.2-ubuntu18.04-py37-cpu. Gebruik de nieuwste versie van deze omgeving met behulp van de @latest instructie. 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. Verwijs naar invoer in de command door de uitdrukking ${{inputs.<input_name>}} te gebruiken. 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 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.

Aanbeveling

De trainingstaak retourneert een name eigenschap. 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 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: