Sie können den Microsoft Azure ML Service verwenden, um Nutzlastprotokollierung und Feedbackprotokollierung durchzuführen und um die Leistungsgenauigkeit, die Erkennung von Laufzeitverzerrungen, die Erklärbarkeit und die Auto-Debias-Funktion für Modellbewertungen zu messen.
Die folgenden Microsoft Azure Machine Learning Service-Frameworks werden für Modellevaluierungen unterstützt:
Tabelle 1. Details der Frameworkunterstützung
Framework | Problemtyp | Datentyp |
---|---|---|
Nativ | Klassifikation | Strukturiert |
scikit-learn | Klassifikation | Strukturiert |
scikit-learn | Regression | Strukturiert |
Zum Generieren des Drifterkennungsmodells müssen Sie scikit-learn Version 0.20.2 in Notebooks verwenden.
Azure Automatisierte Machine Learning verwaltete Endpunkte und Azure Modelle werden mit Notebooks für Modellevaluierungen verwaltet.
Microsoft Azure ML-Dienst hinzufügen
Sie können Modellauswertungen für die Verwendung mit Microsoft Azure ML-Dienst konfigurieren, indem Sie eine der folgenden Methoden verwenden:
- Wenn Sie zum ersten Mal einen Machine Learning-Anbieter hinzufügen, können Sie die Konfigurationsschnittstelle verwenden. Weitere Informationen finden Sie in Microsoft Azure ML Service-Instanz angeben.
- Sie können Ihren Machine-Learning-Provider auch mithilfe des Python-SDK hinzufügen. Diese Methode müssen Sie verwenden, wenn mehrere Provider zur Verfügung stehen sollen. Weitere Informationen finden Sie unter Microsoft Azure Machine Learning-Engine hinzufügen.
Es werden verschiedene REST-Endpunkte aufgerufen, die für die Interaktion mit dem Azure ML Service benötigt werden. Hierzu müssen Sie den Azure Machine Learning Service binden.
- Erstellen Sie einen Azure Active Directory-Dienstprinzipal.
- Geben Sie die Anmeldeinformationen an, wenn Sie die Dienstbindung des Azure ML-Dienstes hinzufügen, entweder über die Benutzeroberfläche oder das Python SDK.
Voraussetzungen für JSON-Anforderungs- und -Antwortdateien
Damit Modellauswertungen mit Azure ML-Dienst funktionieren, müssen die von Ihnen erstellten Webdienstbereitstellungen bestimmte Anforderungen erfüllen. Die von Ihnen erstellten Web-Service-Bereitstellungen müssen entsprechend den nachfolgenden Vorgaben JSON-Anforderungen akzeptieren und JSON-Antworten zurückgeben.
Erforderliches JSON-Anforderungsformat für Web-Services
- Der Hauptteil der REST-API-Anforderung muss ein einziges JSON-Dokument sein, das ein JSON-Array mit JSON-Objekten enthält.
- Das JSON-Array muss
"input"
heißen. - Jedes JSON-Objekt kann nur einfache Schlüssel/Wert-Paare enthalten, wobei die Werte eine Zeichenfolge, eine Zahl,
true
,false
odernull
sein können. - Bei den Werten darf es sich nicht um JSON-Objekte oder -Arrays handeln.
- Für jedes JSON-Objekt im Array müssen dieselben Schlüssel (und damit auch die Anzahl der Schlüssel) angegeben werden, unabhängig davon, ob ein Nicht-
null
-Wert verfügbar ist.
Die folgende JSON-Beispieldatei entspricht den oben genannten Anforderungen und kann als Vorlage für die Erstellung eigener JSON-Anforderungsdateien verwendet werden:
{
"input": [
{
"field1": "value1",
"field2": 31,
"field3": true,
"field4": 2.3
},
{
"field1": "value2",
"field2": 15,
"field3": false,
"field4": 0.1
},
{
"field1": null,
"field2": 5,
"field3": true,
"field4": 6.1
}
]
}
Erforderliches JSON-Antwortformat für Web-Services
Beachten Sie die folgenden Elemente, wenn Sie eine JSON-Antwortdatei erstellen:
Der REST-API-Antworthauptteil muss ein JSON-Dokument sein, das ein JSON-Array mit JSON-Objekten enthält.
Das JSON-Array muss
"output"
heißen.Jedes JSON-Objekt kann nur Schlüssel/Wert-Paare enthalten, wobei die Werte eine Zeichenfolge, eine Zahl,
true
,false
,null
oder ein Array sein können, das keine anderen JSON-Objekte oder Arrays enthält.Bei den Werten darf es sich nicht um JSON-Objekte handeln.
Für jedes JSON-Objekt im Array müssen dieselben Schlüssel (und dieselbe Anzahl von Schlüsseln) angegeben werden, unabhängig davon, ob ein Nicht-
null
-Wert verfügbar ist.Für Klassifizierungsmodelle: Der Web-Service muss ein Array mit Wahrscheinlichkeiten für die einzelnen Klasse zurückgeben und die Reihenfolge der Wahrscheinlichkeiten muss für jedes JSON-Objekt im Array konsistent sein.
- Dazu ein Beispiel: Angenommen, Sie verfügen über ein binäres Klassifizierungsmodell zur Vorhersage des Kreditrisikos, das die Klassen
Risk
undNo Risk
enthält. - Bei jedem zurückgegebenen Ergebnis im Array "output" müssen die Objekte ein Schlüssel/Wert-Paar enthalten, bei dem die Wahrscheinlichkeiten die folgende festgelegte Reihenfolge aufweisen:
{ "output": [ { "Scored Probabilities": ["Risk" probability,"No Risk" probability ] }, { "Scored Probabilities": ["Risk" probability,"No Risk" probability ] } ]
- Dazu ein Beispiel: Angenommen, Sie verfügen über ein binäres Klassifizierungsmodell zur Vorhersage des Kreditrisikos, das die Klassen
Verwenden Sie im Hinblick auf die Konsistenz mit den in Azure ML Studio und Azure ML Service verwendeten grafisch orientierten Azure ML-Tools die folgenden Schlüsselnamen:
- Schlüsselname
"Scored Labels"
für den Ausgabeschlüssel, der den vorhergesagten Wert des Modells angibt - Der Schlüsselname
"Scored Probabilities"
für den Ausgabeschlüssel, der ein Array von Wahrscheinlichkeiten für jede Klasse angibt
Die folgende JSON-Beispieldatei entspricht den oben genannten Anforderungen und kann als Vorlage für die Erstellung eigener JSON-Antwortdateien verwendet werden:
{
"output": [
{
"Scored Labels": "No Risk",
"Scored Probabilities": [
0.8922524675865824,
0.10774753241341757
]
},
{
"Scored Labels": "No Risk",
"Scored Probabilities": [
0.8335192848546905,
0.1664807151453095
]
}
]
}
Beispielnotebooks
In den folgenden Notebooks wird gezeigt, wie Sie mit Microsoft Azure ML Service arbeiten:
Microsoft Azure ML Service-Instanz angeben
Ihr erster Schritt beim Konfigurieren von Modellauswertungen besteht darin, eine Microsoft Azure ML Service-Instanz anzugeben. In der Azure ML Service-Instanz werden die KI-Modelle und -Bereitstellungen gespeichert.
KI-Modelle und Bereitstellungen werden zur Modellauswertung in einer Azure ML Service-Instanz verbunden. Um Ihren Dienst zu verbinden, gehen Sie zur Registerkarte konfigurieren “, fügen Sie einen Anbieter für maschinelles Lernen hinzu und klicken Sie auf das Symbol bearbeiten “. Zusätzlich zu einem Namen und einer Beschreibung sowie dazu, ob es sich bei der Umgebung um Vorproduktion oder Produktion handelt, müssen Sie die folgenden Informationen angeben:
- Client-ID: Der tatsächliche Zeichenfolgewert Ihrer Kunden-ID, mit dem verifiziert wird, wer Sie sind, und der Ihre Aufrufe an Azure Service authentifiziert sowie autorisiert.
- Geheimer Clientschlüssel: Der tatsächliche Zeichenfolgewert des geheimen Schlüssels, mit dem verifiziert wird, wer Sie sind, und der Ihre Aufrufe an Azure Service authentifiziert sowie autorisiert.
- Tenant: Ihre Tenant-ID entspricht Ihrem Unternehmen und stellt eine dedizierte Azure AD-Instanz dar. Um die Tenant-ID zu finden, bewegen Sie den Mauszeiger über Ihren Kontonamen, um das Verzeichnis und die Tenant-ID abzurufen, oder wählen Sie Azure Active Directory > Eigenschaften > Verzeichnis-ID im Azure-Portal aus.
- Abonnement-ID: Berechtigungsnachweise für das Abonnement, die Ihr Microsoft Azure-Abonnement eindeutig kennzeichnen. Die Abonnement-ID ist ein Bestandteil der URI für die einzelnen Serviceaufrufe.
Anweisungen dazu, wie Sie Ihre Berechtigungsnachweise für Microsoft Azure beziehen, finden Sie in der zugehörigen Dokumentation unter How to: Use the portal to create an Azure AD application and service principal that can access resources.
Jetzt sind Sie bereit, bereitgestellte Modelle auszuwählen und Ihre Überwachungen zu konfigurieren. Ihre bereitgestellten Modelle auf dem Insights -Dashboard, wo Sie auf „Zum Dashboard hinzufügen“ klicken können. Wählen Sie die Implementierungen aus, die Sie überwachen möchten, und klicken Sie auf Konfigurieren.
Weitere Informationen finden Sie in Überwachungen konfigurieren.
Nutzdatenprotokollierung mit der Microsoft Azure ML Service-Engine
Microsoft Azure ML Service-Engine hinzufügen
Eine IBM watsonx.ai Runtime Engine ist als Custom gebunden und besteht aus Metadaten. Es gibt keine direkte Integration mit dem IBM watsonx.ai Runtime Service.
service_type = "azure_machine_learning_service"
added_service_provider_result = wos_client.service_providers.add(
name=SERVICE_PROVIDER_NAME,
description=SERVICE_PROVIDER_DESCRIPTION,
service_type = service_type,
credentials=AzureCredentials(
subscription_id= AZURE_ENGINE_CREDENTIALS['subscription_id'],
client_id = AZURE_ENGINE_CREDENTIALS['client_id'],
client_secret= AZURE_ENGINE_CREDENTIALS['client_secret'],
tenant = AZURE_ENGINE_CREDENTIALS['tenant']
),
background_mode=False
).result
Sie können Ihre Servicebindung mit dem folgenden Befehl anzeigen:
client.service_providers.list()
Beispielausgabe:
uid name service_type created
410e730f-8462-45fe-8b41-a029d6d6043a My Azure ML Service engine azure_machine_learning_service2019-06-10T22:10:29.398Z
Microsoft Azure ML Service-Abonnement hinzufügen
Teilnehmerberechtigung hinzufügen
asset_deployment_details = wos_client.service_providers.list_assets(data_mart_id=data_mart_id, service_provider_id=service_provider_id).result
asset_deployment_details
deployment_id=''
for model_asset_details in asset_deployment_details['resources']:
if model_asset_details['metadata']['guid']==deployment_id:
break
azure_asset = Asset(
asset_id=model_asset_details["entity"]["asset"]["asset_id"],
name=model_asset_details["entity"]["asset"]["name"],
url=model_asset_details["entity"]["asset"]["url"],
asset_type=model_asset_details['entity']['asset']['asset_type'] if 'asset_type' in model_asset_details['entity']['asset'] else 'model',
input_data_type=InputDataType.STRUCTURED,
problem_type=ProblemType.BINARY_CLASSIFICATION
)
deployment_scoring_endpoint = model_asset_details['entity']['scoring_endpoint']
scoring_endpoint = ScoringEndpointRequest(url = model_asset_details['entity']['scoring_endpoint']['url'],request_headers = model_asset_details['entity']['scoring_endpoint']['request_headers'],
credentials = None)
deployment = AssetDeploymentRequest(
deployment_id=model_asset_details['metadata']['guid'],
url=model_asset_details['metadata']['url'],
name=model_asset_details['entity']['name'],
description=model_asset_details['entity']['description'],
deployment_type=model_asset_details['entity']['type'],
scoring_endpoint = scoring_endpoint
)
asset_properties = AssetPropertiesRequest(
label_column="Risk ",
prediction_field='Scored Labels',
probability_fields=['Scored Probabilities'],
training_data_reference=training_data_reference,
training_data_schema=None,
input_data_schema=None,
output_data_schema=None,
)
subscription_details = wos_client.subscriptions.add(
data_mart_id=data_mart_id,
service_provider_id=service_provider_id,
asset=azure_asset,
deployment=deployment,
asset_properties=asset_properties,
background_mode=False
).result
Abonnementliste abrufen
subscription_id = subscription_details.metadata.id
subscription_id
details: wos_client.subscriptions.get(subscription_id).result.to_dict()
Nutzdatenprotokollierung aktivieren
Nutzdatenprotokollierung in Abonnement aktivieren
payload_data_set_id = None
payload_data_set_id = wos_client.data_sets.list(type=DataSetTypes.PAYLOAD_LOGGING,
target_target_id=subscription_id,
target_target_type=TargetTypes.SUBSCRIPTION).result.data_sets[0].metadata.id
Protokollierungsdetails abrufen
subscription.payload_logging.get_details()
Scoring und Nutzdatenprotokollierung
Führen Sie ein Scoring für Ihr Modell durch. Ein vollständiges Beispiel finden Sie im Notebook 'Working with Azure Machine Learning Service Engine'.
Speichern Sie Anforderung und Antwort in der Tabelle für Nutzdatenprotokollierung:
wos_client.data_sets.store_records(data_set_id=payload_data_set_id, request_body=[PayloadRecord(
scoring_id=str(uuid.uuid4()),
request=request_data,
response=response_data,
response_time=460
)])
Für andere Sprachen als Python können Sie Nutzdaten auch über eine REST-API protokollieren.
Übergeordnetes Thema: Unterstützte Engines, Frameworks und Modelle für maschinelles Lernen