Integração do Azure Machine Learning Studio (clássico) no Stream Analytics

Importante

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

Desde 1º de dezembro de 2021, não é possível criar recursos (plano do serviço web e workspace) do Estúdio do Azure Machine Learning (clássico). Até 31 de agosto de 2024, você poderá continuar usando os serviços Web e experimentos existentes do Estúdio do Machine Learning (clássico). Para saber mais, veja:

A documentação do Estúdio do Machine Learning (clássico) está sendo desativada e pode não ser atualizada no futuro.

O Azure Stream Analytics oferece suporte a funções definidas pelo usuário (UDFs) que chamam pontos de extremidade do Estúdio do Azure Machine Learning (clássico). A biblioteca da API REST do Stream Analytics descreve o suporte à API REST para esse recurso.

Este artigo fornece informações complementares necessárias para a implementação bem-sucedida desse recurso no Stream Analytics. Um tutorial também está disponível.

Visão geral: terminologia do Azure Machine Learning Studio (clássico)

O Estúdio do Azure Machine Learning (clássico) oferece uma ferramenta colaborativa do tipo "arrastar e soltar", que você pode usar para criar, testar e implantar soluções de análise preditiva em seus dados. Você pode usar o Estúdio do Machine Learning (clássico) para interagir com esses recursos de machine learning:

  • Workspace: um contêiner que mantém todos os outros recursos de machine learning para gerenciamento e controle.
  • Experimento: um teste que cientistas de dados criam a fim de usar conjuntos de dados e treinar um modelo de machine learning.
  • Ponto de extremidade: um objeto que você usa para aproveitar recursos como entrada, aplicar um modelo de machine learning especificado e retornar a saída pontuada.
  • Serviço Web de pontuação: uma coleção de pontos de extremidade.

Cada ponto de extremidade tem APIs para execução em lote e execução síncrona. O Stream Analytics usa a execução síncrona. O serviço específico é chamado de serviço de solicitação/resposta no Estúdio do Machine Learning (clássico).

Recursos do Estúdio do Machine Learning (clássico) necessários para trabalhos do Stream Analytics

Para que o processamento de trabalhos do Stream Analytics seja bem-sucedido, é necessário ter um ponto de extremidade de solicitação/resposta, uma chave de API e uma definição do Swagger. O Stream Analytics tem um ponto de extremidade adicional que constrói o URL do ponto de extremidade do Swagger, procura a interface e retorna uma definição de UDF padrão para o usuário.

Configurar uma UDF do Stream Analytics e Estúdio do Machine Learning (clássico) por meio da API REST

Com as APIs REST, você pode configurar seu trabalho para chamar funções do Estúdio do Machine Learning (clássico):

  1. Criar um trabalho do Stream Analytics.
  2. Definir uma entrada.
  3. Definir uma saída.
  4. Criar uma UDF.
  5. Criar uma transformação do Stream Analytics que chama a UDF.
  6. Iniciar o trabalho.

Criar uma UDF com propriedades básicas

Por exemplo, o exemplo de código a seguir cria uma UDF escalar chamada newudf, que se associa a um ponto de extremidade do Estúdio do Machine Learning (clássico). Você encontra o valor endpoint (URI de serviço) na página de ajuda da API do serviço escolhido. Você pode encontrar o valor apiKey na página principal do serviço.

PUT : /subscriptions/<subscriptionId>/resourceGroups/<resourceGroup>/providers/Microsoft.StreamAnalytics/streamingjobs/<streamingjobName>/functions/<udfName>?api-version=<apiVersion>

Exemplo de corpo de solicitação:

    {
        "name": "newudf",
        "properties": {
            "type": "Scalar",
            "properties": {
                "binding": {
                    "type": "Microsoft.MachineLearning/WebService",
                    "properties": {
                        "endpoint": "https://ussouthcentral.services.azureml.net/workspaces/f80d5d7a77fb4b46bf2a30c63c078dca/services/b7be5e40fd194258796fb402c1958eaf/execute ",
                        "apiKey": "replacekeyhere"
                    }
                }
            }
        }
    }

Chamar o ponto de extremidade RetrieveDefaultDefinition para a UDF padrão

