Konfigurowanie trenowania automatycznego uczenia maszynowego przy użyciu zestawu SDK języka Python usługi Azure ML w wersji 2 (wersja zapoznawcza)

DOTYCZY: Zestaw SDK języka Python azure-ai-ml w wersji 2 (wersja zapoznawcza)

Ważne

Ta funkcja jest obecnie w publicznej wersji zapoznawczej. Ta wersja zapoznawcza jest dostarczana bez umowy dotyczącej poziomu usług i nie jest zalecana w przypadku obciążeń produkcyjnych. Niektóre funkcje mogą być nieobsługiwane lub ograniczone. Aby uzyskać więcej informacji, zobacz Uzupełniające warunki korzystania z wersji zapoznawczych platformy Microsoft Azure.

W tym przewodniku dowiesz się, jak skonfigurować zautomatyzowane uczenie maszynowe, rozwiązanie AutoML, zadanie szkoleniowe za pomocą zestawu SDK języka Python usługi Azure Machine Learning w wersji 2 (wersja zapoznawcza). Zautomatyzowane uczenie maszynowe wybiera algorytm i hiperparametry dla Ciebie i generuje model gotowy do wdrożenia. Ten przewodnik zawiera szczegółowe informacje o różnych opcjach, których można użyć do konfigurowania eksperymentów zautomatyzowanego uczenia maszynowego.

Jeśli wolisz środowisko bez kodu, możesz również skonfigurować trenowanie automatycznego uczenia automatycznego kodu w Azure Machine Learning studio.

Jeśli wolisz przesyłać zadania szkoleniowe za pomocą rozszerzenia interfejsu wiersza polecenia usługi Azure Machine Learning w wersji 2, zobacz Szkolenie modeli przy użyciu interfejsu wiersza polecenia (wersja 2).

Wymagania wstępne

W tym artykule potrzebne są następujące elementy:

  • Obszar roboczy usługi Azure Machine Learning. Aby utworzyć obszar roboczy, zobacz Tworzenie zasobów obszaru roboczego.

  • Zainstalowany zestaw SDK języka Python usługi Azure Machine Learning w wersji 2 (wersja zapoznawcza). Aby zainstalować zestaw SDK, możesz wykonać jedną z następujących czynności:

    • Utwórz wystąpienie obliczeniowe, które już zainstalowało najnowszy zestaw SDK języka Python w języku AzureML i jest wstępnie skonfigurowane dla przepływów pracy uczenia maszynowego. Aby uzyskać więcej informacji, zobacz Tworzenie wystąpienia obliczeniowego usługi Azure Machine Learning i zarządzanie nim .

    • Użyj następujących poleceń, aby zainstalować zestaw Sdk języka Python usługi Azure ML w wersji 2:

      • Odinstaluj poprzednią wersję zapoznawcza:
      pip uninstall azure-ai-ml
      
      • Zainstaluj zestaw SDK języka Python usługi Azure ML w wersji 2:
      pip install azure-ai-ml
      

    Ważne

    Polecenia języka Python w tym artykule wymagają najnowszej azureml-train-automl wersji pakietu.

Konfigurowanie obszaru roboczego

Aby nawiązać połączenie z obszarem roboczym, musisz podać subskrypcję, grupę zasobów i nazwę obszaru roboczego. Te szczegóły są używane w usłudze MLClient, azure.ai.ml aby uzyskać dojście do wymaganego obszaru roboczego usługi Azure Machine Learning.

W poniższym przykładzie domyślne uwierzytelnianie platformy Azure jest używane wraz z domyślną konfiguracją obszaru roboczego lub z dowolnego config.json pliku, który mógł zostać skopiowany do struktury folderów. Jeśli nie config.json znaleziono, musisz ręcznie wprowadzić subscription_id, resource_group i obszar roboczy podczas tworzenia klasy MLClient.

from azure.identity import DefaultAzureCredential
from azure.ai.ml import MLClient

credential = DefaultAzureCredential()
ml_client = None
try:
    ml_client = MLClient.from_config(credential)
except Exception as ex:
    print(ex)
    # Enter details of your AzureML workspace
    subscription_id = "<SUBSCRIPTION_ID>"
    resource_group = "<RESOURCE_GROUP>"
    workspace = "<AZUREML_WORKSPACE_NAME>"
    ml_client = MLClient(credential, subscription_id, resource_group, workspace)

