Konfigurowanie trenowania automatycznego uczenia maszynowego na potrzeby danych tabelarycznych przy użyciu interfejsu wiersza polecenia usługi Azure Machine Edukacja i zestawu SDK języka Python

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

Z tego przewodnika dowiesz się, jak skonfigurować zautomatyzowane uczenie maszynowe, rozwiązanie AutoML, zadanie szkoleniowe za pomocą zestawu SDK języka Python Edukacja Azure Machine w wersji 2. 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 maszynowego bez kodu w usłudze Azure Machine Edukacja Studio.

Wymagania wstępne

Aby użyć informacji o zestawie SDK, zainstaluj zestaw Azure Machine Edukacja SDK w wersji 2 dla języka Python.

Aby zainstalować zestaw SDK, możesz wykonać jedną z następujących czynności:

  • Utwórz wystąpienie obliczeniowe, które już zainstalowało najnowszą wersję zestawu Azure Machine Edukacja python SDK 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 Edukacja.
  • Instalowanie zestawu SDK na komputerze lokalnym

Skonfiguruj swoje miejsce pracy

Aby nawiązać połączenie z obszarem roboczym, musisz podać nazwę subskrypcji, grupy zasobów i obszaru roboczego.

Szczegóły obszaru roboczego są używane w sekcji MLClient z azure.ai.ml , aby uzyskać dojście do wymaganego obszaru roboczego usługi Azure Machine Edukacja.

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 zostanie znaleziona, należy ręcznie wprowadzić subscription_id, resource_group i obszar roboczy podczas tworzenia elementu 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 Azure Machine Learning 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ść, która ma być przewidywana, kolumna docelowa, musi znajdować się w danych.

Dane szkoleniowe muszą być dostępne z poziomu zdalnego przetwarzania. Zautomatyzowane uczenie maszynowe w wersji 2 (zestaw SDK języka Python 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 z wersji 1 (zarejestrowany tabelaryczny zestaw danych) za pośrednictwem tych samych właściwości wejściowych zestawu danych. Jednak zaleceniem jest użycie tabeli MLTable dostępnej w wersji 2. W tym przykładzie przyjęto założenie, że dane są przechowywane w ścieżce lokalnej, ./train_data/bank_marketing_train_data.csv

Tabelę MLTable można utworzyć przy użyciu zestawu MLTable Python SDK , jak pokazano w poniższym przykładzie:

import mltable

paths = [
    {'file': './train_data/bank_marketing_train_data.csv'}
]

train_table = mltable.from_delimited_files(paths)
train_table.save('./train_data')

Ten kod tworzy nowy plik , ./train_data/MLTablektóry zawiera format pliku i instrukcje ładowania.

./train_data Teraz folder zawiera plik definicji MLTable wraz z plikiem bank_marketing_train_data.csvdanych .

Aby uzyskać więcej informacji na temat metody MLTable, zobacz artykuł z instrukcjami mltable

Trenowanie, walidacja i testowanie danych

Można określić oddzielne dane szkoleniowe i zestawy danych walidacji, jednak dane szkoleniowe 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 przeprowadzenia walidacji. Ta determinacja zależy od liczby wierszy w zestawie danych przypisanym do parametru training_data .

Rozmiar danych treningowych 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 weryfikacji. 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 jest 10 razy.
Jeśli wiersze są równe lub z zakresu od 1000 do 20 000, używane są trzy fałdy.

Obliczenia w celu uruchomienia eksperymentu

Zadania zautomatyzowanego uczenia maszynowego z zestawem PYTHON SDK w wersji 2 (lub interfejsie wiersza polecenia w wersji 2) są obecnie obsługiwane tylko w usłudze Azure Machine Edukacja zdalnym przetwarzaniu (klastrze lub wystąpieniu obliczeniowym).

Dowiedz się więcej na temat tworzenia zasobów obliczeniowych przy użyciu 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żesz również ustawić ustawienia trenowania zadań i kryteria zakończenia przy użyciu training ustawień i limits .

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

from azure.ai.ml.constants import AssetTypes
from azure.ai.ml import automl, Input

# note that this is a code snippet -- you might have to modify the variable values to run it successfully

# make an Input object for the training data
my_training_data_input = Input(
    type=AssetTypes.MLTABLE, path="./data/training-mltable-folder"
)

# configure the classification job
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=["logistic_regression"], 
    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 używa zautomatyzowanego zadania uczenia maszynowego 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). Aby uzyskać więcej informacji, zobacz nasz artykuł na temat typów zadań. Zobacz nasz przewodnik prognozowania szeregów czasowych, aby uzyskać więcej informacji na temat konfigurowania zadań prognozowania.

Obsługiwane algorytmy