Após criar o esqueleto da UDF, é necessário concluir a definição da UDF. O ponto de extremidade RetrieveDefaultDefinition ajuda a obter a definição padrão para uma função de valor escalar associada a um ponto de extremidade do Estúdio do Machine Learning (clássico).

O conteúdo abaixo exige que você obtenha definição padrão da UDF para uma função de valor escalar associada a um ponto de extremidade do Estúdio (clássico). Ele não especifica o ponto de extremidade real, pois a solicitação PUT já o forneceu.

O Stream Analytics chama o ponto de extremidade da solicitação, se a solicitação forneceu explicitamente um ponto de extremidade. Caso contrário, o Stream Analytics usará o ponto de extremidade que foi referenciado originalmente. Neste exemplo, a UDF usa um parâmetro de cadeia de caracteres única (uma sentença) e retorna uma saída única do tipo string que indica o rótulo Sentiment daquela sentença.

POST : /subscriptions/<subscriptionId>/resourceGroups/<resourceGroup>/providers/Microsoft.StreamAnalytics/streamingjobs/<streamingjobName>/functions/<udfName>/RetrieveDefaultDefinition?api-version=<apiVersion>

Exemplo de corpo de solicitação:

    {
        "bindingType": "Microsoft.MachineLearning/WebService",
        "bindingRetrievalProperties": {
            "executeEndpoint": null,
            "udfType": "Scalar"
        }
    }

A saída desta solicitação será semelhante ao seguinte exemplo:

    {
        "name": "newudf",
        "properties": {
            "type": "Scalar",
            "properties": {
                "inputs": [{
                    "dataType": "nvarchar(max)",
                    "isConfigurationParameter": null
                }],
                "output": {
                    "dataType": "nvarchar(max)"
                },
                "binding": {
                    "type": "Microsoft.MachineLearning/WebService",
                    "properties": {
                        "endpoint": "https://ussouthcentral.services.azureml.net/workspaces/f80d5d7a77ga4a4bbf2a30c63c078dca/services/b7be5e40fd194258896fb602c1858eaf/execute",
                        "apiKey": null,
                        "inputs": {
                            "name": "input1",
                            "columnNames": [{
                                "name": "tweet",
                                "dataType": "string",
                                "mapTo": 0
                            }]
                        },
                        "outputs": [{
                            "name": "Sentiment",
                            "dataType": "string"
                        }],
                        "batchSize": 10
                    }
                }
            }
        }
    }

Aplicar patch à UDF com a resposta

Agora, você deve aplicar patch à UDF com a resposta anterior.

PATCH : /subscriptions/<subscriptionId>/resourceGroups/<resourceGroup>/providers/Microsoft.StreamAnalytics/streamingjobs/<streamingjobName>/functions/<udfName>?api-version=<apiVersion>

Corpo da solicitação (saída de RetrieveDefaultDefinition):

    {
        "name": "newudf",
        "properties": {
            "type": "Scalar",
            "properties": {
                "inputs": [{
                    "dataType": "nvarchar(max)",
                    "isConfigurationParameter": null
                }],
                "output": {
                    "dataType": "nvarchar(max)"
                },
                "binding": {
                    "type": "Microsoft.MachineLearning/WebService",
                    "properties": {
                        "endpoint": "https://ussouthcentral.services.azureml.net/workspaces/f80d5d7a77ga4a4bbf2a30c63c078dca/services/b7be5e40fd194258896fb602c1858eaf/execute",
                        "apiKey": null,
                        "inputs": {
                            "name": "input1",
                            "columnNames": [{
                                "name": "tweet",
                                "dataType": "string",
                                "mapTo": 0
                            }]
                        },
                        "outputs": [{
                            "name": "Sentiment",
                            "dataType": "string"
                        }],
                        "batchSize": 10
                    }
                }
            }
        }
    }

Implementar uma transformação do Stream Analytics que chama a UDF

Consulte a UDF (chamada aqui de scoreTweet) para cada evento de entrada e grave uma resposta para esse evento em uma saída:

    {
        "name": "transformation",
        "properties": {
            "streamingUnits": null,
            "query": "select *,scoreTweet(Tweet) TweetSentiment into blobOutput from blobInput"
        }
    }

Obter ajuda

Para obter mais assistência, experimente a página do Microsoft Q&A sobre o Azure Stream Analytics.

Próximas etapas