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


Сбор рабочих данных из моделей, развернутых для вывода в режиме реального времени

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

В этой статье вы узнаете, как использовать сборщик данных Машинное обучение Azure для сбора рабочих данных из модели, развернутой в Машинное обучение Azure управляемой сетевой конечной точке или конечной точке Kubernetes в Сети.

Вы можете включить сбор данных для новых или существующих развертываний сетевых конечных точек. Машинное обучение Azure сборщик данных записывает данные вывода в Хранилище BLOB-объектов Azure. Данные, собранные с помощью пакета SDK для Python, автоматически регистрируется в качестве ресурса данных в рабочей области Машинное обучение Azure. Этот ресурс данных можно использовать для мониторинга моделей.

Если вы хотите собирать данные вывода рабочей среды для модели MLflow, развернутой в конечной точке реального времени, см . сведения о сборе данных для моделей MLflow.

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

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

  • Управление доступом на основе ролей Azure (Azure RBAC) используется для предоставления доступа к операциям в Машинном обучении Azure. Чтобы выполнить действия, описанные в этой статье, учетной записи пользователя должна быть назначена роль владельца или участника для рабочей области Машинного обучения Azure либо пользовательская роль с разрешением Microsoft.MachineLearningServices/workspaces/onlineEndpoints/*. Дополнительные сведения см. в статье Управление доступом к рабочей области Машинного обучения Azure.

Выполнение пользовательского ведения журнала для мониторинга моделей

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

Обновление скрипта оценки с помощью пользовательского кода ведения журнала

Чтобы начать, добавьте пользовательский код ведения журнала в скрипт оценки (score.py). Для пользовательского azureml-ai-monitoring ведения журнала требуется пакет. Дополнительные сведения об этом пакете см. на комплексной странице PyPI для пакета SDK сборщика данных.

  1. azureml-ai-monitoring Импортируйте пакет, добавив следующую строку в начало скрипта оценки:

    from azureml.ai.monitoring import Collector
    
  2. Объявите переменные сбора данных (до пяти из них) в функции init() :

    Примечание.

    Если вы используете имена model_inputs и model_outputs объекты Collector , система мониторинга моделей автоматически распознает автоматически зарегистрированные ресурсы данных, чтобы обеспечить более простое взаимодействие с моделью мониторинга.

    global inputs_collector, outputs_collector
    inputs_collector = Collector(name='model_inputs')          
    outputs_collector = Collector(name='model_outputs')
    

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

    inputs_collector = Collector(name='model_inputs', on_error=lambda e: logging.info("ex:{}".format(e)))
    
  3. run() В функции используйте функцию collect() для записи кадров данных до и после оценки. Возвращается context из первого вызова collect()и содержит информацию, чтобы сопоставить входные данные модели и выходные данные модели позже.

    context = inputs_collector.collect(data) 
    result = model.predict(data)
    outputs_collector.collect(result, context)
    

    Примечание.

    collect() В настоящее время API регистрирует только pandas DataFrames. Если данные не отображаются в кадре данных при передаче collect(), он не будет зарегистрирован в хранилище, и будет сообщена ошибка.

Следующий код является примером полного скрипта оценки (score.py), использующего пользовательский пакет SDK для ведения журнала Python.

import pandas as pd
import json
from azureml.ai.monitoring import Collector

def init():
  global inputs_collector, outputs_collector, inputs_outputs_collector

  # instantiate collectors with appropriate names, make sure align with deployment spec
  inputs_collector = Collector(name='model_inputs')                    
  outputs_collector = Collector(name='model_outputs')

def run(data): 
  # json data: { "data" : {  "col1": [1,2,3], "col2": [2,3,4] } }
  pdf_data = preprocess(json.loads(data))
  
  # tabular data: {  "col1": [1,2,3], "col2": [2,3,4] }
  input_df = pd.DataFrame(pdf_data)

  # collect inputs data, store correlation_context
  context = inputs_collector.collect(input_df)

  # perform scoring with pandas Dataframe, return value is also pandas Dataframe
  output_df = predict(input_df) 

  # collect outputs data, pass in correlation_context so inputs and outputs data can be correlated later
  outputs_collector.collect(output_df, context)
  
  return output_df.to_dict()
  
def preprocess(json_data):
  # preprocess the payload to ensure it can be converted to pandas DataFrame
  return json_data["data"]

def predict(input_df):
  # process input and return with outputs
  ...
  
  return output_df

Обновление скрипта оценки для регистрации пользовательских уникальных идентификаторов

Помимо ведения журнала pandas DataFrames непосредственно в скрипте оценки, вы можете регистрировать данные с уникальными идентификаторами вашего выбора. Эти идентификаторы могут поступать из приложения, внешней системы или их создания. Если вы не предоставляете пользовательский идентификатор, как описано в этом разделе, сборщик данных автоматически создаст уникальный correlationid для сопоставления входных и выходных данных модели позже. Если указать пользовательский идентификатор, correlationid поле в зарегистрированных данных будет содержать значение предоставленного пользовательского идентификатора.

  1. Сначала выполните действия, описанные в предыдущем разделе, а затем импортируйте azureml.ai.monitoring.context пакет, добавив следующую строку в скрипт оценки:

    from azureml.ai.monitoring.context import BasicCorrelationContext
    
  2. В скрипте оценки создайте BasicCorrelationContext экземпляр объекта и передайте его в id журнал для этой строки. Мы рекомендуем id использовать уникальный идентификатор из вашей системы, чтобы можно было однозначно идентифицировать каждую строку журнала из хранилища BLOB-объектов. Передайте этот объект в вызов API в collect() качестве параметра:

      # create a context with a custom unique id
      artificial_context = BasicCorrelationContext(id='test')
    
      # collect inputs data, store correlation_context
      context = inputs_collector.collect(input_df, artificial_context)
    
  3. Убедитесь, что вы передаете контекст в контекст outputs_collector , чтобы входные и выходные данные модели имели одинаковый уникальный идентификатор, зарегистрированный с ними, и их можно легко сопоставить позже:

      # collect outputs data, pass in context so inputs and outputs data can be correlated later
      outputs_collector.collect(output_df, context)
    

Следующий код является примером полного скрипта оценки (score.py), который регистрирует пользовательские уникальные идентификаторы.

import pandas as pd
import json
from azureml.ai.monitoring import Collector
from azureml.ai.monitoring.context import BasicCorrelationContext

def init():
  global inputs_collector, outputs_collector, inputs_outputs_collector

  # instantiate collectors with appropriate names, make sure align with deployment spec
  inputs_collector = Collector(name='model_inputs')                    
  outputs_collector = Collector(name='model_outputs')

def run(data): 
  # json data: { "data" : {  "col1": [1,2,3], "col2": [2,3,4] } }
  pdf_data = preprocess(json.loads(data))
  
  # tabular data: {  "col1": [1,2,3], "col2": [2,3,4] }
  input_df = pd.DataFrame(pdf_data)

  # create a context with a custom unique id
  artificial_context = BasicCorrelationContext(id='test')

  # collect inputs data, store correlation_context
  context = inputs_collector.collect(input_df, artificial_context)

  # perform scoring with pandas Dataframe, return value is also pandas Dataframe
  output_df = predict(input_df) 

  # collect outputs data, pass in context so inputs and outputs data can be correlated later
  outputs_collector.collect(output_df, context)
  
  return output_df.to_dict()
  
def preprocess(json_data):
  # preprocess the payload to ensure it can be converted to pandas DataFrame
  return json_data["data"]

def predict(input_df):
  # process input and return with outputs
  ...
  
  return output_df

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

Если вы хотите использовать собранные данные для мониторинга производительности модели, важно, чтобы каждая строка, зарегистрированная в журнале, была уникальной correlationid , которая может использоваться для сопоставления данных с данными о действительности, когда эти данные становятся доступными. Сборщик данных автоматически создаст уникальное для correlationid каждой зарегистрированной строки и включает этот автоматически созданный идентификатор в correlationid поле в объекте JSON. Дополнительные сведения о схеме JSON см. в разделе "Хранение собранных данных в хранилище BLOB-объектов".

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

Обновление зависимостей

Прежде чем создать развертывание с помощью обновленного скрипта оценки, необходимо создать среду с базовым образом mcr.microsoft.com/azureml/openmpi4.1.0-ubuntu20.04 и соответствующими зависимостями conda. После этого можно создать среду с помощью спецификации в следующем YAML.

channels:
  - conda-forge
dependencies:
  - python=3.8
  - pip=22.3.1
  - pip:
      - azureml-defaults==1.38.0
      - azureml-ai-monitoring~=0.1.0b1
name: model-env

Обновление YAML развертывания

Затем вы создадите YAML развертывания. Чтобы создать YAML развертывания, включите data_collector атрибут и включите сбор данных для объектов model_inputs и model_outputsсоздайте экземпляр ранее с помощью пользовательского пакета SDK python для Collector ведения журнала:

data_collector:
  collections:
    model_inputs:
      enabled: 'True'
    model_outputs:
      enabled: 'True'

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

$schema: https://azuremlschemas.azureedge.net/latest/managedOnlineDeployment.schema.json
name: blue
endpoint_name: my_endpoint
model: azureml:iris_mlflow_model@latest
environment:
  image: mcr.microsoft.com/azureml/openmpi4.1.0-ubuntu20.04
  conda_file: model/conda.yaml
code_configuration:
  code: scripts
  scoring_script: score.py
instance_type: Standard_F2s_v2
instance_count: 1
data_collector:
  collections:
    model_inputs:
      enabled: 'True'
    model_outputs:
      enabled: 'True'

При необходимости можно настроить следующие дополнительные параметры для вашего data_collector:

  • data_collector.rolling_rate: скорость секционирования данных в хранилище. Выберите из значений: Minute, , DayHour, Monthили Year.
  • data_collector.sampling_rate: процент, представленный как десятичная ставка данных для сбора. Например, значение 1.0 представляет сбор 100 % данных.
  • data_collector.collections.<collection_name>.data.name: имя ресурса данных для регистрации с собранными данными.
  • data_collector.collections.<collection_name>.data.path: полный Машинное обучение Azure путь к хранилищу данных, в котором собранные данные должны быть зарегистрированы в качестве ресурса данных.
  • data_collector.collections.<collection_name>.data.version: версия ресурса данных, зарегистрированного с собранными данными в хранилище BLOB-объектов.

Сбор данных в пользовательский контейнер хранилища BLOB-объектов

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

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

  2. Убедитесь, что конечная точка Машинное обучение Azure имеет необходимые разрешения для записи в место назначения хранилища данных.

    Сборщик данных поддерживает управляемые удостоверения, назначенные системой (SAMIs), и назначенные пользователем управляемые удостоверения (UAMIs). Добавьте удостоверение в конечную точку. Storage Blob Data Contributor Назначьте роль этому удостоверению контейнер хранилища BLOB-объектов, который будет использоваться в качестве назначения данных. Сведения об использовании управляемых удостоверений в Azure см. в статье о назначении ролей Azure управляемому удостоверению.

  3. Обновите YAML развертывания, чтобы включить свойство в каждую data коллекцию.

    • Обязательный параметр data.nameуказывает имя ресурса данных, зарегистрированного с собранными данными.
    • Обязательный параметр data.pathуказывает полный Машинное обучение Azure путь к хранилищу данных, подключенный к контейнеру Хранилище BLOB-объектов Azure.
    • Необязательный параметр указывает data.versionверсию ресурса данных (по умолчанию — 1).

    В следующей конфигурации YAML показан пример включения data свойства в каждую коллекцию.

    data_collector:
      collections:
        model_inputs:
          enabled: 'True'
          data: 
            name: my_model_inputs_data_asset
            path: azureml://datastores/workspaceblobstore/paths/modelDataCollector/my_endpoint/blue/model_inputs
            version: 1
        model_outputs:
          enabled: 'True'
          data: 
            name: my_model_outputs_data_asset
            path: azureml://datastores/workspaceblobstore/paths/modelDataCollector/my_endpoint/blue/model_outputs 
            version: 1
    

    Примечание.

    Вы также можете использовать data.path параметр для указания на хранилища данных в разных подписках Azure, предоставив путь, следующий за форматом: azureml://subscriptions/<sub_id>/resourcegroups/<rg_name>/workspaces/<ws_name>/datastores/<datastore_name>/paths/<path>

Создание развертывания с помощью сбора данных

Разверните модель с включенным пользовательским ведением журнала:

$ az ml online-deployment create -f deployment.YAML

Дополнительные сведения о форматировании YAML развертывания для сбора данных с помощью сетевых конечных точек Kubernetes см. в схеме YAML с поддержкой Azure Arc (CLI версии 2).

Дополнительные сведения о форматировании YAML развертывания для сбора данных с помощью управляемых сетевых конечных точек см. в схеме YAML управляемого развертывания с помощью ИНТЕРФЕЙСА командной строки (2).

Ведение журнала полезных данных

Помимо пользовательского ведения журнала с помощью предоставленного пакета SDK для Python, вы можете собирать данные полезных данных HTTP-запросов и ответов непосредственно без необходимости расширения скрипта оценки (score.py).

  1. Чтобы включить ведение журнала полезных данных, в развертывании YAML используйте имена request и response:

    $schema: http://azureml/sdk-2-0/OnlineDeployment.json
    
    endpoint_name: my_endpoint 
    name: blue 
    model: azureml:my-model-m1:1 
    environment: azureml:env-m1:1 
    data_collector:
       collections:
           request:
               enabled: 'True'
           response:
               enabled: 'True'
    
  2. Разверните модель с включенным ведением журнала полезных данных:

    $ az ml online-deployment create -f deployment.YAML
    

При ведении журнала полезных данных собранные данные не гарантируются в табличном формате. Таким образом, если вы хотите использовать собранные полезные данные с мониторингом модели, вам потребуется предоставить компонент предварительной обработки, чтобы сделать табличные данные. Если вы заинтересованы в простом мониторинге моделей, рекомендуется использовать пользовательский пакет SDK для ведения журнала Python.

При использовании развертывания собранные данные передаются в хранилище BLOB-объектов рабочей области. Следующий код JSON является примером собранного HTTP-запроса:

{"specversion":"1.0",
"id":"19790b87-a63c-4295-9a67-febb2d8fbce0",
"source":"/subscriptions/aaaa0a0a-bb1b-cc2c-dd3d-eeeeee4e4e4e/resourceGroups/mire2etesting/providers/Microsoft.MachineLearningServices/workspaces/mirmasterenvws/onlineEndpoints/localdev-endpoint/deployments/localdev",
"type":"azureml.inference.request",
"datacontenttype":"application/json",
"time":"2022-05-25T08:59:48Z",
"data":{"data": [  [1,2,3,4,5,6,7,8,9,10], [10,9,8,7,6,5,4,3,2,1]]},
"path":"/score",
"method":"POST",
"contentrange":"bytes 0-59/*",
"correlationid":"aaaa0000-bb11-2222-33cc-444444dddddd","xrequestid":"aaaa0000-bb11-2222-33cc-444444dddddd"}

И следующий код JSON является еще одним примером собранного HTTP-ответа:

{"specversion":"1.0",
"id":"bbd80e51-8855-455f-a719-970023f41e7d",
"source":"/subscriptions/aaaa0a0a-bb1b-cc2c-dd3d-eeeeee4e4e4e/resourceGroups/mire2etesting/providers/Microsoft.MachineLearningServices/workspaces/mirmasterenvws/onlineEndpoints/localdev-endpoint/deployments/localdev",
"type":"azureml.inference.response",
"datacontenttype":"application/json",
"time":"2022-05-25T08:59:48Z",
"data":[11055.977245525679, 4503.079536107787],
"contentrange":"bytes 0-38/39",
"correlationid":"aaaa0000-bb11-2222-33cc-444444dddddd","xrequestid":"aaaa0000-bb11-2222-33cc-444444dddddd"}

Хранение собранных данных в хранилище BLOB-объектов

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

Выходные данные и формат хранилища BLOB-объектов:

  • По умолчанию собранные данные хранятся по следующему пути в хранилище BLOB-объектов рабочей области: azureml://datastores/workspaceblobstore/paths/modelDataCollector

  • Окончательный путь в большом двоичном объекте будет добавлен.{endpoint_name}/{deployment_name}/{collection_name}/{yyyy}/{MM}/{dd}/{HH}/{instance_id}.jsonl

  • Каждая строка в файле представляет собой объект JSON, представляющий один запрос вывода или ответ, записанный в журнал.

Примечание.

collection_name ссылается на имя сбора данных (например, model_inputs или model_outputs). instance_id — уникальный идентификатор, определяющий группирование данных, которые были зарегистрированы.

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

{"specversion":"1.0",
"id":"725aa8af-0834-415c-aaf5-c76d0c08f694",
"source":"/subscriptions/bbbb1b1b-cc2c-dd3d-ee4e-ffffff5f5f5f/resourceGroups/mire2etesting/providers/Microsoft.MachineLearningServices/workspaces/mirmasterws/onlineEndpoints/localdev-endpoint/deployments/localdev",
"type":"azureml.inference.inputs",
"datacontenttype":"application/json",
"time":"2022-12-01T08:51:30Z",
"data":[{"label":"DRUG","pattern":"aspirin"},{"label":"DRUG","pattern":"trazodone"},{"label":"DRUG","pattern":"citalopram"}],
"correlationid":"bbbb1111-cc22-3333-44dd-555555eeeeee","xrequestid":"bbbb1111-cc22-3333-44dd-555555eeeeee",
"modelversion":"default",
"collectdatatype":"pandas.core.frame.DataFrame",
"agent":"monitoring-sdk/0.1.2",
"contentrange":"bytes 0-116/117"}

Совет

Разрывы строк отображаются только для удобочитаемости. В собранных jsonl-файлах нет разрывов строк.

Хранение больших полезных данных

Если полезные данные больше 4 МБ, в файле будет событие, содержащееся в {instance_id}.jsonl {endpoint_name}/{deployment_name}/request/.../{instance_id}.jsonl пути, который указывает на необработанный путь к файлу, который должен иметь следующий путь: blob_url/{blob_container}/{blob_path}/{endpoint_name}/{deployment_name}/{rolled_time}/{instance_id}.jsonl Собранные данные будут существовать по этому пути.

Хранение двоичных данных

С собранными двоичными данными мы показываем необработанный файл напрямую с instance_id именем файла. Двоичные данные помещаются в ту же папку, что и путь к исходной группе запросов, на основе rolling_rate. В следующем примере показан путь к полю данных. Формат — json, а разрывы строк отображаются только для удобства чтения:

{
"specversion":"1.0",
"id":"ba993308-f630-4fe2-833f-481b2e4d169a",
"source":"/subscriptions//resourceGroups//providers/Microsoft.MachineLearningServices/workspaces/ws/onlineEndpoints/ep/deployments/dp",
"type":"azureml.inference.request",
"datacontenttype":"text/plain",
"time":"2022-02-28T08:41:07Z",
"data":"https://masterws0373607518.blob.core.windows.net/modeldata/mdc/%5Byear%5D%5Bmonth%5D%5Bday%5D-%5Bhour%5D_%5Bminute%5D/ba993308-f630-4fe2-833f-481b2e4d169a",
"path":"/score?size=1",
"method":"POST",
"contentrange":"bytes 0-80770/80771",
"datainblob":"true"
}

Пакетная обработка сборщика данных

Если запросы отправляются в течение коротких интервалов времени друг от друга, сборщик данных пакетирует их вместе в один и тот же объект JSON. Например, если вы запускаете скрипт для отправки примеров данных в конечную точку, а в развертывании включена сбор данных, некоторые запросы могут быть пакетированы вместе в зависимости от интервала времени между ними. Если вы используете сбор данных с мониторингом Машинное обучение Azure модели, служба мониторинга моделей обрабатывает каждый запрос независимо. Однако если вы ожидаете, что каждая строка данных, зарегистрированная в журнале, имеет свою уникальную уникальность correlationid, можно включить correlationid в качестве столбца в кадр данных pandas, который вы регистрируете с помощью сборщика данных. Дополнительные сведения о том, как можно включить уникальный correlationid в качестве столбца в кадр данных Pandas, см. в разделе "Сбор данных" для мониторинга производительности модели.

Ниже приведен пример двух зарегистрированных запросов, которые пакетируются вместе:

{"specversion":"1.0",
"id":"720b8867-54a2-4876-80eb-1fd6a8975770",
"source":"/subscriptions/cccc2c2c-dd3d-ee4e-ff5f-aaaaaa6a6a6a/resourceGroups/rg-bozhlinmomoignite/providers/Microsoft.MachineLearningServices/workspaces/momo-demo-ws/onlineEndpoints/credit-default-mdc-testing-4/deployments/main2",
"type":"azureml.inference.model_inputs",
"datacontenttype":"application/json",
"time":"2024-03-05T18:16:25Z",
"data":[{"LIMIT_BAL":502970,"AGE":54,"BILL_AMT1":308068,"BILL_AMT2":381402,"BILL_AMT3":442625,"BILL_AMT4":320399,"BILL_AMT5":322616,"BILL_AMT6":397534,"PAY_AMT1":17987,"PAY_AMT2":78764,"PAY_AMT3":26067,"PAY_AMT4":24102,"PAY_AMT5":-1155,"PAY_AMT6":2154,"SEX":2,"EDUCATION":2,"MARRIAGE":2,"PAY_0":0,"PAY_2":0,"PAY_3":0,"PAY_4":0,"PAY_5":0,"PAY_6":0},{"LIMIT_BAL":293458,"AGE":35,"BILL_AMT1":74131,"BILL_AMT2":-71014,"BILL_AMT3":59284,"BILL_AMT4":98926,"BILL_AMT5":110,"BILL_AMT6":1033,"PAY_AMT1":-3926,"PAY_AMT2":-12729,"PAY_AMT3":17405,"PAY_AMT4":25110,"PAY_AMT5":7051,"PAY_AMT6":1623,"SEX":1,"EDUCATION":3,"MARRIAGE":2,"PAY_0":-2,"PAY_2":-2,"PAY_3":-2,"PAY_4":-2,"PAY_5":-1,"PAY_6":-1}],
"contentrange":"bytes 0-6794/6795",
"correlationid":"test",
"xrequestid":"test",
"modelversion":"default",
"collectdatatype":"pandas.core.frame.DataFrame",
"agent":"azureml-ai-monitoring/0.1.0b4"}

Просмотр данных в пользовательском интерфейсе студии

Чтобы просмотреть собранные данные в хранилище BLOB-объектов из пользовательского интерфейса студии:

  1. Перейдите на вкладку "Данные" в рабочей области Машинное обучение Azure:

    Снимок экрана: страница данных в рабочей области Машинное обучение Azure

  2. Перейдите к хранилищам данных и выберите хранилище workspaceblobstore (по умолчанию):

    Снимок экрана: страница хранилища данных в рабочей области AzureML

  3. Используйте меню "Обзор", чтобы просмотреть собранные рабочие данные:

    Снимок экрана: структура дерева данных в хранилище данных

Сбор данных для моделей MLflow

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

При настройке развертывания модели можно включить сбор рабочих данных. На вкладке "Развертывание" выберите "Включено " для сбора данных.

После включения сбора данных рабочие данные вывода будут записаны в хранилище BLOB-объектов рабочей области Машинное обучение Azure, а два ресурса данных будут созданы с именами <endpoint_name>-<deployment_name>-model_inputs и<endpoint_name>-<deployment_name>-model_outputs. Эти ресурсы данных обновляются в режиме реального времени при использовании развертывания в рабочей среде. Затем мониторы модели могут использовать ресурсы данных для мониторинга производительности модели в рабочей среде.