Integration von Machine Learning Studio (klassisch) in Stream Analytics

Wichtig

Der Support für Azure Machine Learning Studio (klassisch) endet am 31. August 2024. Es wird empfohlen, bis zu diesem Datum auf Azure Machine Learning umzustellen.

Ab dem 1. Dezember 2021 können in Machine Learning Studio (Classic) keine neuen Ressourcen mehr erstellt werden (Arbeitsbereichs- und Webdiensttarif). Bereits vorhandene Experimente und Webdienste in Machine Learning Studio (Classic) können noch bis zum 31. August 2024 weiterverwendet werden. Weitere Informationen finden Sie unter:

Die Dokumentation zu Machine Learning Studio (klassisch) wird nicht mehr fortgeführt und kann künftig nicht mehr aktualisiert werden.

Azure Stream Analytics unterstützt benutzerdefinierte Funktionen (UDF), die Azure Machine Learning Studio-Endpunkte (klassisch) kontaktieren. Die Stream Analytics-REST-API-Bibliothek beschreibt die REST-API-Unterstützung für dieses Feature.

Dieser Artikel enthält zusätzliche Informationen, die Sie für die erfolgreiche Implementierung dieser Funktion in Stream Analytics benötigen. Ein Tutorial steht ebenfalls zur Verfügung.

Überblick: Machine Learning Studio (klassische) Terminologie

Machine Learning Studio (classic) ist ein kollaboratives Drag-and-Drop-Tool, mit dem Sie Predictive-Analytics-Lösungen für Ihre Daten erstellen, testen und bereitstellen können. Sie können Machine Learning Studio (klassisch) verwenden, um mit diesen Ressourcen für maschinelles Lernen zu interagieren:

  • Arbeitsbereich: Ein Container, in dem alle anderen Machine Learning-Ressourcen zur Verwaltung und Steuerung zusammengefasst sind.
  • Experiment: Ein Test, den Data Scientists erstellen, um Datasets zu nutzen und ein Machine Learning-Modell zu trainieren.
  • Endpunkt: Ein Objekt, dass Sie zum Verwenden von Features als Eingabe, Anwenden eines angegebenen Machine Learning-Modells und Zurückgeben der erzielten Ausgabe einsetzen.
  • Bewertungswebdienst: Eine Sammlung von Endpunkten.

Jeder Endpunkt verfügt über APIs für die Batchausführung und synchrone Ausführung. Für Stream Analytics wird die synchrone Ausführung verwendet. Der spezifische Dienst wird in Machine Learning Studio (classic) als Request/Response Service bezeichnet.

Für Stream Analytics-Aufträge erforderliche Machine Learning Studio-Ressourcen (klassisch)

Bei der Verarbeitung von Stream Analytics-Aufträgen sind für eine erfolgreiche Ausführung ein Anforderung/Antwort-Endpunkt, ein API-Schlüssel und eine Swagger-Definition erforderlich. Stream Analytics verfügt über einen zusätzlichen Endpunkt, der die URL für den Swagger-Endpunkt erstellt, nach der Schnittstelle sucht und eine UDF-Standarddefinition für den Benutzer zurückgibt.

Konfigurieren einer Stream Analytics- und Machine Learning Studio-UDF (klassisch) per REST-API

Mit REST-APIs können Sie Ihren Auftrag so konfigurieren, dass er Machine Learning Studio-Funktionen (klassisch) aufruft.

  1. Erstellen eines Stream Analytics-Auftrags
  2. Definieren einer Eingabe.
  3. Definieren einer Ausgabe.
  4. Erstellen einer benutzerdefinierten Funktion (UDF).
  5. Schreiben einer Stream Analytics-Transformation zum Aufrufen der UDF.
  6. Beginnen Sie den Auftrag.

Erstellen einer UDF mit grundlegenden Eigenschaften

Im folgenden Beispielcode wird eine skalare UDF mit dem Namen newudf erstellt, die an einen Machine Learning Studio (classic)-Endpunkt gebunden ist. Sie finden den endpoint-Wert (Dienst-URI) auf der API-Hilfeseite für den ausgewählten Dienst. Sie finden den apiKey-Wert auf der Hauptseite des Diensts.

PUT : /subscriptions/<subscriptionId>/resourceGroups/<resourceGroup>/providers/Microsoft.StreamAnalytics/streamingjobs/<streamingjobName>/functions/<udfName>?api-version=<apiVersion>

Beispiel für Anforderungstext:

    {
        "name": "newudf",
        "properties": {
            "type": "Scalar",
            "properties": {
                "binding": {
                    "type": "Microsoft.MachineLearning/WebService",
                    "properties": {
                        "endpoint": "https://ussouthcentral.services.azureml.net/workspaces/f80d5d7a77fb4b46bf2a30c63c078dca/services/b7be5e40fd194258796fb402c1958eaf/execute ",
                        "apiKey": "replacekeyhere"
                    }
                }
            }
        }
    }

