Machine Learning Studio (klasszikus) webszolgáltatás használata

A KÖVETKEZŐKRE VONATKOZIK:This is a check mark, which means that this article applies to Machine Learning Studio (classic). Machine Learning Studio (klasszikus) This is an X, which means that this article applies to Azure Machine Learning.Azure Machine Learning

Fontos

A (klasszikus) Machine Learning Studio támogatása 2024. augusztus 31-én megszűnik. Javasoljuk, hogy addig térjen át az Azure Machine Learning használatára.

2021. december 1-től kezdve nem fog tudni létrehozni új (klasszikus) Machine Learning Studio-erőforrásokat. 2024. augusztus 31-ig továbbra is használhatja a meglévő (klasszikus) Machine Learning Studio-erőforrásokat.

A (klasszikus) ML Studio dokumentációjának kivezetése folyamatban van, és a jövőben nem várható a frissítése.

Miután üzembe helyez egy Machine Learning Studio (klasszikus) prediktív modellt webszolgáltatásként, egy REST API-val elküldheti az adatokat, és előrejelzéseket kaphat. Az adatokat valós időben vagy kötegelt módban is elküldheti.

A Machine Learning-webszolgáltatások létrehozásáról és üzembe helyezéséről a Machine Learning Studio (klasszikus) használatával itt talál további információt:

Áttekintés

A Machine Learning webszolgáltatással egy külső alkalmazás valós időben kommunikál egy Machine Learning munkafolyamat-pontozási modellel. Egy Machine Learning webszolgáltatás hívása előrejelzési eredményeket ad vissza egy külső alkalmazásnak. Ha Machine Learning webszolgáltatás-hívást szeretne kezdeményezni, átad egy API-kulcsot, amely az előrejelzés üzembe helyezésekor jön létre. A Machine Learning webszolgáltatás a REST-en alapul, amely népszerű architektúra a webes programozási projektekhez.

A Machine Learning Studio (klasszikus) kétféle szolgáltatással rendelkezik:

  • Request-Response Service (RRS) – Alacsony késésű, nagy mértékben méretezhető szolgáltatás, amely interfészt biztosít a Machine Learning Studióból létrehozott és üzembe helyezett állapot nélküli modellekhez (klasszikus).
  • Batch Execution Service (BES) – Aszinkron szolgáltatás, amely az adatrekordok kötegét pontja.

A Machine Learning webszolgáltatásokkal kapcsolatos további információkért lásd: Machine Learning webszolgáltatás üzembe helyezése.

Engedélyezési kulcs lekérése

A kísérlet üzembe helyezésekor a rendszer API-kulcsokat hoz létre a webszolgáltatáshoz. A kulcsokat több helyről is lekérheti.

A Machine Learning Web Services portálról

Jelentkezzen be a Machine Learning Web Services portálra.

Új Machine Learning webszolgáltatás API-kulcsának lekérése:

  1. A Machine Learning WebSzolgáltatások portálon kattintson a WebSzolgáltatások elemre a felső menüben.
  2. Kattintson arra a webszolgáltatásra, amelyhez le szeretné kérni a kulcsot.
  3. A felső menüben kattintson a Felhasználás gombra.
  4. Másolja és mentse az elsődleges kulcsot.

Klasszikus Machine Learning webszolgáltatás API-kulcsának lekérése:

  1. A Azure Machine Learning Web Services portál felső menüjében kattintson a Klasszikus webszolgáltatások elemre.
  2. Kattintson arra a webszolgáltatásra, amellyel dolgozik.
  3. Kattintson arra a végpontra, amelyhez le szeretné kérni a kulcsot.
  4. A felső menüben kattintson a Felhasználás gombra.
  5. Másolja és mentse az elsődleges kulcsot.

Klasszikus webszolgáltatás

A klasszikus webszolgáltatások kulcsát a (klasszikus) Machine Learning Studióból is lekérheti.

Machine Learning Studio (klasszikus)

  1. A Machine Learning Studio (klasszikus) bal oldalán kattintson a WEB SERVICES elemre.
  2. Kattintson egy webszolgáltatásra. Az API-kulcs az IRÁNYÍTÓPULT lapon található.

Csatlakozás Machine Learning-webszolgáltatásba

A Machine Learning-webszolgáltatáshoz bármely OLYAN programozási nyelvvel csatlakozhat, amely támogatja a HTTP-kéréseket és -válaszokat. A C#, a Python és az R nyelven található példákat egy Machine Learning webszolgáltatás súgóoldaláról tekintheti meg.