Źródło i format danych

Aby zapewnić dane szkoleniowe do rozwiązania AutoML w zestawie SDK w wersji 2, należy przekazać je do chmury za pośrednictwem tabeli MLTable.

Wymagania dotyczące ładowania danych do tabeli MLTable:

  • Dane muszą być w formie tabelarycznej.
  • Wartość do przewidywania kolumny docelowej musi znajdować się w danych.

Dane szkoleniowe muszą być dostępne ze zdalnego środowiska obliczeniowego. Zautomatyzowane uczenie maszynowe w wersji 2 (zestaw PYTHON SDK i interfejs wiersza polecenia/YAML) akceptuje zasoby danych w formie tabeli MLTable (wersja 2), chociaż w przypadku zgodności z poprzednimi wersjami obsługuje również zestawy danych tabelarycznych w wersji 1 (zarejestrowany zestaw danych tabelarycznych) za pomocą tych samych właściwości wejściowego zestawu danych. Jednak zaleceniem jest użycie tabeli MLTable dostępnej w wersji 2.

Poniższy kod YAML to definicja tabeli MLTable, którą można umieścić w folderze lokalnym lub folderze zdalnym w chmurze wraz z plikiem danych (.CSV lub parquet).

# MLTable definition file

paths:
  - file: ./bank_marketing_train_data.csv
transformations:
  - read_delimited:
        delimiter: ','
        encoding: 'ascii'

W związku z tym folder MLTable będzie miał plik definicji MLTable oraz plik danych (plik bank_marketing_train_data.csv w tym przypadku).

Poniżej przedstawiono dwa sposoby tworzenia tabeli MLTable.

  • A. Podanie danych szkoleniowych i pliku definicji mlTable z folderu lokalnego i automatyczne przekazanie go do chmury (domyślny magazyn danych obszaru roboczego)
  • B. Podanie tabeli MLTable już zarejestrowanej i przekazanej do chmury.
from azure.ai.ml.constants import AssetTypes
from azure.ai.ml import automl, Input

# A. Create MLTable for training data from your local directory
my_training_data_input = Input(
    type=AssetTypes.MLTABLE, path="./data/training-mltable-folder"
)

# B. Remote MLTable definition
my_training_data_input  = Input(type=AssetTypes.MLTABLE, path="azureml://datastores/workspaceblobstore/paths/Classification/Train")

Trenowanie, walidacja i testowanie danych

Można określić oddzielne dane treningowe i zestawy danych weryfikacji, jednak dane treningowe muszą być dostarczane do parametru training_data w funkcji fabrycznej zadania zautomatyzowanego uczenia maszynowego.

Jeśli nie określisz jawnie parametru validation_data lub n_cross_validation , zautomatyzowane uczenie maszynowe stosuje domyślne techniki w celu określenia sposobu wykonywania walidacji. Ta determinacja zależy od liczby wierszy w zestawie danych przypisanym do training_data parametru.

Rozmiar danych trenowania Technika walidacji
Więcej niż 20 000 wierszy Zastosowano podział danych trenowania/walidacji. Wartość domyślna to 10% początkowego zestawu danych treningowych jako zestawu walidacji. Z kolei ten zestaw weryfikacji jest używany do obliczania metryk.
Mniejsze niż lub równe 20 000 wierszy Zastosowano podejście do krzyżowego sprawdzania poprawności. Domyślna liczba składań zależy od liczby wierszy.
Jeśli zestaw danych jest mniejszy niż 1000 wierszy, używane są 10 razy.
Jeśli wiersze są równe lub z zakresu od 1000 do 20 000, są używane trzy razy.

Obliczenia w celu uruchomienia eksperymentu

Zautomatyzowane zadania uczenia maszynowego z zestawem PYTHON SDK w wersji 2 (lub interfejsie wiersza polecenia w wersji 2) są obecnie obsługiwane tylko w zdalnych obliczeniach usługi Azure ML (klastrze lub wystąpieniu obliczeniowym).

Dowiedz się więcej o tworzeniu zasobów obliczeniowych za pomocą zestawu SDKKv2 języka Python (lub CLIv2).

Konfigurowanie ustawień eksperymentu

