Поделиться через


Мониторинг производительности моделей, развернутых в рабочей среде

ОБЛАСТЬ ПРИМЕНЕНИЯ:Расширение машинного обучения Azure CLI версии 2 (current)Python SDK azure-ai-ml версии 2 (current)

В Машинном обучении Azure можно использовать мониторинг моделей для непрерывного отслеживания производительности моделей машинного обучения в рабочей среде. Мониторинг моделей обеспечивает широкий обзор сигналов мониторинга. Он также оповещает вас о потенциальных проблемах. При мониторинге сигналов и метрик производительности моделей в рабочей среде можно критически оценить внутренние риски ваших моделей. Вы также можете определить слепые пятна, которые могут негативно повлиять на ваш бизнес.

В этой статье показано, как выполнить следующие задачи:

  • Настройка встроенного и расширенного мониторинга для моделей, развернутых в сетевых конечных точках Машинного обучения Azure
  • Мониторинг метрик производительности для моделей в рабочей среде
  • Мониторинг моделей, развернутых вне Машинное обучение Azure или развернутых в Машинное обучение Azure конечных точках пакетной службы
  • Настройка пользовательских сигналов и метрик для использования в мониторинге моделей
  • Интерпретация результатов мониторинга
  • Интеграция мониторинга моделей Машинное обучение Azure с Сетка событий Azure

