ModelDataCollector Klasse
Definiert einen Modelldatensammler, der zum Sammeln von Daten in einer Azure Machine Learning-AKS-Webdienstbereitstellung in einem Blobspeicher verwendet werden kann.
Mit der ModelDataCollector-Klasse können Sie einen Datensammler für Ihre Modelle in Azure Machine Learning-AKS-Bereitstellungen definieren. Das Datensammlerobjekt kann dazu verwendet werden, Modelldaten wie Eingaben und Vorhersagen im Blobspeicher des Arbeitsbereichs zu sammeln. Wenn die Modelldatensammlung in der Bereitstellung aktiviert ist, werden die gesammelten Daten unter dem folgenden Containerpfad als CSV-Dateien angezeigt: /modeldata/{workspace_name}/{webservice_name}/{model_name}/{model_version}/{designation}/{year}/{month}/{day}/{collection_name}.csv
ModelDataCollector-Konstruktor.
Wenn die Modelldatensammlung aktiviert ist, werden Daten an den folgenden Containerpfad gesendet: /modeldata/{workspace}/{webservice_name}/{model_name}/{model_version}/{designation}/{year}/{month}/{day}/{collection_name}.csv
- Vererbung
-
builtins.objectModelDataCollector
Konstruktor
ModelDataCollector(model_name, designation='default', feature_names=None, workspace='default/default/default', webservice_name='default', model_version='default', collection_name='default')
Parameter
Name | Beschreibung |
---|---|
model_name
Erforderlich
|
Der Name des Modells, für das Daten gesammelt werden. |
designation
|
Eine eindeutige Bezeichnung für den Speicherort der Datensammlung. Unterstützte Bezeichnungen sind "Eingaben", "Vorhersagen", "Bezeichnungen", "Signale" und "allgemein". Standardwert: default
|
feature_names
|
Eine Liste von Featurenamen, die bei der Verwendung zum CSV-Header werden. Standardwert: None
|
workspace
|
Der Bezeichner für den Azure Machine Learning-Arbeitsbereich in Form von {subscription_id}/{resource_group}/{workspace_name}. Dies wird automatisch aufgefüllt, wenn Modelle über Azure Machine Learning operationalisiert werden. Standardwert: default/default/default
|
webservice_name
|
Der Name des Webdiensts, in dem dieses Modell derzeit bereitgestellt wird. Dies wird automatisch aufgefüllt, wenn Modelle über Azure Machine Learning operationalisiert werden. Standardwert: default
|
model_version
|
Die Version des Modells. Dies wird automatisch aufgefüllt, wenn Modelle über Azure Machine Learning operationalisiert werden. Standardwert: default
|
collection_name
|
Der Name der Datei, in der ModelDataCollector Daten sammelt. Dieser Param wird nur für "Signale" und "allgemeine" Bezeichnungen berücksichtigt. Für die anderen Typen von Bezeichnungen wird der Bezeichnungsname als Dateiname verwendet. Standardwert: default
|
Hinweise
Derzeit funktioniert ModelDataCollector nur in Azure Machine Learning-AKS-Bereitstellungen. Zum Sammeln von Modelldaten innerhalb einer Bereitstellung müssen Sie die folgenden Schritte ausführen:
Aktualisieren Sie entry_script des Image, um ModelDataCollector-Objekte und Collect-Anweisungen hinzuzufügen. Sie können mehrere ModelDataCollector-Objekte innerhalb eines Skripts definieren, z. B. eines für Eingaben und eines für die Vorhersage für dasselbe Modell. In der folgenden Klasse finden Sie weitere Informationen zum Definieren und Verwenden von entry_script: InferenceConfig
Legen Sie das Flag enable_data_collection im Bereitstellungsschritt des AKS-Modells fest. Sobald ein Modell bereitgestellt wurde, kann dieses Flag dazu verwendet werden, die Modelldatensammlung ohne Änderung von entry_script zu aktivieren/zu deaktivieren. Weitere Informationen zum Konfigurieren der Modellbereitstellung finden Sie in der folgenden Klasse: AksWebservice
Der folgende Codeausschnitt zeigt, wie ein entry_script mit ModelDataCollection aussehen würde:
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)
Im obigen Beispiel werden einige Aspekte zu ModelDataCollector veranschaulicht. Zuerst wird ein Objekt pro Modell und pro Bezeichnung definiert, in diesem Fall „bestmodel“ und „inputs“. Zweitens werden von ModelDataCollector Tabellendaten als Eingabe erwartet und Daten als CSV-Dateien verwaltet. Optionale Featurenamen können zum Festlegen des Headers dieser CSV-Dateien bereitgestellt werden.
Der folgende Codeausschnitt zeigt, wie ModelDataCollector während der Modellbereitstellung aktiviert werden kann:
webservice_config = AksWebservice.deploy_configuration(collect_model_data=True)
Model.deploy(ws, "myservice", [model], inference_config, webservice_config, aks_cluster)
Nachdem der Azure Machine Learning-AKS-Webdienst bereitgestellt und die Bewertung für den Dienst ausgeführt wurde, werden die gesammelten Daten im Speicherkonto des Arbeitsbereichs angezeigt. Von ModelDataCollector werden die Daten zur Erleichterung von Zugriff und Verwendung partitioniert. Alle Daten werden unter dem Speichercontainer „modeldata“ gesammelt. Partitionsformat:
/modeldata/{workspace_name}/{webservice_name}/{model_name}/{model_version}/{designation}/{year}/{month}/{day}/{collection_name}.csv
Beachten Sie, dass collection_name im Dateinamen nur für die Bezeichnungen „signals“ und „general“ berücksichtigt wird. Für „inputs“, „predictions“ und „labels“ wird der Dateiname auf {designation}.csv festgelegt.
Methoden
add_correlations |
Hilfsfunktion zum Hinzufügen von Korrelationsheadern und -werten zu angegebenen Eingabedaten. |
collect |
Daten im Speicher sammeln. |
add_correlations
Hilfsfunktion zum Hinzufügen von Korrelationsheadern und -werten zu angegebenen Eingabedaten.
add_correlations(input_data, correlations)
Parameter
Name | Beschreibung |
---|---|
input_data
Erforderlich
|
Die Daten, denen Korrelationsheader und -werte hinzugefügt werden. |
correlations
Erforderlich
|
Korrelationsheader und -werte, die von der collect()-Funktion zurückgegeben werden. |
Gibt zurück
Typ | Beschreibung |
---|---|
input_data mit hinzugefügten Korrelationsheadern und -werten. |
Hinweise
Nachdem collect
aufgerufen wurde, wird eine Reihe von Korrelationsheadern und -werten zurückgeben. Dazu gehören Metadaten wie Anforderungs-ID, Zeitstempel und eine eindeutige Korrelations-ID, die von ModelDataCollector generiert oder als Parameter bereitgestellt wird. Diese Werte können später dazu verwendet werden, verschiedene Datentypen zu analysieren und zu korrelieren.
Das folgende Beispiel zeigt, wie Korrelationen sowohl zu Eingabe- als auch zu Vorhersagedaten hinzugefügt werden. Beachten Sie, dass der Bezeichnungstyp „Eingaben“ standardmäßig über die Korrelationsdaten verfügt.
# 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
Daten im Speicher sammeln.
collect(input_data, user_correlation_id='')
Parameter
Name | Beschreibung |
---|---|
input_data
Erforderlich
|
Die zu sammelnden Daten. Bei Datenrahmentypen, wenn ein Header mit Featurenamen vorhanden ist, werden diese Informationen in das Datenziel eingefügt (ohne dass Featurenamen explizit an den „ModelDataCollector“-Konstruktor übergeben werden müssen) |
user_correlation_id
Erforderlich
|
Eine optionale Korrelations-ID, die dazu verwendet wird, diese Daten später zu korrelieren. |
Gibt zurück
Typ | Beschreibung |
---|---|
Ein Wörterbuch, das Korrelationsheader und -werte enthält. |
Attribute
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'