Delen via


Een Machine Learning Studio-webservice (klassiek) gebruiken

VAN TOEPASSING OP:Dit is een vinkje, wat betekent dat dit artikel van toepassing is op Machine Learning Studio (klassiek). Machine Learning Studio (klassiek) Dit is een X, wat betekent dat dit artikel van toepassing is op Azure Machine Learning.Azure Machine Learning

Belangrijk

De ondersteuning voor Azure Machine Learning-studio (klassiek) eindigt op 31 augustus 2024. U wordt aangeraden om vóór die datum over te stappen naar Azure Machine Learning.

Vanaf 1 december 2021 kunt u geen nieuwe resources voor Azure Machine Learning-studio (klassiek) meer maken. Tot en met 31 augustus 2024 kunt u de bestaande resources van Azure Machine Learning-studio (klassiek) blijven gebruiken.

De documentatie van ML-studio (klassiek) wordt buiten gebruik gesteld en wordt in de toekomst mogelijk niet meer bijgewerkt.

Zodra u een voorspellend model van Machine Learning Studio (klassiek) als een webservice hebt geïmplementeerd, kunt u een REST API gebruiken om deze gegevens te verzenden en voorspellingen op te halen. U kunt de gegevens in realtime of in batchmodus verzenden.

Hier vindt u meer informatie over het maken en implementeren van een Machine Learning-webservice met behulp van Machine Learning Studio (klassiek):

Overzicht

Met de Machine Learning-webservice communiceert een externe toepassing in realtime met een scoremodel voor machine learning-werkstromen. Een Machine Learning-webserviceaanroep retourneert voorspellingsresultaten naar een externe toepassing. Als u een Machine Learning-webserviceaanroep wilt maken, geeft u een API-sleutel door die wordt gemaakt wanneer u een voorspelling implementeert. De Machine Learning-webservice is gebaseerd op REST, een populaire architectuurkeuze voor webprogrammeringsprojecten.

Machine Learning Studio (klassiek) heeft twee typen services:

  • Request-Response Service (RRS): een lage latentie, zeer schaalbare service die een interface biedt voor de staatloze modellen die zijn gemaakt en geïmplementeerd vanuit Machine Learning Studio (klassiek).
  • Batch Execution Service (BES): een asynchrone service die een batch voor gegevensrecords beoordeelt.

Zie Een Machine Learning-webservice implementeren voor meer informatie over Machine Learning-webservices.

Een autorisatiesleutel ophalen

Wanneer u uw experiment implementeert, worden API-sleutels gegenereerd voor de webservice. U kunt de sleutels ophalen van verschillende locaties.

Vanuit de Machine Learning Web Services-portal

Meld u aan bij de Machine Learning Web Services-portal .

De API-sleutel voor een nieuwe Machine Learning-webservice ophalen:

  1. Klik in de Machine Learning Web Services-portal op WebServices in het bovenste menu.
  2. Klik op de webservice waarvoor u de sleutel wilt ophalen.
  3. Klik in het bovenste menu op Verbruiken.
  4. Kopieer en sla de primaire sleutel op.

De API-sleutel voor een klassieke Machine Learning-webservice ophalen:

  1. Klik in de Azure Machine Learning Web Services-portal op Klassieke webservices in het bovenste menu.
  2. Klik op de webservice waarmee u werkt.
  3. Klik op het eindpunt waarvoor u de sleutel wilt ophalen.
  4. Klik in het bovenste menu op Verbruiken.
  5. Kopieer en sla de primaire sleutel op.

Klassieke webservice

U kunt ook een sleutel voor een klassieke webservice ophalen uit Machine Learning Studio (klassiek).

Machine Learning Studio (klassiek)

  1. Klik in Machine Learning Studio (klassiek) op WEB SERVICES aan de linkerkant.
  2. Klik op een webservice. De API-sleutel bevindt zich op het tabblad DASHBOARD .

Verbinding maken met een Machine Learning-webservice

U kunt verbinding maken met een Machine Learning-webservice met behulp van elke programmeertaal die ondersteuning biedt voor HTTP-aanvragen en -antwoorden. U kunt voorbeelden bekijken in C#, Python en R op een Help-pagina van de Machine Learning-webservice.