Machine Learning API-súgó Machine Learning API-súgó létrehozása webszolgáltatás üzembe helyezésekor történik. Lásd a 3. oktatóanyagot: Hitelkockázati modell üzembe helyezése. A Machine Learning API súgója az előrejelzési webszolgáltatás részleteit tartalmazza.

  1. Kattintson arra a webszolgáltatásra, amellyel dolgozik.
  2. Kattintson arra a végpontra, amelynek az API súgóoldalát meg szeretné tekinteni.
  3. A felső menüben kattintson a Felhasználás gombra.
  4. Kattintson az API súgóoldalára a Request-Response vagy a Batch végrehajtási végpontjai alatt.

Új webszolgáltatás Machine Learning API-súgójának megtekintése

A Machine Learning Web Services portálon:

  1. Kattintson a WEBSZOLGÁLTATÁSOK elemre a felső menüben.
  2. Kattintson arra a webszolgáltatásra, amelyhez le szeretné kérni a kulcsot.

Kattintson a Webszolgáltatás használata elemre a Request-Response és a Batch Végrehajtási szolgáltatások URI-jának, valamint a C#, R és Python-mintakód URI-jának lekéréséhez.

Kattintson a Swagger API-ra a megadott URI-kból meghívott API-k Swagger-alapú dokumentációjának lekéréséhez.

C# minta

Ha egy Machine Learning-webszolgáltatáshoz szeretne csatlakozni, használjon httpClient-átadási ScoreData-t. A ScoreData tartalmaz egy FeatureVectort, amely numerikus jellemzők n dimenziós vektora, amely a ScoreData-t jelöli. Api-kulccsal hitelesítheti magát a Machine Learning szolgáltatásban.

Egy Machine Learning webszolgáltatáshoz való csatlakozáshoz telepíteni kell a Microsoft.AspNet.WebApi.Client NuGet-csomagot.

A Microsoft.AspNet.WebApi.Client NuGet telepítése a Visual Studio

  1. Tegye közzé a Download adathalmazt az UCI: Adult 2 osztály adathalmaz webszolgáltatásából.
  2. Kattintson a ToolsNuGet>Csomagkezelő>Csomagkezelő Konzol elemre.
  3. Válassza az Install-Package Microsoft.AspNet.WebApi.Client elemet.

A kódminta futtatása

  1. Tegye közzé az "1. minta: Adatkészlet letöltése az UCI: Felnőtt 2. osztály adathalmazából" kísérletet, amely a Machine Learning mintagyűjtemény része.
  2. ApiKey hozzárendelése a kulccsal egy webszolgáltatásból. Lásd a fenti engedélyezési kulcs lekérése című témakört .
  3. ServiceUri hozzárendelése a kérelem URI-jával.

Így fog kinézni egy teljes kérelem.

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

Ha Machine Learning webszolgáltatáshoz szeretne csatlakozni, használja a Python 2.X urllib2 kódtárát és a Python 3.X urllib.request kódtárát. Át fogja adni a ScoreData-t, amely egy FeatureVectort, egy numerikus jellemzők n dimenziós vektorát tartalmazza, amely a ScoreData-t jelöli. Api-kulccsal hitelesítheti magát a Machine Learning szolgáltatásban.

A kódminta futtatása

  1. Helyezze üzembe az "1. minta: Adathalmaz letöltése az UCI: Felnőtt 2 osztály adathalmazából" kísérletet, amely a Machine Learning mintagyűjtemény része.
  2. ApiKey hozzárendelése a kulccsal egy webszolgáltatásból. Lásd a cikk elején található Engedélyezési kulcs lekérése című szakaszt.
  3. ServiceUri hozzárendelése a kérelem URI-jával.

Így fog kinézni egy teljes kérelem.

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

Egy Machine Learning webszolgáltatáshoz való csatlakozáshoz használja az RCurl- és rjson-kódtárakat a kérés létrehozásához és a visszaadott JSON-válasz feldolgozásához. Át fogja adni a ScoreData-t, amely egy FeatureVectort, egy numerikus jellemzők n dimenziós vektorát tartalmazza, amely a ScoreData-t jelöli. Api-kulccsal hitelesítheti magát a Machine Learning szolgáltatásban.

Így fog kinézni egy teljes kérelem.

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

Ha egy Machine Learning-webszolgáltatáshoz szeretne csatlakozni, használja a projekt npm-csomagjának kérését. Az objektummal JSON formázhatja a bemenetet, és elemezheti az eredményt. Telepítse a package.json használatával npm install request --save, vagy adja hozzá "request": "*" a package.json fájlhoz, dependencies és futtassa npm install.

Így fog kinézni egy teljes kérelem.

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