Aufrufen des RetrieveDefaultDefinition-Endpunkts für die standardmäßige UDF

Nachdem Sie das UDF-Gerüst erstellt haben, müssen Sie die Definition der UDF abschließen. Mit dem Endpunkt RetrieveDefaultDefinition können Sie die Standarddefinition für eine skalare Funktion abrufen, die an einen Endpunkt von Machine Learning Studio (classic) gebunden ist.

Für die folgende Nutzlast ist es erforderlich, dass Sie die UDF-Standarddefinition für eine Skalarfunktion abrufen, die an einen Studio-Endpunkt (klassisch) gebunden ist. Der tatsächliche Endpunkt wird nicht angegeben, da die PUT-Anforderung bereits bereitgestellt wurde.

Stream Analytics ruft den Endpunkt aus der Anforderung auf, wenn die Anforderung explizit einen Endpunkt bereitgestellt hat. Andernfalls verwendet Stream Analytics den Endpunkt, auf den ursprünglich verwiesen wurde. Hier verwendet die UDF einen einzelnen Zeichenfolgenparameter (einen Satz) und gibt eine Einzelausgabe vom Typ string zurück, mit der die Bezeichnung Sentiment für diesen Satz angegeben wird.

POST : /subscriptions/<subscriptionId>/resourceGroups/<resourceGroup>/providers/Microsoft.StreamAnalytics/streamingjobs/<streamingjobName>/functions/<udfName>/RetrieveDefaultDefinition?api-version=<apiVersion>

Beispiel für Anforderungstext:

    {
        "bindingType": "Microsoft.MachineLearning/WebService",
        "bindingRetrievalProperties": {
            "executeEndpoint": null,
            "udfType": "Scalar"
        }
    }

Die Ausgabe dieser Anforderung sieht in etwa so aus wie das folgende Beispiel:

    {
        "name": "newudf",
        "properties": {
            "type": "Scalar",
            "properties": {
                "inputs": [{
                    "dataType": "nvarchar(max)",
                    "isConfigurationParameter": null
                }],
                "output": {
                    "dataType": "nvarchar(max)"
                },
                "binding": {
                    "type": "Microsoft.MachineLearning/WebService",
                    "properties": {
                        "endpoint": "https://ussouthcentral.services.azureml.net/workspaces/f80d5d7a77ga4a4bbf2a30c63c078dca/services/b7be5e40fd194258896fb602c1858eaf/execute",
                        "apiKey": null,
                        "inputs": {
                            "name": "input1",
                            "columnNames": [{
                                "name": "tweet",
                                "dataType": "string",
                                "mapTo": 0
                            }]
                        },
                        "outputs": [{
                            "name": "Sentiment",
                            "dataType": "string"
                        }],
                        "batchSize": 10
                    }
                }
            }
        }
    }

Patchen der UDF mit der Antwort

Jetzt müssen Sie die UDF mit der vorherigen Antwort patchen.

PATCH : /subscriptions/<subscriptionId>/resourceGroups/<resourceGroup>/providers/Microsoft.StreamAnalytics/streamingjobs/<streamingjobName>/functions/<udfName>?api-version=<apiVersion>

Anforderungstext (Ausgabe von RetrieveDefaultDefinition):

    {
        "name": "newudf",
        "properties": {
            "type": "Scalar",
            "properties": {
                "inputs": [{
                    "dataType": "nvarchar(max)",
                    "isConfigurationParameter": null
                }],
                "output": {
                    "dataType": "nvarchar(max)"
                },
                "binding": {
                    "type": "Microsoft.MachineLearning/WebService",
                    "properties": {
                        "endpoint": "https://ussouthcentral.services.azureml.net/workspaces/f80d5d7a77ga4a4bbf2a30c63c078dca/services/b7be5e40fd194258896fb602c1858eaf/execute",
                        "apiKey": null,
                        "inputs": {
                            "name": "input1",
                            "columnNames": [{
                                "name": "tweet",
                                "dataType": "string",
                                "mapTo": 0
                            }]
                        },
                        "outputs": [{
                            "name": "Sentiment",
                            "dataType": "string"
                        }],
                        "batchSize": 10
                    }
                }
            }
        }
    }

Implementieren einer Stream Analytics-Transformation für den Aufruf der UDF

Fragen Sie die UDF (hier: scoreTweet) in Bezug auf alle Eingabeereignisse ab, und schreiben Sie eine Antwort für das Ereignis in eine Ausgabe:

    {
        "name": "transformation",
        "properties": {
            "streamingUnits": null,
            "query": "select *,scoreTweet(Tweet) TweetSentiment into blobOutput from blobInput"
        }
    }

Hilfe erhalten

Weitere Unterstützung erhalten Sie auf der Microsoft Q&A-Seite für Azure Stream Analytics.

Nächste Schritte