0 / 0
Zurück zur englischen Version der Dokumentation
Angepasste Frameworks für maschinelles Lernen
Letzte Aktualisierung: 21. Nov. 2024
Angepasste Frameworks für maschinelles Lernen

Sie können Ihr benutzerdefiniertes Framework für maschinelles Lernen verwenden, um die Protokollierung von Nutzdaten und Rückmeldungen zu vervollständigen und um die Leistungsgenauigkeit, die Erkennung von Laufzeitverzerrungen, die Erklärbarkeit, die Erkennung von Drift und die Auto-Debias-Funktion für Modellevaluierungen zu messen. Das benutzerdefinierte Framework für maschinelles Lernen muss mit IBM watsonx.ai Runtime gleichwertig sein.

Die folgenden benutzerdefinierten Frameworks für maschinelles Lernen unterstützen Modellbewertungen:

Details der Frameworkunterstützung
Framework Problemtyp Datentyp
Äquivalent zu IBM watsonx.ai Runtime Klassifikation Strukturiert
Äquivalent zu IBM watsonx.ai Runtime Regression Strukturiert

Für ein Modell, das nicht der IBM watsonx.ai Runtime entspricht, müssen Sie einen Wrapper für das benutzerdefinierte Modell erstellen, der die erforderlichen REST-API-Endpunkte bereitstellt. Außerdem müssen Sie die Ein-/Ausgabe zwischen Watson OpenScale und der tatsächlichen angepassten Machine Learning-Engine überbrücken.

Wenn ist die Verwendung einer angepassten Machine Learning-Engine die Option der Wahl?

Eine angepasste Machine Learning-Engine ist die beste Wahl, wenn die folgenden Situationen zutreffen:

  • Sie verwenden keine sofort verfügbaren Produkte, um Ihre Modelle für maschinelles Lernen bereitzustellen. Sie haben ein System, das Ihre Modelle bedient, und es gibt keine direkte Unterstützung für diese Funktion bei Modellbewertungen.
  • Die Serving Engine, die Sie von einem 3rd-party verwenden, wird noch nicht für Modellevaluierungen unterstützt. In diesem Fall sollten Sie die Entwicklung einer angepassten Machine Learning-Engine als Wrapper für Ihre ursprünglichen oder nativen Bereitstellungen in Betracht ziehen.

Funktionsweise

Die folgende Abbildung verdeutlicht die Unterstützung für die angepasste Umgebung:

Das benutzerdefinierte Diagramm wird angezeigt. Es werden Kästchen für die angepasste Umgebung mit der Client-API und der Watson OpenScale -API angezeigt.

Weitere Informationen können Sie auch über die folgenden Links aufrufen:

Watson OpenScale-API für Nutzdatenprotokollierung

Python-Client-SDK