Help voor Machine Learning-API Machine Learning API-help wordt gemaakt wanneer u een webservice implementeert. Zie zelfstudie 3: Kredietrisicomodel implementeren. De Help van de Machine Learning-API bevat details over een voorspellingswebservice.

  1. Klik op de webservice waarmee u werkt.
  2. Klik op het eindpunt waarvoor u de API Help-pagina wilt weergeven.
  3. Klik in het bovenste menu op Verbruiken.
  4. Klik op de API-helppagina onder de eindpunten voor Request-Response of Batch-uitvoering.

Help bij machine learning-API voor een nieuwe webservice weergeven

In de Machine Learning Web Services-portal:

  1. Klik op WEB SERVICES in het bovenste menu.
  2. Klik op de webservice waarvoor u de sleutel wilt ophalen.

Klik op Webservice gebruiken om de URI's op te halen voor de Request-Response en Batch Execution Services en voorbeeldcode in C#, R en Python.

Klik op Swagger-API om op Swagger gebaseerde documentatie op te halen voor de API's die zijn aangeroepen vanuit de opgegeven URI's.

C#-voorbeeld

Als u verbinding wilt maken met een Machine Learning-webservice, gebruikt u een HttpClient die ScoreData doorgeeft. ScoreData bevat een FeatureVector, een n-dimensionale vector van numerieke kenmerken die de ScoreData vertegenwoordigen. U verifieert zich bij de Machine Learning-service met een API-sleutel.

Als u verbinding wilt maken met een Machine Learning-webservice, moet het NuGet-pakket Microsoft.AspNet.WebApi.Client zijn geïnstalleerd.

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

  1. Publiceer de gegevensset Downloaden van UCI: Webservice voor 2 klassengegevenssets voor volwassenen.
  2. Klik op Tools>NuGet Package Manager>Package Manager Console.
  3. Kies Install-Package Microsoft.AspNet.WebApi.Client.

Het codevoorbeeld uitvoeren

  1. Publiceer voorbeeld 1: Gegevensset downloaden van UCI: 2-klassegegevensset voor volwassenen, onderdeel van de machine learning-voorbeeldverzameling.
  2. Wijs apiKey toe met de sleutel van een webservice. Zie Een autorisatiesleutel ophalen hierboven.
  3. Wijs serviceUri toe met de aanvraag-URI.

Hier ziet u hoe een volledige aanvraag eruitziet.

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-voorbeeld

Als u verbinding wilt maken met een Machine Learning-webservice, gebruikt u de urllib2-bibliotheek voor Python 2.X en de urllib.request-bibliotheek voor Python 3.X. U geeft ScoreData door, die een FeatureVector bevat, een n-dimensionale vector van numerieke functies die de ScoreData vertegenwoordigen. U verifieert zich bij de Machine Learning-service met een API-sleutel.

Het codevoorbeeld uitvoeren

  1. Implementeer voorbeeld 1: Gegevensset downloaden uit UCI: 2-klassegegevensset voor volwassenen, onderdeel van de Machine Learning-voorbeeldverzameling.
  2. Wijs apiKey toe met de sleutel van een webservice. Zie de sectie Een autorisatiesleutel ophalen aan het begin van dit artikel.
  3. Wijs serviceUri toe met de aanvraag-URI.

Hier ziet u hoe een volledige aanvraag eruitziet.

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-voorbeeld

Als u verbinding wilt maken met een Machine Learning-webservice, gebruikt u de RCurl - en rjson-bibliotheken om de aanvraag te maken en het geretourneerde JSON-antwoord te verwerken. U geeft ScoreData door, die een FeatureVector bevat, een n-dimensionale vector van numerieke functies die de ScoreData vertegenwoordigen. U verifieert zich bij de Machine Learning-service met een API-sleutel.

Hier ziet u hoe een volledige aanvraag eruitziet.

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-voorbeeld

Als u verbinding wilt maken met een Machine Learning-webservice, gebruikt u het npm-pakket aanvragen in uw project. U gebruikt het JSON object ook om uw invoer op te maken en het resultaat te parseren. Installeer met behulp npm install request --savevan , of voeg deze toe "request": "*" aan uw package.json onder dependencies en voer deze uit npm install.

Hier ziet u hoe een volledige aanvraag eruitziet.

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