Shromažďování produkčních dat z modelů nasazených pro odvozování v reálném čase
PLATÍ PRO:Rozšíření Azure CLI ml v2 (aktuální)Python SDK azure-ai-ml v2 (aktuální)
V tomto článku se dozvíte, jak pomocí kolektoru dat služby Azure Machine Learning shromažďovat produkční data odvozování z modelu nasazeného do online koncového bodu spravovaného službou Azure Machine Learning nebo z online koncového bodu Kubernetes.
Shromažďování dat můžete povolit pro nová nebo existující nasazení online koncových bodů. Protokoly kolektoru dat služby Azure Machine Learning odvozuje data ve službě Azure Blob Storage. Data shromážděná pomocí sady Python SDK se automaticky zaregistrují jako datový prostředek v pracovním prostoru Služby Azure Machine Learning. Tento datový asset lze použít k monitorování modelu.
Pokud vás zajímá shromažďování produkčních dat odvozování pro model MLflow nasazený do koncového bodu v reálném čase, přečtěte si téma Shromažďování dat pro modely MLflow.
Požadavky
Než budete postupovat podle kroků v tomto článku, ujistěte se, že máte následující požadavky:
Azure CLI a
ml
rozšíření azure CLI. Další informace najdete v tématu Instalace, nastavení a použití rozhraní příkazového řádku (v2).Důležité
Příklady rozhraní příkazového řádku v tomto článku předpokládají, že používáte prostředí Bash (nebo kompatibilní). Například ze systému Linux nebo Subsystém Windows pro Linux.
Pracovní prostor služby Azure Machine Learning. Pokud ho nemáte, vytvořte ho pomocí kroků v části Instalace, nastavení a použití rozhraní příkazového řádku (v2).
- Řízení přístupu na základě role v Azure (Azure RBAC) slouží k udělení přístupu k operacím ve službě Azure Machine Learning. Pokud chcete provést kroky v tomto článku, musí mít váš uživatelský účet přiřazenou roli vlastníka nebo přispěvatele pro pracovní prostor Služby Azure Machine Learning nebo vlastní roli, která povoluje
Microsoft.MachineLearningServices/workspaces/onlineEndpoints/*
. Další informace najdete v tématu Správa přístupu k pracovnímu prostoru Azure Machine Learning.
Máte zaregistrovaný model, který můžete použít k nasazení. Pokud nemáte zaregistrovaný model, přečtěte si téma Registrace modelu jako prostředku ve službě Machine Learning.
Vytvořte online koncový bod služby Azure Machine Learning. Pokud nemáte existující online koncový bod, přečtěte si téma Nasazení a hodnocení modelu strojového učení pomocí online koncového bodu.
Provádění vlastního protokolování pro monitorování modelů
Shromažďování dat pomocí vlastního protokolování umožňuje protokolovat datové rámce pandas přímo ze skriptu vyhodnocování před, během a po všech transformacích dat. Pomocí vlastního protokolování se tabulková data protokolují v reálném čase do služby Blob Storage pracovního prostoru nebo do vlastního kontejneru úložiště objektů blob. Monitorování modelů může využívat data z úložiště.
Aktualizace hodnoticího skriptu vlastním kódem protokolování
Začněte přidáním vlastního kódu protokolování do hodnoticího skriptu (score.py
). Pro vlastní protokolování potřebujete azureml-ai-monitoring
balíček. Další informace o tomto balíčku najdete na komplexní stránce PyPI pro sadu SDK kolektoru dat.
azureml-ai-monitoring
Naimportujte balíček přidáním následujícího řádku do horní části hodnoticího skriptu:from azureml.ai.monitoring import Collector
Deklarujte proměnné shromažďování dat (až pět z nich) ve vaší
init()
funkci:Poznámka:
Pokud používáte názvy
model_inputs
amodel_outputs
Collector
objekty, systém monitorování modelů automaticky rozpozná automaticky registrované datové prostředky, aby poskytoval plynulejší prostředí monitorování modelu.global inputs_collector, outputs_collector inputs_collector = Collector(name='model_inputs') outputs_collector = Collector(name='model_outputs')
Azure Machine Learning ve výchozím nastavení vyvolá výjimku, pokud během shromažďování dat dojde k chybě. Volitelně můžete pomocí parametru
on_error
určit funkci, která se má spustit, pokud dojde k selhání protokolování. Například pomocí parametruon_error
v následujícím kódu azure Machine Learning zaznamená chybu místo vyvolání výjimky:inputs_collector = Collector(name='model_inputs', on_error=lambda e: logging.info("ex:{}".format(e)))
Ve své
run()
funkci použijtecollect()
funkci k protokolování datových rámců před a po vyhodnocení. Vrátí secontext
z prvního volánícollect()
a obsahuje informace, které korelují vstupy modelu a výstupy modelu později.context = inputs_collector.collect(data) result = model.predict(data) outputs_collector.collect(result, context)
Poznámka:
collect()
V současné době rozhraní API protokoluje pouze datové rámce pandas. Pokud data nejsou v datovém rámci při předánícollect()
, nebudou se protokolovat do úložiště a zobrazí se chyba.
Následující kód je příkladem úplného hodnoticího skriptu (score.py
), který používá vlastní protokolování sady 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
Aktualizace hodnoticího skriptu pro protokolování vlastních jedinečných ID
Kromě protokolování datových rámců pandas přímo v bodovacím skriptu můžete data protokolovat s jedinečnými ID podle vašeho výběru. Tato ID můžou pocházet z vaší aplikace, z externího systému nebo je můžete vygenerovat. Pokud nezadáte vlastní ID, jak je podrobně popsáno v této části, kolektor dat automaticky vygeneruje jedinečnou funkci correlationid
, která vám pomůže později korelovat vstupy a výstupy modelu. Pokud zadáte vlastní ID, correlationid
bude pole v protokolovaných datech obsahovat hodnotu zadaného vlastního ID.
Nejprve proveďte kroky v předchozí části a pak balíček naimportujte
azureml.ai.monitoring.context
přidáním následujícího řádku do skriptu pro bodování:from azureml.ai.monitoring.context import BasicCorrelationContext
V bodovacím skriptu vytvořte instanci objektu
BasicCorrelationContext
a předejteid
objekt, který chcete pro tento řádek protokolovat. Doporučujeme, aby se jednáid
o jedinečné ID z vašeho systému, abyste mohli jednoznačně identifikovat každý protokolovaný řádek ze služby Blob Storage. Předejte tento objekt docollect()
volání rozhraní API jako parametr:# 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)
Ujistěte se, že do kontextu předáte
outputs_collector
svůj kontext, aby vstupy a výstupy modelu měly stejné jedinečné ID, které jsou zaprotokolovány s nimi, a je možné je později snadno korelovat:# collect outputs data, pass in context so inputs and outputs data can be correlated later outputs_collector.collect(output_df, context)
Následující kód je příkladem úplného hodnoticího skriptu (score.py
), který protokoluje vlastní jedinečná ID.
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
Shromažďování dat pro monitorování výkonu modelu
Pokud chcete použít shromážděná data pro monitorování výkonu modelu, je důležité, aby každý protokolovaný řádek byl jedinečný correlationid
, který se dá použít ke korelaci dat s podkladovými pravdivými daty, pokud jsou tato data k dispozici. Kolektor dat automaticky vygeneruje jedinečné correlationid
pro každý protokolovaný řádek a zahrne toto automaticky vygenerované ID do correlationid
pole v objektu JSON. Další informace o schématu JSON najdete v tématu ukládání shromážděných dat v úložišti objektů blob.
Pokud chcete pro protokolování s produkčními daty použít vlastní jedinečné ID, doporučujeme toto ID protokolovat jako samostatný sloupec v datovém rámci pandas, protože požadavky kolektoru dat, které jsou blízko sebe. Když ho correlationid
zapíšete jako samostatný sloupec, bude snadno dostupný pro integraci s podkladovými pravdivými daty.
Aktualizace závislostí
Než budete moct vytvořit nasazení pomocí aktualizovaného bodovacího skriptu, musíte vytvořit prostředí se základní imagí mcr.microsoft.com/azureml/openmpi4.1.0-ubuntu20.04
a odpovídajícími závislostmi conda. Potom můžete vytvořit prostředí pomocí specifikace v následujícím JAZYCE 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
Aktualizace YAML nasazení
Dále vytvoříte YAML nasazení. Pokud chcete vytvořit YAML nasazení, zahrňte data_collector
atribut a povolte shromažďování dat pro Collector
objekty model_inputs
a model_outputs
, které jste vytvořili dříve prostřednictvím vlastního protokolování sady Python SDK:
data_collector:
collections:
model_inputs:
enabled: 'True'
model_outputs:
enabled: 'True'
Následující kód je příkladem komplexního nasazení YAML pro spravované nasazení online koncového bodu. Podle vašeho scénáře byste měli aktualizovat YAML nasazení. Další příklady formátování YAML nasazení pro protokolování dat odvozování najdete v příkladech kolektoru dat modelu 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'
Volitelně můžete upravit následující dodatečné parametry:data_collector
data_collector.rolling_rate
: Rychlost rozdělení dat do úložiště. Vyberte si z hodnot:Minute
,Hour
,Day
,Month
neboYear
.data_collector.sampling_rate
: Procento, reprezentované jako desetinná sazba dat, která se mají shromáždit. Například hodnota1.0
představuje shromažďování 100 % dat.data_collector.collections.<collection_name>.data.name
: Název datového prostředku pro registraci se shromážděnými daty.data_collector.collections.<collection_name>.data.path
: Úplná cesta úložiště dat ve službě Azure Machine Learning, kde by se shromážděná data měla zaregistrovat jako datový prostředek.data_collector.collections.<collection_name>.data.version
: Verze datového prostředku, který se má zaregistrovat u shromážděných dat v úložišti objektů blob.
Shromažďování dat do vlastního kontejneru úložiště objektů blob
Kolektor dat můžete použít ke shromažďování produkčních dat odvozování do vlastního kontejneru úložiště objektů blob pomocí následujícího postupu:
Připojte kontejner úložiště k úložišti dat služby Azure Machine Learning. Další informace o připojení kontejneru úložiště k úložišti dat služby Azure Machine Learning najdete v tématu vytváření úložišť dat.
Zkontrolujte, že koncový bod služby Azure Machine Learning má potřebná oprávnění k zápisu do cíle úložiště dat.
Kolektor dat podporuje spravované identity přiřazené systémem (SAMI) i spravované identity přiřazené uživatelem (UAMI). Přidejte identitu do koncového bodu.
Storage Blob Data Contributor
Přiřaďte k této identitě roli s kontejnerem úložiště objektů blob, který se má použít jako cíl dat. Informace o používání spravovaných identit v Azure najdete v tématu Přiřazení rolí Azure ke spravované identitě.Aktualizujte YAML nasazení tak, aby zahrnovala
data
vlastnost v každé kolekci.- Povinný parametr
data.name
, určuje název datového assetu, který se má zaregistrovat se shromážděnými daty. - Povinný parametr
data.path
, určuje plně vytvořený cestu úložiště dat Azure Machine Learning, která je připojena k vašemu kontejneru Azure Blob Storage. - Volitelný parametr
data.version
, určuje verzi datového assetu (výchozí hodnota je 1).
Následující konfigurace YAML ukazuje příklad zahrnutí
data
vlastnosti do každé kolekce.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
Poznámka:
Pomocí parametru
data.path
můžete také odkazovat na úložiště dat v různých předplatných Azure zadáním cesty, která se řídí formátem:azureml://subscriptions/<sub_id>/resourcegroups/<rg_name>/workspaces/<ws_name>/datastores/<datastore_name>/paths/<path>
- Povinný parametr
Vytvoření nasazení pomocí shromažďování dat
Nasazení modelu s povoleným vlastním protokolováním:
$ az ml online-deployment create -f deployment.YAML
Další informace o tom, jak formátovat YAML nasazení pro shromažďování dat pomocí online koncových bodů Kubernetes, najdete v schématu YAML pro online nasazení Kubernetes s podporou Azure Arc (v2).
Další informace o tom, jak formátovat YAML nasazení pro shromažďování dat se spravovanými online koncovými body, najdete ve schématu YAML spravovaného online nasazením cli (v2).
Protokolování datové části
Kromě vlastního protokolování pomocí poskytnuté sady Python SDK můžete shromažďovat data datové části HTTP požadavku a odpovědi přímo bez nutnosti rozšířit bodovací skript (score.py
).
Pokud chcete povolit protokolování datové části, použijte ve svém nasazení YAML názvy
request
aresponse
:$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'
Nasazení modelu s povoleným protokolováním datové části:
$ az ml online-deployment create -f deployment.YAML
U protokolování datové části není zaručeno, že shromážděná data budou v tabulkovém formátu. Proto pokud chcete použít shromážděná data datové části s monitorováním modelu, budete muset poskytnout komponentu předběžného zpracování, aby byla data tabulková. Pokud vás zajímá bezproblémové prostředí pro monitorování modelů, doporučujeme použít vlastní protokolování sady Python SDK.
Jak se používá vaše nasazení, shromážděná data proudí do úložiště objektů blob pracovního prostoru. Následující kód JSON je příkladem shromážděného požadavku 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"}
Následující kód JSON je dalším příkladem shromážděné odpovědi 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"}
Ukládání shromážděných dat v úložišti objektů blob
Shromažďování dat umožňuje protokolovat produkční data odvozování do cílového úložiště objektů blob podle vašeho výběru. Nastavení cíle dat je možné konfigurovat na collection_name
úrovni.
Výstup/formát úložiště objektů blob:
Ve výchozím nastavení jsou shromážděná data uložena na následující cestě ve službě Blob Storage pracovního prostoru:
azureml://datastores/workspaceblobstore/paths/modelDataCollector
.Konečná cesta v objektu blob bude připojena pomocí
{endpoint_name}/{deployment_name}/{collection_name}/{yyyy}/{MM}/{dd}/{HH}/{instance_id}.jsonl
.Každý řádek v souboru je objekt JSON představující jeden zaprotokolovaný požadavek na odvozování nebo odpověď.
Poznámka:
collection_name
odkazuje na název shromažďování dat (např model_inputs
model_outputs
.
instance_id
je jedinečné ID identifikující seskupení dat, která byla zaznamenána.
Shromážděná data se řídí následujícím schématem JSON. Shromážděná data jsou k dispozici z data
klíče a jsou k dispozici další metadata.
{"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"}
Tip
Konce řádků se zobrazují jenom pro čitelnost. Ve shromážděných souborech .jsonl nebudou žádné konce řádků.
Ukládání velkých datových částí
Pokud je datová část vašich dat větší než 4 MB, bude v {instance_id}.jsonl
souboru obsažena {endpoint_name}/{deployment_name}/request/.../{instance_id}.jsonl
událost, která odkazuje na nezpracovanou cestu k souboru, která by měla mít následující cestu: blob_url/{blob_container}/{blob_path}/{endpoint_name}/{deployment_name}/{rolled_time}/{instance_id}.jsonl
. Shromážděná data budou existovat v této cestě.
Ukládání binárních dat
S shromážděnými binárními daty zobrazíme nezpracovaný soubor přímo s instance_id
názvem souboru. Binární data jsou umístěna ve stejné složce jako cesta zdrojové skupiny požadavku na rolling_rate
základě . Následující příklad odráží cestu v datovém poli. Formát je json a konce řádků se zobrazují jenom pro čitelnost:
{
"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"
}
Dávkování kolektoru dat
Pokud se požadavky posílají do krátkých časových intervalů mezi sebou, kolekce dat je zasáhne do stejného objektu JSON. Pokud například spustíte skript pro odesílání ukázkových dat do koncového bodu a nasazení má povolené shromažďování dat, některé požadavky se můžou dávkovat společně v závislosti na časovém intervalu mezi nimi. Pokud používáte shromažďování dat s monitorováním modelu Azure Machine Learning, služba monitorování modelů zpracovává jednotlivé požadavky nezávisle. Pokud ale očekáváte, že každý protokolovaný řádek dat bude mít svůj vlastní jedinečný correlationid
, můžete do correlationid
datového rámce pandas zahrnout sloupec, který protokolujete pomocí kolektoru dat. Další informace o tom, jak do datového rámce pandas zahrnout jedinečný correlationid
sloupec, najdete v tématu Shromažďování dat pro monitorování výkonu modelu.
Tady je příklad dvou protokolovaných požadavků, které jsou dávkové:
{"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"}
Zobrazení dat v uživatelském rozhraní studia
Zobrazení shromážděných dat ve službě Blob Storage z uživatelského rozhraní studia:
V pracovním prostoru Azure Machine Learning přejděte na kartu Data :
Přejděte do úložišť dat a vyberte váš pracovní prostorblobstore (výchozí):
Pomocí nabídky Procházet zobrazíte shromážděná produkční data:
Shromažďování dat pro modely MLflow
Pokud nasazujete model MLflow do online koncového bodu Služby Azure Machine Learning, můžete povolit shromažďování dat pro odvozování v produkčním prostředí jediným přepínačem v uživatelském rozhraní studia. Pokud je zapnuté shromažďování dat, Azure Machine Learning automaticky provede bodovací skript vlastním kódem protokolování, aby se zajistilo, že se produkční data zaprotokolují do služby Blob Storage vašeho pracovního prostoru. Monitorování modelů pak můžou pomocí dat monitorovat výkon modelu MLflow v produkčním prostředí.
Při konfiguraci nasazení modelu můžete povolit shromažďování produkčních dat. Na kartě Nasazení vyberte Povoleno pro shromažďování dat.
Po povolení shromažďování dat se produkční data odvozování zaprotokolují do služby Azure Machine Learning Workspace Blob Storage a vytvoří se dva datové prostředky s názvy <endpoint_name>-<deployment_name>-model_inputs
a <endpoint_name>-<deployment_name>-model_outputs
. Tyto datové prostředky se aktualizují v reálném čase při použití nasazení v produkčním prostředí. Monitorování modelů pak můžou pomocí datových prostředků monitorovat výkon modelu v produkčním prostředí.