Konfigurowanie trenowania automatycznego uczenia maszynowego dla danych tabelarycznych przy użyciu interfejsu wiersza polecenia usługi Azure Machine Learning 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 artykułu dowiesz się, jak skonfigurować zadanie trenowania zautomatyzowanego uczenia maszynowego (AutoML) przy użyciu zestawu SDK języka Python usługi Azure Machine Learning w wersji 2. Zautomatyzowane uczenie maszynowe wybiera algorytm i hiperparametry dla Ciebie i generuje model gotowy do wdrożenia. Ten artykuł 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ć zautomatyzowane trenowanie zautomatyzowanego uczenia maszynowego dla danych tabelarycznych przy użyciu interfejsu użytkownika studio.
Wymagania wstępne
- Subskrypcja platformy Azure. Jeśli nie masz subskrypcji platformy Azure, przed rozpoczęciem utwórz bezpłatne konto. Wypróbuj bezpłatną lub płatną wersję usługi Azure Machine Learning.
- Obszar roboczy usługi Azure Machine Learning. Jeśli go nie masz, zobacz Tworzenie zasobów, aby rozpocząć pracę.
Aby użyć informacji o zestawie SDK , zainstaluj zestaw Azure Machine Learning SDK w wersji 2 dla języka Python.
Aby zainstalować zestaw SDK, możesz wykonać następujące czynności:
- Utwórz wystąpienie obliczeniowe, które ma już najnowszy zestaw SDK języka Python usługi Azure Machine Learning i jest skonfigurowane dla przepływów pracy uczenia maszynowego. Aby uzyskać więcej informacji, zobacz Tworzenie wystąpienia obliczeniowego usługi Azure Machine Learning.
- Zainstaluj zestaw SDK na komputerze lokalnym.
Skonfiguruj swoje miejsce pracy
Aby nawiązać połączenie z obszarem roboczym, musisz podać subskrypcję, grupę zasobów i obszar roboczy.
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 Learning.
W poniższym przykładzie użyto domyślnego uwierzytelniania platformy Azure z domyślną konfiguracją obszaru roboczego lub konfiguracją config.json
z pliku w strukturze folderów. Jeśli nie config.json
znajdzie elementu , należy ręcznie wprowadzić identyfikator subskrypcji, grupę zasobów 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)
Określanie źródła danych i formatu
Aby zapewnić dane szkoleniowe 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 PYTHON SDK i interfejs wiersza polecenia/YAML) akceptuje zasoby danych w formie tabeli MLTable (wersja 2). 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ściowego zestawu danych. Zalecamy użycie tabeli MLTable dostępnej w wersji 2. W tym przykładzie 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/MLTable, który zawiera format pliku i instrukcje ładowania.
Teraz folder ./train_data ma plik definicji MLTable oraz plik danych, bank_marketing_train_data.csv.
Aby uzyskać więcej informacji na temat tabeli MLTable, zobacz Praca z tabelami w usłudze Azure Machine Learning.
Trenowanie, walidacja i testowanie danych
Można określić oddzielne dane szkoleniowe i zestawy danych weryfikacji. Dane szkoleniowe muszą być dostarczane do parametru training_data
w funkcji fabryki 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 parametru training_data
.
Rozmiar danych treningowych | Technika walidacji |
---|---|
Więcej niż 20 000 wierszy | Podział danych trenowania i walidacji jest stosowany. 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 są dziesięć 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
Zadania zautomatyzowanego uczenia maszynowego z zestawem PYTHON SDK w wersji 2 (lub interfejsie wiersza polecenia w wersji 2) są obecnie obsługiwane tylko w zdalnym klastrze obliczeniowym lub wystąpieniu obliczeniowym usługi Azure Machine Learning. Aby uzyskać więcej informacji na temat tworzenia obliczeń za pomocą zestawu SDKKv2 języka Python lub CLIv2, zobacz Trenowanie modeli przy użyciu interfejsu wiersza polecenia, zestawu SDK i interfejsu API REST usługi Azure Machine Learning.
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 pięć składań 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
Przed przesłaniem zadania zautomatyzowanego uczenia maszynowego określ rodzaj problemu uczenia maszynowego, który chcesz rozwiązać. Ten problem określa, która funkcja używa zadania i jakie algorytmy modelu mają zastosowanie.
Zautomatyzowane uczenie maszynowe obsługuje różne typy zadań:
Zadania oparte na danych tabelarycznych
- klasyfikacja
- regresja
- prognozowanie
Zadania przetwarzania obrazów, w tym zadania
- Klasyfikacja obrazów
- Wykrywanie obiektów
Zadania przetwarzania języka naturalnego, w tym zadania
- Klasyfikacja tekstu
- Rozpoznawanie jednostek
Aby uzyskać więcej informacji, zobacz typy zadań. Aby uzyskać więcej informacji na temat konfigurowania zadań prognozowania, zobacz Konfigurowanie rozwiązania AutoML do trenowania modelu prognozowania szeregów czasowych.
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 lub modeli do zastosowania. Aby jeszcze bardziej zmodyfikować iterację przy użyciu dostępnych modeli do uwzględnienia lub wykluczenia, użyj allowed_training_algorithms
parametrów lub blocked_training_algorithms
w training
konfiguracji zadania.
W poniższej tabeli zapoznasz się z obsługiwanymi algorytmami na zadanie uczenia maszynowego.
Z innymi algorytmami:
- Algorytmy wieloklasowe klasyfikacji obrazów
- Algorytmy z wieloma etykietami klasyfikacji obrazów
- Algorytmy wykrywania obiektów obrazów
- Algorytmy klasyfikacji tekstu NLP z wieloma etykietami
- Algorytmy rozpoznawania jednostek o nazwie NLP (NER)
Na przykład notesy poszczególnych typów zadań można znaleźć w temacie automl-standalone-jobs (Zadania autonomiczne rozwiązania automl).
Metryka podstawowa
Parametr primary_metric
określa metryki, która ma być używana podczas trenowania modelu na potrzeby optymalizacji. Wybrany typ zadania określa metryki, które można wybrać.
Wybór podstawowej metryki 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, w tym rozmiar danych, zakres i rozkład klas. W poniższych sekcjach podsumowano zalecane podstawowe metryki na podstawie typu zadania i scenariusza biznesowego.
Aby dowiedzieć się więcej o określonych definicjach tych metryk, zobacz Ocena wyników eksperymentu zautomatyzowanego uczenia maszynowego.
Metryki dla scenariuszy wieloklasowych klasyfikacji
Te metryki dotyczą wszystkich scenariuszy klasyfikacji, w tym danych tabelarycznych, obrazów lub przetwarzania obrazów oraz tekstu przetwarzania języka naturalnego (NLP-Text).
Metryki zależne od progu, takie jak accuracy
, recall_score_weighted
, norm_macro_recall
i 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 wielu etykiet klasyfikacji tekstu obecnie "Dokładność" jest jedyną metryką podstawową obsługiwaną.
W przypadku wielu etykiet klasyfikacji obrazów obsługiwane są podstawowe metryki są zdefiniowane w wyliczeniem ClassificationMultilabelPrimaryMetrics
.
Metryki dla scenariuszy rozpoznawania jednostek o nazwie NLP
W przypadku rozpoznawania jednostek o nazwie NLP (NER) obecnie "Dokładność" jest jedyną podstawową metrykę obsługiwaną.
Metryki dla scenariuszy regresji
r2_score
, i normalized_mean_absolute_error
normalized_root_mean_squared_error
wszystkie 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 mają 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 proporcja odmiany, którą model może przechwycić.
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 są 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, spearman_correlation
może być lepszym wyborem. Mierzy korelację rangi między rzeczywistymi wartościami i przewidywaniami.
Zautomatyzowane uczenie maszynowe 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_error
i 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 miarą względną, daje błędy odpowiednio 50% i 0,05%. Aby zoptymalizować pod kątem różnicy względnej, możesz uruchomić zautomatyzowane uczenie maszynowe z obsługiwaną metryką podstawową, a następnie wybrać model z najlepszym mean_absolute_percentage_error
rozwiązaniem lub root_mean_squared_log_error
. 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 zaleceń dotyczących scenariuszy 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 wyliczeniem ObjectDetectionPrimaryMetrics
.
Metryki dla scenariuszy segmentacji wystąpienia obrazu
W przypadku scenariuszy segmentacji wystąpień obrazów obsługiwane są podstawowe metryki zdefiniowane w wyliczeniem InstanceSegmentationPrimaryMetrics
.
Cechowanie danych
W każdym eksperymencie zautomatyzowanego uczenia maszynowego dane są automatycznie przekształcane na liczby i wektory liczb. Dane są również 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, takie jak normalizacja cech, obsługa brakujących danych i konwertowanie tekstu na liczbowe, stają się częścią podstawowego modelu. Jeśli używasz modelu do prognoz, te same kroki cechowania stosowane podczas trenowania są stosowane automatycznie do danych wejściowych.
Podczas konfigurowania zadań zautomatyzowanego uczenia maszynowego można włączyć lub wyłączyć featurization
ustawienia.
W poniższej tabeli przedstawiono zaakceptowane ustawienia cechowania.
Konfiguracja cechowania | opis |
---|---|
"mode": 'auto' |
Wskazuje, że w ramach wstępnego przetwarzania zabezpieczenia danych i czynności cechowania są wykonywane automatycznie. Ta wartość jest ustawieniem domyślnym. |
"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 to sześć 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 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ń 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ślona, 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 hyper-parameters do wypróbowania podczas zadania. Jeśli nie zostanie określony, wartość domyślna to 1000 prób. Jeśli używasz enable_early_termination metody , liczba używanych prób może być mniejsza. |
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
Prześlij eksperyment, aby uruchomić i wygenerować model.
Uwaga
W przypadku wielokrotnego uruchamiania eksperymentu z tymi samymi ustawieniami konfiguracji i metryki podstawowej może być widoczna odmiana poszczególnych eksperymentów końcowych wyników metryk i wygenerowanych modeli. Algorytmy stosowane przez zautomatyzowane uczenie maszynowe 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ść. Mogą również zostać wyświetlone wyniki o tej samej nazwie modelu, ale są używane różne parametry hyper-parameters.
Ostrzeżenie
Jeśli ustawiono reguły w zaporze lub sieciowej grupie zabezpieczeń w obszarze roboczym, sprawdź, czy wymagane uprawnienia są podane do ruchu przychodzącego i wychodzącego sieci zgodnie z definicją w temacie Konfigurowanie ruchu przychodzącego i wychodzącego ruchu sieciowego.
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 istnieją wolne węzły, nowy eksperyment uruchamia podrzędne przebiegi równolegle w dostępnych węzłach lub maszynach wirtualnych.
Aby ułatwić zarządzanie przebiegami podrzędnych i ich wykonaniem, 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 i iteracji, które chcesz wykonać.
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 Learning 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 można użyć wdrożenia jednym kliknięciem przy użyciu usługi Azure Machine Learning Studio. Zobacz Wdrażanie modelu.
Używanie rozwiązania AutoML w potokach
Aby użyć zautomatyzowanego uczenia maszynowego w przepływach pracy operacji uczenia maszynowego, możesz dodać kroki zadania automatycznego uczenia maszynowego do potoków usługi Azure Machine Learning. Takie podejście pozwala zautomatyzować cały przepływ pracy, podłączając skrypty przygotowywania danych do zautomatyzowanego uczenia maszynowego. Następnie zarejestruj i zweryfikuj wynikowy najlepszy model.
Ten kod jest przykładowym potokiem ze składnikiem klasyfikacji zautomatyzowanego uczenia maszynowego i składnikiem polecenia, który pokazuje wynikowe dane wyjściowe. Kod odwołuje się do danych wejściowych (danych szkoleniowych i walidacji) oraz danych wyjściowych (najlepszy model) 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 zautomatyzowanego uczenia maszynowego do potoków, zobacz repozytorium przykładów.
Używanie rozwiązania AutoML na dużą skalę: trenowanie rozproszone
W przypadku scenariuszy dużych danych zautomatyzowane uczenie maszynowe 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 automatyczne uczenie maszynowe 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, ustaw 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 do użycia do trenowania przez każdą wersję próbną. 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 prognozowanie na dużą skalę. Aby użyć trenowania rozproszonego do prognozowania, należy ustawić training_mode
właściwości , enable_dnn_training
, max_nodes
i 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 | Ta wartość 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
)
Przykłady pełnego kodu konfiguracji można znaleźć w poprzednich sekcjach dotyczących konfiguracji i przesyłania zadań.
Powiązana zawartość
- Dowiedz się więcej o tym, jak i gdzie wdrożyć model.
- Dowiedz się więcej o sposobie konfigurowania rozwiązania AutoML do trenowania modelu prognozowania szeregów czasowych.