Istnieje kilka opcji, których można użyć do skonfigurowania eksperymentu zautomatyzowanego uczenia maszynowego. Te parametry konfiguracji są ustawiane w metodzie zadania. Można również ustawić ustawienia trenowania zadań i kryteria zakończenia odpowiednio za pomocą set_training() funkcji i set_limits() .

W poniższym przykładzie przedstawiono wymagane parametry zadania klasyfikacji, które określa dokładność jako podstawową metrykę i 5 składanych krzyżowych poprawek.

# note that the below is a code snippet -- you might have to modify the variable values to run it successfully
classification_job = automl.classification(
    compute=my_compute_name,
    experiment_name=my_exp_name,
    training_data=my_training_data_input,
    target_column_name="y",
    primary_metric="accuracy",
    n_cross_validations=5,
    enable_model_explainability=True,
    tags={"my_custom_tag": "My custom value"}
)

# Limits are all optional

classification_job.set_limits(
    timeout_minutes=600, 
    trial_timeout_minutes=20, 
    max_trials=5,
    enable_early_termination=True,
)

# Training properties are optional
classification_job.set_training(
    blocked_training_algorithms=["LogisticRegression"], 
    enable_onnx_compatible_models=True
)

Wybierz typ zadania uczenia maszynowego (problem z uczeniem maszynowym)

Przed przesłaniem zadania zautomatyzowanego uczenia maszynowego należy określić rodzaj rozwiązywanego problemu uczenia maszynowego. Ten problem określa, która funkcja zautomatyzowanego zadania uczenia maszynowego używa i jakie algorytmy modelu mają zastosowanie.

Zautomatyzowane uczenie maszynowe obsługuje zadania oparte na danych tabelarycznych (klasyfikacja, regresja, prognozowanie), zadania przetwarzania obrazów (takie jak klasyfikacja obrazów i wykrywanie obiektów) oraz zadania przetwarzania języka naturalnego (takie jak zadania klasyfikacji tekstu i rozpoznawania jednostek). Dowiedz się więcej o typach zadań.

Obsługiwane algorytmy

Zautomatyzowane uczenie maszynowe próbuje różnić modele i algorytmy podczas procesu automatyzacji i dostrajania. Jako użytkownik nie ma potrzeby określania algorytmu.

Metoda zadania określa listę algorytmów/modeli do zastosowania. allowed_algorithms Użyj parametrów or blocked_training_algorithms w funkcji setter, set_training() aby dodatkowo zmodyfikować iteracji za pomocą dostępnych modeli do uwzględnienia lub wykluczenia.

Na poniższej liście linków można zapoznać się z obsługiwanymi algorytmami na zadanie uczenia maszynowego wymienione poniżej.

Klasyfikacja Regresja Prognozowanie szeregów czasowych
Regresja logistyczna* Elastyczna sieć* AutoARIMA
Lekkie GBM* Lekkie GBM* Proroka
Zwiększanie gradientu* Zwiększanie gradientu* Sieć elastyczna
Drzewo decyzyjne* Drzewo decyzyjne* Lekkie GBM
K najbliższych sąsiadów* K najbliższych sąsiadów* K najbliższych sąsiadów
Liniowa SVC* LARS Lasso* Drzewo decyzyjne
Obsługa klasyfikacji wektorów (SVC)* Stochastic Gradient Descent (SGD)* Arimax
Las losowy* Las losowy LARS/Lasso
Bardzo losowe drzewa* Bardzo losowe drzewa* Bardzo losowe drzewa*
Xgboost* Xgboost* Las losowy
Naiwny Bayes* Xgboost ForecastTCN
Stochastic Gradient Descent (SGD)* Stochastic Gradient Descent (SGD) Zwiększanie gradientu
ExponentialSmoothing
SeasonalNaive
Średnia
Naiwny
Wyrównywacz sezonowy

W przypadku poniższych dodatkowych algorytmów.

Użyj tego linku , na przykład notesów każdego typu zadania.

Metryka podstawowa

Parametr primary_metric określa metryki do użycia podczas trenowania modelu na potrzeby optymalizacji. Dostępne metryki, które można wybrać, są określane przez wybrany typ zadania.

