Come usare un servizio Web di Machine Learning Studio (versione classica)

SI APPLICA A:Si tratta di un segno di spunta, il che significa che questo articolo si applica a Machine Learning Studio (versione classica). Machine Learning Studio (versione classica) Si tratta di una X, il che significa che questo articolo si applica ad Azure Machine Learning.Azure Machine Learning

Importante

Il supporto dello studio di Azure Machine Learning (versione classica) terminerà il 31 agosto 2024. È consigliabile passare ad Azure Machine Learning entro tale data.

A partire dal 1° dicembre 2021 non sarà possibile creare nuove risorse dello studio di Azure Machine Learning (versione classica). Fino al 31 agosto 2024 sarà possibile continuare a usare le risorse dello studio di Azure Machine Learning (versione classica).

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

Dopo aver distribuito un modello predittivo di Machine Learning Studio (versione classica) come servizio Web, è possibile usare un'API REST per inviare i dati e ottenere stime. È possibile inviare i dati in tempo reale o in modalità batch.

Altre informazioni su come creare e distribuire un servizio Web di Machine Learning con Machine Learning Studio (versione classica) sono disponibili qui:

Panoramica

Con il servizio Web di Machine Learning, un'applicazione esterna comunica con un modello di punteggio del flusso di lavoro di Machine Learning in tempo reale. Una chiamata al servizio Web di Machine Learning restituisce i risultati della stima a un'applicazione esterna. Per effettuare una chiamata al servizio Web di Machine Learning, passare una chiave API creata quando si distribuisce una stima. Il servizio Web di Machine Learning è basato su REST, una scelta di architettura diffusa per progetti di programmazione Web.

Machine Learning Studio (versione classica) ha due tipi di servizi:

  • Request-Response Service (RRS): servizio a bassa latenza e altamente scalabile che fornisce un'interfaccia ai modelli senza stato creati e distribuiti da Machine Learning Studio (versione classica).
  • Servizio esecuzione batch (BES). Un servizio asincrono che valuta un batch di record di dati.

Per altre informazioni sui servizi Web di Machine Learning, vedere Distribuire un servizio Web di Machine Learning.

Ottenere una chiave di autorizzazione

Quando si distribuisce l'esperimento, vengono generate le chiavi API per il servizio Web, recuperabili da diverse posizioni.

Dal portale dei servizi Web di Machine Learning

Accedere al portale dei servizi Web di Machine Learning .

Per recuperare la chiave API per un nuovo servizio Web Machine Learning:

  1. Nel portale dei servizi Web di Machine Learning fare clic su Servizi Web nel menu in alto.
  2. Selezionare il servizio Web per il quale si desidera recuperare la chiave.
  3. Nel menu in alto fare clic su Consume(Uso).
  4. Copiare e salvare la Chiave primaria.

Per recuperare la chiave API per un nuovo servizio Web Machine Learning di tipo classico:

  1. Nel portale Servizi Web di Machine Learning di Azure, fare clic sul menu Classic Web Services (Servizi Web classici) nel menu in alto.
  2. Fare clic sul servizio Web in uso.
  3. Selezionare l'endpoint per il quale si desidera recuperare la chiave.
  4. Nel menu in alto fare clic su Consume(Uso).
  5. Copiare e salvare la Chiave primaria.

Servizio Web classico

È anche possibile recuperare una chiave per un servizio Web classico da Machine Learning Studio (versione classica).

Machine Learning Studio (versione classica)

  1. In Machine Learning Studio (versione classica) fare clic su SERVIZI WEB a sinistra.
  2. Fare clic su un servizio Web. La chiave API si trova nella scheda DASHBOARD.

Connettersi a un servizio Web di Machine Learning

È possibile connettersi a un servizio Web di Machine Learning usando qualsiasi linguaggio di programmazione che supporta la risposta e la richiesta HTTP. È possibile visualizzare gli esempi in C#, Python e R da una pagina della guida del servizio Web di Machine Learning.

Guida dell'API di Machine Learning La Guida dell'API di Machine Learning viene creata quando si distribuisce un servizio Web. Vedere Esercitazione 3: Distribuire il modello di rischio di credito. La Guida per l'API di Machine Learning contiene i dettagli su un servizio Web di stima.

  1. Fare clic sul servizio Web in uso.
  2. Selezionare l'endpoint per il quale si desidera visualizzare la pagina della guida alle API.
  3. Nel menu in alto fare clic su Consume(Uso).
  4. Fare clic sulla pagina della guida alle API negli endpoint Request-Response o Esecuzione batch.