Zautomatyzowane uczenie maszynowe próbuje różnych modeli i algorytmów podczas procesu automatyzacji i dostrajania. Jako użytkownik nie musisz określać algorytmu.

Metoda zadania określa listę algorytmów/modeli, które mają być stosowane. allowed_training_algorithms Użyj parametrów or blocked_training_algorithms w training konfiguracji zadania automatycznego uczenia maszynowego, aby dalej modyfikować iteracji przy użyciu dostępnych modeli do uwzględnienia lub wykluczenia.

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

Klasyfikacja Regresja Prognozowanie szeregów czasowych
Regresja logistyczna* Sieć elastyczna* AutoARIMA
Jasny GBM* Jasny GBM* Proroka
Zwiększanie gradientu* Zwiększanie gradientu* Sieć elastyczna
Drzewo decyzyjne* Drzewo decyzyjne* Jasny GBM
K najbliższych sąsiadów* K najbliższych sąsiadów* K najbliższych sąsiadów
Liniowy SVC* LARS Lasso* Drzewo decyzyjne
Klasyfikacja wektorów nośnych (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 TCNForecaster
Stochastic Gradient Descent (SGD)* Stochastic Gradient Descent (SGD) Zwiększanie gradientu
ExponentialSmoothing
Sezonowa
Średnia
Naiwny
Wyrównywacz sezonowy

W przypadku poniższych dodatkowych algorytmów.

Użyj tego linku , aby uzyskać przykładowe notesy każdego typu zadania.

Metryka podstawowa

Parametr primary_metric określa metryki, która ma być używana 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 podsumowano zalecane podstawowe metryki na podstawie typu zadania i scenariusza biznesowego.

Dowiedz się więcej o określonych definicjach tych metryk w artykule 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ż dla zestawów danych, które są małe, mają duże niesymetryczność klas (dysproporcja 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 podstawowej metryki. 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 opinii
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ą metryką podstawową obsługiwaną.

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

Metryki scenariuszy równoważenia obciążenia sieciowego NER (nazwanego rozpoznawania jednostek)

  • W przypadku funkcji NLP Text NER (nazwane rozpoznawanie jednostek) obecnie "Dokładność" jest jedyną metrykę podstawową 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 bezwzględnego błędu.

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żna go interpretować jako średnią wielkość błędu dla przewidywania. r2_score to błąd średniokwadratowy znormalizowany przez oszacowanie wariancji danych. Jest to odsetek odmian, które mogą być przechwytywane przez model.

Uwaga

r2_score i normalized_root_mean_squared_error zachowują się podobnie jak metryki podstawowe. Jeśli zastosowano stały zestaw weryfikacji, te dwie metryki optymalizują ten sam cel, błąd średniokwadratowy i będą optymalizowane przez ten sam model. Gdy jest dostępny tylko zestaw treningowy i jest stosowany krzyżowa walidacja, byłyby nieco inne, ponieważ normalizator dla normalized_root_mean_squared_error parametru jest stały, ponieważ zakres zestawu treningowego, ale moduł normalizatora r2_score dla każdego fałdu będzie się różnić, ponieważ jest to wariancja dla każdego fałszu.

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

Rozwiązanie AutoML nie obsługuje obecnie żadnych podstawowych metryk, które mierzą względną różnicę między przewidywaniami i obserwacjami. Metryki r2_score, normalized_mean_absolute_errori normalized_root_mean_squared_error są miarami różnicy bezwzględnej. Jeśli na przykład przewidywanie różni się od obserwacji o 10 jednostek, te metryki obliczają tę samą wartość, jeśli obserwacja to 20 jednostek lub 20 000 jednostek. Natomiast różnica procentowa, która jest względną miarą, daje błędy odpowiednio 50% i 0,05%! Aby zoptymalizować pod kątem różnicy względnej, możesz uruchomić rozwiązanie AutoML z obsługiwaną metryką podstawową, a następnie wybrać model z najlepszym mean_absolute_percentage_error rozwiązaniem lub root_mean_squared_log_error. Należy pamiętać, że te metryki są niezdefiniowane, gdy wszystkie wartości obserwacji są zerowe, więc mogą nie zawsze być dobrymi wyborami.

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 usterek
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 dla 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, a także skalowane i znormalizowane w celu ułatwienia algorytmom, które są wrażliwe na funkcje w różnych skalach. Te przekształcenia danych są nazywane cechowaniem.

Uwaga

Zautomatyzowane kroki cechowania uczenia maszynowego (normalizacja cech, obsługa brakujących danych, konwertowanie tekstu na liczbowe itp.) stają się częścią modelu bazowego. W przypadku korzystania z modelu do 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.

W poniższej tabeli przedstawiono zaakceptowane ustawienia cechowania.

Konfiguracja cechowania opis
"mode": 'auto' Wskazuje, że w ramach wstępnego przetwarzania 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 udostępnić niestandardową cechę w tym przypadku w przypadku 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.

Kryterium opis
Brak kryteriów Jeśli nie zdefiniujesz żadnych parametrów zakończenia, eksperyment będzie kontynuowany, dopóki nie zostaną wykonane dalsze postępy w podstawowej metryce.
timeout Określa, jak długo, w minutach, eksperyment powinien być nadal uruchamiany. Jeśli nie zostanie określony, domyślny limit czasu zadania wynosi 6 dni (8640 minut). Aby określić limit czasu krótszy 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 trenowania, ale nie obejmuje przestępstw 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ń dla dzieci).
trial_timeout_minutes Maksymalny czas w minutach, przez który każda wersja próbna (zadanie podrzędne) może być uruchamiana przed jej zakończeniem. Jeśli nie zostanie określony, zostanie użyta wartość 1 miesiąca lub 43200 minut
enable_early_termination Czy zakończyć zadanie, jeśli wynik nie poprawia się w krótkim okresie
max_trials Maksymalna liczba prób/przebiegów, z których każda ma inną kombinację algorytmu i parametrów hiperparatek do wypróbowania podczas zadania automatycznego uczenia maszynowego. Jeśli nie zostanie określony, wartość domyślna to 1000 prób. W przypadku używania 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

Uwaga

Jeśli wielokrotnie uruchamiasz eksperyment z tymi samymi ustawieniami konfiguracji i metrykami podstawowymi, prawdopodobnie zobaczysz różnice w poszczególnych eksperymentach końcowych metryk i wygenerowanych modelach. Algorytmy zautomatyzowanego uczenia maszynowego mają nieodłączną losowość, która może spowodować niewielkie różnice 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 są używane różne parametry hyper-parameters.

Ostrzeżenie

Jeśli ustawiono reguły w zaporze i/lub sieciowej grupie zabezpieczeń w obszarze roboczym, sprawdź, czy wymagane uprawnienia są podane do ruchu sieciowego dla ruchu przychodzącego i wychodzącego zgodnie z definicją w temacie Konfigurowanie ruchu przychodzącego i wychodzącego ruchu sieciowego.

Prześlij eksperyment, aby uruchomić i wygenerować model. Po utworzeniu MLClient w wymaganiach wstępnych możesz 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ć pojedynczy przebieg trenowania; w przypadku zautomatyzowanego uczenia maszynowego oznacza to uruchomienie podrzędne. Jeśli wszystkie węzły są zajęte, nowy eksperyment jest w kolejce. Jeśli jednak istnieją wolne węzły, nowy eksperyment uruchomi automatyczne podrzędne uczenia maszynowego równolegle w dostępnych węzłach/maszynach wirtualnych.

Aby ułatwić zarządzanie przebiegami podrzędnym i ich wykonywaniem, zalecamy utworzenie dedykowanego klastra na eksperyment i dopasowanie liczby max_concurrent_iterations eksperymentu do liczby węzłów w klastrze. W ten sposób wszystkie węzły klastra są używane w tym samym czasie z liczbą współbieżnych przebiegów podrzędnych/iteracji.

Skonfiguruj max_concurrent_iterations w limits konfiguracji. Jeśli nie jest skonfigurowany, domyślnie na eksperyment dozwolony jest tylko jeden współbieżny przebieg podrzędny/iteracja. W przypadku wystąpienia max_concurrent_trials obliczeniowego można ustawić wartość taką samą jak liczba rdzeni na maszynie wirtualnej wystąpienia obliczeniowego.

Eksplorowanie modeli i metryk

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

  • Aby zapoznać się z definicjami i przykładami wykresów wydajności i metryk dostępnych dla każdego przebiegu, zobacz Ocena wyników eksperymentu zautomatyzowanego uczenia maszynowego.

  • Aby uzyskać podsumowanie cechowania i zrozumieć, jakie funkcje zostały dodane do określonego modelu, zobacz Przejrzystość cechowania.

Z poziomu interfejsu użytkownika usługi Azure Machine Edukacja na stronie modelu można również wyświetlić hiperparaty 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żywać w środowisku produkcyjnym, możesz zarejestrować go do późniejszego użycia.

Napiwek

W przypadku zarejestrowanych modeli wdrożenie jednym kliknięciem jest dostępne za pośrednictwem usługi Azure Machine Edukacja Studio. Zobacz , jak wdrażać zarejestrowane modele ze studia.

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 Azure Machine Edukacja. Dzięki temu możesz 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 ze 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 trenowania i walidacji) 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:latest"
    )
    show_output = command_func(automl_output=classification_node.outputs.best_model)


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

