Jak využívat webovou službu Machine Learning Studio (classic)

PLATÍ PRO:Toto je značka zaškrtnutí, což znamená, že tento článek se vztahuje na Machine Learning Studio (classic). Machine Learning Studio (classic) Toto je X, což znamená, že tento článek se vztahuje na Azure Machine Learning.Azure Machine Learning

Důležité

Podpora studia Machine Learning (Classic) skončí 31. srpna 2024. Doporučujeme do tohoto data přejít na službu Azure Machine Learning.

Od 1. prosince 2021 nebude možné vytvářet nové prostředky studia Machine Learning (Classic). Do 31. srpna 2024 můžete pokračovat v používání stávajících prostředků studia Machine Learning (Classic).

Dokumentace ke studiu ML (Classic) se vyřazuje z provozu a v budoucnu se nemusí aktualizovat.

Jakmile jako webovou službu nasadíte prediktivní model nástroje Machine Learning Studio (Classic), můžete ho pomocí rozhraní REST API odeslat a získat předpovědi. Data můžete odesílat v reálném čase nebo v dávkovém režimu.

Další informace o tom, jak vytvořit a nasadit webovou službu Machine Learning pomocí nástroje Machine Learning Studio (classic) najdete tady:

Přehled

S webovou službou Machine Learning komunikuje externí aplikace s modelem vyhodnocování pracovních postupů služby Machine Learning v reálném čase. Volání webové služby Machine Learning vrací výsledky předpovědi externí aplikaci. K volání webové služby Machine Learning předáte klíč rozhraní API vytvořený při nasazení předpovědi. Webová služba Machine Learning je založená na rest, oblíbené architektuře pro projekty webového programování.

Machine Learning Studio (classic) má dva typy služeb:

  • Request-Response Service (RRS) – vysoce škálovatelná služba s nízkou latencí, která poskytuje rozhraní pro bezstavové modely vytvořené a nasazené ze sady Machine Learning Studio (classic).
  • Batch Execution Service (BES) – asynchronní služba, která vyhodnocí dávku datových záznamů.

Další informace o webových službách Machine Learning najdete v tématu Nasazení webové služby Machine Learning.

Získání autorizačního klíče

Při nasazení experimentu se klíče rozhraní API vygenerují pro webovou službu. Klíče můžete načíst z několika umístění.

Na portálu služby Machine Learning Web Services

Přihlaste se k portálu služby Machine Learning Web Services .

Načtení klíče rozhraní API pro novou webovou službu Machine Learning:

  1. Na portálu Webové služby Machine Learning klikněte na položku Webové služby v horní nabídce.
  2. Klikněte na webovou službu, pro kterou chcete načíst klíč.
  3. V horní nabídce klikněte na Možnost Spotřebovávat.
  4. Zkopírujte a uložte primární klíč.

Načtení klíče rozhraní API pro webovou službu Machine Learning Classic:

  1. Na portálu webových služeb Azure Machine Learning klikněte v horní nabídce na klasické webové služby .
  2. Klikněte na webovou službu, se kterou pracujete.
  3. Klikněte na koncový bod, pro který chcete klíč načíst.
  4. V horní nabídce klikněte na Možnost Spotřebovávat.
  5. Zkopírujte a uložte primární klíč.

Klasická webová služba

Klíč pro klasickou webovou službu můžete načíst také ze sady Machine Learning Studio (classic).

Machine Learning Studio (Classic)

  1. V nástroji Machine Learning Studio (classic) klikněte na WEB SERVICES na levé straně.
  2. Klikněte na webovou službu. Klíč rozhraní API je na kartě ŘÍDICÍ PANEL.

Připojení k webové službě Machine Learning

K webové službě Machine Learning se můžete připojit pomocí libovolného programovacího jazyka, který podporuje požadavek a odpověď HTTP. Příklady můžete zobrazit v jazyce C#, Python a R ze stránky nápovědy služby Machine Learning Web Service.