Per visualizzare la guida alle API di Machine Learning per un nuovo servizio Web

Nel portale dei servizi Web di Machine Learning:

  1. Fare clic su WEB SERVICES (Servizi Web) nel menu in alto.
  2. Selezionare il servizio Web per il quale si desidera recuperare la chiave.

Fare clic su Use Web Service (Usa servizio Web) per ottenere l'URI per i servizi Richiesta/Risposta ed Esecuzione in batch, nonché il codice di esempio in C#, R e Python.

Fare clic su Swagger API (API Swagger) per ottenere la documentazione basata su Swagger per le API chiamate dagli URI specificati.

Esempio C#

Per connettersi a un servizio Web di Machine Learning, usare un httpClient che passa ScoreData. ScoreData contiene FeatureVector, un vettore n-dimensionale di funzioni numeriche che rappresentano ScoreData. Effettuare l'autenticazione al servizio di Machine Learning con una chiave API.

Per connettersi a un servizio Web di Machine Learning, è necessario installare il pacchetto NuGet Microsoft.AspNet.WebApi.Client .

Installare NuGet Microsoft.AspNet.WebApi.Client in Visual Studio

  1. Pubblicare il set di dati di download dal servizio Web UCI: Adult 2 class dataset.
  2. Fare clic su Strumenti> Console diGestione>pacchetti NuGet.
  3. Scegliere Install-Package Microsoft.AspNet.WebApi.Client.

Per eseguire l'esempio di codice

  1. Pubblicare l'esperimento "Sample 1: Download dataset from UCI: Adult 2 class dataset", che fa parte della raccolta di esempi di Machine Learning.
  2. Assegnare ad apiKey la chiave di un servizio Web. Vedere Ottenere una chiave di autorizzazione in precedenza.
  3. Assegnare l'URI del servizio con l'URI della richiesta.

Di seguito è riportato l'aspetto di una richiesta completa.

using System;
using System.Collections.Generic;
using System.IO;
using System.Net.Http;
using System.Net.Http.Formatting;
using System.Net.Http.Headers;
using System.Text;
using System.Threading.Tasks;

namespace CallRequestResponseService
{
    class Program
    {
        static void Main(string[] args)
        {
            InvokeRequestResponseService().Wait();
        }

        static async Task InvokeRequestResponseService()
        {
            using (var client = new HttpClient())
            {
                var scoreRequest = new
                {
                    Inputs = new Dictionary<string, List<Dictionary<string, string>>> () {
                        {
                            "input1",
                            // Replace columns labels with those used in your dataset
                            new List<Dictionary<string, string>>(){new Dictionary<string, string>(){
                                    {
                                        "column1", "value1"
                                    },
                                    {
                                        "column2", "value2"
                                    },
                                    {
                                        "column3", "value3"
                                    }
                                }
                            }
                        },
                    },
                    GlobalParameters = new Dictionary<string, string>() {}
                };

                // Replace these values with your API key and URI found on https://services.azureml.net/
                const string apiKey = "<your-api-key>"; 
                const string apiUri = "<your-api-uri>";
                
                client.DefaultRequestHeaders.Authorization = new AuthenticationHeaderValue( "Bearer", apiKey);
                client.BaseAddress = new Uri(apiUri);

                // WARNING: The 'await' statement below can result in a deadlock
                // if you are calling this code from the UI thread of an ASP.NET application.
                // One way to address this would be to call ConfigureAwait(false)
                // so that the execution does not attempt to resume on the original context.
                // For instance, replace code such as:
                //      result = await DoSomeTask()
                // with the following:
                //      result = await DoSomeTask().ConfigureAwait(false)

                HttpResponseMessage response = await client.PostAsJsonAsync("", scoreRequest);

                if (response.IsSuccessStatusCode)
                {
                    string result = await response.Content.ReadAsStringAsync();
                    Console.WriteLine("Result: {0}", result);
                }
                else
                {
                    Console.WriteLine(string.Format("The request failed with status code: {0}", response.StatusCode));

                    // Print the headers - they include the request ID and the timestamp,
                    // which are useful for debugging the failure
                    Console.WriteLine(response.Headers.ToString());

                    string responseContent = await response.Content.ReadAsStringAsync();
                    Console.WriteLine(responseContent);
                }
            }
        }
    }
}

Esempio Python