# set pipeline level compute
pipeline_job.settings.default_compute = compute_name

# submit the pipeline job
returned_pipeline_job = ml_client.jobs.create_or_update(
    pipeline_job,
    experiment_name=experiment_name
)
returned_pipeline_job

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

Aby uzyskać więcej przykładów dotyczących dołączania automatycznego uczenia maszynowego do potoków, zapoznaj się z naszym repozytorium przykładów.

AutoML na dużą skalę: trenowanie rozproszone

W przypadku scenariuszy dużych danych rozwiązanie AutoML obsługuje trenowanie rozproszone dla ograniczonego zestawu modeli:

Algorytm rozproszony Obsługiwane zadania Limit rozmiaru danych (przybliżony)
LightGBM Klasyfikacja, regresja 1 TB
TCNForecaster Prognozowanie 200 GB

Algorytmy trenowania rozproszonego automatycznie partycjonują i dystrybuują dane między wieloma węzłami obliczeniowymi na potrzeby trenowania modelu.

Uwaga

Krzyżowe sprawdzanie poprawności, modele zespołów, obsługa ONNX i generowanie kodu nie są obecnie obsługiwane w trybie trenowania rozproszonego. Ponadto rozwiązanie AutoML może dokonać wyborów, takich jak ograniczenie dostępnych cech i danych podrzędnych próbkowania używanych do walidacji, możliwości wyjaśnienia i oceny modelu.

