0 / 0
Zurück zur englischen Version der Dokumentation
Microsoft Azure ML Service-Frameworks
Letzte Aktualisierung: 21. Nov. 2024
Microsoft Azure ML Service-Frameworks

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

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.

  1. Erstellen Sie einen Azure Active Directory-Dienstprinzipal.
  2. 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 oder null 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 und No 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
            ]
           }
        ]
    

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 Das Symbol der Registerkarte 'Konfiguration' konfigurieren “, fügen Sie einen Anbieter für maschinelles Lernen hinzu und klicken Sie auf das Symbol Symbol "Bearbeiten" 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

Generative KI-Suche und -Antwort
Diese Antworten werden von einem großen Sprachmodell in watsonx.ai basierend auf dem Inhalt der Produktdokumentation generiert. Weitere Informationen