Per connettersi a un servizio Web di Machine Learning, usare la libreria urllib2 libreria per Python 2.X e la libreria urllib.request per Python 3.X. Si passerà a ScoreData, che contiene FeatureVector, un vettore n-dimensionale di funzioni numeriche che rappresentano ScoreData. Effettuare l'autenticazione al servizio di Machine Learning con una chiave API.

Per eseguire l'esempio di codice

  1. Distribuire l'esperimento "Sample 1: Download dataset from UCI: Adult 2 class dataset", che fa parte della raccolta di esempi di Machine Learning.
  2. Assegnare ad apiKey la chiave di un servizio Web. Vedere la sezione Ottenere una chiave di autorizzazione all'inizio di questo articolo.
  3. Assegnare l'URI del servizio con l'URI della richiesta.

Di seguito è riportato l'aspetto di una richiesta completa.

import urllib2 # urllib.request and urllib.error for Python 3.X
import json

data = {
    "Inputs": {
        "input1":
        [
            {
                'column1': "value1",   
                'column2': "value2",   
                'column3': "value3"
            }
        ],
    },
    "GlobalParameters":  {}
}

body = str.encode(json.dumps(data))

# Replace this with the URI and API Key for your web service
url = '<your-api-uri>'
api_key = '<your-api-key>'
headers = {'Content-Type':'application/json', 'Authorization':('Bearer '+ api_key)}

# "urllib.request.Request(url, body, headers)" for Python 3.X
req = urllib2.Request(url, body, headers)

try:
    # "urllib.request.urlopen(req)" for Python 3.X
    response = urllib2.urlopen(req)

    result = response.read()
    print(result)
# "urllib.error.HTTPError as error" for Python 3.X
except urllib2.HTTPError, error: 
    print("The request failed with status code: " + str(error.code))

    # Print the headers - they include the request ID and the timestamp, which are useful for debugging the failure
    print(error.info())
    print(json.loads(error.read())) 

Esempio R

Per connettersi a un servizio Web di Machine Learning, usare le librerie RCurl e rjson per eseguire la richiesta ed elaborare la risposta JSON restituita. Si passerà a ScoreData, che contiene FeatureVector, un vettore n-dimensionale di funzioni numeriche che rappresentano ScoreData. Effettuare l'autenticazione al servizio di Machine Learning con una chiave API.

Di seguito è riportato l'aspetto di una richiesta completa.

library("curl")
library("httr")
library("rjson")

requestFailed = function(response) {
    return (response$status_code >= 400)
}

printHttpResult = function(response, result) {
    if (requestFailed(response)) {
        print(paste("The request failed with status code:", response$status_code, sep=" "))
    
        # Print the headers - they include the request ID and the timestamp, which are useful for debugging the failure
        print(response$headers)
    }
    
    print("Result:") 
    print(fromJSON(result))  
}

req = list(
        Inputs = list( 
            "input1" = list(
                "ColumnNames" = list("Col1", "Col2", "Col3"),
                "Values" = list( list( "0", "value", "0" ),  list( "0", "value", "0" )  )
            )                ),
        GlobalParameters = setNames(fromJSON('{}'), character(0))
)

body = enc2utf8(toJSON(req))
api_key = "abc123" # Replace this with the API key for the web service
authz_hdr = paste('Bearer', api_key, sep=' ')

response = POST(url= "<your-api-uri>",
        add_headers("Content-Type" = "application/json", "Authorization" = authz_hdr),
        body = body)

result = content(response, type="text", encoding="UTF-8")

printHttpResult(response, result)

Esempio di JavaScript

Per connettersi a un servizio Web di Machine Learning, usare il pacchetto npm request nel progetto. Si userà anche l'oggetto JSON per formattare l'input e analizzare il risultato. Installare usando npm install request --save, o aggiungere "request": "*" al file package.json in dependencies ed eseguire npm install.

Di seguito è riportato l'aspetto di una richiesta completa.

let req = require("request");

const uri = "<your-api-uri>";
const apiKey = "<your-api-key>";

let data = {
    "Inputs": {
        "input1":
        [
            {
                'column1': "value1",
                'column2': "value2",
                'column3': "value3"
            }
        ],
    },
    "GlobalParameters": {}
}

const options = {
    uri: uri,
    method: "POST",
    headers: {
        "Content-Type": "application/json",
        "Authorization": "Bearer " + apiKey,
    },
    body: JSON.stringify(data)
}

req(options, (err, res, body) => {
    if (!err && res.statusCode == 200) {
        console.log(body);
    } else {
        console.log("The request failed with status code: " + res.statusCode);
    }
});