Monitorowanie wydajności modeli wdrożonych w środowisku produkcyjnym
DOTYCZY: Rozszerzenie interfejsu wiersza polecenia platformy Azure w wersji 2 (current)Zestaw PYTHON SDK azure-ai-ml v2 (bieżąca)
Dowiedz się, jak używać monitorowania modeli usługi Azure Machine Learning do ciągłego śledzenia wydajności modeli uczenia maszynowego w środowisku produkcyjnym. Monitorowanie modelu zapewnia szeroki wgląd w sygnały monitorowania i alerty dotyczące potencjalnych problemów. Podczas monitorowania sygnałów i metryk wydajności modeli w środowisku produkcyjnym można krytycznie ocenić związane z nimi zagrożenia i zidentyfikować martwe miejsca, które mogą negatywnie wpłynąć na twoją firmę.
Z tego artykułu dowiesz się, jak wykonywać następujące zadania:
- Konfigurowanie gotowego i zaawansowanego monitorowania modeli wdrożonych w punktach końcowych online usługi Azure Machine Learning
- Monitorowanie metryk wydajności modeli w środowisku produkcyjnym
- Monitorowanie modeli wdrożonych poza usługą Azure Machine Learning lub wdrożonych w punktach końcowych usługi Azure Machine Learning wsadowych
- Konfigurowanie monitorowania modelu przy użyciu niestandardowych sygnałów i metryk
- Interpretowanie wyników monitorowania
- Integrowanie monitorowania modelu usługi Azure Machine Learning z usługą Azure Event Grid
Wymagania wstępne
Przed wykonaniem kroków opisanych w tym artykule upewnij się, że masz następujące wymagania wstępne:
Interfejs wiersza polecenia platformy
ml
Azure i rozszerzenie interfejsu wiersza polecenia platformy Azure. Aby uzyskać więcej informacji, zobacz Instalowanie, konfigurowanie i używanie interfejsu wiersza polecenia (wersja 2).Ważne
W przykładach interfejsu wiersza polecenia w tym artykule założono, że używasz powłoki Bash (lub zgodnej). Na przykład z systemu Linux lub Podsystem Windows dla systemu Linux.
Obszar roboczy usługi Azure Machine Learning. Jeśli go nie masz, wykonaj kroki opisane w temacie Instalowanie, konfigurowanie i używanie interfejsu wiersza polecenia (wersja 2), aby go utworzyć.
Kontrola dostępu na podstawie ról platformy Azure (Azure RBAC): jest używana do udzielania dostępu do operacji w usłudze Azure Machine Learning. Aby wykonać kroki opisane w tym artykule, konto użytkownika musi mieć przypisaną rolę właściciela lub współautora dla obszaru roboczego usługi Azure Machine Learning lub rolę niestandardową zezwalającą na
Microsoft.MachineLearningServices/workspaces/onlineEndpoints/*
korzystanie z usługi . Aby uzyskać więcej informacji, zobacz Zarządzanie dostępem do obszaru roboczego usługi Azure Machine Learning.Aby monitorować model wdrożony w punkcie końcowym online usługi Azure Machine Learning (zarządzany punkt końcowy online lub punkt końcowy online platformy Kubernetes), upewnij się, że:
Masz już wdrożony model w punkcie końcowym online usługi Azure Machine Learning. Obsługiwane są zarówno zarządzane punkty końcowe online, jak i punkt końcowy online platformy Kubernetes. Jeśli nie masz modelu wdrożonego w punkcie końcowym online usługi Azure Machine Learning, zobacz Wdrażanie i ocenianie modelu uczenia maszynowego przy użyciu punktu końcowego online.
Włącz zbieranie danych dla wdrożenia modelu. Zbieranie danych można włączyć podczas kroku wdrażania dla punktów końcowych online usługi Azure Machine Learning. Aby uzyskać więcej informacji, zobacz Zbieranie danych produkcyjnych z modeli wdrożonych w punkcie końcowym w czasie rzeczywistym.
Aby monitorować model wdrożony w punkcie końcowym wsadowym usługi Azure Machine Learning lub wdrożony poza usługą Azure Machine Learning, upewnij się, że:
- Należy zebrać dane produkcyjne i zarejestrować je jako zasób danych usługi Azure Machine Learning.
- Stale aktualizuj zarejestrowany zasób danych na potrzeby monitorowania modelu.
- (Zalecane) Zarejestruj model w obszarze roboczym usługi Azure Machine Learning w celu śledzenia pochodzenia.
Ważne
Zaplanowano uruchamianie zadań monitorowania modelu w bezserwerowych pulach obliczeniowych platformy Spark z obsługą następujących typów wystąpień maszyn wirtualnych: Standard_E4s_v3
, , Standard_E8s_v3
Standard_E16s_v3
, Standard_E32s_v3
i Standard_E64s_v3
. Możesz wybrać typ wystąpienia maszyny wirtualnej z właściwością create_monitor.compute.instance_type
w konfiguracji YAML lub z listy rozwijanej w usłudze Azure Machine Learning Studio.
Konfigurowanie gotowego do użycia monitorowania modelu
Załóżmy, że model jest wdrażany w środowisku produkcyjnym w punkcie końcowym online usługi Azure Machine Learning i włączasz zbieranie danych w czasie wdrażania. W tym scenariuszu usługa Azure Machine Learning zbiera dane wnioskowania produkcyjnego i automatycznie przechowuje je w usłudze Microsoft Azure Blob Storage. Następnie możesz użyć monitorowania modelu usługi Azure Machine Learning, aby stale monitorować te dane wnioskowania produkcyjnego.
Możesz użyć interfejsu wiersza polecenia platformy Azure, zestawu SDK języka Python lub programu Studio na potrzeby gotowej konfiguracji monitorowania modelu. Konfiguracja monitorowania modelu gotowego do użycia zapewnia następujące możliwości monitorowania:
- Usługa Azure Machine Learning automatycznie wykrywa zestaw danych wnioskowania produkcyjnego skojarzony z wdrożeniem online usługi Azure Machine Learning i używa zestawu danych do monitorowania modelu.
- Zestaw danych referencyjnych porównania jest ustawiany jako ostatni, poprzedni zestaw danych wnioskowania produkcyjnego.
- Konfiguracja monitorowania automatycznie obejmuje i śledzi wbudowane sygnały monitorowania: dryf danych, dryf przewidywania i jakość danych. Dla każdego sygnału monitorowania usługa Azure Machine Learning używa:
- niedawny, poprzedni zestaw danych wnioskowania produkcyjnego jako zestaw danych referencyjnych porównania.
- inteligentne wartości domyślne metryk i progów.
- Zadanie monitorowania ma być uruchamiane codziennie o godzinie 3:15 (na przykład), aby uzyskać sygnały monitorowania i ocenić każdy wynik metryki względem odpowiadającego mu progu. Domyślnie po przekroczeniu dowolnego progu usługa Azure Machine Learning wysyła wiadomość e-mail z alertem do użytkownika, który skonfigurował monitor.
Monitorowanie modelu usługi Azure Machine Learning używa az ml schedule
do planowania zadania monitorowania. Monitor modelu gotowego do użycia można utworzyć przy użyciu następującego polecenia interfejsu wiersza polecenia i definicji YAML:
az ml schedule create -f ./out-of-box-monitoring.yaml
Poniższy kod YAML zawiera definicję monitorowania modelu gotowego do użycia.
# out-of-box-monitoring.yaml
$schema: http://azureml/sdk-2-0/Schedule.json
name: credit_default_model_monitoring
display_name: Credit default model monitoring
description: Credit default model monitoring setup with minimal configurations
trigger:
# perform model monitoring activity daily at 3:15am
type: recurrence
frequency: day #can be minute, hour, day, week, month
interval: 1 # #every day
schedule:
hours: 3 # at 3am
minutes: 15 # at 15 mins after 3am
create_monitor:
compute: # specify a spark compute for monitoring job
instance_type: standard_e4s_v3
runtime_version: "3.3"
monitoring_target:
ml_task: classification # model task type: [classification, regression, question_answering]
endpoint_deployment_id: azureml:credit-default:main # azureml endpoint deployment id
alert_notification: # emails to get alerts
emails:
- abc@example.com
- def@example.com
Konfigurowanie zaawansowanego monitorowania modelu
Usługa Azure Machine Learning oferuje wiele możliwości ciągłego monitorowania modeli. Zobacz Możliwości monitorowania modeli, aby uzyskać pełną listę tych możliwości. W wielu przypadkach należy skonfigurować monitorowanie modelu przy użyciu zaawansowanych funkcji monitorowania. W poniższych sekcjach skonfigurujesz monitorowanie modelu przy użyciu tych funkcji:
- Korzystanie z wielu sygnałów monitorowania dla szerokiego widoku.
- Użycie historycznych danych trenowania modelu lub danych walidacji jako zestawu danych referencyjnych porównania.
- Monitorowanie najważniejszych n najważniejszych funkcji i poszczególnych funkcji.
Konfigurowanie ważności funkcji
Ważność funkcji reprezentuje względne znaczenie każdej funkcji wejściowej do danych wyjściowych modelu. Na przykład temperature
może być ważniejsze od przewidywania modelu w porównaniu z elevation
wartością . Włączenie ważności funkcji może zapewnić wgląd w funkcje, których nie chcesz dryfować ani mieć problemów z jakością danych w środowisku produkcyjnym.
Aby włączyć ważność funkcji z dowolnymi sygnałami (takimi jak dryf danych lub jakość danych), należy podać następujące elementy:
- Zestaw danych trenowania
reference_data
jako zestaw danych. - Właściwość
reference_data.data_column_names.target_column
, która jest nazwą kolumny danych wyjściowych/przewidywania modelu.
Po włączeniu znaczenia funkcji zobaczysz znaczenie funkcji dla każdej funkcji, którą monitorujesz w interfejsie użytkownika programu Azure Machine Learning Model Monitoring Studio.
Do zaawansowanej konfiguracji monitorowania modelu można użyć interfejsu wiersza polecenia platformy Azure, zestawu SDK języka Python lub programu Studio.
Utwórz konfigurację zaawansowanego monitorowania modelu za pomocą następującego polecenia interfejsu wiersza polecenia i definicji YAML:
az ml schedule create -f ./advanced-model-monitoring.yaml
Poniższy kod YAML zawiera definicję zaawansowanego monitorowania modelu.
# advanced-model-monitoring.yaml
$schema: http://azureml/sdk-2-0/Schedule.json
name: fraud_detection_model_monitoring
display_name: Fraud detection model monitoring
description: Fraud detection model monitoring with advanced configurations
trigger:
# perform model monitoring activity daily at 3:15am
type: recurrence
frequency: day #can be minute, hour, day, week, month
interval: 1 # #every day
schedule:
hours: 3 # at 3am
minutes: 15 # at 15 mins after 3am
create_monitor:
compute:
instance_type: standard_e4s_v3
runtime_version: "3.3"
monitoring_target:
ml_task: classification
endpoint_deployment_id: azureml:credit-default:main
monitoring_signals:
advanced_data_drift: # monitoring signal name, any user defined name works
type: data_drift
# reference_dataset is optional. By default referece_dataset is the production inference data associated with Azure Machine Learning online endpoint
reference_data:
input_data:
path: azureml:credit-reference:1 # use training data as comparison reference dataset
type: mltable
data_context: training
data_column_names:
target_column: DEFAULT_NEXT_MONTH
features:
top_n_feature_importance: 10 # monitor drift for top 10 features
metric_thresholds:
numerical:
jensen_shannon_distance: 0.01
categorical:
pearsons_chi_squared_test: 0.02
advanced_data_quality:
type: data_quality
# reference_dataset is optional. By default reference_dataset is the production inference data associated with Azure Machine Learning online endpoint
reference_data:
input_data:
path: azureml:credit-reference:1
type: mltable
data_context: training
features: # monitor data quality for 3 individual features only
- SEX
- EDUCATION
metric_thresholds:
numerical:
null_value_rate: 0.05
categorical:
out_of_bounds_rate: 0.03
feature_attribution_drift_signal:
type: feature_attribution_drift
# production_data: is not required input here
# Please ensure Azure Machine Learning online endpoint is enabled to collected both model_inputs and model_outputs data
# Azure Machine Learning model monitoring will automatically join both model_inputs and model_outputs data and used it for computation
reference_data:
input_data:
path: azureml:credit-reference:1
type: mltable
data_context: training
data_column_names:
target_column: DEFAULT_NEXT_MONTH
metric_thresholds:
normalized_discounted_cumulative_gain: 0.9
alert_notification:
emails:
- abc@example.com
- def@example.com
Konfigurowanie monitorowania wydajności modelu
Monitorowanie modelu usługi Azure Machine Learning umożliwia śledzenie wydajności modeli w środowisku produkcyjnym przez obliczanie ich metryk wydajności. Obecnie obsługiwane są następujące metryki wydajności modelu:
W przypadku modeli klasyfikacji:
- Dokładność
- Dokładność
- Odwołaj
W przypadku modeli regresji:
- Średni błąd bezwzględny (MAE)
- Błąd średniokwadratowy (MSE)
- Błąd średniokwadratowy (RMSE)
Więcej wymagań wstępnych dotyczących monitorowania wydajności modelu
Aby skonfigurować sygnał wydajności modelu, musisz spełnić następujące wymagania:
Zawierają dane wyjściowe dla modelu produkcyjnego (przewidywania modelu) z unikatowym identyfikatorem dla każdego wiersza. Jeśli zbierasz dane produkcyjne za pomocą modułu zbierającego dane usługi Azure Machine Learning,
correlation_id
zostanie on dostarczony dla każdego żądania wnioskowania. W przypadku modułu zbierającego dane masz również możliwość rejestrowania własnego unikatowego identyfikatora z aplikacji.Uwaga
W przypadku monitorowania wydajności modelu usługi Azure Machine Learning zalecamy zarejestrowanie unikatowego identyfikatora we własnej kolumnie przy użyciu modułu zbierającego dane usługi Azure Machine Learning.
Mają podstawowe dane prawdy (wartości rzeczywiste) z unikatowym identyfikatorem dla każdego wiersza. Unikatowy identyfikator dla danego wiersza powinien być zgodny z unikatowym identyfikatorem danych wyjściowych modelu dla tego konkretnego żądania wnioskowania. Ten unikatowy identyfikator służy do łączenia zestawu danych podstawowej prawdy z danymi wyjściowymi modelu.
Bez posiadania podstawowych danych prawdy nie można wykonywać monitorowania wydajności modelu. Ze względu na to, że na poziomie aplikacji napotykane są podstawowe dane prawdy, odpowiedzialność za ich zbieranie w miarę ich udostępniania. Należy również zachować zasób danych w usłudze Azure Machine Learning, który zawiera te podstawowe dane prawdy.
(Opcjonalnie) Zestaw danych tabelarycznych ze wstępnie sprzężonym zestawem danych z danymi wyjściowymi modelu i danymi podstawy prawdy już połączonymi.
Monitorowanie wymagań dotyczących wydajności modelu podczas korzystania z modułu zbierającego dane
Jeśli używasz modułu zbierającego dane usługi Azure Machine Learning do zbierania danych wnioskowania produkcyjnego bez podawania własnego unikatowego identyfikatora dla każdego wiersza jako oddzielnej kolumny, correlationid
element zostanie automatycznie wygenerowany i uwzględniony w rejestrowanym obiekcie JSON. Jednak moduł zbierający dane będzie wsadowy wiersze , które są wysyłane w krótkim odstępie czasu. Wiersze wsadowe będą należeć do tego samego obiektu JSON i w ten sposób będą miały taki sam correlationid
kod .
Aby rozróżnić wiersze w tym samym obiekcie JSON, monitorowanie wydajności modelu usługi Azure Machine Learning używa indeksowania w celu określenia kolejności wierszy w obiekcie JSON. Jeśli na przykład trzy wiersze są wsadowe, a correlationid
test
wiersz , jeden z nich będzie miał identyfikator , wiersz drugi będzie miał identyfikator test_0
test_1
, a wiersz trzeci będzie miał identyfikator test_2
. Aby upewnić się, że zestaw danych podstawowej prawdy zawiera unikatowe identyfikatory pasujące do zebranych danych wyjściowych modelu wnioskowania produkcyjnego, upewnij się, że indeksujesz je correlationid
odpowiednio. Jeśli zarejestrowany obiekt JSON ma tylko jeden wiersz, będzie to correlationid
correlationid_0
.
Aby uniknąć używania tego indeksowania, zalecamy zarejestrowanie unikatowego identyfikatora we własnej kolumnie w ramce danych biblioteki pandas rejestrowanej za pomocą modułu zbierającego dane usługi Azure Machine Learning. Następnie w konfiguracji monitorowania modelu należy określić nazwę tej kolumny, aby połączyć dane wyjściowe modelu z danymi wyjściowymi podstawy. Tak długo, jak identyfikatory dla każdego wiersza w obu zestawach danych są takie same, monitorowanie modelu usługi Azure Machine Learning może wykonywać monitorowanie wydajności modelu.
Przykładowy przepływ pracy monitorowania wydajności modelu
Aby zrozumieć pojęcia związane z monitorowaniem wydajności modelu, rozważmy ten przykładowy przepływ pracy. Załóżmy, że wdrażasz model, aby przewidzieć, czy transakcje kart kredytowych są fałszywe, czy nie, możesz wykonać następujące kroki, aby monitorować wydajność modelu:
- Skonfiguruj wdrożenie tak, aby używało modułu zbierającego dane w celu zbierania danych wnioskowania produkcyjnego modelu (danych wejściowych i wyjściowych). Załóżmy, że dane wyjściowe są przechowywane w kolumnie
is_fraud
. - Dla każdego wiersza zebranych danych wnioskowania zarejestruj unikatowy identyfikator. Unikatowy identyfikator może pochodzić z aplikacji lub użyć unikatowego identyfikatora generowanego
correlationid
przez usługę Azure Machine Learning dla każdego zarejestrowanego obiektu JSON. - Później, gdy dane podstawowej prawdy (lub rzeczywistej)
is_fraud
staną się dostępne, są również rejestrowane i mapowane na ten sam unikatowy identyfikator, który został zarejestrowany przy użyciu danych wyjściowych modelu. - Te podstawowe dane prawdy
is_fraud
są również zbierane, utrzymywane i zarejestrowane w usłudze Azure Machine Learning jako zasób danych. - Utwórz sygnał monitorowania wydajności modelu, który łączy w wyniku wnioskowania produkcyjnego modelu i podstawowe zasoby danych prawdy przy użyciu unikatowych kolumn identyfikatorów.
- Na koniec oblicz metryki wydajności modelu.
Po spełnieniu wymagań wstępnych dotyczących monitorowania wydajności modelu można skonfigurować monitorowanie modelu przy użyciu następującego polecenia interfejsu wiersza polecenia i definicji YAML:
az ml schedule create -f ./model-performance-monitoring.yaml
Poniższy kod YAML zawiera definicję monitorowania modelu przy użyciu zebranych danych wnioskowania produkcyjnego.
$schema: http://azureml/sdk-2-0/Schedule.json
name: model_performance_monitoring
display_name: Credit card fraud model performance
description: Credit card fraud model performance
trigger:
type: recurrence
frequency: day
interval: 7
schedule:
hours: 10
minutes: 15
create_monitor:
compute:
instance_type: standard_e8s_v3
runtime_version: "3.3"
monitoring_target:
ml_task: classification
endpoint_deployment_id: azureml:loan-approval-endpoint:loan-approval-deployment
monitoring_signals:
fraud_detection_model_performance:
type: model_performance
production_data:
data_column_names:
prediction: is_fraud
correlation_id: correlation_id
reference_data:
input_data:
path: azureml:my_model_ground_truth_data:1
type: mltable
data_column_names:
actual: is_fraud
correlation_id: correlation_id
data_context: actuals
alert_enabled: true
metric_thresholds:
tabular_classification:
accuracy: 0.95
precision: 0.8
alert_notification:
emails:
- abc@example.com
Konfigurowanie monitorowania modelu przez wprowadzenie danych produkcyjnych do usługi Azure Machine Learning
Możesz również skonfigurować monitorowanie modelu dla modeli wdrożonych w punktach końcowych wsadowych usługi Azure Machine Learning lub wdrożonych poza usługą Azure Machine Learning. Jeśli nie masz wdrożenia, ale masz dane produkcyjne, możesz użyć tych danych do ciągłego monitorowania modelu. Aby monitorować te modele, musisz mieć możliwość:
- Zbieranie danych wnioskowania produkcyjnego z modeli wdrożonych w środowisku produkcyjnym.
- Zarejestruj dane wnioskowania produkcyjnego jako zasób danych usługi Azure Machine Learning i zapewnij ciągłe aktualizacje danych.
- Podaj niestandardowy składnik przetwarzania wstępnego danych i zarejestruj go jako składnik usługi Azure Machine Learning.
Jeśli dane nie są zbierane z modułem zbierającym dane, musisz podać niestandardowy składnik przetwarzania wstępnego danych. Bez tego niestandardowego składnika przetwarzania wstępnego danych system monitorowania modelu usługi Azure Machine Learning nie będzie wiedział, jak przetwarzać dane w formie tabelarycznej z obsługą okien czasowych.
Niestandardowy składnik przetwarzania wstępnego musi mieć następujące podpisy wejściowe i wyjściowe:
Dane wejściowe/wyjściowe | Nazwa podpisu | Type | Opis | Przykładowa wartość |
---|---|---|---|---|
input | data_window_start |
Literału | godzina rozpoczęcia okna danych w formacie ISO8601. | 2023-05-01T04:31:57.012Z |
input | data_window_end |
Literału | godzina zakończenia okna danych w formacie ISO8601. | 2023-05-01T04:31:57.012Z |
input | input_data |
uri_folder | Zebrane dane wnioskowania produkcyjnego zarejestrowane jako zasób danych usługi Azure Machine Learning. | azureml:myproduction_inference_data:1 |
output | preprocessed_data |
mltable | Tabelaryczny zestaw danych zgodny z podzbiorem schematu danych referencyjnych. |
Aby zapoznać się z przykładem niestandardowego składnika przetwarzania wstępnego danych, zobacz custom_preprocessing w repozytorium GitHub azuremml-examples.
Po spełnieniu poprzednich wymagań możesz skonfigurować monitorowanie modelu przy użyciu następującego polecenia interfejsu wiersza polecenia i definicji YAML:
az ml schedule create -f ./model-monitoring-with-collected-data.yaml
Poniższy kod YAML zawiera definicję monitorowania modelu przy użyciu zebranych danych wnioskowania produkcyjnego.
# model-monitoring-with-collected-data.yaml
$schema: http://azureml/sdk-2-0/Schedule.json
name: fraud_detection_model_monitoring
display_name: Fraud detection model monitoring
description: Fraud detection model monitoring with your own production data
trigger:
# perform model monitoring activity daily at 3:15am
type: recurrence
frequency: day #can be minute, hour, day, week, month
interval: 1 # #every day
schedule:
hours: 3 # at 3am
minutes: 15 # at 15 mins after 3am
create_monitor:
compute:
instance_type: standard_e4s_v3
runtime_version: "3.3"
monitoring_target:
ml_task: classification
endpoint_deployment_id: azureml:fraud-detection-endpoint:fraud-detection-deployment
monitoring_signals:
advanced_data_drift: # monitoring signal name, any user defined name works
type: data_drift
# define production dataset with your collected data
production_data:
input_data:
path: azureml:my_production_inference_data_model_inputs:1 # your collected data is registered as Azure Machine Learning asset
type: uri_folder
data_context: model_inputs
pre_processing_component: azureml:production_data_preprocessing:1
reference_data:
input_data:
path: azureml:my_model_training_data:1 # use training data as comparison baseline
type: mltable
data_context: training
data_column_names:
target_column: is_fraud
features:
top_n_feature_importance: 20 # monitor drift for top 20 features
metric_thresholds:
numberical:
jensen_shannon_distance: 0.01
categorical:
pearsons_chi_squared_test: 0.02
advanced_prediction_drift: # monitoring signal name, any user defined name works
type: prediction_drift
# define production dataset with your collected data
production_data:
input_data:
path: azureml:my_production_inference_data_model_outputs:1 # your collected data is registered as Azure Machine Learning asset
type: uri_folder
data_context: model_outputs
pre_processing_component: azureml:production_data_preprocessing:1
reference_data:
input_data:
path: azureml:my_model_validation_data:1 # use training data as comparison reference dataset
type: mltable
data_context: validation
metric_thresholds:
categorical:
pearsons_chi_squared_test: 0.02
alert_notification:
emails:
- abc@example.com
- def@example.com
Konfigurowanie monitorowania modelu przy użyciu niestandardowych sygnałów i metryk
Dzięki monitorowaniu modelu usługi Azure Machine Learning można zdefiniować sygnał niestandardowy i zaimplementować dowolną wybraną metrykę do monitorowania modelu. Ten sygnał niestandardowy można zarejestrować jako składnik usługi Azure Machine Learning. Gdy zadanie monitorowania modelu usługi Azure Machine Learning jest uruchamiane zgodnie z określonym harmonogramem, oblicza metryki zdefiniowane w ramach sygnału niestandardowego, podobnie jak w przypadku wstępnie utworzonych sygnałów (dryfu danych, dryfu przewidywania i jakości danych).
Aby skonfigurować niestandardowy sygnał do użycia na potrzeby monitorowania modelu, należy najpierw zdefiniować sygnał niestandardowy i zarejestrować go jako składnik usługi Azure Machine Learning. Składnik usługi Azure Machine Learning musi mieć następujące podpisy wejściowe i wyjściowe:
Podpis wejściowy składnika
Element wejściowy składnika DataFrame powinien zawierać następujące elementy:
- Element
mltable
z przetworzonymi danymi ze składnika przetwarzania wstępnego - Dowolna liczba literałów, z których każda reprezentuje zaimplementowaną metryki w ramach niestandardowego składnika sygnału. Jeśli na przykład zaimplementowano metryki ,
std_deviation
musisz wprowadzić dane wejściowe dla elementustd_deviation_threshold
. Ogólnie rzecz biorąc, powinna istnieć jedna wartość wejściowa na metryę o nazwie<metric_name>_threshold
.
Nazwa podpisu | Type | Opis | Przykładowa wartość |
---|---|---|---|
production_data | mltable | Tabelaryczny zestaw danych zgodny z podzbiorem schematu danych referencyjnych. | |
std_deviation_threshold | Literału | Odpowiedni próg dla zaimplementowanego metryki. | 2 |
Podpis wyjściowy składnika
Port wyjściowy składnika powinien mieć następujący podpis.
Nazwa podpisu | Type | Opis |
---|---|---|
signal_metrics | mltable | Tabela mltable zawierająca obliczone metryki. Schemat jest zdefiniowany w następnej sekcji signal_metrics schematu. |
schemat signal_metrics
Ramka danych wyjściowych składnika powinna zawierać cztery kolumny: group
, , metric_name
metric_value
i threshold_value
.
Nazwa podpisu | Type | Opis | Przykładowa wartość |
---|---|---|---|
grupa | Literału | Grupowanie logiczne najwyższego poziomu do zastosowania do tej metryki niestandardowej. | TRANSACTIONAMOUNT |
metric_name | Literału | Nazwa metryki niestandardowej. | std_deviation |
metric_value | numeryczny | Wartość metryki niestandardowej. | 44,896.082 |
threshold_value | numeryczny | Próg dla metryki niestandardowej. | 2 |
W poniższej tabeli przedstawiono przykładowe dane wyjściowe z niestandardowego składnika sygnału, który oblicza metrykę std_deviation
:
grupa | metric_value | metric_name | threshold_value |
---|---|---|---|
TRANSACTIONAMOUNT | 44,896.082 | std_deviation | 2 |
LOCALHOUR | 3.983 | std_deviation | 2 |
TRANSACTIONAMOUNTUSD | 54,004.902 | std_deviation | 2 |
DIGITALITEMCOUNT | 7.238 | std_deviation | 2 |
PHYSICALITEMCOUNT | 5.509 | std_deviation | 2 |
Aby wyświetlić przykładową niestandardową definicję składnika sygnału i kod obliczeń metryk, zobacz custom_signal w repozytorium azureml-examples.
Po spełnieniu wymagań dotyczących używania niestandardowych sygnałów i metryk możesz skonfigurować monitorowanie modelu przy użyciu następującego polecenia interfejsu wiersza polecenia i definicji YAML:
az ml schedule create -f ./custom-monitoring.yaml
Poniższy kod YAML zawiera definicję monitorowania modelu za pomocą sygnału niestandardowego. Niektóre kwestie, które należy zauważyć w kodzie:
- Przyjęto założenie, że składnik został już utworzony i zarejestrowany przy użyciu niestandardowej definicji sygnału w usłudze Azure Machine Learning.
- Element
component_id
zarejestrowanego niestandardowego składnika sygnału toazureml:my_custom_signal:1.0.0
. - Jeśli dane zostały zebrane za pomocą modułu zbierającego dane, możesz pominąć
pre_processing_component
właściwość . Jeśli chcesz użyć składnika przetwarzania wstępnego do wstępnego przetwarzania danych produkcyjnych, które nie są zbierane przez moduł zbierający dane, możesz go określić.
# custom-monitoring.yaml
$schema: http://azureml/sdk-2-0/Schedule.json
name: my-custom-signal
trigger:
type: recurrence
frequency: day # can be minute, hour, day, week, month
interval: 7 # #every day
create_monitor:
compute:
instance_type: "standard_e4s_v3"
runtime_version: "3.3"
monitoring_signals:
customSignal:
type: custom
component_id: azureml:my_custom_signal:1.0.0
input_data:
production_data:
input_data:
type: uri_folder
path: azureml:my_production_data:1
data_context: test
data_window:
lookback_window_size: P30D
lookback_window_offset: P7D
pre_processing_component: azureml:custom_preprocessor:1.0.0
metric_thresholds:
- metric_name: std_deviation
threshold: 2
alert_notification:
emails:
- abc@example.com
Interpretowanie wyników monitorowania
Po skonfigurowaniu monitora modelu i zakończeniu pierwszego uruchomienia możesz wrócić do karty Monitorowanie w usłudze Azure Machine Learning Studio, aby wyświetlić wyniki.
W widoku głównym Monitorowanie wybierz nazwę monitora modelu, aby wyświetlić stronę Przegląd monitorowania. Na tej stronie przedstawiono odpowiedni model, punkt końcowy i wdrożenie wraz ze szczegółami dotyczącymi skonfigurowanych sygnałów. Następny obraz przedstawia pulpit nawigacyjny monitorowania, który zawiera sygnały dryfu danych i jakości danych. W zależności od skonfigurowanych sygnałów monitorowania pulpit nawigacyjny może wyglądać inaczej.
Zapoznaj się z sekcją Powiadomienia pulpitu nawigacyjnego, aby zobaczyć, dla każdego sygnału, który funkcje naruszyły skonfigurowany próg dla odpowiednich metryk:
Wybierz data_drift, aby przejść do strony szczegółów dryfu danych. Na stronie szczegółów można zobaczyć wartość metryki dryfu danych dla każdej funkcji liczbowej i podzielonej na kategorie uwzględnionej w konfiguracji monitorowania. Gdy monitor ma więcej niż jeden przebieg, zobaczysz linię trendu dla każdej funkcji.
Aby wyświetlić szczegółowo poszczególne funkcje, wybierz nazwę funkcji, aby wyświetlić dystrybucję produkcyjną w porównaniu z dystrybucją referencyjną. Ten widok umożliwia również śledzenie dryfu w czasie dla tej konkretnej funkcji.
Wróć do pulpitu nawigacyjnego monitorowania i wybierz pozycję data_quality , aby wyświetlić stronę sygnału jakości danych. Na tej stronie można zobaczyć współczynniki wartości null, wartości poza granicami i współczynniki błędów typu danych dla każdej monitorowanej funkcji.
Monitorowanie modelu jest procesem ciągłym. Dzięki monitorowaniu modelu usługi Azure Machine Learning można skonfigurować wiele sygnałów monitorowania w celu uzyskania szerokiego wglądu w wydajność modeli w środowisku produkcyjnym.
Integrowanie monitorowania modelu usługi Azure Machine Learning z usługą Azure Event Grid
Zdarzenia generowane przez monitorowanie modelu usługi Azure Machine Learning umożliwiają konfigurowanie aplikacji, procesów lub przepływów pracy ciągłej integracji/ciągłego wdrażania za pomocą usługi Azure Event Grid. Zdarzenia można używać za pośrednictwem różnych programów obsługi zdarzeń, takich jak Azure Event Hubs, Azure Functions i Logic Apps. Na podstawie dryfu wykrytego przez monitory można podjąć działania programowo, takie jak skonfigurowanie potoku uczenia maszynowego w celu ponownego wytrenowania modelu i jego ponownego wdrożenia.
Aby rozpocząć integrowanie monitorowania modelu usługi Azure Machine Learning z usługą Event Grid:
Wykonaj kroki opisane w temacie Konfigurowanie w witrynie Azure Portal. Nadaj subskrypcji zdarzeń nazwę, taką jak MonitoringEvent, i wybierz tylko pole Stan uruchomienia zmienione w obszarze Typy zdarzeń.
Ostrzeżenie
Pamiętaj, aby wybrać pozycję Stan uruchomienia zmieniony dla typu zdarzenia. Nie wybieraj pozycji Wykryto dryf zestawu danych, ponieważ dotyczy to dryfu danych w wersji 1, a nie monitorowania modelu usługi Azure Machine Learning.
Wykonaj kroki opisane w temacie Filtrowanie i subskrybowanie zdarzeń , aby skonfigurować filtrowanie zdarzeń dla danego scenariusza. Przejdź do karty Filtry i dodaj następujący klucz, operator i wartość w obszarze Filtry zaawansowane:
- Klucz:
data.RunTags.azureml_modelmonitor_threshold_breached
- Wartość: nie powiodło się z powodu co najmniej jednej funkcji naruszającej progi metryk
- Operator: Ciąg zawiera
Dzięki temu filtrowi zdarzenia są generowane, gdy stan uruchomienia zmieni się (z Ukończono na Niepowodzenie lub Zakończone) dla dowolnego monitora w obszarze roboczym usługi Azure Machine Learning.
- Klucz:
Aby filtrować na poziomie monitorowania, użyj następującego klucza, operatora i wartości w obszarze Filtry zaawansowane:
- Klucz:
data.RunTags.azureml_modelmonitor_threshold_breached
- Wartość:
your_monitor_name_signal_name
- Operator: Ciąg zawiera
Upewnij się, że
your_monitor_name_signal_name
jest to nazwa sygnału w określonym monitorze, dla którego chcesz filtrować zdarzenia. Na przykładcredit_card_fraud_monitor_data_drift
. Aby ten filtr działał, ten ciąg musi być zgodny z nazwą sygnału monitorowania. Należy nazwać sygnał zarówno nazwą monitora, jak i nazwą sygnału dla tego przypadku.- Klucz:
Po zakończeniu konfiguracji subskrypcji zdarzeń wybierz żądany punkt końcowy, który będzie służyć jako program obsługi zdarzeń, taki jak Azure Event Hubs.
Po przechwyceniu zdarzeń można je wyświetlić na stronie punktu końcowego:
Zdarzenia można również wyświetlić na karcie Metryki usługi Azure Monitor:
Powiązana zawartość
- Zbieranie danych z modeli w środowisku produkcyjnym (wersja zapoznawcza)
- Zbieranie danych produkcyjnych z modeli wdrożonych na potrzeby wnioskowania w czasie rzeczywistym
- Harmonogram schematu YAML dla monitorowania modelu (wersja 2) interfejsu wiersza polecenia (wersja zapoznawcza)
- Monitorowanie modelu dla generowanych aplikacji sztucznej inteligencji