Coletar dados de produção de modelos implantados para inferência em tempo real
APLICA-SE A:Azure CLI ml extension v2 (current)Python SDK azure-ai-ml v2 (current)
Neste artigo, você aprenderá a usar o coletor de Dados do Aprendizado de Máquina do Azure para coletar dados de inferência de produção de um modelo implantado em um ponto de extremidade online gerenciado do Azure Machine Learning ou em um ponto de extremidade online do Kubernetes.
Você pode habilitar a coleta de dados para implantações de ponto de extremidade online novas ou existentes. O coletor de dados do Azure Machine Learning registra dados de inferência no Armazenamento de Blobs do Azure. Os dados coletados com o SDK do Python são registrados automaticamente como um ativo de dados em seu espaço de trabalho do Azure Machine Learning. Esse ativo de dados pode ser usado para monitoramento de modelos.
Se você estiver interessado em coletar dados de inferência de produção para um modelo MLflow implantado em um ponto de extremidade em tempo real, consulte Coleta de dados para modelos MLflow.
Pré-requisitos
Antes de seguir as etapas neste artigo, verifique se você tem os seguintes pré-requisitos:
A CLI do Azure e a
ml
extensão para a CLI do Azure. Para obter mais informações, consulte Instalar, configurar e usar a CLI (v2).Importante
Os exemplos de CLI neste artigo pressupõem que você esteja usando o shell Bash (ou compatível). Por exemplo, de um sistema Linux ou Subsistema Windows para Linux.
Uma área de trabalho do Azure Machine Learning. Se você não tiver uma, use as etapas em Instalar, configurar e usar a CLI (v2) para criar uma.
- Os controlos de acesso baseado em funções (RBAC do Azure) são utilizados para conceder acesso às operações no Azure Machine Learning. Para executar as etapas neste artigo, sua conta de usuário deve receber a função de proprietário ou colaborador para o espaço de trabalho do Azure Machine Learning ou uma função personalizada que permita
Microsoft.MachineLearningServices/workspaces/onlineEndpoints/*
. Para obter mais informações, consulte Gerenciar o acesso a um espaço de trabalho do Azure Machine Learning.
Tenha um modelo registrado que você possa usar para implantação. Se você não tiver um modelo registrado, consulte Registrar seu modelo como um ativo no Machine Learning.
Crie um ponto de extremidade online do Azure Machine Learning. Se você não tiver um ponto de extremidade online existente, consulte Implantar e pontuar um modelo de aprendizado de máquina usando um ponto de extremidade online.
Executar log personalizado para monitoramento de modelo
A coleta de dados com registro em log personalizado permite que você registre pandas DataFrames diretamente do seu script de pontuação antes, durante e depois de quaisquer transformações de dados. Com o registro em log personalizado, os dados tabulares são registrados em tempo real no Blob Storage do seu espaço de trabalho ou em um contêiner de armazenamento de blob personalizado. Os monitores modelo podem consumir os dados do armazenamento.
Atualize seu script de pontuação com código de registro personalizado
Para começar, adicione um código de registro personalizado ao seu script de pontuação (score.py
). Para registro em log personalizado, você precisa do azureml-ai-monitoring
pacote. Para obter mais informações sobre este pacote, consulte a página abrangente do PyPI para o SDK do coletor de dados.
Importe o
azureml-ai-monitoring
pacote adicionando a seguinte linha à parte superior do script de pontuação:from azureml.ai.monitoring import Collector
Declare suas variáveis de coleta de dados (até cinco delas) em sua
init()
função:Nota
Se você usar os nomes
model_inputs
emodel_outputs
para seusCollector
objetos, o sistema de monitoramento de modelo reconhecerá automaticamente os ativos de dados registrados automaticamente para fornecer uma experiência de monitoramento de modelo mais perfeita.global inputs_collector, outputs_collector inputs_collector = Collector(name='model_inputs') outputs_collector = Collector(name='model_outputs')
Por padrão, o Aprendizado de Máquina do Azure gera uma exceção se houver uma falha durante a coleta de dados. Opcionalmente, você pode usar o
on_error
parâmetro para especificar uma função a ser executada se ocorrer uma falha de registro. Por exemplo, usando oon_error
parâmetro no código a seguir, o Azure Machine Learning registra o erro em vez de lançar uma exceção:inputs_collector = Collector(name='model_inputs', on_error=lambda e: logging.info("ex:{}".format(e)))
Em sua
run()
função, use acollect()
função para registrar DataFrames antes e depois da pontuação. Ocontext
é retornado da primeira chamada paracollect()
, e contém informações para correlacionar as entradas e saídas do modelo posteriormente.context = inputs_collector.collect(data) result = model.predict(data) outputs_collector.collect(result, context)
Nota
Atualmente, a
collect()
API registra apenas pandas DataFrames. Se os dados não estiverem em um DataFrame quando passados paracollect()
o , eles não serão registrados no armazenamento e um erro será relatado.
O código a seguir é um exemplo de um script de pontuação completa (score.py
) que usa o log personalizado Python SDK.
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
Atualize seu script de pontuação para registrar IDs exclusivos personalizados
Além de registrar pandas DataFrames diretamente em seu script de pontuação, você pode registrar dados com IDs exclusivos de sua escolha. Esses IDs podem vir do seu aplicativo, de um sistema externo ou você pode gerá-los. Se você não fornecer uma ID personalizada, conforme detalhado nesta seção, o coletor de dados gerará automaticamente um exclusivo correlationid
para ajudá-lo a correlacionar as entradas e saídas do seu modelo posteriormente. Se você fornecer uma ID personalizada, o correlationid
campo nos dados registrados conterá o valor da ID personalizada fornecida.
Primeiro, conclua as etapas na seção anterior e, em seguida, importe o
azureml.ai.monitoring.context
pacote adicionando a seguinte linha ao seu script de pontuação:from azureml.ai.monitoring.context import BasicCorrelationContext
No script de pontuação, instancie um
BasicCorrelationContext
objeto e passe a linha queid
você deseja registrar. Recomendamos que esteid
seja um ID exclusivo do seu sistema, para que possa identificar exclusivamente cada linha registada a partir do seu Armazenamento de Blobs. Passe este objeto para suacollect()
chamada de API como um parâmetro:# 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)
Certifique-se de passar o contexto para o seu
outputs_collector
para que as entradas e saídas do seu modelo tenham o mesmo ID exclusivo registrado com eles, e eles possam ser facilmente correlacionados mais tarde:# collect outputs data, pass in context so inputs and outputs data can be correlated later outputs_collector.collect(output_df, context)
O código a seguir é um exemplo de um script de pontuação completo (score.py
) que registra IDs exclusivos personalizados.
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
Coletar dados para monitoramento de desempenho do modelo
Se você quiser usar os dados coletados para o monitoramento do desempenho do modelo, é importante que cada linha registrada tenha uma linha exclusiva correlationid
que possa ser usada para correlacionar os dados com os dados de verdade básica, quando esses dados estiverem disponíveis. O coletor de dados gerará automaticamente um exclusivo correlationid
para cada linha registrada e incluirá essa ID gerada automaticamente no correlationid
campo no objeto JSON. Para obter mais informações sobre o esquema JSON, consulte armazenar dados coletados no armazenamento de blobs.
Se você quiser usar sua própria ID exclusiva para registrar com seus dados de produção, recomendamos que registre essa ID como uma coluna separada em seu DataFrame pandas, uma vez que o coletor de dados agrupa solicitações que estão próximas umas das outras. Ao registrar o como uma coluna separada, ele estará prontamente disponível a correlationid
jusante para integração com dados de verdade terrestre.
Atualize suas dependências
Antes de criar sua implantação com o script de pontuação atualizado, você precisa criar seu ambiente com a imagem mcr.microsoft.com/azureml/openmpi4.1.0-ubuntu20.04
base e as dependências conda apropriadas. Depois disso, você pode construir o ambiente, usando a especificação no YAML a seguir.
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
Atualize seu YAML de implantação
Em seguida, crie o YAML de implantação. Para criar o YAML de implantação, inclua o atributo e habilite a data_collector
coleta de dados para os Collector
objetos model_inputs
e model_outputs
, que você instanciou anteriormente por meio do SDK Python de log personalizado:
data_collector:
collections:
model_inputs:
enabled: 'True'
model_outputs:
enabled: 'True'
O código a seguir é um exemplo de um YAML de implantação abrangente para uma implantação de ponto de extremidade online gerenciado. Você deve atualizar o YAML de implantação de acordo com seu cenário. Para obter mais exemplos sobre como formatar seu YAML de implantação para log de dados de inferência, consulte Exemplos de coletor de dados de modelo do 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'
Opcionalmente, você pode ajustar os seguintes parâmetros extras para o seu data_collector
:
data_collector.rolling_rate
: A taxa para particionar os dados no armazenamento. Escolha entre os valores:Minute
,Hour
,Day
,Month
, ouYear
.data_collector.sampling_rate
: A percentagem, representada como uma taxa decimal, dos dados a recolher. Por exemplo, um valor de representa a coleta de1.0
100% dos dados.data_collector.collections.<collection_name>.data.name
: O nome do ativo de dados a ser registrado com os dados coletados.data_collector.collections.<collection_name>.data.path
: O caminho completo do armazenamento de dados do Azure Machine Learning onde os dados coletados devem ser registrados como um ativo de dados.data_collector.collections.<collection_name>.data.version
: A versão do ativo de dados a ser registrado com os dados coletados no armazenamento de blobs.
Coletar dados em um contêiner de armazenamento de blob personalizado
Você pode usar o coletor de dados para coletar seus dados de inferência de produção para um contêiner de armazenamento de blob personalizado seguindo estas etapas:
Conecte o contêiner de armazenamento a um armazenamento de dados do Azure Machine Learning. Para obter mais informações sobre como conectar o contêiner de armazenamento ao armazenamento de dados do Azure Machine Learning, consulte Criar datastores.
Verifique se o ponto de extremidade do Azure Machine Learning tem as permissões necessárias para gravar no destino do armazenamento de dados.
O coletor de dados suporta identidades gerenciadas atribuídas pelo sistema (SAMIs) e identidades gerenciadas atribuídas pelo usuário (UAMIs). Adicione a identidade ao seu ponto de extremidade. Atribua a
Storage Blob Data Contributor
função a essa identidade com o contêiner de armazenamento de Blob a ser usado como destino de dados. Para saber como usar identidades gerenciadas no Azure, consulte Atribuir funções do Azure a uma identidade gerenciada.Atualize seu YAML de implantação para incluir a
data
propriedade em cada coleção.- O parâmetro required ,
data.name
, especifica o nome do ativo de dados a ser registrado com os dados coletados. - O parâmetro necessário ,
data.path
, especifica o caminho de armazenamento de dados do Azure Machine Learning totalmente formado, que está conectado ao seu contêiner de Armazenamento de Blob do Azure. - O parâmetro opcional ,
data.version
, especifica a versão do ativo de dados (o padrão é 1).
A configuração YAML a seguir mostra um exemplo de como incluir a
data
propriedade em cada coleção.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
Nota
Você também pode usar o
data.path
parâmetro para apontar para armazenamentos de dados em diferentes assinaturas do Azure fornecendo um caminho que segue o formato:azureml://subscriptions/<sub_id>/resourcegroups/<rg_name>/workspaces/<ws_name>/datastores/<datastore_name>/paths/<path>
- O parâmetro required ,
Crie sua implantação com coleta de dados
Implante o modelo com o log personalizado habilitado:
$ az ml online-deployment create -f deployment.YAML
Para obter mais informações sobre como formatar seu YAML de implantação para coleta de dados com pontos de extremidade online do Kubernetes, consulte o esquema YAML de implantação online do Kubernetes habilitado para CLI (v2) Azure Arc.
Para obter mais informações sobre como formatar seu YAML de implantação para coleta de dados com pontos de extremidade online gerenciados, consulte CLI (v2) managed online deployment YAML schema.
Executar registro de carga útil
Além do registro em log personalizado com o SDK Python fornecido, você pode coletar dados de carga HTTP de solicitação e resposta diretamente, sem a necessidade de aumentar seu script de pontuação (score.py
).
Para habilitar o registro de carga útil, em sua implantação YAML, use os nomes
request
eresponse
:$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'
Implante o modelo com o registro de carga útil habilitado:
$ az ml online-deployment create -f deployment.YAML
Com o registo de carga útil, não é garantido que os dados recolhidos estejam em formato tabular. Portanto, se você quiser usar dados de carga coletados com monitoramento de modelo, será necessário fornecer um componente de pré-processamento para tornar os dados tabulares. Se você estiver interessado em uma experiência de monitoramento de modelo perfeita, recomendamos usar o SDK Python de registro personalizado.
À medida que sua implantação é usada, os dados coletados fluem para o armazenamento de Blob do espaço de trabalho. O código JSON a seguir é um exemplo de uma solicitação HTTP coletada:
{"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"}
E o seguinte código JSON é outro exemplo de uma resposta HTTP coletada:
{"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"}
Armazene os dados coletados no armazenamento de blob
A coleta de dados permite que você registre dados de inferência de produção em um destino de armazenamento de Blob de sua escolha. As configurações de destino de collection_name
dados são configuráveis no nível.
Saída/formato de armazenamento de Blob:
Por padrão, os dados coletados são armazenados no seguinte caminho no armazenamento de Blob do espaço de trabalho:
azureml://datastores/workspaceblobstore/paths/modelDataCollector
.O caminho final no blob será anexado com
{endpoint_name}/{deployment_name}/{collection_name}/{yyyy}/{MM}/{dd}/{HH}/{instance_id}.jsonl
.Cada linha no arquivo é um objeto JSON que representa uma única solicitação/resposta de inferência que foi registrada.
Nota
collection_name
refere-se ao nome da recolha de dados (por exemplo, model_inputs
ou model_outputs
).
instance_id
é um id exclusivo que identifica o agrupamento de dados que foi registrado.
Os dados coletados seguem o seguinte esquema JSON. Os dados recolhidos estão disponíveis a partir da data
chave e são fornecidos metadados adicionais.
{"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"}
Gorjeta
As quebras de linha são mostradas apenas para facilitar a leitura. Em seus arquivos .jsonl coletados, não haverá quebras de linha.
Armazene grandes cargas úteis
Se a carga útil dos seus dados for maior que 4 MB, haverá um evento no {instance_id}.jsonl
arquivo contido no {endpoint_name}/{deployment_name}/request/.../{instance_id}.jsonl
caminho que aponta para um caminho de arquivo bruto, que deve ter o seguinte caminho: blob_url/{blob_container}/{blob_path}/{endpoint_name}/{deployment_name}/{rolled_time}/{instance_id}.jsonl
. Os dados recolhidos existirão neste caminho.
Armazenar dados binários
Com os dados binários coletados, mostramos o arquivo bruto diretamente, com instance_id
o nome do arquivo. Os dados binários são colocados na mesma pasta que o caminho do grupo de origem da solicitação, com base no rolling_rate
. O exemplo a seguir reflete o caminho no campo de dados. O formato é json, e as quebras de linha são mostradas apenas para legibilidade:
{
"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"
}
Lote do coletor de dados
Se as solicitações forem enviadas em intervalos de tempo curtos uma da outra, o coletor de dados as agrupará em lote no mesmo objeto JSON. Por exemplo, se você executar um script para enviar dados de exemplo para seu ponto de extremidade e a implantação tiver a coleta de dados habilitada, algumas das solicitações poderão ser agrupadas em lote, dependendo do intervalo de tempo entre elas. Se você estiver usando a coleta de dados com o monitoramento de modelo do Azure Machine Learning, o serviço de monitoramento de modelo lidará com cada solicitação de forma independente. No entanto, se você espera que cada linha de dados registrada tenha seu próprio exclusivo correlationid
, você pode incluir a correlationid
coluna como um no DataFrame pandas que você está registrando com o coletor de dados. Para obter mais informações sobre como você pode incluir seu exclusivo correlationid
como uma coluna no DataFrame pandas, consulte Coletar dados para monitoramento de desempenho do modelo.
Aqui está um exemplo de duas solicitações registradas que são agrupadas em lote:
{"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"}
Exibir os dados na interface do usuário do estúdio
Para exibir os dados coletados no Armazenamento de Blob a partir da interface do usuário do estúdio:
Vá para a guia Dados em seu espaço de trabalho do Azure Machine Learning:
Navegue até Datastores e selecione seu workspaceblobstore (Padrão):
Use o menu Procurar para visualizar os dados de produção coletados:
Coletar dados para modelos MLflow
Se você estiver implantando um modelo MLflow em um ponto de extremidade online do Azure Machine Learning, poderá habilitar a coleta de dados de inferência de produção com uma única alternância na interface do usuário do estúdio. Se a coleta de dados estiver ativada, o Aprendizado de Máquina do Azure instrumentará automaticamente seu script de pontuação com código de log personalizado para garantir que os dados de produção sejam registrados no Armazenamento de Blobs do espaço de trabalho. Os monitores de modelo podem usar os dados para monitorar o desempenho do modelo MLflow em produção.
Ao configurar a implantação do modelo, você pode habilitar a coleta de dados de produção. Na guia Implantação, selecione Habilitado para coleta de dados.
Depois de habilitar a coleta de dados, os dados de inferência de produção serão registrados no Armazenamento de Blobs do espaço de trabalho do Azure Machine Learning e dois ativos de dados serão criados com nomes <endpoint_name>-<deployment_name>-model_inputs
e <endpoint_name>-<deployment_name>-model_outputs
. Esses ativos de dados são atualizados em tempo real à medida que você usa sua implantação na produção. Os monitores de modelo podem usar os ativos de dados para monitorar o desempenho do modelo em produção.