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


ModelDataCollector Класс

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

Класс ModelDataCollector позволяет определить сборщик данных для моделей в развертываниях AKS Машинного обучения Azure. Объект сборщика данных может использоваться для сбора данных модели, таких как входные данные и прогнозы, в хранилище BLOB-объектов рабочей области. Если в развертывании включен сбор данных модели, собранные данные будут отображаться в следующем пути контейнера в виде CSV-файлов: /modeldata/{workspace_name}/{webservice_name}/{model_name}/{model_version}/{designation}/{year}/{month}/{day}/{collection_name}.csv

Конструктор ModelDataCollector.

Если сбор данных модели включен, данные будут отправляться по следующему пути контейнера: /modeldata/{workspace}/{webservice_name}/{model_name}/{model_version}/{designation}/{year}/{month}/{day}/{collection_name}.csv

Наследование
builtins.object
ModelDataCollector

Конструктор

ModelDataCollector(model_name, designation='default', feature_names=None, workspace='default/default/default', webservice_name='default', model_version='default', collection_name='default')

Параметры

Имя Описание
model_name
Обязательно
str

Имя модели, для которой собираются данные.

designation
str

Уникальное обозначение для расположения сбора данных. Поддерживаемые обозначения: "входные данные", "прогнозы", "метки", "сигналы" и "общие".

Default value: default
feature_names

Список имен компонентов, которые становятся заголовком CSV при указании.

Default value: None
workspace
str

Идентификатор рабочей области Машинного обучения Azure в формате {subscription_id}/{resource_group}/{workspace_name}. Она заполняется автоматически при вводе моделей в эксплуатацию с помощью Машинного обучения Azure.

Default value: default/default/default
webservice_name
str

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

Default value: default
model_version
str

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

Default value: default
collection_name
str

Имя файла, в который ModelDataCollector собирает данные. Этот параметр учитывается только для обозначения "сигналы" и "общие". Для других типов обозначений в качестве имени файла используется имя обозначения.

Default value: default

Комментарии

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

  • Обновите entry_script образа, чтобы добавить объекты ModelDataCollector и операторы сбора. В скрипте можно определить несколько объектов ModelDataCollector, например один для входных данных и один для прогноза для одной и той же модели. Дополнительные сведения об определении и использовании entry_script, см. в следующем классе: InferenceConfig

  • Установите флаг enable_data_collection на этапе развертывания модели AKS. После развертывания модели этот флаг можно использовать для включения или отключения сбора данных модели без изменения entry_script. Дополнительные сведения о настройке развертывания модели см. в следующем классе: AksWebservice

В следующем фрагменте кода показано, как будет выглядеть entry_script с использованием ModelDataCollection:


   from azureml.monitoring import ModelDataCollector

   def init():
       global inputs_dc

       # Define your models and other scoring related objects
       # ...

       # Define input data collector to model "bestmodel". You need to define one object per model and
       # designation. For the sake of simplicity, we are only defining one object here.
       inputs_dc = ModelDataCollector(model_name="bestmodel", designation="inputs", feature_names=["f1", "f2"])

   def run(raw_data):
       global inputs_dc

       # Convert raw_data to proper format and run prediction
       # ...

       # Use inputs_dc to collect data. For any data that you want to collect, you need to call collect method
       # on respective ModelDataCollector objects. For the sake of simplicity, we are only working on a single
       # object.
       inputs_dc.collect(input_data)

В этом примере демонстрируется ряд аспектов, связанных с ModelDataCollector. Сначала определяется объект для каждой модели и для каждого назначения, в данном случае "Лучшая модель" и "Входные данные". Во-вторых, ModelDataCollector принимает табличные данные в качестве входных данных и хранит их в виде CSV-файлов. Для задания заголовка CSV-файлов можно указать дополнительные имена функций.

В следующем фрагменте кода показано, как можно включить ModelDataCollector во время развертывания модели:


   webservice_config = AksWebservice.deploy_configuration(collect_model_data=True)
   Model.deploy(ws, "myservice", [model], inference_config, webservice_config, aks_cluster)

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

/modeldata/{workspace_name}/{webservice_name}/{model_name}/{model_version}/{designation}/{year}/{month}/{day}/{collection_name}.csv

Обратите внимание, что collection_name в имени файла будет учитываться только для обозначений "сигналы" и "общее". Для "входных данных", "прогнозов" и "меток" имя файла будет выглядеть как {designation}.csv.

Методы

add_correlations

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

collect

Сбор данных в хранилище.

add_correlations

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

add_correlations(input_data, correlations)

Параметры

Имя Описание
input_data
Обязательно

Данные, в которые добавляются заголовки и значения корреляции.

correlations
Обязательно

Заголовки и значения корреляции, возвращаемые функцией collect().

Возвращаемое значение

Тип Описание

input_data с добавленными заголовками и значениями корреляции.

Комментарии

После вызова collect будет возвращен набор заголовков и значений корреляции. К ним относятся такие метаданные, как идентификатор запроса, метка времени и уникальный идентификатор корреляции, созданный ModelDataCollector или заданный в качестве параметра. Эти значения потом можно использовать для анализа и корреляции различных типов данных. В следующем примере показано, как добавить корреляции как к входным, так и к прогнозируемым данным. Обратите внимание, что тип назначения "входные данные" по умолчанию имеет корреляцию.


   # Define inputs_dc and predictions_dc for the same model and "inputs" and "predictions" designations
   # respectively
   # ...

   correlations = inputs_dc.collect(input_data)
   predictions_data = predictions_dc.add_correlations(predictions_data, correlations)
   predictions_dc.collect(predictions_data)

collect

Сбор данных в хранилище.

collect(input_data, user_correlation_id='')

Параметры

Имя Описание
input_data
Обязательно

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

user_correlation_id
Обязательно
str

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

Возвращаемое значение

Тип Описание

Словарь, содержащий заголовки и значения корреляции.

Атрибуты

AML_DC_BOUNDARY_HEADER

AML_DC_BOUNDARY_HEADER = '$aml_dc_boundary'

AML_DC_CORRELATION_HEADER

AML_DC_CORRELATION_HEADER = '$aml_dc_correlation_id'

AML_DC_SCORING_TIMESTAMP_HEADER

AML_DC_SCORING_TIMESTAMP_HEADER = '$aml_dc_scoring_timestamp'

AML_MODEL_NAME_HEADER

AML_MODEL_NAME_HEADER = '$aml_model_name'

AML_MODEL_VERSION_HEADER

AML_MODEL_VERSION_HEADER = '$aml_model_version'

AML_REQUEST_ID_HEADER

AML_REQUEST_ID_HEADER = '$aml_request_id'

AML_SERVICE_NAME_HEADER

AML_SERVICE_NAME_HEADER = '$aml_service_name'

AML_WORKSPACE_HEADER

AML_WORKSPACE_HEADER = '$aml_workspace'

dllpath

dllpath = 'C:\\hostedtoolcache\\windows\\Python\\3.9.13\\x64\\lib\\site-packages\\azureml\\monitoring\\tools\\modeldatacollector\\lib\\native\\Windows'