Partager via


Intégration de Machine Learning Studio (classique) dans Stream Analytics

Important

La prise en charge d’Azure Machine Learning Studio (classique) prend fin le 31 août 2024. Nous vous recommandons de passer à Azure Machine Learning avant cette date.

Depuis le 1er décembre 2021, vous ne pouvez plus créer de nouvelles ressources Machine Learning Studio (classique) (plan d’espace de travail et de service web). Jusqu’au 31 août 2024, vous pouvez continuer à utiliser les expériences et services web Machine Learning Studio (classique) existants. Pour plus d’informations, consultez l’article suivant :

La documentation de Machine Learning Studio (classique) est en cours de retrait et pourrait ne pas être mise à jour à l’avenir.

Azure Stream Analytics prend en charge les fonctions définies par l’utilisateur qui appellent les points de terminaison Azure Machine Learning Studio (classique). La bibliothèque d’API REST Stream Analytics décrit la prise en charge de l’API REST pour cette fonctionnalité.

Cet article fournit des informations supplémentaires dont vous avez besoin pour réussir l’implémentation de cette fonctionnalité dans Stream Analytics. Un didacticiel est également disponible.

Présentation : Terminologie de Machine Learning Studio (classique)

Machine Learning Studio (classique) fournit un outil collaboratif, glisser-déplacer que vous pouvez utiliser pour générer, tester et déployer des solutions d’analyse prédictive sur vos données. Vous pouvez utiliser Machine Learning Studio (classique) pour interagir avec ces ressources machine learning :

  • Espace de travail: conteneur qui contient toutes les autres ressources machine learning ensemble pour la gestion et le contrôle.
  • Expérience: test que les scientifiques des données créent pour utiliser des jeux de données et entraîner un modèle Machine Learning.
  • Point de terminaison: objet que vous utilisez pour prendre des fonctionnalités en entrée, appliquer un modèle Machine Learning spécifié et retourner une sortie notée.
  • Service web Scoring: collection de points de terminaison.

Chaque point de terminaison dispose d’API servant à l’exécution de lots et l’exécution synchronisée. Stream Analytics utilise l’exécution synchronisée. Le service spécifique est appelé service de demande/réponse dans Machine Learning Studio (classique).

Ressources Machine Learning Studio (classique) nécessaires pour les travaux Stream Analytics

Pour les besoins du traitement de travail Stream Analytics, un point de terminaison de requête/réponse, une clé APIet une définition Swagger sont toutes nécessaires pour réussir l’exécution. Stream Analytics est doté d’un point de terminaison supplémentaire qui génère l’URL d’un point de terminaison Swagger, fait des recherches dans l’interface et retourne une définition de fonction UDF par défaut à l’utilisateur.

Configurer une UDF Stream Analytics et Machine Learning Studio (classique) via l’API REST

En utilisant des API REST, vous pouvez configurer votre travail pour appeler des fonctions Machine Learning Studio (classiques) :

  1. Créer une tâche Stream Analytics
  2. Définition d’une entrée.
  3. Définition d’une sortie.
  4. Créer une fonction définie par l'utilisateur.
  5. Création d’une transformation Stream Analytics faisant appel à la fonction définie par l’utilisateur.
  6. Démarrez le travail.

Créer une UDF avec des propriétés de base

Par exemple, l’exemple de code suivant crée une UDF scalaire nommée newudf qui se lie à un point de terminaison Machine Learning Studio (classique). Vous trouverez la valeur endpoint (URI de service) dans la page d’aide de l’API pour le service choisi. Vous trouverez la valeur apiKey sur la page principale du service.

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

Exemple de corps de requête :

    {
        "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"
                    }
                }
            }
        }
    }

Appeler le point de terminaison RetrieveDefaultDefinition pour la UDF par défaut

Après avoir créé la UDF squelette, vous avez besoin de la définition complète de la UDF. Le point de terminaison RetrieveDefaultDefinition vous aide à obtenir la définition par défaut d’une fonction scalaire liée à un point de terminaison Machine Learning Studio (classique).

La charge utile suivante vous oblige à obtenir la définition UDF par défaut d’une fonction scalaire liée à un point de terminaison Studio (classique). Il ne spécifie pas le point de terminaison réel, car la demande PUT déjà fournie.

Stream Analytics appelle le point de terminaison à partir de la requête, si la demande a fourni explicitement un point de terminaison. Sinon, Stream Analytics utilise le point de terminaison qui a été référencé à l’origine. Ici, l’UDF prend un paramètre de chaîne unique (une phrase) et retourne une seule sortie de type string qui indique l’étiquette Sentiment pour cette phrase.

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

Exemple de corps de requête :

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

La sortie de cette requête ressemble à l’exemple suivant :

    {
        "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
                    }
                }
            }
        }
    }

Corriger la UDF avec la réponse

À présent, vous devez corriger la fonction UDF avec la réponse précédente.

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

Corps de la requête (sortie de 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
                    }
                }
            }
        }
    }

Implémenter une transformation Stream Analytics pour appeler la UDF

Interrogez la fonction UDF (ici nommée scoreTweet) pour chaque événement d’entrée et écrivez une réponse pour cet événement dans une sortie :

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

Obtenir de l’aide

Pour obtenir de l’aide supplémentaire, essayez la page Q&A Microsoft pour Azure Stream Analytics.

Étapes suivantes