Dela via


Så här använder du en Machine Learning Studio-webbtjänst (klassisk)

GÄLLER FÖR:Det här är en bockmarkering, vilket innebär att den här artikeln gäller för Machine Learning Studio (klassisk). Machine Learning Studio (klassisk) Det här är ett X, vilket innebär att den här artikeln gäller för Azure Machine Learning.Azure Machine Learning

Viktigt

Stödet för Machine Learning Studio (klassisk) upphör den 31 augusti 2024. Vi rekommenderar att du byter till Azure Machine Learning innan dess.

Från och med den 1 december 2021 kan du inte längre skapa nya Machine Learning Studio-resurser (klassisk). Du kan fortsätta att använda befintliga Machine Learning Studio-resurser (klassisk) till och med den 31 augusti 2024.

Dokumentationen om ML Studio (klassisk) håller på att dras tillbaka och kanske inte uppdateras i framtiden.

När du har distribuerat en förutsägelsemodell för Machine Learning Studio (klassisk) som en webbtjänst kan du använda ett REST-API för att skicka data och få förutsägelser. Du kan skicka data i realtid eller i batchläge.

Mer information om hur du skapar och distribuerar en Machine Learning-webbtjänst med Machine Learning Studio (klassisk) finns här:

Översikt

Med Machine Learning-webbtjänsten kommunicerar ett externt program med en bedömningsmodell för Machine Learning-arbetsflöden i realtid. Ett Machine Learning-webbtjänstanrop returnerar förutsägelseresultat till ett externt program. Om du vill göra ett Machine Learning-webbtjänstanrop skickar du en API-nyckel som skapas när du distribuerar en förutsägelse. Machine Learning-webbtjänsten baseras på REST, ett populärt arkitekturval för webbprogrammeringsprojekt.

Machine Learning Studio (klassisk) har två typer av tjänster:

  • Request-Response Service (RRS) – en tjänst med låg svarstid och hög skalbarhet som ger ett gränssnitt till de tillståndslösa modeller som skapats och distribuerats från Machine Learning Studio (klassisk).
  • Batch Execution Service (BES) – en asynkron tjänst som poängsätter en batch för dataposter.

Mer information om Machine Learning-webbtjänster finns i Distribuera en Machine Learning-webbtjänst.

Hämta en auktoriseringsnyckel

När du distribuerar experimentet genereras API-nycklar för webbtjänsten. Du kan hämta nycklarna från flera platser.

Från Machine Learning Web Services-portalen

Logga in på Machine Learning Web Services-portalen .

Så här hämtar du API-nyckeln för en ny Machine Learning-webbtjänst:

  1. I Machine Learning Web Services-portalen klickar du på Webbtjänster på den översta menyn.
  2. Klicka på den webbtjänst som du vill hämta nyckeln för.
  3. Klicka på Förbruka på den översta menyn.
  4. Kopiera och spara primärnyckeln.

Så här hämtar du API-nyckeln för en klassisk Machine Learning-webbtjänst:

  1. I portalen för Azure Machine Learning-webbtjänster klickar du på Klassiska webbtjänster på den översta menyn.
  2. Klicka på den webbtjänst som du arbetar med.
  3. Klicka på den slutpunkt som du vill hämta nyckeln för.
  4. Klicka på Förbruka på den översta menyn.
  5. Kopiera och spara primärnyckeln.

Klassisk webbtjänst

Du kan också hämta en nyckel för en klassisk webbtjänst från Machine Learning Studio (klassisk).

Machine Learning Studio (klassisk)

  1. I Machine Learning Studio (klassisk) klickar du på WEB SERVICES till vänster.
  2. Klicka på en webbtjänst. API-nyckeln finns på fliken INSTRUMENTPANEL.

Ansluta till en Machine Learning-webbtjänst

Du kan ansluta till en Machine Learning-webbtjänst med valfritt programmeringsspråk som stöder HTTP-begäran och -svar. Du kan visa exempel i C#, Python och R från en hjälpsida för Machine Learning-webbtjänsten.

