Сбор данных из моделей в рабочей среде

ОБЛАСТЬ ПРИМЕНЕНИЯ:Пакет SDK для Python azureml версии 1

В этой статье показывается, как собирать данные из модели Машинного обучения Azure, развернутой в кластере Azure Kubernetes Service (AKS). Собранные данные сохраняются в хранилище BLOB-объектов Azure.

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

  • Отслеживать смещения данных в собранных производственных данных.

  • Анализировать собранные данные с помощью Power BI или Azure Databricks.

  • Принимать более взвешенные решения о необходимости повторного обучения или оптимизации модели.

  • Повторно обучить модель, используя собранные данные.

Ограничения

  • Функция сбора данных модели может работать только с образом Ubuntu 18.04.

Важно!

По состоянию на 10.03.2023, образ Ubuntu 18.04 теперь является устаревшим. Поддержка образов Ubuntu 18.04 будет прекращена с января 2023 г. по достижении EOL 30 апреля 2023 г.

Функция MDC несовместима с любым другим образом, кроме Ubuntu 18.04, который недоступен после того, как образ Ubuntu 18.04 не рекомендуется использовать.

m Дополнительные сведения, на которые можно ссылаться:

Примечание

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

Какие данные собираются и куда они попадают

Вы можете собирать следующие данные:

  • Входные данные модели из веб-служб, развернутых в кластере AKS. Аудиозаписи, изображения и видео не собираются.

  • Прогнозирование моделей с использованием входных данных рабочей среды.

Примечание

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

Выходные данные сохраняются в хранилище BLOB-объектов. Поскольку данные добавляются в хранилище BLOB-объектов, вы можете выбрать для проведения анализа инструмент по своему желанию.

Для пути к выходным данным в BLOB-объекте используется следующий синтаксис:

/modeldata/<subscriptionid>/<resourcegroup>/<workspace>/<webservice>/<model>/<version>/<designation>/<year>/<month>/<day>/data.csv
# example: /modeldata/1a2b3c4d-5e6f-7g8h-9i10-j11k12l13m14/myresourcegrp/myWorkspace/aks-w-collv9/best_model/10/inputs/2018/12/31/data.csv

Примечание

В версиях пакета SDK для Машинного обучения Azure для Python ниже 0.1.0a16 аргумент designation имеет имя identifier. Если вы разработали код с более ранней версией, необходимо установить соответствующее обновление.

Предварительные требования

Включение сбора данных

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

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

  1. Откройте файл оценки.

  2. Добавьте следующий код в начало файла.

    from azureml.monitoring import ModelDataCollector
    
  3. Объявите переменные коллекции данных в функции init:

    global inputs_dc, prediction_dc
    inputs_dc = ModelDataCollector("best_model", designation="inputs", feature_names=["feat1", "feat2", "feat3", "feat4", "feat5", "feat6"])
    prediction_dc = ModelDataCollector("best_model", designation="predictions", feature_names=["prediction1", "prediction2"])
    

    Параметр CorrelationId необязателен. Если ваша модель его не требует, этот параметр можно не использовать. При этом параметр CorrelationId упрощает сопоставление с другими данными, такими как LoanNumber или CustomerId.

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

  4. Добавьте в функцию run(input_df) следующие строки кода.

    data = np.array(data)
    result = model.predict(data)
    inputs_dc.collect(data) #this call is saving our input data into Azure Blob
    prediction_dc.collect(result) #this call is saving our prediction data into Azure Blob
    
  5. При развертывании службы в AKS сбор данных не получает значение true автоматически. Обновите файл конфигурации, как показано в следующем примере:

    aks_config = AksWebservice.deploy_configuration(collect_model_data=True)
    

    Вы также можете включить Application Insights для мониторинга службы, изменив эту конфигурацию:

    aks_config = AksWebservice.deploy_configuration(collect_model_data=True, enable_app_insights=True)
    
  6. Сведения о создании образа и развертывании модели машинного обучения см. в разделе Развертывание моделей машинного обучения в Azure.

  7. Добавьте в зависимости conda среды веб-службы пакет PIP "Azure-Monitoring":

  env = Environment('webserviceenv')
  env.python.conda_dependencies = CondaDependencies.create(conda_packages=['numpy'],pip_packages=['azureml-defaults','azureml-monitoring','inference-schema[numpy-support]'])