Trenowanie rozproszone na potrzeby klasyfikacji i regresji

Aby użyć trenowania rozproszonego do klasyfikacji lub regresji, należy ustawić training_mode właściwości i max_nodes obiektu zadania.

Właściwości opis
training_mode Wskazuje tryb trenowania; distributed lub non_distributed. Wartość domyślna to non_distributed.
max_nodes Liczba węzłów używanych do trenowania przez każdą wersję próbną rozwiązania AutoML. To ustawienie musi być większe lub równe 4.

Poniższy przykładowy kod przedstawia przykład tych ustawień zadania klasyfikacji:

from azure.ai.ml.constants import TabularTrainingMode

# Set the training mode to distributed
classification_job.set_training(
    allowed_training_algorithms=["LightGBM"],
    training_mode=TabularTrainingMode.DISTRIBUTED
)

# Distribute training across 4 nodes for each trial
classification_job.set_limits(
    max_nodes=4,
    # other limit settings
)

Uwaga

Trenowanie rozproszone na potrzeby zadań klasyfikacji i regresji nie obsługuje obecnie wielu współbieżnych wersji próbnych. Wersje próbne modelu są wykonywane sekwencyjnie z każdą wersją próbną przy użyciu max_nodes węzłów. Ustawienie limitu max_concurrent_trials jest obecnie ignorowane.

Trenowanie rozproszone na potrzeby prognozowania

Aby dowiedzieć się, jak działa trenowanie rozproszone na potrzeby zadań prognozowania, zobacz nasz artykuł dotyczący prognozowania na dużą skalę . Aby użyć trenowania rozproszonego do prognozowania, należy ustawić training_modewłaściwości , enable_dnn_training, max_nodesi opcjonalnie max_concurrent_trials właściwości obiektu zadania.

Właściwości opis
training_mode Wskazuje tryb trenowania; distributed lub non_distributed. Wartość domyślna to non_distributed.
enable_dnn_training Flaga umożliwiająca włączenie głębokich modeli sieci neuronowych.
max_concurrent_trials Jest to maksymalna liczba modeli próbnych do równoległego trenowania. Wartość domyślna to 1.
max_nodes Całkowita liczba węzłów do użycia na potrzeby trenowania. To ustawienie musi być większe lub równe 2. W przypadku zadań prognozowania każdy model próbny jest trenowany przy użyciu węzłów $\text{max}\left(2, \text{floor}( \text{max_nodes} / \text{max_concurrent_trials}) \right)$.

Poniższy przykładowy kod przedstawia przykład tych ustawień zadania prognozowania:

from azure.ai.ml.constants import TabularTrainingMode

# Set the training mode to distributed
forecasting_job.set_training(
    enable_dnn_training=True,
    allowed_training_algorithms=["TCNForecaster"],
    training_mode=TabularTrainingMode.DISTRIBUTED
)

# Distribute training across 4 nodes
# Train 2 trial models in parallel => 2 nodes per trial
forecasting_job.set_limits(
    max_concurrent_trials=2,
    max_nodes=4,
    # other limit settings
)

Zobacz poprzednie sekcje dotyczące konfiguracji i przesyłania zadań, aby zapoznać się z przykładami pełnego kodu konfiguracji.

Następne kroki