Hjälp om Machine Learning-API:et Machine Learning API-hjälp skapas när du distribuerar en webbtjänst. Se Självstudie 3: Distribuera kreditriskmodellen. Machine Learning API-hjälpen innehåller information om en förutsägelsewebbtjänst.

  1. Klicka på den webbtjänst som du arbetar med.
  2. Klicka på den slutpunkt som du vill visa API-hjälpsidan för.
  3. Klicka på Förbruka på den översta menyn.
  4. Klicka på API-hjälpsidan under slutpunkterna Request-Response eller Batch-körning.

Så här visar du hjälpen för Machine Learning-API:et för en ny webbtjänst

I Machine Learning-webbtjänstportalen:

  1. Klicka på WEBBTJÄNSTER på den översta menyn.
  2. Klicka på den webbtjänst som du vill hämta nyckeln för.

Klicka på Använd webbtjänst för att hämta URI:er för Request-Response och Batch Execution Services och exempelkod i C#, R och Python.

Klicka på Swagger API för att hämta Swagger-baserad dokumentation för API:erna som anropas från de angivna URI:erna.

C#-exempel

Om du vill ansluta till en Machine Learning-webbtjänst använder du en HttpClient som skickar ScoreData. ScoreData innehåller en FeatureVector, en n-dimensionell vektor med numeriska funktioner som representerar ScoreData. Du autentiserar till Machine Learning-tjänsten med en API-nyckel.

Om du vill ansluta till en Machine Learning-webbtjänst måste NuGet-paketet Microsoft.AspNet.WebApi.Client vara installerat.

Installera Microsoft.AspNet.WebApi.Client NuGet i Visual Studio

  1. Publicera webbtjänsten Download dataset from UCI: Adult 2 class dataset (Ladda ned datauppsättning från UCI: Adult 2-klass).
  2. Klicka på Verktyg>NuGet Package Manager>Package Manager Console.
  3. Välj Install-Package Microsoft.AspNet.WebApi.Client.

Så här kör du kodexemplet

  1. Publicera experimentet "Sample 1: Download dataset from UCI: Adult 2 class dataset", en del av Machine Learning-exempelsamlingen.
  2. Tilldela apiKey med nyckeln från en webbtjänst. Se Hämta en auktoriseringsnyckel ovan.
  3. Tilldela serviceUri med begärande-URI: n.

Så här ser en fullständig begäran ut.

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

Python-exempel

Om du vill ansluta till en Machine Learning-webbtjänst använder du biblioteket urllib2 för Python 2.X och urllib.request-biblioteket för Python 3.X. Du skickar ScoreData, som innehåller en FeatureVector, en n-dimensionell vektor med numeriska funktioner som representerar ScoreData. Du autentiserar till Machine Learning-tjänsten med en API-nyckel.

Så här kör du kodexemplet

  1. Distribuera experimentet "Sample 1: Download dataset from UCI: Adult 2 class dataset", som är en del av Machine Learning-exempelsamlingen.
  2. Tilldela apiKey med nyckeln från en webbtjänst. Se avsnittet Hämta en auktoriseringsnyckel i början av den här artikeln.
  3. Tilldela serviceUri med begärande-URI: n.

Så här ser en fullständig begäran ut.

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

R-exempel

Om du vill ansluta till en Machine Learning-webbtjänst använder du biblioteken RCurl och rjson för att göra begäran och bearbeta det returnerade JSON-svaret. Du skickar ScoreData, som innehåller en FeatureVector, en n-dimensionell vektor med numeriska funktioner som representerar ScoreData. Du autentiserar till Machine Learning-tjänsten med en API-nyckel.

Så här ser en fullständig begäran ut.

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)

JavaScript-exempel

Om du vill ansluta till en Machine Learning-webbtjänst använder du npm-paketet för begäran i projektet. Du kommer också att använda - JSON objektet för att formatera dina indata och parsa resultatet. Installera med eller npm install request --savelägg till "request": "*" i package.json under dependencies och kör npm install.

Så här ser en fullständig begäran ut.

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