Sdílet prostřednictvím


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 týká nástroje Machine Learning Studio (classic). Machine Learning Studio (Classic) Toto je X, což znamená, že tento článek se týká služby 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 nasadíte prediktivní model Machine Learning Studio (Classic) jako webovou službu, 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ího postupu Machine Learning v reálném čase. Volání webové služby Machine Learning vrátí výsledky předpovědi externí aplikaci. K volání webové služby Machine Learning předáte klíč rozhraní API, který se vytvoří při nasazení předpovědi. Webová služba Machine Learning je založená na architektuře REST, oblíbené architektuře pro projekty webového programování.

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

  • Služba RRS (Request-Response Service) – 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 pro datové záznamy.

Další informace o webových službách Machine Learning naleznete 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í.

Z portálu Webové služby Machine Learning

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 Služby Machine Learning Web Services klikněte na webové služby v horní nabídce.
  2. Klikněte na webovou službu, pro kterou chcete klíč načíst.
  3. V horní nabídce klikněte na Spotřebovat.
  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 Spotřebovat.
  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 k webové službě Machine Learning.

Když nasadíte webovou službu, vytvoří se pomoc s rozhraním API služby Machine Learning s nápovědou k rozhraní API služby Machine Learning. Viz kurz 3: Nasazení modelu úvěrového rizika. Nápověda k rozhraní API služby Machine Learning obsahuje podrobnosti o webové službě predikce.

  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 Spotřebovat.
  4. Klikněte na stránku nápovědy rozhraní API pod koncovými body žádosti a odezvy nebo dávkového spouštění.

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

Na portálu Webové služby Machine Learning:

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

Kliknutím na Tlačítko Použít webovou službu získáte identifikátory URI pro službu Request-Response a Batch Execution Services a vzorový 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 volaná ze zadaných identifikátorů URI.

Ukázka jazyka C#

Pokud se chcete připojit k webové službě Machine Learning, použijte 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 NuGetu Microsoft.AspNet.WebApi.Client v sadě Visual Studio

  1. Publikujte datovou sadu Ke stažení z UCI: Webová služba datové sady pro dospělé 2.
  2. Klikněte na Nástroje>Správce balíčků NuGet>Konzola správce balíčků.
  3. Zvolte Install-Package Microsoft.AspNet.WebApi.Client.

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

  1. Publikujte experiment "Sample 1: Download dataset from UCI: Adult 2 class dataset" (Ukázka 1: Stažení datové sady z UCI: Datová sada pro dospělé 2, součást ukázkové kolekce Machine Learning).
  2. Přiřaďte klíč apiKey pomocí klíče z webové služby. Viz Výše uvedený článek Získání autorizačního klíče .
  3. Přiřaďte identifikátor serviceUri pomocí identifikátoru URI požadavku.

Tady je to, jak bude vypadat úplná žádost.

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 python 2.X a knihovnu 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. Nasaďte experiment Ukázka 1: Stažení datové sady z UCI: Datová sada pro dospělé 2, která je 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ískání autorizačního klíče na 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 úplná žádost.

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 vytvoření 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 úplná žádost.

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 v projektu balíček npm požadavku . Objekt použijete také JSON k naformátování vstupu a parsování výsledku. Nainstalujte pomocí npm install request --savenebo přidejte "request": "*" do package.json v části dependencies a spusťte npm install.

Tady je to, jak bude vypadat úplná žádost.

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