Como consumir um serviço web Machine Learning Studio (clássico)

APLICA A:Esta é uma marca de verificação, o que significa que este artigo se aplica ao Machine Learning Studio (clássico). Machine Learning Studio (clássico) Este é um X, o que significa que este artigo se aplica ao Azure Machine Learning.Aprendizagem de Máquinas Azure

Importante

O suporte para o Estúdio de ML (clássico) terminará a 31 de agosto de 2024. Recomendamos a transição para o Azure Machine Learning até essa data.

A partir de 1 de dezembro de 2021, não poderá criar novos recursos do Estúdio de ML (clássico). Até 31 de agosto de 2024, pode continuar a utilizar os recursos existentes do Estúdio de ML (clássico).

A documentação do Estúdio de ML (clássico) está a ser descontinuada e poderá não ser atualizada no futuro.

Uma vez que você implemente um modelo preditivo machine learning (clássico) como um serviço Web, você pode usar uma API REST para enviar-lhe dados e obter previsões. Pode enviar os dados em tempo real ou em modo de lote.

Pode encontrar mais informações sobre como criar e implementar um serviço Web machine learning utilizando o Machine Learning Studio (clássico) aqui:

Descrição Geral

Com o serviço Web Machine Learning, uma aplicação externa comunica com um modelo de pontuação do fluxo de trabalho machine learning em tempo real. Uma chamada de serviço Web machine learning retorna os resultados da previsão a uma aplicação externa. Para fazer uma chamada de serviço Web machine learning, você passa uma chave API que é criada quando implementa uma previsão. O serviço Web Machine Learning é baseado no REST, uma escolha popular de arquitetura para projetos de programação web.

O Machine Learning Studio (clássico) tem dois tipos de serviços:

  • Request-Response Service (RRS) – Um serviço de baixa latência, altamente escalável que fornece uma interface aos modelos apátridas criados e implantados a partir do Machine Learning Studio (clássico).
  • Serviço de Execução de Lotes (BES) – Um serviço assíncronos que marca um lote para registos de dados.

Para obter mais informações sobre serviços Web machine learning, consulte implementar um serviço Web de Machine Learning.

Obtenha uma chave de autorização

Quando implementa a sua experiência, as teclas API são geradas para o serviço Web. Pode recuperar as chaves de vários locais.

A partir do portal de Serviços Web de Aprendizagem Automática

Inscreva-se no portal de Serviços Web machine learning .

Para recuperar a chave API para um serviço Web new machine learning:

  1. No portal Machine Learning Web Services, clique nos Serviços Web no menu superior.
  2. Clique no serviço Web para o qual deseja recuperar a chave.
  3. No menu superior, clique em Consumir.
  4. Copie e guarde a chave primária.

Para recuperar a chave API para um serviço Web classic machine learning:

  1. No portal Azure Machine Learning Web Services, clique nos Serviços Web Clássicos do menu superior.
  2. Clique no serviço Web com o qual está a trabalhar.
  3. Clique no ponto final para o qual pretende recuperar a chave.
  4. No menu superior, clique em Consumir.
  5. Copie e guarde a chave primária.

Serviço web clássico

Também pode obter uma chave para um serviço Web Clássico do Machine Learning Studio (clássico).

Machine Learning Studio (clássico)

  1. No Machine Learning Studio (clássico), clique nos SERVIÇOS WEB à esquerda.
  2. Clique num serviço Web. A tecla API está no separador DASHBOARD .

Conecte-se a um serviço Web de Machine Learning

Pode ligar-se a um serviço Web machine learning utilizando qualquer linguagem de programação que suporte pedido e resposta HTTP. Você pode ver exemplos em C#, Python e R a partir de uma página de ajuda de serviço web machine learning.

Ajuda da API de Machine Learning A ajuda da API machine learning é criada quando implementa um serviço Web. Ver Tutorial 3: Implementar modelo de risco de crédito. A ajuda da API machine learning contém detalhes sobre um serviço Web de previsão.

  1. Clique no serviço Web com o qual está a trabalhar.
  2. Clique no ponto final para o qual deseja ver a Página de Ajuda da API.
  3. No menu superior, clique em Consumir.
  4. Clique na página de ajuda da API nos pontos finais de Request-Response ou execução de lote.

Para ver a ajuda da API machine learning para um novo serviço Web

No Portal de Serviços Web de Aprendizagem Automática:

  1. Clique nos SERVIÇOS WEB no menu superior.
  2. Clique no serviço Web para o qual deseja recuperar a chave.

Clique em Utilizar o Serviço Web para obter os URIs para os serviços de execução de Request-Response e lote e código de amostra em C#, R e Python.

Clique em Swagger API para obter documentação baseada em Swagger para as APIs chamadas a partir dos URIs fornecidos.

Amostra C#

Para ligar a um serviço Web machine learning, utilize um ScoreData de passagem httpClient . O ScoreData contém um FeatureVector, um vetor n-dimensional de características numéricas que representa o ScoreData. Autentica-se o serviço de Machine Learning com uma chave API.

Para se ligar a um serviço Web machine learning, o pacote Microsoft.AspNet.WebApi.Client NuGet deve ser instalado.

Instale Microsoft.AspNet.WebApi.Client NuGet em Estúdio Visual

  1. Publique o conjunto de dados de descarregamento da UCI: Adult 2 class dataset Web Service.
  2. Clique em Ferramentas>NuGet Package Manager>Package Manager Consola.
  3. Escolha instalar pacote Microsoft.aspNet.WebApi.Client.

Para executar a amostra de código

  1. Publicar a experiência "Sample 1: Download dataset from UCI: Adult 2 class dataset", parte da recolha de amostras machine learning.
  2. Atribua apiKey com a chave de um serviço Web. Consulte a chave de autorização acima.
  3. Atribuir serviçoUri com o Pedido URI.

Aqui está o que um pedido completo vai parecer.

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

Amostra de Python

Para ligar a um serviço Web machine learning, utilize a biblioteca urllib2 para a biblioteca Python 2.X e urllib.request para Python 3.X. Passará o ScoreData, que contém um FeatureVector, um vetor n-dimensional de características numéricas que representa o ScoreData. Autentica-se o serviço de Machine Learning com uma chave API.

Para executar a amostra de código

  1. Implementar a experiência "Sample 1: Download dataset from UCI: Adult 2 class dataset", parte da recolha de amostras machine learning.
  2. Atribua apiKey com a chave de um serviço Web. Consulte a secção chave de autorização perto do início deste artigo.
  3. Atribuir serviçoUri com o Pedido URI.

Aqui está o que um pedido completo vai parecer.

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

Amostra R

Para ligar a um Serviço Web de Machine Learning, utilize as bibliotecas RCurl e Rjson para fazer o pedido e processar a resposta JSON devolvida. Passará o ScoreData, que contém um FeatureVector, um vetor n-dimensional de características numéricas que representa o ScoreData. Autentica-se o serviço de Machine Learning com uma chave API.

Aqui está o que um pedido completo vai parecer.

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)

Amostra javaScript

Para se conectar a um Serviço Web machine learning, utilize o pacote npm pedido no seu projeto. Também utilizará o JSON objeto para formatar a sua entrada e analisar o resultado. Instale-o utilizando npm install request --save, ou adicione "request": "*" ao seu pacote.json e dependencies executar npm install.

Aqui está o que um pedido completo vai parecer.

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