Udostępnij za pomocą


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)

W usłudze Azure Machine Learning można używać monitorowania modeli do ciągłego śledzenia wydajności modeli uczenia maszynowego w środowisku produkcyjnym. Monitorowanie modelu zapewnia szeroki zakres sygnałów obserwacyjnych. Ostrzega również o potencjalnych problemach. Podczas monitorowania sygnałów i metryk wydajności modeli w środowisku produkcyjnym można ocenić krytyczne ryzyko związane z modelami. Możesz również zidentyfikować martwe punkty, które mogą niekorzystnie wpłynąć na Twoją firmę.

W tym artykule przedstawiono sposób wykonywania następujących zadań:

  • Konfigurowanie wbudowanego i zaawansowanego monitorowania modeli wdrożonych w punktach końcowych online 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 niestandardowych sygnałów i metryk do użycia w monitorowaniu modelu
  • Interpretowanie wyników monitorowania
  • Integrowanie monitorowania modelu usługi Azure Machine Learning z usługą Azure Event Grid

Wymagania wstępne

  • Konto użytkownika, które ma co najmniej jedną z następujących ról kontroli dostępu na podstawie ról (RBAC) platformy Azure:

    • Rola właściciela obszaru roboczego usługi Azure Machine Learning
    • Rola Współautor dla obszaru roboczego usługi Azure Machine Learning
    • Rola niestandardowa, która ma Microsoft.MachineLearningServices/workspaces/onlineEndpoints/* uprawnienia

    Aby uzyskać więcej informacji, zobacz Zarządzanie dostępem do obszarów roboczych usługi Azure Machine Learning.

  • Aby monitorować punkt końcowy online zarządzany przez usługę Azure Machine Learning lub punkt końcowy online platformy Kubernetes:

  • Aby monitorować model wdrożony w punkcie końcowym wsadowym usługi Azure Machine Learning lub wdrożony poza usługą Azure Machine Learning:

    • Sposób zbierania danych produkcyjnych i rejestrowania ich jako zasobu danych usługi Azure Machine Learning
    • Metoda ciągłego aktualizowania zarejestrowanego zasobu danych na potrzeby monitorowania modelu
    • (Zalecane) Rejestracja modelu w obszarze roboczym usługi Azure Machine Learning na potrzeby śledzenia pochodzenia

Konfigurowanie bezserwerowej puli obliczeniowej platformy Spark

Zaplanowano uruchamianie zadań monitorowania modelu w bezserwerowych pulach obliczeniowych platformy Spark. Obsługiwane są następujące typy wystąpień usługi Azure Virtual Machines:

  • Standard_E4s_v3
  • Standard_E8s_v3
  • Standard_E16s_v3
  • Standard_E32s_v3
  • Standardowa_E64s_v3

Aby określić typ wystąpienia maszyny wirtualnej podczas wykonywania procedur opisanych w tym artykule, wykonaj następujące czynności:

Podczas tworzenia monitora przy użyciu interfejsu wiersza polecenia platformy Azure należy użyć pliku konfiguracji YAML. W tym pliku ustaw create_monitor.compute.instance_type wartość na typ, którego chcesz użyć.

Konfigurowanie gotowego do użycia monitorowania modelu

Rozważmy scenariusz, w którym wdrażasz model w środowisku produkcyjnym w punkcie końcowym online usługi Azure Machine Learning i włączasz zbieranie danych w czasie wdrażania. W takim przypadku usługa Azure Machine Learning zbiera dane wnioskowania produkcyjnego i automatycznie przechowuje je w usłudze Azure Blob Storage. Monitorowanie modelu usługi Azure Machine Learning umożliwia ciągłe monitorowanie tych danych 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 zasób danych wnioskowania produkcyjnego skojarzony z wdrożeniem online usługi Azure Machine Learning i używa zasobu danych do monitorowania modelu.
  • Zasób danych referencyjnych porównania jest ustawiany jako ostatni, poprzedni zasób danych wnioskowania produkcyjnego.
  • Konfiguracja monitorowania automatycznie obejmuje i śledzi następujące wbudowane sygnały monitorowania: dryf danych, dryf przewidywania i jakość danych. Dla każdego sygnału monitorowania usługa Azure Machine Learning używa:
    • Najnowszy zasób danych dotyczący wnioskowania z wcześniejszej produkcji jako zasób danych referencyjnych do porównań.
    • Inteligentne wartości domyślne metryk i progów.
  • Zadanie monitorowania jest skonfigurowane do uruchamiania zgodnie z regularnym harmonogramem. To zadanie przechwytuje sygnały monitorujące i ocenia każdy rezultat metryki względem odpowiedniego 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.

Aby skonfigurować wbudowane monitorowanie modelu, wykonaj następujące kroki.

W interfejsie wiersza polecenia platformy Azure używa się az ml schedule do zaplanowania zadania monitorującego.

  1. Utwórz definicję monitorowania w pliku YAML. Aby zobaczyć przykładową definicję gotową do użycia, zapoznaj się z następującym kodem YAML, który jest również dostępny w repozytorium azureml-examples.

    Przed użyciem tej definicji dostosuj wartości, aby dopasować je do środowiska. Dla endpoint_deployment_id użyj wartości w formacie azureml:<endpoint-name>:<deployment-name>.

    # 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.4"
    
      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
    
  2. Uruchom następujące polecenie, aby utworzyć model:

    az ml schedule create -f ./out-of-box-monitoring.yaml
    

Konfigurowanie zaawansowanego monitorowania modelu

Usługa Azure Machine Learning oferuje wiele możliwości ciągłego monitorowania modeli. Aby uzyskać kompleksową listę tych funkcji, zobacz Możliwości monitorowania modeli. W wielu przypadkach należy skonfigurować monitorowanie modelu, które obsługuje zaawansowane zadania monitorowania. Poniższa sekcja zawiera kilka przykładów zaawansowanego monitorowania:

  • Korzystanie z wielu sygnałów monitorowania dla szerokiego widoku
  • Użycie historycznych danych trenowania modelu lub danych walidacji jako zasobu danych referencyjnych porównania
  • Monitorowanie 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 temperatura może być ważniejsza dla prognozy modelu niż wysokość. Po włączeniu istotności cech możesz zapewnić widoczność cech, które nie powinny powodować dryfowania lub problemów z jakością danych w produkcji.

Aby włączyć ważność cechy z dowolnymi sygnałami, takimi jak między innymi dryf danych lub jakość danych, należy podać następujące elementy:

  • Twój zasób danych szkoleniowych jako reference_data zasób danych.
  • Właściwość reference_data.data_column_names.target_column , która jest nazwą kolumny wyjściowej modelu lub kolumny przewidywania.

Po włączeniu ważności cechy zobaczysz ważność cechy dla każdej cechy, którą monitorujesz w usłudze Azure Machine Learning Studio.

Alerty można włączać lub wyłączać dla każdego sygnału, ustawiając alert_enabled właściwość podczas korzystania z zestawu SDK języka Python lub interfejsu wiersza polecenia platformy Azure.

Do skonfigurowania zaawansowanego monitorowania modelu można użyć interfejsu wiersza polecenia platformy Azure, zestawu SDK języka Python lub programu Studio.

  1. Utwórz definicję monitorowania w pliku YAML. Aby zapoznać się z przykładową definicją zaawansowaną, zobacz następujący kod YAML, który jest również dostępny w repozytorium azureml-examples.

    Przed użyciem tej definicji dostosuj następujące ustawienia i inne, aby spełniały potrzeby środowiska:

    • Dla endpoint_deployment_id użyj wartości w formacie azureml:<endpoint-name>:<deployment-name>.
    • W odniesieniu do path sekcji danych wejściowych referencyjnych, należy użyć wartości w formacie azureml:<reference-data-asset-name>:<version>.
    • W przypadku target_columnelementu użyj nazwy kolumny wyjściowej zawierającej wartości przewidywane przez model, na przykład DEFAULT_NEXT_MONTH.
    • W przypadku features, wymień funkcje, takie jak SEX, EDUCATION i AGE, które mają być używane w zaawansowanym sygnale jakości danych.
    • W obszarze emailswyświetl listę adresów e-mail, których chcesz użyć w przypadku powiadomień.
    # 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.4"
    
      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
          alert_enabled: true
          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
          alert_enabled: true
          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
          alert_enabled: true
          metric_thresholds:
            normalized_discounted_cumulative_gain: 0.9
      
      alert_notification:
        emails:
          - abc@example.com
          - def@example.com
    
  2. Uruchom następujące polecenie, aby utworzyć model:

    az ml schedule create -f ./advanced-model-monitoring.yaml
    

Konfigurowanie monitorowania wydajności modelu

W przypadku korzystania z monitorowania modelu usługi Azure Machine Learning można śledzić wydajność modeli w środowisku produkcyjnym, obliczając ich metryki 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)

Wymagania wstępne dotyczące monitorowania wydajności modelu

  • Dane wyjściowe dla modelu produkcyjnego (przewidywania modelu) z unikatowym identyfikatorem dla każdego wiersza. Jeśli używasz modułu zbierającego dane Azure Machine Learning do zbierania danych produkcyjnych, dla każdego żądania wnioskowania zostanie Ci podany identyfikator korelacji. Moduł zbierający dane oferuje również możliwość rejestrowania własnego unikatowego identyfikatora z aplikacji.

    Uwaga

    W przypadku monitorowania wydajności modelu usługi Azure Machine Learning zalecamy, aby użyć kolektora danych Azure Machine Learning do rejestrowania unikatowego identyfikatora we własnej kolumnie.

  • Dane referencyjne (wartości rzeczywiste) z unikatowym identyfikatorem dla każdego wiersza. Unikatowy identyfikator 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 danych rzeczywistych z danymi wyjściowymi modelu.

    Jeżeli nie masz danych rzeczywistych, nie możesz przeprowadzać monitorowania efektywności modelu. Rzeczywiste dane są napotykane na poziomie aplikacji, więc Twoim obowiązkiem jest ich zbieranie, gdy będą dostępne. Należy również zachować zasób danych w usłudze Azure Machine Learning, który zawiera te podstawowe dane prawdy.

  • (Opcjonalnie) Wstępnie złączony zasób danych tabelarycznych z wynikami modelu i danymi rzeczywistymi już połączonymi razem.

Wymagania dotyczące monitorowania wydajności modelu podczas korzystania z modułu zbierającego dane

Usługa Azure Machine Learning generuje identyfikator korelacji dla Użytkownika, gdy spełniasz następujące kryteria:

  • Używasz kolektora danych Azure Machine Learning do zbierania danych dotyczących produkcji i wnioskowania.
  • Nie podajesz własnego unikatowego identyfikatora dla każdego wiersza jako oddzielnej kolumny.

Wygenerowany identyfikator korelacji jest uwzględniony w rejestrowanym obiekcie JSON. Moduł zbierający dane grupuje jednak wiersze wysyłane w krótkim odstępie czasu. W tym samym obiekcie JSON znajdują się wiersze wsadowe. W każdym obiekcie wszystkie wiersze mają ten sam identyfikator korelacji.

Aby rozróżnić wiersze w obiekcie JSON, monitorowanie wydajności modelu usługi Azure Machine Learning używa indeksowania w celu określenia kolejności wierszy w obiekcie. Jeśli na przykład partia zawiera trzy wiersze, a identyfikator korelacji to test, pierwszy wiersz ma identyfikator test_0, drugi wiersz ma identyfikator test_1, a trzeci wiersz ma identyfikator test_2. Aby dopasować unikatowe identyfikatory danych podstawowych do identyfikatorów zebranych danych wyjściowych modelu produkcyjnego wnioskowania, należy odpowiednio zastosować indeks do każdego identyfikatora korelacji. Jeśli zarejestrowany obiekt JSON ma tylko jeden wiersz, użyj correlationid_0 jako wartości correlationid.

Aby uniknąć używania tego indeksowania, zalecamy zarejestrowanie unikalnego identyfikatora w oddzielnej kolumnie. Umieść tę kolumnę w ramce danych pandas, zapisywanej przez moduł zbierania danych usługi Azure Machine Learning. W konfiguracji monitorowania modelu można następnie określić nazwę tej kolumny, aby połączyć dane wyjściowe modelu z danymi rzeczywistymi. Tak długo, jak identyfikatory wierszy w obu zasobach danych są takie same, monitorowanie modelu Azure Machine Learning może przeprowadzać monitorowanie wydajności modeli.

Przykładowy przepływ pracy monitorowania wydajności modelu

Aby zrozumieć pojęcia związane z monitorowaniem wydajności modelu, rozważ poniższy przykładowy przepływ pracy. Dotyczy scenariusza, w którym wdrażasz model w celu przewidywania, czy transakcje kart kredytowych są fałszywe:

  1. 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). Zapisz dane wyjściowe w kolumnie o nazwie is_fraud.
  2. Dla każdego wiersza zebranych danych wnioskowania zarejestruj unikatowy identyfikator. Unikatowy identyfikator może pochodzić z aplikacji lub użyć correlationid wartości, którą usługa Azure Machine Learning unikatowo generuje dla każdego zarejestrowanego obiektu JSON.
  3. Gdy dostępne są dane rzeczywiste, is_fraud zarejestruj i zamapuj każdy wiersz na ten sam unikatowy identyfikator, który jest logowany dla odpowiedniego wiersza w danych wyjściowych modelu.
  4. Zarejestruj zasób danych w usłudze Azure Machine Learning i użyj go do zbierania oraz zarządzania danymi prawdziwymi is_fraud.
  5. Utwórz sygnał monitorowania wydajności modelu, który wykorzystuje unikatowe kolumny identyfikatorów do łączenia wyników inferencji modelu z rzeczywistymi danymi prawdziwymi.
  6. Oblicz metryki wydajności modelu.

Po spełnieniu wymagań wstępnych dotyczących monitorowania wydajności modelu wykonaj następujące kroki, aby skonfigurować monitorowanie modelu:

  1. Utwórz definicję monitorowania w pliku YAML. Poniższa przykładowa specyfikacja definiuje monitorowanie modelu przy użyciu danych wnioskowania produkcyjnego. Przed użyciem tej definicji dostosuj następujące ustawienia i inne, aby spełniały potrzeby środowiska:

    • Dla endpoint_deployment_id użyj wartości w formacie azureml:<endpoint-name>:<deployment-name>.
    • Dla każdej path wartości w sekcji danych wejściowych użyj wartości w formacie azureml:<data-asset-name>:<version>.
    • prediction Dla wartości użyj nazwy kolumny wyjściowej zawierającej wartości przewidywane przez model.
    • actual Dla wartości użyj nazwy kolumny podstawy prawdy zawierającej rzeczywiste wartości, które próbuje przewidzieć model.
    • Dla wartości correlation_id użyj nazw kolumn, które są wykorzystywane do łączenia danych wyjściowych z danymi rzeczywistymi.
    • W obszarze emailswyświetl listę adresów e-mail, których chcesz użyć w przypadku powiadomień.
    # model-performance-monitoring.yaml
    $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:
            input_data:
              path: azureml:credit-default-main-model_outputs:1
              type: mltable
            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: ground_truth
          alert_enabled: true
          metric_thresholds: 
            tabular_classification:
              accuracy: 0.95
              precision: 0.8
      alert_notification: 
          emails: 
            - abc@example.com
    
  2. Uruchom następujące polecenie, aby utworzyć model:

    az ml schedule create -f ./model-performance-monitoring.yaml
    

Konfigurowanie monitorowania modelu danych produkcyjnych

Można również monitorować modele, które wdrażasz do wsadowych punktów końcowych Azure Machine Learning lub które są wdrażane 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 nie używasz modułu zbierającego dane do zbierania danych. Bez tego niestandardowego składnika przetwarzania wstępnego danych system monitorowania modelu usługi Azure Machine Learning nie może przetworzyć danych w formie tabelarycznej, która obsługuje przedziały czasu.

Niestandardowy składnik przetwarzania wstępnego musi mieć następujące podpisy wejściowe i wyjściowe:

Dane wejściowe lub wyjściowe Nazwa podpisu Typ Opis Przykładowa wartość
dane wejściowe data_window_start Literału Godzina rozpoczęcia okna danych w formacie ISO8601 2023-05-01T04:31:57.012Z
dane wejściowe data_window_end Literału Godzina zakończenia okna danych w formacie ISO8601 2023-05-01T04:31:57.012Z
dane wejściowe input_data uri_folder Zebrane dane wnioskowania produkcyjnego zarejestrowane jako zasób danych usługi Azure Machine Learning azureml:myproduction_dane_inferencyjne:1
We/Wy preprocessed_data mltable Zasób danych tabelarycznych pasujący do podzestawu schematu danych referencyjnych

Aby zapoznać się z przykładem niestandardowego składnika przetwarzania wstępnego danych, zobacz custom_preprocessing w repozytorium GitHub azuremml-examples.

Aby uzyskać instrukcje dotyczące rejestrowania składnika usługi Azure Machine Learning, zobacz Rejestrowanie składnika w obszarze roboczym.

Po zarejestrowaniu danych produkcyjnych i składnika przetwarzania wstępnego można skonfigurować monitorowanie modelu.

  1. Utwórz plik YAML definicji monitorowania podobny do poniższego. Przed użyciem tej definicji dostosuj następujące ustawienia i inne, aby spełniały potrzeby środowiska:

    • Dla endpoint_deployment_id użyj wartości w formacie azureml:<endpoint-name>:<deployment-name>.
    • Dla pre_processing_component użyj wartości w formacie azureml:<component-name>:<component-version>. Określ dokładną wersję, taką jak 1.0.0, a nie 1.
    • Dla każdego pathelementu użyj wartości w formacie azureml:<data-asset-name>:<version>.
    • target_column Dla wartości użyj nazwy kolumny wyjściowej zawierającej wartości przewidywane przez model.
    • W obszarze emailswyświetl listę adresów e-mail, których chcesz użyć w przypadku powiadomień.
    # 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.4"
      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.0.0
          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
          alert_enabled: true
          metric_thresholds:
            numerical:
              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.0.0
          reference_data:
            input_data:
              path: azureml:my_model_validation_data:1 # use training data as comparison reference dataset
              type: mltable
            data_context: validation
          alert_enabled: true
          metric_thresholds:
            categorical:
              pearsons_chi_squared_test: 0.02
      
      alert_notification:
        emails:
          - abc@example.com
          - def@example.com
    
  2. Uruchom następujące polecenie, aby utworzyć model.

    az ml schedule create -f ./model-monitoring-with-collected-data.yaml
    

Konfigurowanie monitorowania modelu przy użyciu niestandardowych sygnałów i metryk

W przypadku korzystania z monitorowania modelu usługi Azure Machine Learning można zdefiniować niestandardowy sygnał i zaimplementować dowolną wybraną metrykę do monitorowania modelu. Możesz zarejestrować niestandardowy sygnał jako składnik usługi Azure Machine Learning. Gdy zadanie monitorowania modelu jest uruchamiane zgodnie z określonym harmonogramem, oblicza metryki zdefiniowane w ramach sygnału niestandardowego, podobnie jak w przypadku dryfu danych, dryfu przewidywania i wstępnie zdefiniowanych sygnałów 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

Ramka danych wejściowych składnika powinna zawierać następujące elementy:

  • Struktura zawierająca dane przetworzone przez mltable komponent 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 zaimplementujesz metrykę std_deviation, potrzebujesz danych wejściowych dla metryki std_deviation_threshold. Generalnie, powinno istnieć jedno dane wejściowe o nazwie <metric-name>_threshold na każdą metrykę.
Nazwa podpisu Typ Opis Przykładowa wartość
production_data mltable Zasób danych tabelarycznych pasujący do podzestawu schematu danych referencyjnych
std_deviation_threshold Literału Odpowiedni próg dla zaimplementowanej metryki 2

Podpis wyjściowy składnika

Port wyjściowy składnika powinien mieć następujący podpis:

Nazwa podpisu Typ Opis
signal_metrics mltable Struktura mltable zawierająca obliczone metryki. Aby zapoznać się ze schematem tego podpisu, zobacz następną sekcję signal_metrics schematu.

schemat signal_metrics

Ramka danych wyjściowych składnika powinna zawierać cztery kolumny: group, , metric_namemetric_valuei threshold_value.

Nazwa podpisu Typ Opis Przykładowa wartość
group Literału Grupowanie logiczne najwyższego poziomu, które należy zastosować do metryki niestandardowej KWOTA TRANSAKCJI
metric_name Literału Nazwa metryki niestandardowej odchylenie_standardowe
metric_value numeryczny Wartość metryki niestandardowej 44,896.082
threshold_value numeryczny Próg 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 wartość progowa
KWOTA TRANSAKCJI 44,896.082 odchylenie_standardowe 2
LOCALHOUR 3.983 odchylenie_standardowe 2
KWOTATRANSAKCJIUSD 54 004,902 odchylenie_standardowe 2
DIGITALITEMCOUNT 7.238 odchylenie_standardowe 2
Fizyczna Ilość Przedmiotów 5.509 odchylenie_standardowe 2

Aby zapoznać się z przykładem niestandardowej definicji składnika sygnału i kodu obliczeniowego metryki, zobacz custom_signal w repozytorium azureml-examples.

Aby uzyskać instrukcje dotyczące rejestrowania składnika usługi Azure Machine Learning, zobacz Rejestrowanie składnika w obszarze roboczym.

Po utworzeniu i zarejestrowaniu niestandardowego składnika sygnału w usłudze Azure Machine Learning wykonaj następujące kroki, aby skonfigurować monitorowanie modelu:

  1. Utwórz definicję monitorowania w pliku YAML podobnym do poniższego. Przed użyciem tej definicji dostosuj następujące ustawienia i inne, aby spełniały potrzeby środowiska:

    • Dla component_id użyj wartości w formacie azureml:<custom-signal-name>:1.0.0.
    • W sekcji path danych wejściowych użyj wartości w formacie azureml:<production-data-asset-name>:<version>.
    • Dla elementu pre_processing_component:
      • Jeśli używasz modułu zbierającego dane do zbierania danych, możesz pominąć pre_processing_component właściwość .
      • Jeśli nie używasz modułu zbierającego dane i chcesz użyć składnika do wstępnego przetwarzania danych produkcyjnych, użyj wartości w formacie azureml:<custom-preprocessor-name>:<custom-preprocessor-version>.
    • W obszarze emailswyświetl listę adresów e-mail, których chcesz użyć w przypadku powiadomień.
    # custom-monitoring.yaml
    $schema:  http://azureml/sdk-2-0/Schedule.json
    name: my-custom-signal
    trigger:
      type: recurrence
      frequency: day # Possible frequency values include "minute," "hour," "day," "week," and "month."
      interval: 7 # Monitoring runs every day when you use the value 1.
    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
    
  2. Uruchom następujące polecenie, aby utworzyć model:

    az ml schedule create -f ./custom-monitoring.yaml
    

Interpretowanie wyników monitorowania

Po skonfigurowaniu monitora modelu i zakończeniu pierwszego uruchomienia możesz wyświetlić wyniki w usłudze Azure Machine Learning Studio.

  1. W studio w obszarze Zarządzanie wybierz pozycję Monitorowanie. Na stronie Monitorowanie wybierz nazwę monitora modelu, aby wyświetlić jego stronę przeglądu. Na tej stronie przedstawiono model monitorowania, punkt końcowy i wdrożenie. Zawiera on również szczegółowe informacje o skonfigurowanych sygnałach. Na poniższej ilustracji przedstawiono stronę przeglądu monitorowania zawierającą sygnały dotyczące dryfu danych i jakości danych.

    Zrzut ekranu przedstawiający stronę monitorowania modelu z wyróżnioną pozycją Monitorowanie. Informacje o błędach i szybkościach przekazywania są widoczne dla dwóch sygnałów.

  2. Zapoznaj się z sekcją Powiadomienia na stronie przeglądu. W tej sekcji można zobaczyć funkcję dla każdego sygnału, który narusza skonfigurowany próg dla odpowiedniej metryki.

  3. W sekcji Sygnały wybierz pozycję data_drift , aby wyświetlić szczegółowe informacje na temat sygnału dryfu danych. Na stronie szczegółów można zobaczyć wartość metryki dryfu danych dla każdej funkcji liczbowej i kategorii uwzględnionej przez konfigurację monitorowania. Jeśli monitor ma więcej niż jedną sesję, zobaczysz linię trendu dla każdej cechy.

    Zrzut ekranu przedstawiający szczegółowe informacje o sygnale dryfu danych, w tym wykres dryfu danych funkcji i podział funkcji.

  4. Na stronie szczegółów wybierz nazwę pojedynczej funkcji. Zostanie otwarty szczegółowy widok przedstawiający dystrybucję produkcyjną w porównaniu z dystrybucją referencyjną. Możesz również użyć tego widoku do śledzenia dryfu w czasie dla funkcji.

    Zrzut ekranu przedstawiający szczegółowe informacje o funkcji, w tym histogram i wykres pokazujący dryf w czasie.

  5. Wróć do strony przeglądu monitorowania. W sekcji Sygnały wybierz pozycję data_quality , aby wyświetlić szczegółowe informacje o tym sygnałie. Na tej stronie można zobaczyć współczynniki wartości null, wartości poza granicami oraz współczynniki błędów typów danych dla każdej monitorowanej cechy.

    Zrzut ekranu przedstawiający szczegółowe informacje dotyczące sygnału jakości danych, w tym współczynniki awarii i przekazywania oraz podział funkcji.

Monitorowanie modelu jest procesem ciągłym. W przypadku korzystania z monitorowania 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ą Event Grid

Korzystając z Event Grid, można skonfigurować zdarzenia generowane przez monitorowanie modelu Azure Machine Learning, które uruchamiają aplikacje, procesy oraz przepływy pracy CI/CD. Można odbierać zdarzenia za pośrednictwem różnych programów obsługi zdarzeń, takich jak Azure Event Hubs, Azure Functions i Azure Logic Apps. Gdy monitory wykrywają dryf, można podjąć działania programowo, na przykład uruchamiając potok uczenia maszynowego, aby ponownie wytrenować model i wdrożyć go ponownie.

Aby zintegrować monitorowanie modelu usługi Azure Machine Learning z usługą Event Grid, wykonaj kroki opisane w poniższych sekcjach.

Tworzenie tematu systemowego

Jeśli nie masz tematu systemu usługi Event Grid do użycia do monitorowania, utwórz go. Aby uzyskać instrukcje, zobacz Tworzenie, wyświetlanie i zarządzanie tematami systemu usługi Event Grid w witrynie Azure Portal.

Tworzenie subskrypcji zdarzeń

  1. W witrynie Azure Portal przejdź do obszaru roboczego usługi Azure Machine Learning.

  2. Wybierz opcję Zdarzenia, a następnie wybierz opcję Subskrypcja zdarzeń.

    Zrzut ekranu przedstawiający stronę Zdarzenia obszaru roboczego usługi Azure Machine Learning. Zdarzenia i subskrypcja zdarzeń są wyróżnione.

  3. Obok pozycji Nazwa wprowadź nazwę subskrypcji zdarzeń, taką jak MonitoringEvent.

  4. W obszarze Typy zdarzeń wybierz tylko Zmieniono stan uruchomienia.

    Ostrzeżenie

    Wybierz tylko stan uruchomienia zmieniony dla typu zdarzenia. Nie wybieraj Wykryto dryf zestawu danych, który odnosi się do dryfu danych w wersji 1, a nie do monitorowania modelu Azure Machine Learning.

  5. Wybierz kartę Filtry . W obszarze Filtry zaawansowane wybierz pozycję Dodaj nowy filtr, a następnie wprowadź następujące wartości:

    • W obszarze Klucz wprowadź dane. RunTags.azureml_modelmonitor_threshold_breached.
    • Pod Operatorem wybierz opcję Ciąg zawiera.
    • W obszarze Wartość wprowadź nie powiodło się z powodu co najmniej jednej funkcji naruszającej progi metryk.

    Zrzut ekranu przedstawiający stronę Tworzenie opisu zdarzenia w witrynie Azure Portal. Karta Filtry i wartości w obszarze Klucz, Operator i Wartość są wyróżnione.

    Gdy używasz tego filtru, zdarzenia są generowane, gdy stan uruchomienia dowolnego monitora w obszarze roboczym usługi Azure Machine Learning ulegnie zmianie. Stan uruchomienia może ulec zmianie z ukończonego na niepowodzeniem lub z niepowodzenia na ukończone.

    Aby filtrować na poziomie monitorowania, wybierz ponownie pozycję Dodaj nowy filtr , a następnie wprowadź następujące wartości:

    • W obszarze Klucz wprowadź dane. RunTags.azureml_modelmonitor_threshold_breached.
    • Pod Operatorem wybierz opcję Ciąg zawiera.
    • W obszarze Wartość wprowadź nazwę sygnału monitora, dla którego chcesz filtrować zdarzenia, takie jak credit_card_fraud_monitor_data_drift. Wprowadzona nazwa musi być zgodna z nazwą sygnału monitorowania. Każdy sygnał używany w filtrowaniu powinien mieć nazwę w formacie <monitor-name>_<signal-description> zawierającym nazwę monitora i opis sygnału.
  6. Wybierz kartę Podstawowe . Skonfiguruj punkt końcowy, który ma służyć jako program obsługi zdarzeń, taki jak Event Hubs.

  7. Wybierz pozycję Utwórz , aby utworzyć subskrypcję zdarzeń.

Wyświetl zdarzenia

Po przechwyceniu zdarzeń można je wyświetlić na stronie punktu końcowego programu obsługi zdarzeń:

Zrzut ekranu przedstawiający stronę subskrypcji zdarzeń, która korzysta z punktu końcowego Event Hubs oraz tematu obszaru roboczego Azure Machine Learning. Widoczny jest wykres.

Zdarzenia można również wyświetlić na karcie Metryki usługi Azure Monitor:

Zrzut ekranu ukazujący stronę z metrykami monitorowania. Wykres liniowy przedstawia łącznie trzy zdarzenia w ciągu ostatniej godziny.