Wybór podstawowej metryki dla zautomatyzowanego uczenia maszynowego do optymalizacji zależy od wielu czynników. Zalecamy, aby główną kwestią było wybranie metryki najlepiej reprezentującej potrzeby biznesowe. Następnie zastanów się, czy metryka jest odpowiednia dla profilu zestawu danych (rozmiar danych, zakres, rozkład klas itp.). W poniższych sekcjach przedstawiono podsumowanie zalecanych podstawowych metryk na podstawie typu zadania i scenariusza biznesowego.

Dowiedz się więcej o określonych definicjach tych metryk w temacie Omówienie wyników zautomatyzowanego uczenia maszynowego.

Metryki dla scenariuszy wieloklasowych klasyfikacji

Te metryki dotyczą wszystkich scenariuszy klasyfikacji, w tym danych tabelarycznych, obrazów/przetwarzania obrazów i nlp-text.

Metryki zależne od progu, takie jak accuracy, recall_score_weighted, norm_macro_recalli precision_score_weighted mogą nie być zoptymalizowane również w przypadku zestawów danych, które są małe, mają bardzo duże niesymetryczność klas (nierównowaga klas) lub gdy oczekiwana wartość metryki jest bardzo zbliżona do 0,0 lub 1,0. W takich przypadkach AUC_weighted może być lepszym wyborem dla metryki podstawowej. Po zakończeniu zautomatyzowanego uczenia maszynowego możesz wybrać zwycięski model na podstawie metryki najlepiej dopasowanej do potrzeb biznesowych.

Metric Przykładowe przypadki użycia
accuracy Klasyfikacja obrazów, analiza tonacji, przewidywanie zmian
AUC_weighted Wykrywanie oszustw, klasyfikacja obrazów, wykrywanie anomalii/wykrywanie spamu
average_precision_score_weighted Analiza tonacji
norm_macro_recall Przewidywanie zmian
precision_score_weighted

Metryki dla scenariuszy z wieloma etykietami klasyfikacji

  • W przypadku klasyfikacji tekstu wielokrotna etykieta jest obecnie "Dokładność" jest jedyną podstawową metrykę obsługiwaną.

  • W przypadku wielu etykiet klasyfikacji obrazów obsługiwane są podstawowe metryki zdefiniowane w enum ClassificationMultilabelPrimaryMetrics

Metryki scenariuszy NER tekstu NLP (nazwane rozpoznawanie jednostek)

  • W przypadku funkcji NLP Text NER (nazwane rozpoznawanie jednostek) obecnie "Dokładność" jest jedyną podstawową metrykę obsługiwaną.

Metryki dla scenariuszy regresji

r2_scorei normalized_mean_absolute_errornormalized_root_mean_squared_error wszyscy próbują zminimalizować błędy przewidywania. r2_score i normalized_root_mean_squared_error jednocześnie minimalizują średnie błędy kwadratowe, jednocześnie normalized_mean_absolute_error minimalizując średnią wartość bezwzględną błędów. Wartość bezwzględna traktuje błędy zarówno wielkości, jak i błędy kwadratowe będą miały znacznie większą karę za błędy z większymi wartościami bezwzględnymi. W zależności od tego, czy większe błędy powinny być karane więcej, czy nie, można wybrać optymalizację błędu kwadratowego lub błędu bezwzględnego.

Główną różnicą między elementami r2_score i normalized_root_mean_squared_error jest sposób ich normalizacji i ich znaczenia. normalized_root_mean_squared_error jest błędem średniokwadratowym znormalizowanym według zakresu i może być interpretowany jako średnia wielkość błędu dla przewidywania. r2_score jest to błąd średniokwadratowy znormalizowany przez oszacowanie wariancji danych. Jest to proporcja odmiany, która może zostać przechwycona przez model.

Uwaga

r2_score i normalized_root_mean_squared_error zachowują się podobnie jak metryki podstawowe. Jeśli zastosowano stały zestaw walidacji, te dwie metryki optymalizują ten sam cel, błąd średniokwadratowy i zostaną zoptymalizowane pod kątem tego samego modelu. Gdy dostępny jest tylko zestaw treningowy, a walidacja krzyżowa jest stosowana, będzie nieco inna, ponieważ normalizator dla normalized_root_mean_squared_error elementu jest stały, ponieważ zakres zestawu treningowego, ale normalizator r2_score dla każdego fałdu będzie się różnić, ponieważ jest to wariancja dla każdego fałdowania.