Nápověda k rozhraní API služby Machine Learning Nápověda k rozhraní API služby Machine Learning se vytvoří při nasazení webové služby. Viz kurz 3: Nasazení modelu úvěrového rizika. Nápověda k rozhraní API služby Machine Learning obsahuje podrobnosti o prediktivní webové službě.

  1. Klikněte na webovou službu, se kterou pracujete.
  2. Klikněte na koncový bod, pro který chcete zobrazit stránku nápovědy rozhraní API.
  3. V horní nabídce klikněte na Možnost Spotřebovávat.
  4. Klikněte na stránku nápovědy rozhraní API pod koncovými body Request-Response nebo Dávkové spouštění.

Zobrazení nápovědy k rozhraní API služby Machine Learning pro novou webovou službu

Na portálu služby Machine Learning Web Services:

  1. V horní nabídce klikněte na WEB SERVICES .
  2. Klikněte na webovou službu, pro kterou chcete načíst klíč.

Kliknutím na použít webovou službu získáte identifikátory URI pro Request-Response a službu Batch Execution Services a ukázkový kód v jazyce C#, R a Python.

Kliknutím na rozhraní API Swagger získáte dokumentaci založenou na Swaggeru pro rozhraní API volat ze zadaných identifikátorů URI.

Ukázka jazyka C#

Pokud se chcete připojit k webové službě Machine Learning, použijte protokol HttpClient s předáváním ScoreData. ScoreData obsahuje FeatureVector, ndimenzionální vektor číselných funkcí, který představuje ScoreData. Ověříte se ve službě Machine Learning pomocí klíče rozhraní API.

Pokud se chcete připojit k webové službě Machine Learning, musí být nainstalovaný balíček NuGet Microsoft.AspNet.WebApi.Client .

Instalace balíčku NuGet Microsoft.AspNet.WebApi.Client v sadě Visual Studio

  1. Publikujte datovou sadu Download z UCI: Webová služba datové sady pro dospělé 2 třídy.
  2. Klikněte na konzoluSprávce>balíčků Správce balíčků NuGetTools>.
  3. Zvolte Install-Package Microsoft.AspNet.WebApi.Client.

Spuštění ukázky kódu

  1. Publikujte experiment "Ukázka 1: Stažení datové sady z UCI: Datová sada pro dospělé 2 třídy", která je součástí ukázkové kolekce Machine Learning.
  2. Přiřaďte klíč apiKey pomocí klíče z webové služby. Viz Získání autorizačního klíče výše.
  3. Přiřaďte identifikátor ServiceUri pomocí identifikátoru URI požadavku.

Tady je to, jak bude vypadat kompletní požadavek.

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);
                }
            }
        }
    }
}

Ukázka Pythonu

Pokud se chcete připojit k webové službě Machine Learning, použijte knihovnu urllib2 pro knihovnu Python 2.X a urllib.request pro Python 3.X. Předáte ScoreData, která obsahuje FeatureVector, ndimenzionální vektor číselných funkcí, který představuje ScoreData. Ověříte se ve službě Machine Learning pomocí klíče rozhraní API.

Spuštění ukázky kódu

  1. Nasazení "Sample 1: Download dataset from UCI: Adult 2 class dataset" experiment, součást ukázkové kolekce Machine Learning.
  2. Přiřaďte klíč apiKey pomocí klíče z webové služby. Podívejte se na část Získat autorizační klíč poblíž začátku tohoto článku.
  3. Přiřaďte identifikátor ServiceUri pomocí identifikátoru URI požadavku.

Tady je to, jak bude vypadat kompletní požadavek.

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())) 

Ukázka jazyka R

Pokud se chcete připojit k webové službě Machine Learning, použijte knihovny RCurl a rjson k provedení požadavku a zpracování vrácené odpovědi JSON. Předáte ScoreData, která obsahuje FeatureVector, ndimenzionální vektor číselných funkcí, který představuje ScoreData. Ověříte se ve službě Machine Learning pomocí klíče rozhraní API.

Tady je to, jak bude vypadat kompletní požadavek.

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)

Ukázka JavaScriptu

Pokud se chcete připojit k webové službě Machine Learning, použijte balíček npm požadavku v projektu. Objekt použijete také JSON k formátování vstupu a analýze výsledku. Nainstalujte pomocí npm install request --savesouboru package.json nebo ho přidejte "request": "*" do souboru package.json dependencies a spusťte npm install.

Tady je to, jak bude vypadat kompletní požadavek.

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);
    }
});