Необходимые компоненты

  • Учетная запись пользователя, которая имеет по крайней мере одну из следующих ролей управления доступом на основе ролей Azure (Azure RBAC):

    • Роль владельца рабочей области Машинного обучения Azure
    • Роль участника для рабочей области Машинного обучения Azure
    • Пользовательская роль с Microsoft.MachineLearningServices/workspaces/onlineEndpoints/* разрешениями

    Дополнительные сведения см. в статье "Управление доступом к рабочим областям Azure машинного обучения".

  • Для мониторинга управляемой веб-конечной точки машинного обучения Azure или конечной точки Kubernetes в Сети:

  • Для мониторинга модели, развернутой в конечной точке пакетной службы машинного обучения Azure или развернутой за пределами Машинного обучения Azure:

    • Средство сбора рабочих данных и его регистрации в качестве ресурса данных машинного обучения Azure
    • Средство непрерывного обновления зарегистрированного ресурса данных для мониторинга моделей
    • (Рекомендуется) Регистрация модели в рабочей области Машинного обучения Azure для отслеживания происхождения

Настройка бессерверного пула вычислений Spark

Задания мониторинга моделей запланированы на выполнение в бессерверных пулах вычислений Spark. Поддерживаются следующие типы экземпляров виртуальных машин Azure:

  • Standard_E4s_v3
  • Standard_E8s_v3
  • Standard_E16s_v3
  • Standard_E32s_v3
  • Standard_E64s_v3

Чтобы указать тип экземпляра виртуальной машины при выполнении процедур, описанных в этой статье, сделайте следующее:

При создании монитора с помощью Azure CLI используется файл конфигурации YAML. В этом файле установите значение create_monitor.compute.instance_type на требуемый тип.

Настройка встроенного мониторинга модели

Рассмотрим сценарий, в которой вы развертываете свою модель на онлайн-эндпоинте Машинного обучения Azure и включаете сбор данных во время процесса развертывания. В этом случае Azure Machine Learning собирает данные вывода из рабочей среды и автоматически сохраняет их в Azure Blob Storage. Мониторинг модели машинного обучения Azure можно использовать для непрерывного мониторинга этих рабочих данных вывода.

Вы можете использовать Azure CLI, пакет SDK для Python или студию для настройки встроенного мониторинга моделей. Конфигурация мониторинга модели вне коробки предоставляет следующие возможности мониторинга:

  • Машинное обучение Azure автоматически обнаруживает рабочий ресурс данных вывода, связанный с развертыванием Машинного обучения Azure, и использует ресурс данных для мониторинга моделей.
  • Ресурс ссылочных данных сравнения задается как недавний, прошлый рабочий ресурс данных вывода.
  • Настройка мониторинга автоматически включает и отслеживает следующие встроенные сигналы мониторинга: смещение данных, смещение прогнозов и качество данных. Для каждого сигнала мониторинга используется Машинное обучение Azure:
    • Последний, прошлый рабочий ресурс вывода данных в качестве эталонного ресурса данных сравнения.
    • Интеллектуальные значения по умолчанию для метрик и пороговых значений.
  • Задание мониторинга настроено для выполнения в обычном расписании. Эта задача получает сигналы мониторинга и оценивает каждое значение метрики в сравнении с соответствующим пороговым значением. По умолчанию при превышении порогового значения Машинное обучение Azure отправляет пользователю, настроившему монитор, оповещение по электронной почте.

Чтобы настроить встроенный мониторинг модели, выполните следующие действия.

В Azure CLI вы используете az ml schedule для планирования задания мониторинга.

  1. Создайте определение мониторинга в ФАЙЛЕ YAML. Пример определения вне поля см. в следующем коде YAML, который также доступен в репозитории azureml-examples.

    Прежде чем использовать это определение, настройте значения, чтобы соответствовать вашей среде. Для endpoint_deployment_id используйте значение в формате 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.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:
          - [email protected]
          - [email protected]
    
  2. Выполните следующую команду, чтобы создать модель:

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

Настройка расширенного мониторинга моделей

Машинное обучение Azure предоставляет множество возможностей для непрерывного мониторинга моделей. Полный список этих функций см. в разделе "Возможности мониторинга моделей". Во многих случаях необходимо настроить мониторинг моделей, поддерживающий расширенные задачи мониторинга. В следующем разделе приведены несколько примеров расширенного мониторинга.

  • Использование нескольких сигналов мониторинга для общего обзора
  • Использование данных обучения исторических моделей или данных проверки в качестве ресурса ссылочных данных сравнения
  • Мониторинг наиболее важных функций N и отдельных функций

Настройка важности компонентов

Важность функции представляет относительную важность каждой входной функции для выходных данных модели. Например, температура может быть более важной для прогнозирования модели, чем повышение. При включении важности признаков, можно получить представление о том, для каких признаков нежелательны дрейф или проблемы с качеством данных в рабочей среде.

Чтобы включить значимость признаков с любым из ваших сигналов, таких как смещение данных или качество данных, вам необходимо предоставить:

  • Ресурс обучающих данных в качестве reference_data ресурса данных.
  • Свойство reference_data.data_column_names.target_column , которое является именем выходного столбца модели или столбца прогнозирования.

После включения важности функций вы увидите важность функции для каждой функции, отслеживаемой в студии машинного обучения Azure.

Вы можете включить или отключить оповещения для каждого сигнала, задав alert_enabled свойство при использовании пакета SDK для Python или Azure CLI.

Вы можете использовать Azure CLI, пакет SDK для Python или студию для настройки расширенного мониторинга моделей.

  1. Создайте определение мониторинга в ФАЙЛЕ YAML. Пример расширенного определения см. в следующем коде YAML, который также доступен в репозитории azureml-examples.

    Прежде чем использовать это определение, настройте следующие параметры и все остальные параметры в соответствии с потребностями вашей среды:

    • Для endpoint_deployment_id используйте значение в формате azureml:<endpoint-name>:<deployment-name>.
    • Для path ссылочных разделов входных данных используйте значение в формате azureml:<reference-data-asset-name>:<version>.
    • Для target_column используйте имя выходного столбца, который содержит значения, предсказанные моделью, например DEFAULT_NEXT_MONTH.
    • Для features перечислите такие функции, как SEX, EDUCATION, и AGE, которые вы хотите использовать в расширенном сигнале качества данных.
    • Под emails перечислите адреса электронной почты, которые вы хотите использовать для уведомлений.
    # 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
          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:
          - [email protected]
          - [email protected]
    
  2. Выполните следующую команду, чтобы создать модель:

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

Настройка мониторинга производительности модели

При использовании мониторинга модели машинного обучения Azure можно отслеживать производительность моделей в рабочей среде, вычисляя их метрики производительности. В настоящее время поддерживаются следующие метрики производительности модели:

  • Для моделей классификации:
    • Точность
    • Правильность
    • Отзыв
  • Для моделей регрессии:
    • Средняя абсолютная ошибка (MAE)
    • Средняя квадратная ошибка (MSE)
    • Ошибка с квадратом корня (RMSE)

Предварительные требования для мониторинга производительности модели

  • Выходные данные для рабочей модели (прогнозы модели) с уникальным идентификатором для каждой строки. Если вы используете сборщик данных машинного обучения Azure для сбора производственных данных, идентификатор корреляции предоставляется для каждого запроса на вывод данных. Сборщик данных также предлагает возможность регистрации вашего уникального идентификатора из приложения.

    Примечание.

    Для мониторинга производительности модели машинного обучения Azure, мы рекомендуем использовать сборщик данных Azure Machine Learning для записи вашего уникального идентификатора в отдельный столбец.

  • Данные эталонной истины с уникальным идентификатором для каждой строки. Уникальный идентификатор для заданной строки должен соответствовать уникальному идентификатору выходных данных модели для конкретного запроса вывода. Этот уникальный идентификатор используется для объединения вашего набора истинных данных с выходными данными модели.

    Если у вас нет данных истинных значений, вы не можете отслеживать производительность модели. Истинные данные находятся на уровне приложения, поэтому ваша ответственность — собирать их по мере их доступности. Кроме того, следует поддерживать ресурс данных в Машинное обучение Azure, который содержит эти данные истинной истины.

  • (Необязательно) Предварительно присоединенный табличный ресурс данных с выходными данными модели и данными истины, уже объединенными.

Требования к мониторингу производительности модели при использовании сборщика данных

Машинное обучение Azure создает идентификатор корреляции для вас при выполнении следующих критериев:

  • Вы используете Сборщик данных машинного обучения Azure для сбора данных инференса в рабочей среде.
  • Вы не предоставляете собственный уникальный идентификатор для каждой строки в виде отдельного столбца.

Созданный идентификатор корреляции включается в объект JSON в журнале. Однако сборщик данных пакетирует строки, отправляемые в течение короткого интервала времени друг от друга. Пакетные строки попадают в тот же объект JSON. В каждом объекте все строки имеют одинаковый идентификатор корреляции.

Чтобы различать строки в объекте JSON, мониторинг производительности модели машинного обучения Azure использует индексирование для определения порядка строк в объекте. Например, если пакет содержит три строки и идентификатор корреляции test, то первая строка имеет идентификатор test_0, вторая строка имеет идентификатор test_1, а третья строка имеет идентификатор test_2. Чтобы сопоставить уникальные идентификаторы эталонных данных с идентификаторами собранных данных выходных данных инференции производственной модели, примените индекс к каждому идентификатору корреляции соответствующим образом. Если зарегистрированный объект JSON имеет только одну строку, используйте correlationid_0 в качестве значения correlationid.

Чтобы избежать использования этого индексирования, мы рекомендуем записывать ваш уникальный идентификатор в отдельный столбец. Поместите этот столбец в кадр данных Pandas, в который сборщик данных Azure Machine Learning записывает журналы. В конфигурации мониторинга моделей можно указать имя этого столбца, чтобы объединить выходные данные модели с данными эталонной истинности. Если идентификаторы для каждой строки в обоих ресурсах данных одинаковы, мониторинг модели машинного обучения Azure может выполнять мониторинг производительности модели.

Пример рабочего процесса для производительности модели мониторинга

Чтобы понять понятия, связанные с мониторингом производительности модели, рассмотрим следующий пример рабочего процесса. Она применяется к сценарию, в котором развертывается модель для прогнозирования мошеннических транзакций кредитной карты:

  1. Настройте развертывание для сбора данных сборщика данных для сбора рабочих данных модели (входных и выходных данных). Сохраните выходные данные в столбце с именем is_fraud.
  2. Для каждой строки собранных данных вывода регистрируются уникальные идентификаторы. Уникальный идентификатор может поступать из вашего приложения, или вы можете использовать значение correlationid, которое Azure Machine Learning создает для каждого JSON-объекта, зарегистрированного в системе.
  3. Когда доступны действительные (или фактические) is_fraud данные, регистрируйте и сопоставляйте каждую строку с таким же уникальным идентификатором, который зарегистрирован для соответствующей строки в выходных данных модели.
  4. Зарегистрируйте актив данных в Машинном обучении Azure и используйте его для сбора и поддержания эталонных данных is_fraud.
  5. Создайте сигнал мониторинга производительности модели, который использует уникальные столбцы идентификаторов для объединения данных прогнозов модели в рабочем режиме и фактических данных.
  6. Вычислить метрики производительности модели.

После удовлетворения предварительных требований для мониторинга производительности модели выполните следующие действия, чтобы настроить мониторинг модели:

  1. Создайте определение мониторинга в ФАЙЛЕ YAML. В следующем примере спецификации определяется мониторинг модели с данными производства вывода. Прежде чем использовать это определение, настройте следующие параметры и все остальные параметры в соответствии с потребностями вашей среды:

    • Для endpoint_deployment_idэтого используйте значение в формате azureml:<endpoint-name>:<deployment-name>.
    • Для каждого path значения в разделе входных данных используйте значение в формате azureml:<data-asset-name>:<version>.
    • prediction Для значения используйте имя выходного столбца, содержащего значения, прогнозируемые моделью.
    • Для значения actual используйте имя столбца истинных значений, содержащего фактические значения, предсказуемые моделью.
    • Для значений correlation_id используйте имена столбцов, используемых для объединения выходных данных и эталонных данных.
    • В разделе emails перечислите адреса электронной почты, которые вы хотите использовать для уведомлений.
    # 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: 
            - [email protected]
    
  2. Выполните следующую команду, чтобы создать модель:

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

Настройка мониторинга моделей рабочих данных

Вы также можете отслеживать модели, развернутые в конечных точках пакетной службы машинного обучения Azure или развертываемых за пределами Машинного обучения Azure. Если у вас нет развертывания, но у вас есть рабочие данные, можно использовать эти данные для непрерывного мониторинга моделей. Для мониторинга этих моделей необходимо иметь возможность:

  • Сбор данных вывода рабочей среды из моделей, развернутых в рабочей среде.
  • Зарегистрируйте данные вывода в рабочей среде в качестве Машинное обучение Azure ресурса данных и убедитесь в непрерывном обновлении данных.
  • Предоставьте пользовательский компонент предварительной обработки данных и зарегистрируйте его в качестве компонента Машинного обучения Azure, если сборщик данных не используется для сбора данных. Без этого настраиваемого компонента предварительной обработки данных система мониторинга модели машинного обучения Azure не может обрабатывать ваши данные в табличной форме, поддерживающей временные окна.

Пользовательский компонент предварительной обработки должен иметь следующие входные и выходные подписи:

Входные или выходные данные Имя подписи Тип Описание Пример значения
ввод data_window_start литерал, строка Время начала окна данных в формате ISO8601 2023-05-01T04:31:57.012Z
ввод data_window_end литерал, строка Время окончания окна данных в формате ISO8601 2023-05-01T04:31:57.012Z
ввод input_data папка URI Собранные данные предсказаний в рабочей среде, зарегистрированные в качестве информационного ресурса машинного обучения Azure azureml:myproduction_inference_data:1
результат preprocessed_data mltable Объект табличных данных, соответствующий подмножеству схемы эталонных данных

Пример пользовательского компонента предварительной обработки данных см . в custom_preprocessing репозитория GitHub в azuremml-examples.

Инструкции по регистрации компонента Машинного обучения Azure см. в разделе "Регистрация компонента" в рабочей области.

После регистрации рабочих данных и компонента предварительной обработки можно настроить мониторинг модели.

  1. Создайте файл YAML определения мониторинга, аналогичный приведенному ниже. Прежде чем использовать это определение, настройте следующие параметры и все остальные параметры в соответствии с потребностями вашей среды:

    • Для endpoint_deployment_id используйте значение в формате azureml:<endpoint-name>:<deployment-name>.
    • Для pre_processing_component используйте значение в формате azureml:<component-name>:<component-version>. Укажите точную версию, например 1.0.0, не 1.
    • Для каждого из них pathиспользуйте значение в формате azureml:<data-asset-name>:<version>.
    • target_column Для значения используйте имя выходного столбца, содержащего значения, прогнозируемые моделью.
    • В разделе emails, перечислите адреса электронной почты, которые вы хотите использовать для уведомлений.
    # 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.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:
          - [email protected]
          - [email protected]
    
  2. Выполните следующую команду, чтобы создать модель.

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

Настройка мониторинга модели с помощью пользовательских сигналов и метрик

При использовании мониторинга модели машинного обучения Azure можно определить пользовательский сигнал и реализовать любую метрику для мониторинга модели. Вы можете зарегистрировать пользовательский сигнал в качестве компонента Машинного обучения Azure. Когда задание мониторинга модели выполняется по указанному расписанию, он вычисляет метрики, определенные в пользовательском сигнале, так же, как и для предустановленных сигналов смещения данных, прогнозирования и качества данных.

Чтобы настроить пользовательский сигнал для мониторинга модели, необходимо сначала определить пользовательский сигнал и зарегистрировать его в качестве компонента Машинное обучение Azure. Компонент Машинного обучения Azure должен иметь следующие входные и выходные подписи.

Входная подпись компонента

Кадр входных данных компонента должен содержать следующие элементы:

  • Структура mltable , содержащая обработанные данные из компонента предварительной обработки.
  • Любое количество литералом, каждое из которых представляет реализованную метрику в составе пользовательского компонента сигнала. Например, если вы реализуете метрику std_deviation, вам потребуется вход для std_deviation_threshold. Как правило, следует вводить один вход с именем <metric-name>_threshold для каждой метрики.
Имя подписи Тип Описание Пример значения
production_data mltable Ресурс табличных данных, соответствующий подмножеству схемы эталонных данных
std_deviation_threshold литерал, строка Соответствующее пороговое значение для реализованной метрики 2

Сигнатура вывода компонента

Выходной порт компонента должен иметь следующую подпись:

Имя подписи Тип Описание
signal_metrics mltable Структура mltable, содержащая вычисленные метрики. Схему этой подписи см. в следующем разделе, схема signal_metrics.

схема signal_metrics

Кадр выходных данных компонента должен содержать четыре столбца: group, metric_name, metric_valueи threshold_value.

Имя подписи Тип Описание Пример значения
group литерал, строка Логическое группирование верхнего уровня, применяемое к пользовательской метрике СУММАТРАНЗАКЦИИ
metric_name литерал, строка Имя пользовательской метрики стандартное отклонение
metric_value числовой Значение пользовательской метрики 44,896.082
threshold_value числовой Пороговое значение для пользовательской метрики 2

В следующей таблице показаны примеры выходных данных пользовательского компонента сигнала, вычисляющего std_deviation метрику:

группа значение метрики metric_name пороговое_значение
СУММА ТРАНЗАКЦИИ 44,896.082 стандартное_отклонение 2
Местное время 3.983 стандартное_отклонение 2
СуммаТранзакцииUSD 54.004,902 стандартное отклонение 2
DIGITALITEMCOUNT 7.238 стандартное отклонение 2
ФИЗИЧЕСКОЕ КОЛИЧЕСТВО ПРЕДМЕТОВ 5.509 стандартное_отклонение 2

Чтобы просмотреть пример определения пользовательского компонента сигнала и вычислительного кода метрик, см. custom_signal в репозитории azureml-examples.

Инструкции по регистрации компонента Машинного обучения Azure см. в разделе "Регистрация компонента" в рабочей области.

После создания и регистрации пользовательского компонента сигнала в Машинном обучении Azure выполните следующие действия, чтобы настроить мониторинг моделей:

  1. Создайте определение мониторинга в файле YAML, аналогичном следующему. Прежде чем использовать это определение, настройте следующие параметры и все остальные параметры в соответствии с потребностями вашей среды:

    • Для component_idэтого используйте значение в формате azureml:<custom-signal-name>:1.0.0.
    • В path разделе входных данных используйте значение в формате azureml:<production-data-asset-name>:<version>.
    • Для pre_processing_component:
      • При использовании сборщика данных для сбора данных можно опустить pre_processing_component свойство.
      • Если вы не используете сборщик данных и хотите использовать компонент для предварительной обработки рабочих данных, используйте значение в формате azureml:<custom-preprocessor-name>:<custom-preprocessor-version>.
    • Укажите в emails адреса электронной почты, которые вы хотите использовать для уведомлений.
    # 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:
          - [email protected]
    
  2. Выполните следующую команду, чтобы создать модель:

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

Интерпретация результатов мониторинга

После настройки монитора модели и завершения первого запуска можно просмотреть результаты в студии машинного обучения Azure.

  1. В студии в разделе "Управление" выберите "Мониторинг". На странице "Мониторинг" выберите имя монитора модели, чтобы просмотреть ее страницу обзора. На этой странице показана модель мониторинга, конечная точка и развертывание. Он также содержит подробные сведения о настроенных сигналах. На следующем рисунке показана страница обзора мониторинга, включающая сигналы смещения данных и качества данных.

    Снимок экрана: страница мониторинга для модели с выделенным элементом

  2. Просмотрите раздел "Уведомления" на странице обзора. В этом разделе вы увидите функцию для каждого сигнала, который нарушает настроенный порог для соответствующей метрики.

  3. В разделе "Сигналы" выберите data_drift , чтобы просмотреть подробные сведения о сигнале смещения данных. На странице сведений можно увидеть значение метрик смещения данных для каждой числовой и категориальной функции, в которую входит конфигурация мониторинга. Если монитор имеет несколько запусков, вы увидите линию тренда для каждой функции.

    Снимок экрана с подробной информацией о сигнале дрейфа данных, включая диаграмму дрейфа данных по признакам и разбивку по признакам.

  4. На странице сведений выберите имя отдельной функции. Откроется подробный вид, показывающий распределение производства по сравнению с эталонным распределением. Это представление также можно использовать для отслеживания смещения с течением времени для функции.

    Снимок экрана: подробные сведения о функции, включая гистограмму и диаграмму, которая показывает смещение с течением времени.

  5. Вернитесь на страницу обзора мониторинга. В разделе "Сигналы" выберите data_quality , чтобы просмотреть подробные сведения об этом сигнале. На этой странице вы можете увидеть частоту пустых значений, частоту выходов за пределы и частоту ошибок типа данных для каждой отслеживаемой характеристики.

    Снимок экрана, который показывает подробную информацию о сигнале качества данных, включая процент неудач и успешных прохождений, а также разбивку признаков.

Мониторинг модели — это непрерывный процесс. При использовании мониторинга модели машинного обучения Azure можно настроить несколько сигналов мониторинга, чтобы получить широкое представление о производительности моделей в рабочей среде.

Интеграция мониторинга модели машинного обучения Azure с сеткой событий

При использовании сетки событий можно настроить события, созданные мониторингом модели машинного обучения Azure, для активации приложений, процессов и рабочих процессов CI/CD. События можно использовать с помощью различных обработчиков событий, таких как Центры событий Azure, Функции Azure и Azure Logic Apps. При обнаружении смещения мониторы могут выполнять действия программным способом, например запуск конвейера машинного обучения для повторного обучения модели и повторного развертывания.

Чтобы интегрировать мониторинг модели машинного обучения Azure с сеткой событий, выполните действия, описанные в следующих разделах.

Создание системного раздела

Если системный раздел сетки событий не используется для мониторинга, создайте его. Инструкции см. в статье "Создание, просмотр и управление системной сеткой событий" на портале Azure.

Создание подписки на событие

  1. На портале Azure перейдите в рабочую область Машинного обучения Azure.

  2. Выберите События, а затем выберите Подписка на события.

    Снимок экрана: страница

  3. Рядом с именем введите имя подписки на события, например MonitoringEvent.

  4. В разделе Типы событий выберите только изменение состояния выполнения.

    Предупреждение

    Выберите только Изменение состояния запуска для типа события. Не выбирайте обнаружение смещения набора данных, которое относится к дрейфу данных версии 1, а не мониторингу модели машинного обучения Azure.

  5. Перейдите на вкладку "Фильтры". В разделе "Дополнительные фильтры" выберите "Добавить новый фильтр" и введите следующие значения:

    • В разделе "Ключ" введите данные. RunTags.azureml_modelmonitor_threshold_breached.
    • Под Оператор выберите Строка содержит.
    • В поле "Значение" введите ошибку, вызванную одной или несколькими характеристиками, нарушающими пороговые значения метрик.

    Снимок экрана: страница

    При использовании этого фильтра события создаются при изменении состояния выполнения любого монитора в рабочей области машинного обучения Azure. Состояние выполнения может измениться с завершенного на неудачное или с неудачного на завершенное.

    Чтобы отфильтровать на уровне мониторинга, снова нажмите кнопку "Добавить новый фильтр ", а затем введите следующие значения:

    • Под Ключ введите data.RunTags.azureml_modelmonitor_threshold_breached.
    • В разделе Оператор выберите Строка содержит.
    • В разделе "Значение" введите имя сигнала монитора, для которого требуется отфильтровать события, например credit_card_fraud_monitor_data_drift. Имя, которое вы вводите, должно соответствовать имени сигнала мониторинга. Любой сигнал, используемый в фильтрации, должен иметь имя в формате <monitor-name>_<signal-description> , включающее имя монитора и описание сигнала.
  6. Перейдите на вкладку Основные. Настройте конечную точку, которая будет служить обработчиком событий, например, Центры событий.

  7. Выберите Создать, чтобы создать подписку на события.

Просмотреть события

После записи событий их можно просмотреть на странице конечной точки обработчика событий:

Снимок экрана: страница подписки на события, использующая конечную точку Центров событий и раздел рабочей области Машинного обучения Azure. Диаграмма видна.

Вы также можете просматривать события на вкладке метрик Azure Monitor:

Снимок экрана: страница метрик монитора. График показывает в общей сложности три события за последний час.