Jeśli ranga, zamiast dokładnej wartości jest interesujące, może być lepszym wyborem, spearman_correlation ponieważ mierzy korelację rangi między rzeczywistymi wartościami i przewidywaniami.

Jednak obecnie żadne podstawowe metryki regresji nie odnoszą się do względnej różnicy. r2_scoreWszystkie , normalized_mean_absolute_errori normalized_root_mean_squared_error traktują błąd przewidywania $20k taki sam dla procesu roboczego z wynagrodzeniem w wysokości 30 tys. USD jako pracownik tworzący 20 mln USD, jeśli te dwa punkty danych należą do tego samego zestawu danych na potrzeby regresji lub tej samej serii czasowej określonej przez identyfikator szeregów czasowych. Podczas gdy w rzeczywistości przewidywanie tylko $20k off z wynagrodzenia $20M jest bardzo blisko (mała różnica względna 0,1%), podczas gdy $20k off z $30k nie jest blisko (duża 67% różnica względna). Aby rozwiązać problem różnicy względnej, można wytrenować model z dostępnymi metrykami podstawowymi, a następnie wybrać model z najlepszymi mean_absolute_percentage_error lub root_mean_squared_log_error.

Metric Przykładowe przypadki użycia
spearman_correlation
normalized_root_mean_squared_error Przewidywanie cen (dom/produkt/porada), Przeglądanie przewidywania wyników
r2_score Opóźnienie linii lotniczych, Szacowanie wynagrodzenia, Czas rozwiązywania błędów
normalized_mean_absolute_error

Metryki scenariuszy prognozowania szeregów czasowych

Zalecenia są podobne do tych, które zostały zanotowane w scenariuszach regresji.

Metric Przykładowe przypadki użycia
normalized_root_mean_squared_error Przewidywanie cen (prognozowanie), optymalizacja zapasów, prognozowanie zapotrzebowania
r2_score Przewidywanie cen (prognozowanie), optymalizacja zapasów, prognozowanie zapotrzebowania
normalized_mean_absolute_error

Metryki scenariuszy wykrywania obiektów obrazów

  • W przypadku wykrywania obiektów obrazów obsługiwane są podstawowe metryki zdefiniowane w wyliczeniu ObjectDetectionPrimaryMetrics

Metryki scenariuszy segmentacji wystąpienia obrazu

  • W przypadku scenariuszy segmentacji wystąpienia obrazu obsługiwane są podstawowe metryki zdefiniowane w wyliczeniu InstanceSegmentationPrimaryMetrics

Cechowanie danych

W każdym zautomatyzowanym eksperymencie uczenia maszynowego dane są automatycznie przekształcane na liczby i wektory liczb oraz (tj. konwertowanie tekstu na liczbę) również skalowane i znormalizowane, aby pomóc niektórym algorytmom, które są wrażliwe na funkcje w różnych skalach. Ta transformacja danych, skalowanie i normalizacja jest nazywana cechą.

Uwaga

Zautomatyzowane kroki cechowania uczenia maszynowego (normalizacja funkcji, obsługa brakujących danych, konwertowanie tekstu na liczbowe itp.) stają się częścią podstawowego modelu. W przypadku korzystania z modelu przewidywania te same kroki cechowania stosowane podczas trenowania są stosowane automatycznie do danych wejściowych.

Podczas konfigurowania zautomatyzowanych zadań uczenia maszynowego można włączyć/wyłączyć featurization ustawienia przy użyciu .set_featurization() funkcji setter.

W poniższej tabeli przedstawiono zaakceptowane ustawienia cechowania.

Konfiguracja cechowania Opis
"mode": 'auto' Wskazuje, że w ramach przetwarzania wstępnego wykonywane są automatycznie zabezpieczenia danych i kroki cechowania . Ustawienie domyślne.
"mode": 'off' Wskazuje, że krok cechowania nie powinien być wykonywany automatycznie.
"mode": 'custom' Wskazuje, że należy użyć dostosowanego kroku cechowania.

Poniższy kod pokazuje, jak można zapewnić niestandardową cechę w tym przypadku dla zadania regresji.

from azure.ai.ml.automl import ColumnTransformer