Отключение сбора данных

Сбор данных может остановить в любой момент. Для отключения сбора данных использует код Python.

## replace <service_name> with the name of the web service
<service_name>.update(collect_model_data=False)

Проверка и анализ данных

Вы можете выбрать для анализа данных, собранных в хранилище BLOB-объектов, любой предпочитаемый инструмент.

Быстрый доступ к данным BLOB-объектов

  1. Войдите на портал Azure.

  2. Перейдите в рабочую область.

  3. Выберите Хранилище.

    Выберите параметр

  4. Укажите путь к выходным данным BLOB-объекта, используя следующий синтаксис:

    /modeldata/<subscriptionid>/<resourcegroup>/<workspace>/<webservice>/<model>/<version>/<designation>/<year>/<month>/<day>/data.csv
    # example: /modeldata/1a2b3c4d-5e6f-7g8h-9i10-j11k12l13m14/myresourcegrp/myWorkspace/aks-w-collv9/best_model/10/inputs/2018/12/31/data.csv
    

Анализ данных модели с помощью Power BI

  1. Скачайте и установите приложение Power BI Desktop.

  2. Выберите Получить данные, а затем Хранилище BLOB-объектов Azure.

    Настройка BLOB-объектов Power BI

  3. Добавьте имя учетной записи хранения и введите ключ к хранилищу данных. Эти сведения можно найти, выбрав Параметры>Ключи доступа.

  4. Выберите контейнер modeldata и нажмите кнопку Изменить.

    Навигатор Power BI

  5. В редакторе запросов щелкните столбец Имя и добавьте свою учетную запись хранения.

  6. Введите путь к модели в фильтр. Если вы хотите искать только файлы за определенный год или месяц, просто разверните путь фильтра. Например, для просмотра данных только за март используйте следующий путь фильтра:

    /modeldata/<subscriptionid>/<resourcegroupname>/<workspacename>/<webservicename>/<modelname>/<modelversion>/<designation>/<year>/3

  7. Для отображения нужных данных отфильтруйте их по имени. Если вы сохранили прогнозы и входные данные, для них нужно создать отдельные запросы.

  8. Нажмите на двойные стрелки вниз рядом с заголовком столбца Содержимое, чтобы объединить файлы.

    Содержимое Power BI

  9. Щелкните ОК. Будет выполнена предварительная загрузка данных.

    Объединение файлов в Power BI

  10. Выберите Закрыть и загрузить.

  11. Если вы добавили входные данные и прогнозы, таблицы будут автоматически упорядочены по значениям в столбце RequestId.

  12. Приступите к созданию пользовательских отчетов о данных модели.

Анализ данных модели с помощью Azure Databricks

  1. Создайте рабочую область Azure Databricks.

  2. Перейдите к рабочей области Databricks.

  3. В рабочей области Databricks выберите Отправить данные.

    Выбор параметра отправки данных в Databricks

  4. Выберите параметр Создать новую таблицу, а затем Другие источники данных>Хранилище BLOB-объектов Azure>Создать таблицу в записной книжке.

    Создание таблицы в Databricks

  5. Обновите расположение данных. Например:

    file_location = "wasbs://mycontainer@storageaccountname.blob.core.windows.net/modeldata/1a2b3c4d-5e6f-7g8h-9i10-j11k12l13m14/myresourcegrp/myWorkspace/aks-w-collv9/best_model/10/inputs/2018/*/*/data.csv" 
    file_type = "csv"
    

    Настройка Databricks

  6. Следуйте инструкциям в шаблоне, чтобы просмотреть и проанализировать данные.

Дальнейшие действия

Обнаружение смещения для собранных данных.