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

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

Usługa Azure Machine Edukacja oferuje wiele sposobów przesyłania zadań trenowania uczenia maszynowego. W tym artykule 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 Edukacja.
  • Interfejs API REST: interfejs API, na który jest oparty interfejs wiersza polecenia i zestaw SDK.

Wymagania wstępne

Aby użyć informacji o zestawie SDK, zainstaluj zestaw Azure Machine Edukacja 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 w usłudze Azure Machine Edukacja przykłady. 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 polecenia , aby sklonować tylko najnowsze zatwierdzenie 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 Edukacja i wybrać zasób obliczeniowy, który będzie używany do uruchamiania zadania szkoleniowego.

1. Połączenie do obszaru roboczego

Napiwek

Użyj poniższych kart, aby wybrać metodę, której chcesz użyć do wytrenowania modelu. Wybranie karty spowoduje 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. Te szczegóły będą używane w przestrzeni nazw, MLClientazure.ai.ml aby uzyskać dojście do wymaganego obszaru roboczego usługi Azure Machine Edukacja. Do uwierzytelniania należy użyć domyślnego uwierzytelniania platformy Azure. Zapoznaj się z tym przykładem , aby uzyskać więcej informacji na temat konfigurowania poświadczeń i nawiązywania połączenia z obszarem roboczym.

#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 Edukacja to w pełni zarządzany zasób obliczeniowy, który może służyć do uruchamiania zadania trenowania. W poniższych przykładach tworzony jest klaster obliczeniowy o nazwie cpu-compute .

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żyjesz skryptu wykonującego command main.py skryptu języka Python znajdującego się w folderze ./sdk/python/jobs/single-step/lightgbm/iris/src/. Polecenie zostanie uruchomione przez przesłanie go jako elementu job do usługi Azure Machine Edukacja.

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 powyższych przykładach skonfigurowano:

  • code — ścieżka, w której znajduje się kod do uruchomienia polecenia
  • command - polecenie, które należy uruchomić
  • environment — środowisko potrzebne do uruchomienia skryptu szkoleniowego. W tym przykładzie używamy nadzorowanego lub gotowego środowiska dostarczonego przez usługę Azure Machine Edukacja o nazwie AzureML-lightgbm-3.2-ubuntu18.04-py37-cpu. Używamy najnowszej wersji tego środowiska przy użyciu @latest dyrektywy . 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ą. Dane wejściowe są przywoływane przy command użyciu ${{inputs.<input_name>}} wyrażenia . Aby użyć plików lub folderów jako danych wejściowych, możesz użyć 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 adres URL jest zwracany do stanu zadania w usłudze Azure Machine Edukacja 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 Edukacja.

Napiwek

Właściwość name zwrócona przez zadanie trenowania jest używana jako część ścieżki 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 Edukacja.

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