transformer_params = {
    "imputer": [
        ColumnTransformer(fields=["CACH"], parameters={"strategy": "most_frequent"}),
        ColumnTransformer(fields=["PRP"], parameters={"strategy": "most_frequent"}),
    ],
}
regression_job.set_featurization(
    mode="custom",
    transformer_params=transformer_params,
    blocked_transformers=["LabelEncoding"],
    column_name_and_types={"CHMIN": "Categorical"},
)

Kryteria zakończenia

Istnieje kilka opcji, które można zdefiniować w set_limits() funkcji, aby zakończyć eksperyment przed ukończeniem zadania.

Kryteria description (opis)
Brak kryteriów Jeśli nie zdefiniujesz żadnych parametrów zakończenia, eksperyment będzie kontynuowany do momentu dalszego postępu w metryce podstawowej.
timeout Określa, jak długo, w minutach, eksperyment powinien być nadal uruchamiany. Jeśli nie zostanie określony, łączny limit czasu zadania domyślnego wynosi 6 dni (8640 minut). Aby określić limit czasu mniejszy niż lub równy 1 godzinę (60 minut), upewnij się, że rozmiar zestawu danych nie jest większy niż 10 000 000 (kolumna czasu wierszy) lub wyniki błędu.

Ten limit czasu obejmuje konfigurację, cechowanie i przebiegi treningowe, ale nie obejmuje błędów i możliwości wyjaśnienia modelu na końcu procesu, ponieważ te działania muszą nastąpić po zakończeniu wszystkich prób (zadań podrzędnych).
trial_timeout_minutes Maksymalny czas w minutach, przez który każda wersja próbna (zadanie podrzędne) może być uruchamiana przed jego zakończeniem. Jeśli nie zostanie określona, zostanie użyta wartość 1 miesiąca lub 43200 minut
enable_early_termination Czy zakończyć zadanie, jeśli wynik nie jest poprawiany w krótkim okresie
max_trials Maksymalna liczba prób/przebiegów każdego z nich z inną kombinacją algorytmu i hiperparametrów do wypróbowania podczas zadania automatycznego uczenia maszynowego. Jeśli nie zostanie określony, wartość domyślna to 1000 prób. Jeśli używasz enable_early_termination liczby prób, może być mniejszy.
max_concurrent_trials Reprezentuje maksymalną liczbę prób (zadań podrzędnych), które będą wykonywane równolegle. Dobrym rozwiązaniem jest dopasowanie tej liczby do liczby węzłów klastra

Uruchom eksperyment

Ostrzeżenie

Jeśli uruchamiasz eksperyment z tymi samymi ustawieniami konfiguracji i metrykami podstawowymi wiele razy, prawdopodobnie zobaczysz różnice w poszczególnych eksperymentach końcowych wyników metryk i wygenerowanych modeli. Algorytmy zautomatyzowanego uczenia maszynowego mają z natury losowość, która może spowodować niewielkie odchylenia w danych wyjściowych modeli w wyniku eksperymentu i wynik końcowych metryk zalecanego modelu, na przykład dokładność. Prawdopodobnie zobaczysz również wyniki o tej samej nazwie modelu, ale używane są różne hiperparametry.

Prześlij eksperyment, aby uruchomić i wygenerować model. Po utworzeniu klasy MLClient w wymaganiach wstępnych można uruchomić następujące polecenie w obszarze roboczym.


# Submit the AutoML job
returned_job = ml_client.jobs.create_or_update(
    classification_job
)  # submit the job to the backend

print(f"Created job: {returned_job}")

# Get a URL for the status of the job
returned_job.services["Studio"].endpoint

Wiele podrzędnych przebiegów w klastrach

Przebiegi podrzędne eksperymentu zautomatyzowanego uczenia maszynowego można wykonać w klastrze, który już uruchamia kolejny eksperyment. Jednak czas zależy od liczby węzłów, które ma klaster, a jeśli te węzły są dostępne do uruchomienia innego eksperymentu.

Każdy węzeł w klastrze działa jako pojedyncza maszyna wirtualna, która może wykonać jeden przebieg trenowania; w przypadku zautomatyzowanego uczenia maszynowego oznacza to uruchomienie podrzędne. Jeśli wszystkie węzły są zajęte, nowy eksperyment zostanie w kolejce. Jeśli jednak istnieją wolne węzły, nowy eksperyment uruchomi równolegle zautomatyzowane działanie podrzędne uczenia maszynowego w dostępnych węzłach/maszynach wirtualnych.

