Använda en Machine Learning Studio-webbtjänst (klassisk)
GÄLLER FÖR: Machine Learning Studio (klassisk) 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.
- Se information om hur du flyttar maskininlärningsprojekt från ML Studio (klassisk) till Azure Machine Learning.
- Läs mer om Azure Machine Learning
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.
Du hittar mer information om hur du skapar och distribuerar en Machine Learning-webbtjänst med Hjälp av Machine Learning Studio (klassisk) här:
- En självstudiekurs om hur du skapar ett experiment i Machine Learning Studio (klassisk) finns i Skapa ditt första experiment.
- Mer information om hur du distribuerar en webbtjänst finns i Distribuera en Machine Learning-webbtjänst.
- Mer information om Machine Learning i allmänhet finns i Machine Learning Documentation Center.
Översikt
Med Machine Learning-webbtjänsten kommunicerar ett externt program med en machine learning-arbetsflödesbedömningsmodell i realtid. Ett Machine Learning-webbtjänstanrop returnerar förutsägelseresultat till ett externt program. För att 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 mycket skalbar tjänst som tillhandahåller 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:
- I Machine Learning Web Services-portalen klickar du på Webbtjänster på den översta menyn.
- Klicka på den webbtjänst som du vill hämta nyckeln för.
- Klicka på Förbruka på den översta menyn.
- Kopiera och spara primärnyckeln.
Så här hämtar du API-nyckeln för en klassisk Machine Learning-webbtjänst:
- I Azure Machine Learning Web Services-portalen klickar du på Klassiska webbtjänster på den översta menyn.
- Klicka på webbtjänsten som du arbetar med.
- Klicka på den slutpunkt som du vill hämta nyckeln för.
- Klicka på Förbruka på den översta menyn.
- 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)
- I Machine Learning Studio (klassisk) klickar du på WEB SERVICES till vänster.
- 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.
Machine Learning API hjälper Machine Learning API-hjälp skapas när du distribuerar en webbtjänst. Se Självstudie 3: Distribuera kreditriskmodell. Hjälpen för Machine Learning-API:et innehåller information om en förutsägelsewebbtjänst.
- Klicka på webbtjänsten som du arbetar med.
- Klicka på den slutpunkt som du vill visa API-hjälpsidan för.
- Klicka på Förbruka på den översta menyn.
- Klicka på API-hjälpsidan under antingen slutpunkterna Request-Response eller Batch Execution.
Så här visar du hjälp för Machine Learning API för en ny webbtjänst
I Machine Learning Web Services-portalen:
- Klicka på WEBBTJÄNSTER på den översta menyn.
- 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 tjänsterna Request-Response och Batch Execution Services och Sample 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-överföring av 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.
För att 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
- Publicera datauppsättningen Download from UCI: Adult 2 class dataset Web Service (Ladda ned datauppsättning från UCI: Adult 2 class dataset Web Service).
- Klicka på Verktyg>NuGet Package Manager>Package Manager Console.
- Välj Install-Package Microsoft.AspNet.WebApi.Client.
Så här kör du kodexemplet
- Publicera experimentet "Sample 1: Download dataset from UCI: Adult 2 class dataset", som är en del av Machine Learning-exempelsamlingen.
- Tilldela apiKey med nyckeln från en webbtjänst. Se Hämta en auktoriseringsnyckel ovan.
- Tilldela serviceUri med URI för begäran.
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 urllib2-biblioteket för Python 2.X- och urllib.request-biblioteket för Python 3.X. Du kommer att skicka 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
- Distribuera experimentet "Sample 1: Download dataset from UCI: Adult 2 class dataset", som är en del av Machine Learning-exempelsamlingen.
- Tilldela apiKey med nyckeln från en webbtjänst. Se avsnittet Hämta en auktoriseringsnyckel i början av den här artikeln.
- Tilldela serviceUri med URI för begäran.
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 RCurl - och rjson-biblioteken för att göra begäran och bearbeta det returnerade JSON-svaret. Du kommer att skicka 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 --save
lägg till i "request": "*"
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);
}
});