Notatka
Dostęp do tej strony wymaga autoryzacji. Może spróbować zalogować się lub zmienić katalogi.
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zmienić katalogi.
DOTYCZY:
Rozszerzenie ml interfejsu wiersza polecenia platformy Azure w wersji 2 (bieżąca)
Zestaw SDK języka Python azure-ai-ml v2 (bieżąca)
Z tego artykułu dowiesz się, jak skonfigurować zadanie trenowania automatycznego uczenia maszynowego przy użyciu zestawu SDK języka Python usługi Azure Machine Learning w wersji 2. Rozwiązanie AutoML 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ć trenowanie automatycznego uczenia maszynowego bez kodu dla danych tabelarycznych za pomocą 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.
Zestaw SDK można zainstalować na dwa sposoby:
- 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 Utwórz wystąpienie obliczeniowe 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.
Wprowadź szczegóły obszaru roboczego w MLClient z azure.ai.ml, aby połączyć się z obszarem roboczym usługi Azure Machine Learning.
W poniższym przykładzie użyto domyślnego uwierzytelniania Azure z domyślną konfiguracją obszaru roboczego lub konfiguracją z pliku config.json w strukturze folderów. Jeśli nie znajdzie config.json, podczas tworzenia MLClient należy ręcznie podać identyfikator subskrypcji, grupę zasobów i obszar roboczy.
from azure.identity import DefaultAzureCredential, InteractiveBrowserCredential
from azure.ai.ml import MLClient
try:
credential = DefaultAzureCredential()
credential.get_token("https://management.azure.com/.default")
except Exception:
credential = InteractiveBrowserCredential()
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 udostępnić dane treningowe w zestawie SDK v2, musisz przesłać je do chmury za pośrednictwem obiektu 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. AutoML v2 (zestaw SDK języka Python i CLI/YAML) akceptuje zasoby danych MLTable (v2). Ze względu na zgodność wsteczną obsługuje również zestawy danych tabelarycznych v1 oraz zarejestrowany zestaw danych tabelarycznych przy użyciu 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. Musisz podać dane szkoleniowe do parametru training_data w funkcji fabrycznej zadania rozwiązania AutoML.
Jeśli nie określisz jawnie parametru validation_data lub n_cross_validation , rozwiązanie AutoML stosuje techniki domyślne w celu określenia sposobu weryfikacji. 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 | Rozwiązanie AutoML stosuje podział danych trenowania i walidacji. Wartość domyślna przyjmuje 10% początkowego zestawu danych treningowych jako zestaw weryfikacji. Następnie rozwiązanie AutoML używa tego zestawu sprawdzania poprawności do obliczania metryk. |
| Mniejsze niż lub równe 20 000 wierszy | Rozwiązanie AutoML stosuje podejście do krzyżowego sprawdzania poprawności. Domyślna liczba podziałów zależy od liczby wierszy. Jeśli zestaw danych ma mniej niż 1 000 wierszy, AutoML używa dziesięciu podziałów. Jeśli liczba wierszy wynosi od 1000 do 20 000, AutoML stosuje trzy foldy. |
Obliczenia w celu uruchomienia eksperymentu
Zadania AutoML z zestawu Python SDK w wersji 2 (lub interfejsu CLI 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 zasobów obliczeniowych przy użyciu zestawu PYTHON SDKv2 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
Do skonfigurowania eksperymentu rozwiązania AutoML można użyć kilku opcji. Te parametry konfiguracji są ustawiane w metodzie zadania. Możesz również skonfigurować ustawienia szkolenia zadania oraz kryteria zakończenia za pomocą ustawień training i limits.
Poniższy przykład przedstawia wymagane parametry zadania klasyfikacji, które określa dokładność jako metrykę podstawową oraz pięciokrotną walidację krzyżową.
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 automatycznego uczenia maszynowego określ rodzaj problemu uczenia maszynowego, który chcesz rozwiązać. Ten typ problemu określa, jakiej funkcji używa Twoje zadanie i jakie algorytmy modelu stosuje.
Rozwiązanie AutoML obsługuje różne typy zadań:
Zadania oparte na danych tabelarycznych
- klasyfikacja
- regresja
- prognozowanie
Zadania z zakresu widzenia komputerowego, w tym
- Klasyfikacja obrazów
- Wykrywanie obiektów
Zadania przetwarzania języka naturalnego, w tym
- 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 w celu trenowania modelu prognozowania szeregów czasowych.
Obsługiwane algorytmy
AutoML testuje różne modele i algorytmy w procesie automatyzacji i dostrajania. Jako użytkownik nie musisz określać algorytmu.
Metoda zadania określa listę algorytmów lub modeli do zastosowania. Aby dalej modyfikować iteracje z użyciem dostępnych modeli, które mają zostać uwzględnione lub wykluczone, użyj parametrów allowed_training_algorithms lub blocked_training_algorithms w konfiguracji training 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 NLP do rozpoznawania nazwanych jednostek (NER) w tekście
Przykładowe notatniki dla każdego typu zadania można znaleźć w sekcji automl-standalone-jobs.
Metryka podstawowa
Parametr primary_metric określa metryki do użycia podczas trenowania modelu na potrzeby optymalizacji. Wybrany typ zadania określa metryki, które można wybrać.
Wybór podstawowej metryki dla rozwiązania AutoML 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 rozwiązania AutoML.
Metryki dla scenariuszy wieloklasowych klasyfikacji
Te metryki mają zastosowanie do wszystkich scenariuszy klasyfikacji, w tym do danych tabelarycznych, obrazów lub widzenia komputerowego oraz tekstów związanych z przetwarzaniem języka naturalnego (NLP).
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 automatycznego uczenia maszynowego możesz wybrać zwycięski model na podstawie metryki najlepiej dopasowanej do potrzeb biznesowych.
| Wskaźnik | Przykładowe przypadki użycia |
|---|---|
accuracy |
Klasyfikacja obrazów, analiza sentymentu, przewidywanie odejść klientów |
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 klasyfikacji wieloetykietowej
W przypadku wielu etykiet klasyfikacji tekstu obecnie "Dokładność" jest jedyną metryką podstawową obsługiwaną.
W przypadku wielkoetykietowej klasyfikacji obrazów obsługiwane podstawowe metryki są zdefiniowane w wyliczeniu ClassificationMultilabelPrimaryMetrics.
Metryki dla scenariuszy rozpoznawania nazwanych encji w przetwarzaniu języka naturalnego
W przypadku zadania NLP polegającego na rozpoznawaniu nazwanych jednostek (NER) obecnie „Trafność” jest jedyną obsługiwaną podstawową metryką.
Metryki dla scenariuszy regresji
r2_score, normalized_mean_absolute_errori 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 jednakowo błędy o każdej wielkości, a błędy podniesione do kwadratu nakładają znacznie większą karę na błędy o większych wartościach bezwzględnych. W zależności od tego, czy większe błędy powinny być karane surowiej, czy nie, można wybrać optymalizację błędu kwadratowego lub 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ż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 dostępny jest tylko zbiór treningowy i stosuje się walidację krzyżową, wyniki byłyby nieco inne, ponieważ normalizator dla normalized_root_mean_squared_error jest ustalony na podstawie zakresu zbioru treningowego, natomiast normalizator dla r2_score zmieniałby się w każdym foldzie, ponieważ opiera się na wariancji w danym foldzie.
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.
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 miarą względną, daje błędy odpowiednio 50% i 0,05%. Aby zoptymalizować pod kątem różnicy względnej, możesz uruchomić AutoML z użyciem obsługiwanej metryki podstawowej, a następnie wybrać model z najlepszym wynikiem mean_absolute_percentage_error 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.
| Wskaźnik | 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.
| Wskaźnik | 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 |
|
spearman_correlation |
Metryki scenariuszy wykrywania obiektów obrazów
W przypadku wykrywania obiektów obrazu obsługiwane są podstawowe metryki zdefiniowane w wyliczeniem ObjectDetectionPrimaryMetrics .
Metryki dla scenariuszy segmentacji instancji obrazu
W przypadku scenariuszy segmentacji wystąpień obrazu obsługiwane są podstawowe metryki zdefiniowane w wyliczeniem InstanceSegmentationPrimaryMetrics .
Tworzenie cech danych
W każdym eksperymencie rozwiązania AutoML 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 nazywa się featuryzacją.
Uwaga
Etapy inżynierii cech w AutoML, takie jak normalizacja cech, obsługa brakujących danych i konwersja tekstu na wartości liczbowe, stają się częścią modelu bazowego. Gdy używasz modelu do predykcji, takie same kroki przetwarzania cech, jakie zastosowano podczas trenowania, są automatycznie stosowane do danych wejściowych.
Podczas konfigurowania zadań AutoML można włączyć lub wyłączyć ustawienia featurization.
W poniższej tabeli przedstawiono zaakceptowane ustawienia cechowania.
| Konfiguracja cechowania | Opis |
|---|---|
"mode": 'auto' |
Wskazuje, że w ramach przetwarzania wstępnego mechanizmy ochrony danych i etapy tworzenia cech 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 w tym przypadku zastosować niestandardowe tworzenie cech w zadaniu 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 wyjścia
Możesz zdefiniować kilka opcji 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 będzie już dalszych postępów dla podstawowej metryki. |
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 nie dłuższy niż 1 godzina (60 minut), upewnij się, że rozmiar zestawu danych nie przekracza 10 000 000 (liczba wierszy razy liczba kolumn), w przeciwnym razie wystąpi błąd. Ten limit czasu obejmuje konfigurację, tworzenie cech i uruchomienia trenowania, ale nie obejmuje łączenia modeli w zespoły ani uruchomień wyjaśnialności 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 jej zakończeniem. Jeśli nie określono inaczej, AutoML używa wartości 1 miesiąca lub 43 200 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żdy ma inną kombinację algorytmu i hiperparametrów, do wypróbowania w ramach zadania. Jeśli nie określono wartości, wartość domyślna to 1,000 prób. Jeśli używasz usługi enable_early_termination, rozwiązanie AutoML może używać mniejszej liczby prób. |
max_concurrent_trials |
Maksymalna liczba prób (zadań podrzędnych) uruchamianych 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
Jeśli wielokrotnie uruchamiasz eksperyment z tymi samymi ustawieniami konfiguracji i metrykami podstawowymi, może być widoczna odmiana końcowego wyniku metryk każdego eksperymentu i wygenerowanych modeli. Algorytmy stosowane przez rozwiązanie AutoML cechują się wrodzoną losowością, która może powodować niewielkie różnice w modelach wygenerowanych w ramach eksperymentu oraz w końcowym wyniku metryk zalecanego modelu, na przykład wskaźnika dokładności. Możesz również zobaczyć wyniki z tą samą nazwą modelu, ale z różnymi użytymi hiperparametrami.
Ostrzeżenie
Jeśli skonfigurowano reguły w zaporze lub grupie zabezpieczeń sieci dla obszaru roboczego, sprawdź, czy wymagane uprawnienia zostały przyznane dla przychodzącego i wychodzącego ruchu sieciowego zgodnie z opisem w konfigurowanie 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 uruchomień w klastrach
Możesz uruchomić podrzędne uruchomienia eksperymentu AutoML na klastrze, na którym jest już uruchomiony inny eksperyment. Czas zależy od liczby węzłów, które ma klaster i czy te węzły są dostępne do uruchomienia innego eksperymentu.
Każdy węzeł w klastrze funkcjonuje jako oddzielna maszyna wirtualna (VM), która może zrealizować pojedyncze uruchomienie treningu. W przypadku rozwiązania AutoML oznacza to uruchomienie podrzędne. Jeśli wszystkie węzły są zajęte, AutoML umieszcza nowy eksperyment w kolejce. Jeśli są dostępne wolne węzły, nowy eksperyment uruchamia uruchomienia podrzędne równolegle na dostępnych węzłach lub maszynach wirtualnych.
Aby ułatwić zarządzanie przebiegami podrzędnymi oraz tym, kiedy mogą być uruchamiane, zalecamy utworzenie dedykowanego klastra dla każdego eksperymentu i dopasowanie liczby max_concurrent_iterations w eksperymencie do liczby węzłów w klastrze. W ten sposób korzystasz jednocześnie ze wszystkich węzłów klastra przy takiej liczbie współbieżnych uruchomień podrzędnych i iteracji, jaką chcesz.
Skonfiguruj max_concurrent_iterations w konfiguracji limits. Jeśli parametr nie jest skonfigurowany, domyślnie w ramach eksperymentu dozwolone jest tylko jedno współbieżne podrzędne uruchomienie/iteracja. W przypadku instancji obliczeniowej można ustawić wartość max_concurrent_trials na taką samą jak liczba rdzeni w maszynie wirtualnej tej instancji obliczeniowej.
Eksplorowanie modeli i metryk
Rozwiązanie AutoML 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 rozwiązania AutoML.
W interfejsie użytkownika Azure Machine Learning na stronie modelu można wyświetlić podsumowanie cechowania i zrozumieć, jakie funkcje zostały dodane do określonego modelu. Możesz również wyświetlić hiperparametry używane podczas trenowania określonego modelu i wyświetlania i dostosowywania używanego kodu 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.
Wskazówka
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żyj AutoML w potokach
Aby użyć rozwiązania AutoML 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 rozwiązania AutoML. Następnie zarejestruj i zweryfikuj wynikowy najlepszy model.
Ten kod jest przykładowym potokiem ze składnikiem klasyfikacji automatycznego uczenia maszynowego i składnikiem polecenia, który wyświetla 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://registries/azureml/environments/sklearn-1.5/labels/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 rozwiązania AutoML do potoków, zobacz repozytorium przykładów.
Używanie rozwiązania 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 (terabajt) |
| 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 ograniczanie 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 właściwości training_mode i max_nodes obiektu zadania.
| Właściwości | Opis |
|---|---|
| tryb szkoleniowy | Wskazuje tryb trenowania: distributed lub non_distributed. Wartość domyślna to non_distributed. |
| maksymalna_liczba_węzłów | Liczba węzłów używanych do trenowania w każdej próbie. To ustawienie musi być większe lub równe 4. |
Poniższy przykładowy kod przedstawia przykład tych ustawień zadania klasyfikacji:
Uwaga
TabularTrainingMode to eksperymentalny interfejs API i może ulec zmianie w dowolnym momencie.
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. Próby modelu są uruchamiane sekwencyjnie, przy czym każda próba wykorzystuje 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żywać trenowania rozproszonego na potrzeby prognozowania, należy ustawić właściwości training_mode, enable_dnn_training, max_nodes oraz opcjonalnie max_concurrent_trials obiektu zadania.
| Właściwości | Opis |
|---|---|
| tryb szkoleniowy | Wskazuje tryb trenowania; distributed lub non_distributed. Wartość domyślna to non_distributed. |
| włącz_trening_dnn | Flaga umożliwiająca włączenie głębokich modeli sieci neuronowych. |
| maksymalna_liczba_równoczesnych_prób | Ta wartość to maksymalna liczba modeli próbnych do równoległego trenowania. Wartość domyślna to 1. |
| maksymalna_liczba_węzłów | 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 liczby węzłów wynoszącej $\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.