Aby ułatwić zarządzanie przebiegami podrzędnych i kiedy można je wykonać, zalecamy utworzenie dedykowanego klastra na eksperyment i dopasowanie liczby max_concurrent_iterations eksperymentów do liczby węzłów w klastrze. W ten sposób wszystkie węzły klastra są używane jednocześnie z liczbą współbieżnych przebiegów podrzędnych/iteracji, które chcesz wykonać.

Skonfiguruj max_concurrent_iterations w funkcji setter .set_limits(). Jeśli nie została skonfigurowana, domyślnie tylko jedno współbieżne uruchomienie/iteracja podrzędna jest dozwolone dla każdego eksperymentu. W przypadku wystąpienia max_concurrent_trials obliczeniowego można ustawić taką samą liczbę rdzeni na maszynie wirtualnej wystąpienia obliczeniowego.

Eksplorowanie modeli i metryk

Zautomatyzowane uczenie maszynowe oferuje opcje monitorowania i oceniania wyników trenowania.

Z poziomu interfejsu użytkownika usługi Azure Machine Learning na stronie modelu można również wyświetlić hiperparametry używane podczas trenowania określonego modelu, a także wyświetlać i dostosowywać używany kod trenowania modelu wewnętrznego.

Rejestrowanie i wdrażanie modeli

Po przetestowaniu modelu i potwierdzeniu, że chcesz go użyć w środowisku produkcyjnym, możesz zarejestrować go do późniejszego użycia.

Porada

W przypadku zarejestrowanych modeli wdrożenie jednym kliknięciem jest dostępne za pośrednictwem Azure Machine Learning studio. Zobacz , jak wdrożyć zarejestrowane modele z poziomu programu Studio.

AutoML w potokach

Aby korzystać z rozwiązania AutoML w przepływach pracy metodyki MLOps, możesz dodać kroki zadania automatycznego uczenia maszynowego do potoków usługi AzureML. Dzięki temu można zautomatyzować cały przepływ pracy, podłączając skrypty przygotowywania danych do rozwiązania AutoML, a następnie rejestrując i sprawdzając wynikowy najlepszy model.

Poniżej znajduje się przykładowy potok z składnikiem klasyfikacji automatycznego uczenia maszynowego i składnikiem polecenia, który pokazuje wynikowe dane wyjściowe rozwiązania AutoML. Zwróć uwagę, w jaki sposób dane wejściowe (dane weryfikacji trenowania & ) i dane wyjściowe (najlepszy model) są przywołyne w różnych krokach.

# Define pipeline
@pipeline(
    description="AutoML Classification Pipeline",
    )
def automl_classification(
    classification_train_data,
    classification_validation_data
):
    # define the automl classification task with automl function
    classification_node = classification(
        training_data=classification_train_data,
        validation_data=classification_validation_data,
        target_column_name="y",
        primary_metric="accuracy",
        # currently need to specify outputs "mlflow_model" explictly to reference it in following nodes 
        outputs={"best_model": Output(type="mlflow_model")},
    )
    # set limits and training
    classification_node.set_limits(max_trials=1)
    classification_node.set_training(enable_stack_ensemble=False, enable_vote_ensemble=False)

    command_func = command(
        inputs=dict(
            automl_output=Input(type="mlflow_model")
        ),
        command="ls ${{inputs.automl_output}}",
        environment="AzureML-sklearn-0.24-ubuntu18.04-py37-cpu:1"
    )
    show_output = command_func(automl_output=classification_node.outputs.best_model)


pipeline_classification = automl_classification(
    classification_train_data=Input(path="./training-mltable-folder/", type="mltable"),
    classification_validation_data=Input(path="./validation-mltable-folder/", type="mltable"),
)

# ...
# Note that the above is only a snippet from the bankmarketing example you can find in our examples repo -> https://github.com/Azure/azureml-examples/tree/sdk-preview/sdk/jobs/pipelines/1h_automl_in_pipeline/automl-classification-bankmarketing-in-pipeline

Aby uzyskać więcej przykładów dotyczących sposobu dołączania rozwiązania AutoML do potoków, zapoznaj się z naszym repozytorium przykładów.

Następne kroki