Python-SDK

  • Eingabekriterien für das Modell zur Unterstützung von Überwachungen

    Im folgenden Beispiel verwendet Ihr Modell einen Merkmalvektor, bei dem es sich im Wesentlichen um eine Sammlung benannter Felder und deren Werte handelt, als Eingabe.

    {
    "fields": [
        "name",
        "age",
        "position"
    ],
    "values": [
        [
            "john",
            33,
            "engineer"
        ],
        [
            "mike",
            23,
            "student"
        ]
    ]
    
    

    Das Feld “age” kann auf Fairness ausgewertet werden.

    Handelt es sich bei der Eingabe um einen Tensor oder eine Matrix, die aus dem Merkmalsraum der Eingabe transformiert wurde, kann dieses Modell nicht ausgewertet werden. Im weiteren Sinne können Deep-Learning-Modelle mit Text- oder Bildeingaben nicht zur Erkennung und Entschärfung von Verzerrungen verwendet werden.

    Außerdem müssen Trainingsdaten geladen werden, um die Erklärbarkeit zu unterstützen.

    Zur Erklärbarkeit von Text sollte der gesamte Text eines der Merkmale sein. Die Erklärbarkeit von Bildern für ein Modell vom Typ 'Angepasst' wird im aktuellen Release nicht unterstützt.

  • Ausgabekriterien für das Modell zur Unterstützung von Überwachungen

    Ihr Modell gibt den Eingabemerkmalvektor neben den Vorhersagewahrscheinlichkeiten verschiedener Klassen in diesem Modell aus.

    {
    "fields": [
        "name",
        "age",
        "position",
        "prediction",
        "probability"
    ],
    "labels": [
        "personal",
        "camping"
    ],
    "values": [
        [
            "john",
            33,
            "engineer",
            "personal",
            [
                0.6744664422398081,
                0.3255335577601919
            ]
        ],
        [
            "mike",
            23,
            "student"
            "camping",
            [
                0.2794765664946941,
                0.7205234335053059
            ]
        ]
    ]
    }
    

    In diesem Beispiel sind "personal” und “camping” die möglichen Klassen und die Scores in jeder Scoring-Ausgabe werden beiden Klassen zugewiesen. Wenn die Vorhersagewahrscheinlichkeiten fehlen, funktioniert die Verzerrungserkennung, die automatische Verzerrungsbereinigung jedoch nicht.

    Sie können auf die Scoring-Ausgabe über einen Live-Scoring-Endpunkt zugreifen, den Sie über die REST-API für Modellauswertungen aufrufen können. Für CUSTOMML, Amazon SageMaker, und IBM watsonx.ai Runtime verbindet sich Watson OpenScale direkt mit den nativen Scoring-Endpunkten.

Angepasste Machine Learning-Engine

Eine angepasste Machine Learning-Engine stellt die Infrastruktur und Hosting-Funktionalität für Machine Learning-Modelle und -Webanwendungen bereit. Benutzerdefinierte Maschinen für maschinelles Lernen, die für Modellevaluierungen unterstützt werden, müssen die folgenden Anforderungen erfüllen:

  • Sie müssen zwei Typen von REST-API-Endpunkten zugänglich machen:

    • Erkennungsendpunkte (GET-Liste der Bereitstellungen und Details)
    • Scoring-Endpunkte (Online- und Echtzeit-Scoring)
  • Alle Endpunkte müssen mit der Swagger-Spezifikation kompatibel sein, die unterstützt werden soll.

  • Die Nutzdaten für die Eingabe in die Bereitstellung und für die Ausgabe aus der Bereitstellung müssen mit dem JSON-Dateiformat konform sein, das in der Spezifikation beschrieben wird.

Die Spezifikation der REST-API-Endpunkte finden Sie in der REST-API.

Hinzufügen einer benutzerdefinierten Engine für maschinelles Lernen

Sie können die Modellevaluierungen so konfigurieren, dass sie mit einem benutzerdefinierten Anbieter für maschinelles Lernen arbeiten, indem Sie eine der folgenden Methoden verwenden:

  • Sie können die Konfigurationsschnittstelle verwenden, um Ihren ersten benutzerdefinierten Anbieter für maschinelles Lernen hinzuzufügen. Weitere Informationen finden Sie im Abschnitt Angepasste Machine Learning-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 Angepasste Machine Learning-Engine hinzufügen.

Weiterführende Informationen

Sie können den Benutzerdefinierten Monitor für maschinelles Lernen verwenden, um eine Möglichkeit zur Interaktion mit anderen Diensten zu schaffen.

Angepasste Machine Learning-Serviceinstanz angeben

Der erste Schritt zur Konfiguration von Modellevaluierungen ist die Angabe einer Dienstinstanz. In Ihrer Serviceinstanz speichern Sie Ihre KI-Modelle und -Bereitstellungen.

Angepasste Serviceinstanz verbinden

KI-Modelle und -Einsätze sind in einer Service-Instanz für Modellevaluierungen verbunden. Sie können eine Verbindung zu einem angepassten Service herstellen. Um Ihren Dienst zu verbinden, gehen Sie auf die Registerkarte " Das Symbol der Registerkarte 'Konfiguration', fügen Sie einen Anbieter für maschinelles Lernen hinzu und klicken Sie auf das Symbol " Das Symbol der Registerkarte 'Konfiguration' bearbeiten. Neben einem Namen, einer Beschreibung und der Angabe des Umgebungstyps Vorproduktion oder Produktion müssen Sie die folgenden Informationen angeben, die für diesen Typ von Serviceinstanz spezifisch sind:

  • Benutzername
  • Kennwort
  • API-Endpunkt, der das Format https://host:port verwendet, z. B. https://custom-serve-engine.example.net:8443

Wählen Sie aus, ob Sie eine Verbindung zu Ihren Bereitstellungen herstellen möchten, indem Sie eine Liste anfordern oder indem Sie einzelne Scoring-Endpunkte eingeben.

Bereitstellungsliste anfordern

Geben Sie bei Auswahl der Kachel Bereitstellungsliste anfordern Ihre Berechtigungsnachweise und den API-Endpunkt ein und speichern Sie anschließend Ihre Konfiguration.

Einzelne Scoring-Endpunkte angeben

Geben Sie bei Auswahl der Kachel Individuelle Scoring-Endpunkte eingeben Ihre Berechtigungsnachweise für den API-Endpunkt ein und speichern Sie anschließend Ihre Konfiguration.

Jetzt sind Sie bereit, bereitgestellte Modelle auszuwählen und Ihre Überwachungen zu konfigurieren. Ihre bereitgestellten Modelle werden im Insights-Dashboard aufgelistet, 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.

Angepasste Machine Learning-Engine - Beispiele

Orientieren Sie sich an den folgenden Ideen, um Ihre eigene angepasste Machine Learning-Engine einzurichten.

Python und Flask

Sie können Python und Flask verwenden, um das scikit-learn-Modell zu bedienen.

Zum Generieren des Drifterkennungsmodells müssen Sie scikit-learn Version 0.20.2 im Notebook verwenden.

Die App kann lokal zu Testzwecken und als Anwendung in IBM Cloud implementiert werden.

Node.js

Sie finden auch ein Beispiel für eine angepasste Machine-Learning-Engine, die hier in Node.js geschrieben ist.

End-to-End-Codemuster

Code-Muster, das ein end2end für den Einsatz einer benutzerdefinierten Engine und die Integration mit Modellevaluierungen zeigt.

Nutzdatenprotokollierung mit angepasster Machine Learning-Engine

Um die Nutzdatenprotokollierung für eine IBM watsonx.ai Runtime oder eine benutzerdefinierte Engine für maschinelles Lernen zu konfigurieren, müssen Sie die ML-Engine als benutzerdefiniert binden.

Angepasste Machine Learning-Engine hinzufügen

Eine non-watsonx.ai Runtime-Engine wird über Metadaten als benutzerdefiniert hinzugefügt und es besteht keine direkte Integration mit dem IBM watsonx.ai Runtime-Service. Sie können mehr als eine Maschine für maschinelles Lernen für Modellevaluierungen hinzufügen, indem Sie die Methode " wos_client.service_providers.add verwenden.

CUSTOM_ENGINE_CREDENTIALS = {
    "url": "***",
    "username": "***",
    "password": "***",
}

wos_client.service_providers.add(
        name=SERVICE_PROVIDER_NAME,
        description=SERVICE_PROVIDER_DESCRIPTION,
        service_type=ServiceTypes.CUSTOM_MACHINE_LEARNING,
        credentials=CustomCredentials(
            url= CUSTOM_ENGINE_CREDENTIALS['url'],
            username= CUSTOM_ENGINE_CREDENTIALS['username'],
            password= CUSTOM_ENGINE_CREDENTIALS['password'],
        ),
        background_mode=False
    ).result

Sie können Ihren Service-Provider mit dem folgenden Befehl anzeigen:

client.service_providers.get(service_provider_id).result.to_dict()

Generische ML-Bindung

Sicherheit mit einem API-Schlüssel konfigurieren

Um die Sicherheit für Ihre benutzerdefinierte Engine für maschinelles Lernen zu konfigurieren, können Sie IBM Cloud und IBM Cloud Pak for Data als Authentifizierungsanbieter für Ihre Modellevaluierungen verwenden. Sie können die https://iam.cloud.ibm.com/identity/token-URL verwenden, um ein IAM-Token für IBM Cloud zu generieren, und Sie können die https://<$hostname>/icp4d-api/v1/authorize-URL verwenden, um ein Token für Cloud Pak for Data zu generieren.

Mit der Anforderung POST /v1/deployments/{deployment_id}/online können Sie Ihre Scoring-API in den folgenden Formaten implementieren:

Anforderung

{
	"input_data": [{
		"fields": [
			"name",
			"age",
			"position"
		],
		"values": [
			[
			"john",
			 33,
			"engineer"
			],
			[
			"mike",
			 23,
			"student"
			]
		]
	}]
}

Antwort

{
	"predictions": [{
		"fields": [
			"name",
			"age",
			"position",
			"prediction",
			"probability"
		],
		"labels": [
			"personal",
			"camping"
		],
		"values": [
			[
			"john",
			 33,
			"engineer",
			"personal",
			[
			0.6744664422398081,
			0.32553355776019194
			]
			],
			[
			"mike",
			 23,
			"student",
			"camping",
			[
			0.2794765664946941,
			0.7205234335053059
			]
			]
		]
	}]
}

Angepasstes Abonnement hinzufügen

Führen Sie den folgenden Befehl aus, um ein angepasstes Abonnement hinzuzufügen:

custom_asset = Asset(
        asset_id=asset['entity']['asset']['asset_id'],
        name=asset['entity']['asset']['name'],
        url = "dummy_url",
        asset_type=asset['entity']['asset']['asset_type'] if 'asset_type' in asset['entity']['asset'] else 'model',
        problem_type=ProblemType.MULTICLASS_CLASSIFICATION,
        input_data_type=InputDataType.STRUCTURED,
    )
deployment = AssetDeploymentRequest(
        deployment_id=asset['metadata']['guid'],
        url=asset['metadata']['url'],
        name=asset['entity']['name'],
        deployment_type=asset['entity']['type'],
        scoring_endpoint =  scoring_endpoint
    )
asset_properties = AssetPropertiesRequest(
        prediction_field='predicted_label',
        probability_fields = ["probability"],
        training_data_reference=None,
        training_data_schema=None,
        input_data_schema=None,
        output_data_schema=output_schema,
    )
result = ai_client.subscriptions.add(
        data_mart_id=cls.datamart_id,
        service_provider_id=cls.service_provider_id,
        asset=custom_asset,
        deployment=deployment,
        asset_properties=asset_properties,
        background_mode=False
    ).result

Führen Sie den folgenden Befehl aus, um die Abonnementliste abzurufen:

subscription_id = subscription_details.metadata.id
subscription_id

details: wos_client.subscriptions.get(subscription_id).result.to_dict()

Nutzdatenprotokollierung aktivieren

Führen Sie den folgenden Befehl aus, um die Nutzdatenprotokollierung im Abonnement zu aktivieren:

request_data = {'fields': feature_columns, 
                'values': [[payload_values]]}

Führen Sie den folgenden Befehl aus, um die Protokollierungsdetails abzurufen:

response_data = {'fields': list(result['predictions'][0]),
                 'values': [list(x.values()) for x in result['predictions']]}

Scoring und Nutzdatenprotokollierung

  • Führen Sie ein Scoring für Ihr Modell durch.

  • Anforderung und Antwort in der Nutzdatenprotokollierungstabelle speichern

    records_list = [PayloadRecord(request=request_data, response=response_data, response_time=response_time), PayloadRecord(request=request_data, response=response_data, response_time=response_time)]
    
    subscription.payload_logging.store(records=records_list)
    

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