Integrazione di Studio di Azure Machine Learning (versione classica) in Analisi di flusso

Importante

Il supporto di Azure Machine Learning Studio (versione classica) terminerà il 31 agosto 2024. Si consiglia di passare ad Azure Machine Learning entro tale data.

A partire dal 1° dicembre 2021 non è possibile creare nuove risorse (area di lavoro e piano di servizio Web) dello di Machine Learning Studio (versione classica). Fino al 31 agosto 2024 è possibile continuare a usare gli esperimenti e i servizi Web esistenti di Machine Learning Studio (versione classica). Per altre informazioni, vedi:

La documentazione relativa a Machine Learning Studio (versione classica) è in fase di ritiro e potrebbe non essere aggiornata in futuro.

Analisi di flusso di Azure supporta funzioni definite dall'utente (UDF) che chiamano gli endpoint di Azure Studio di Azure Machine Learning (versione classica). La libreria delle API REST Analisi di flusso illustra il supporto API REST per questa funzionalità.

Questo articolo fornisce le informazioni supplementari necessarie per la corretta implementazione di questa funzionalità in Analisi di flusso. È disponibile anche un'esercitazione.

Terminologia di Azure Studio di Azure Machine Learning (versione classica)

Studio di Machine Learning (versione classica) fornisce uno strumento di trascinamento della selezione collaborativo che consente di compilare, testare e distribuire soluzioni di analisi predittiva ai dati. È possibile usare Studio di Azure Machine Learning (versione classica) per interagire con queste risorse di Machine Learning:

  • Area di lavoro: un contenitore che include tutte le altre risorse di Machine Learning per poterle gestire e controllare.
  • Esperimento: test creato dai data scientist per usare i set di dati ed eseguire il training di un modello di Machine Learning.
  • Endpoint: oggetto usato per accettare le funzionalità come input, applicare un modello di Machine Learning specificato e restituire l'output con punteggio.
  • Servizio Web di assegnazione dei punteggi: raccolta di endpoint.

Ogni endpoint ha API per l'esecuzione batch e sincrona. Analisi di flusso usa l'esecuzione sincrona. Il servizio specifico è denominato servizio di richiesta/risposta in Studio di Azure Machine Learning (versione classica).

Risorse di Studio di Azure Machine Learning (versione classica) necessarie per i processi di Analisi di flusso

Ai fini dell'elaborazione dei processi di Analisi di flusso, per la corretta esecuzione sono necessari un endpoint di richiesta/risposta, una chiave APIe una definizione Swagger. Analisi di flusso ha un endpoint aggiuntivo che crea l'URL per un endpoint Swagger, cerca l'interfaccia e restituisce all'utente una definizione UDF predefinita.

Configurare un'UDF di Analisi di flusso e di Studio di Machine Learning con l'API REST

Usando le API REST, è possibile configurare il processo per chiamare le funzioni di Studio di Azure Machine Learning (versione classica):

  1. Creare un processo di Analisi di flusso.
  2. Definire un input.
  3. Definire un output.
  4. Creare un'UDF.
  5. Scrivere una trasformazione di Analisi di flusso che chiami l'UDF.
  6. Avviare il processo.

Creare un'UDF con proprietà di base

Il codice di esempio seguente crea un'UDF scalare denominata newudf che viene associata a un endpoint di Studio di Azure Machine Learning (versione classica). È possibile trovare il valore endpoint (URI del servizio) nella pagina della Guida sull'API per il servizio scelto. È possibile trovare il valore apiKey nella pagina principale del servizio.

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

Corpo della richiesta di esempio:

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

Chiamare l'endpoint RetrieveDefaultDefinition per l'UDF predefinita

Dopo aver creato la struttura dell'UDF, è necessaria la definizione completa dell'UDF. L'endpoint RetrieveDefaultDefinition consente di ottenere la definizione predefinita per una funzione scalare associata a un endpoint di Studio di Azure Machine Learning (versione classica).

Il payload seguente richiede di ottenere l'UDF predefinita per una funzione scalare associata a un endpoint di Studio (versione classica). Non specifica l'endpoint effettivo, perché la richiesta PUT l'ha già fornito.

Analisi di flusso chiama l'endpoint dalla richiesta, se la richiesta ha fornito in modo esplicito un endpoint. In caso contrario, Analisi di flusso usa l'endpoint a cui è stato originariamente fatto riferimento. Qui l'UDF accetta un singolo parametro di stringa (una frase) e restituisce un singolo output di tipo string indicante l'etichetta Sentiment per tale frase.

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

Corpo della richiesta di esempio:

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

L'output di questa richiesta è simile all'esempio seguente:

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

Applicare patch all'UDF con la risposta

È ora necessario applicare patch all'UDF con la risposta precedente.

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

Corpo della richiesta (output da 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
                    }
                }
            }
        }
    }

Implementare una trasformazione di Analisi di flusso per chiamare l'UDF

Eseguire una query nell'UDF (qui denominata scoreTweet) per ogni evento di input e scrivere una risposta per tale evento in un output:

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

Come ottenere assistenza

Per un'ulteriore assistenza, provare la pagina Domande e risposte Microsoft per Analisi di flusso di Azure.

Passaggi successivi