Udostępnij przez


Trenowanie modeli za pomocą interfejsu wiersza polecenia, zestawu SDK i interfejsu API REST usługi Azure Machine Learning

DOTYCZY: Rozszerzenie interfejsu wiersza polecenia platformy Azure w wersji 2 (current)Zestaw PYTHON SDK azure-ai-ml v2 (bieżąca)

Usługa Azure Machine Learning oferuje wiele sposobów przesyłania zadań trenowania uczenia maszynowego. Z tego artykułu dowiesz się, jak przesyłać zadania przy użyciu następujących metod:

  • Rozszerzenie interfejsu wiersza polecenia platformy Azure do uczenia maszynowego: ml rozszerzenie nazywane również interfejsem wiersza polecenia w wersji 2.
  • Zestaw PYTHON SDK w wersji 2 dla usługi Azure Machine Learning.
  • Interfejs API REST: interfejs API, na który jest oparty interfejs wiersza polecenia i zestaw SDK.

Wymagania wstępne

Aby użyć zestawu SDK, zainstaluj zestaw Azure Machine Learning SDK w wersji 2 dla języka Python.

Klonowanie repozytorium przykładów

Fragmenty kodu w tym artykule są oparte na przykładach w repozytorium GitHub przykładów usługi Azure Machine Learning. Aby sklonować repozytorium do środowiska deweloperskiego, użyj następującego polecenia:

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

Napiwek

Użyj --depth 1, aby sklonować tylko najnowszy commit do repozytorium, co skraca czas na ukończenie operacji.

Przykładowe zadanie

W przykładach w tym artykule użyto zestawu danych irysów kwiat do wytrenowania modelu MLFlow.

Szkolenie w chmurze

Podczas trenowania w chmurze musisz nawiązać połączenie z obszarem roboczym usługi Azure Machine Learning i wybrać zasób obliczeniowy, aby uruchomić zadanie trenowania.

1. Nawiązywanie połączenia z obszarem roboczym

Napiwek

Użyj poniższych kart, aby wybrać metodę, której chcesz użyć do wytrenowania modelu. Wybranie karty powoduje automatyczne przełączenie wszystkich kart w tym artykule na tę samą kartę. W dowolnym momencie możesz wybrać inną kartę.

Aby nawiązać połączenie z obszarem roboczym, potrzebujesz parametrów identyfikatora — subskrypcji, grupy zasobów i nazwy obszaru roboczego. Użyj tych szczegółów z MLClient przestrzeni nazw azure.ai.ml, aby uzyskać dostęp do wymaganego obszaru roboczego usługi Azure Machine Learning. Aby przeprowadzić uwierzytelnianie, użyj domyślnego uwierzytelniania platformy Azure. Aby uzyskać więcej informacji na temat konfigurowania poświadczeń i nawiązywania połączenia z obszarem roboczym, zobacz ten przykład.

#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. Tworzenie zasobu obliczeniowego na potrzeby trenowania

Uwaga

Aby wypróbować bezserwerowe obliczenia, pomiń ten krok i przejdź do 3. Prześlij zadanie szkoleniowe.

Klaster obliczeniowy usługi Azure Machine Learning to w pełni zarządzany zasób obliczeniowy, którego można użyć do uruchomienia zadania trenowania. W poniższych przykładach utworzysz klaster obliczeniowy o nazwie 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. Prześlij zadanie szkoleniowe

Aby uruchomić ten skrypt, użyj skryptu command , który wykonuje skrypt main.py Python znajdujący się w obszarze ./sdk/python/jobs/single-step/lightgbm/iris/src/. Polecenie należy przesłać jako element job do usługi Azure Machine Learning.

Uwaga

Aby użyć bezserwerowych obliczeń, usuń compute="cpu-cluster" w tym kodzie.

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

W poprzednich przykładach skonfigurowano:

  • code — ścieżka, w której znajduje się kod do uruchomienia polecenia.
  • command - polecenie, które musi zostać uruchomione.
  • environment — środowisko potrzebne do uruchomienia skryptu szkoleniowego. W tym przykładzie użyj nadzorowanego lub gotowego środowiska dostarczonego przez usługę Azure Machine Learning o nazwie AzureML-lightgbm-3.2-ubuntu18.04-py37-cpu. Aby użyć najnowszej wersji tego środowiska, skorzystaj z dyrektywy @latest. Możesz również użyć środowisk niestandardowych, określając podstawowy obraz platformy Docker i określając na nim plik yaml conda.
  • inputs - słownik danych wejściowych używających par wartości nazw do polecenia . Klucz jest nazwą danych wejściowych w kontekście zadania, a wartość jest wartością wejściową. Odniesienie do danych wejściowych w command przy użyciu wyrażenia ${{inputs.<input_name>}}. Aby użyć plików lub folderów jako danych wejściowych, użyj Input klasy . Aby uzyskać więcej informacji, zobacz Zestaw SDK i wyrażenia interfejsu wiersza polecenia w wersji 2.

Aby uzyskać więcej informacji, zobacz dokumentację referencyjną.

Po przesłaniu zadania usługa zwraca adres URL do stanu zadania w usłudze Azure Machine Learning Studio. Użyj interfejsu użytkownika programu Studio, aby wyświetlić postęp zadania. Możesz również użyć returned_job.status polecenia , aby sprawdzić bieżący stan zadania.

Rejestrowanie wytrenowanego modelu

W poniższych przykładach pokazano, jak zarejestrować model w obszarze roboczym usługi Azure Machine Learning.

Napiwek

Proces trenowania zwraca właściwość name. Użyj nazwy tej jako części ścieżki prowadzącej do modelu.

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)

Następne kroki

Teraz, gdy masz wytrenowany model, dowiedz się , jak wdrożyć go przy użyciu punktu końcowego online.

Aby uzyskać więcej przykładów, zobacz repozytorium GitHub przykłady usługi Azure Machine Learning.

Aby uzyskać więcej informacji na temat poleceń interfejsu wiersza polecenia platformy Azure, klas zestawu SDK języka Python lub interfejsów API REST używanych w tym artykule, zobacz następującą dokumentację referencyjną: