Escalar o seu trabalho stream analytics com funções Azure Machine Learning Studio (clássico)Scale your Stream Analytics job with Azure Machine Learning Studio (classic) functions

Dica

É altamente recomendado usar UDFs de aprendizagem de máquinas Azure em vez de Azure Machine Learning Studio (clássico) UDF para melhorar o desempenho e a fiabilidade.It is highly recommended to use Azure Machine Learning UDFs instead of Azure Machine Learning Studio (classic) UDF for improved performance and reliability.

Este artigo discute como escalar eficientemente os trabalhos do Azure Stream Analytics que usam funções do Azure Machine Learning Studio (clássico).This article discusses how to efficiently scale Azure Stream Analytics jobs that use Azure Machine Learning Studio (classic) functions. Para obter informações sobre como escalar os empregos stream Analytics em geral veja o artigo Trabalhos de escala.For information on how to scale Stream Analytics jobs in general see the article Scaling jobs.

O que é uma função studio (clássica) em Stream Analytics?What is a Studio (classic) function in Stream Analytics?

Uma função de Machine Learning Studio (clássico) em Stream Analytics pode ser usada como uma chamada de função regular na linguagem de consulta Stream Analytics.A Machine Learning Studio (classic) function in Stream Analytics can be used like a regular function call in the Stream Analytics query language. Nos bastidores, no entanto, estas chamadas de função são na verdade pedidos de Studio (clássico) do Serviço Web.Behind the scenes, however, these function calls are actually Studio (classic) Web Service requests.

Pode melhorar a produção de pedidos de serviço web studio (clássico) "lotando" várias linhas juntas na mesma chamada de serviço web API.You can improve the throughput of Studio (classic) web service requests by "batching" multiple rows together in the same web service API call. Este agrupamento é chamado de mini-lote.This grouping is called a mini-batch. Para mais informações, consulte o Azure Machine Learning Studio (clássico) Web Services.For more information, see Azure Machine Learning Studio (classic) Web Services. Suporte para Estúdio (clássico) em Stream Analytics.Support for Studio (classic) in Stream Analytics.

Configure um trabalho stream analytics com funções studio (clássicas)Configure a Stream Analytics job with Studio (classic) functions

Existem dois parâmetros para configurar a função Studio (clássica) usada pelo seu trabalho stream Analytics:There are two parameters to configure the Studio (classic) function used by your Stream Analytics job:

  • Tamanho do lote das chamadas de função Studio (clássico).Batch size of the Studio (classic) function calls.
  • O número de Unidades de Streaming (SUs) previstas para o trabalho stream analytics.The number of Streaming Units (SUs) provisioned for the Stream Analytics job.

Para determinar os valores adequados para as SUs, decida se pretende otimizar a latência do trabalho stream Analytics ou a produção de cada SU.To determine the appropriate values for SUs, decide whether you would like to optimize latency of the Stream Analytics job or the throughput of each SU. As SUs podem ser sempre adicionadas a um trabalho para aumentar a produção de uma consulta de Stream Analytics bem dividida.SUs may always be added to a job to increase the throughput of a well-partitioned Stream Analytics query. As SUs adicionais aumentam o custo de gerir o trabalho.Additional SUs do increase the cost of running the job.

Determine a tolerância de latência para o seu trabalho stream Analytics.Determine the latency tolerance for your Stream Analytics job. Aumentar o tamanho do lote aumentará a latência dos seus pedidos studio (clássicos) e a latência do trabalho stream Analytics.Increasing the batch size will increase the latency of your Studio (classic) requests and the latency of the Stream Analytics job.

Aumentar o tamanho do lote permite ao trabalho stream Analytics processar mais eventos com o mesmo número de pedidos de serviço web Studio (clássico).Increasing the batch size allows the Stream Analytics job to process more events with the same number of Studio (classic) web service requests. O aumento da latência do serviço web Studio (clássico) é geralmente sublinear ao aumento do tamanho do lote.The increase of Studio (classic) web service latency is usually sublinear to the increase of batch size.

É importante considerar o tamanho de lote mais eficiente para um serviço web Studio (clássico) em qualquer situação.It's important to consider the most cost-efficient batch size for a Studio (classic) web service in any given situation. O tamanho predefinido do lote para pedidos de serviço web é de 1000.The default batch size for web service requests is 1000. Pode alterar este tamanho predefinido utilizando a API stream Analytics REST ou o cliente PowerShell para Stream Analytics.You can change this default size using the Stream Analytics REST API or the PowerShell client for Stream Analytics.

Uma vez decidido o tamanho do lote, pode definir o número de unidades de streaming (SUs), com base no número de eventos que a função precisa de processar por segundo.Once you've decided on a batch size, you can set the number of streaming units (SUs), based on the number of events that the function needs to process per second. Para obter mais informações sobre unidades de streaming, consulte os trabalhos de escala stream Analytics.For more information about streaming units, see Stream Analytics scale jobs.

Cada 6 SUs obtém 20 ligações simultâneas ao serviço web Studio (clássico).Every 6 SUs get 20 concurrent connections to the Studio (classic) web service. No entanto, 1 emprego de SU e 3 empregos de SU obtêm 20 ligações simultâneas.However, 1 SU job and 3 SU jobs get 20 concurrent connections.

Se a sua aplicação gerar 200.000 eventos por segundo, e o tamanho do lote for de 1000, então a latência do serviço web resultante é de 200 ms.If your application generates 200,000 events per second, and the batch size is 1000, then the resulting web service latency is 200 ms. Esta taxa significa que cada ligação pode fazer cinco pedidos para o serviço web Studio (clássico) a cada segundo.This rate means that every connection can make five requests to the Studio (classic) web service each second. Com 20 ligações, o trabalho stream Analytics pode processar 20.000 eventos em 200 ms e 100.000 eventos num segundo.With 20 connections, the Stream Analytics job can process 20,000 events in 200 ms and 100,000 events in a second.

Para processar 200.000 eventos por segundo, o trabalho stream Analytics precisa de 40 ligações simultâneas, que saem para 12 SUs.To process 200,000 events per second, the Stream Analytics job needs 40 concurrent connections, which come out to 12 SUs. O diagrama seguinte ilustra os pedidos do trabalho stream Analytics para o ponto final do serviço web Studio (clássico) – Cada 6 SUs tem 20 ligações simultâneas ao serviço web Studio (clássico) no máximo.The following diagram illustrates the requests from the Stream Analytics job to the Studio (classic) web service endpoint – Every 6 SUs has 20 concurrent connections to Studio (classic) web service at max.

Scale Stream Analytics com Estúdio (clássico) Funções dois exemplos de trabalhoScale Stream Analytics with Studio (classic) Functions two job example

Em geral, B _ para o tamanho do lote, _L_ para a latência do serviço web no tamanho do lote B em milissegundos, a produção de um trabalho stream Analytics com _ N SUs é:In general, B _ for batch size, _L_ for the web service latency at batch size B in milliseconds, the throughput of a Stream Analytics job with _ N SUs is:

Scale Stream Analytics com Fórmula de Funções de Estúdio (clássico)Scale Stream Analytics with Studio (classic) Functions Formula

Também pode configurar as chamadas 'max simultâneos' no serviço web Studio (clássico).You can also configure the 'max concurrent calls' on the Studio (classic) web service. Recomenda-se definir este parâmetro para o valor máximo (200 atualmente).It's recommended to set this parameter to the maximum value (200 currently).

Para obter mais informações sobre este cenário, reveja o artigo de Escala para Machine Learning Studio (clássico) Web Services.For more information on this setting, review the Scaling article for Machine Learning Studio (classic) Web Services.

Exemplo – Análise de SentimentosExample – Sentiment Analysis

O exemplo a seguir inclui um trabalho stream Analytics com a função de análise de sentimento Studio (clássico), como descrito no tutorial de integração de machine learning (clássico) stream Analytics Machine Learning Studio ( clássico).The following example includes a Stream Analytics job with the sentiment analysis Studio (classic) function, as described in the Stream Analytics Machine Learning Studio (classic) integration tutorial.

A consulta é uma consulta simples e totalmente dividida seguida pela função de sentimento, como mostra o exemplo seguinte:The query is a simple fully partitioned query followed by the sentiment function, as shown in the following example:

    WITH subquery AS (
        SELECT text, sentiment(text) as result from input
    )

    Select text, result.[Score]
    Into output
    From subquery

Vamos examinar a configuração necessária para criar um trabalho stream Analytics, que faz a análise de sentimento de tweets a uma taxa de 10.000 tweets por segundo.Let's examine the configuration necessary to create a Stream Analytics job, which does sentiment analysis of tweets at a rate of 10,000 tweets per second.

Usando 1 SU, este trabalho da Stream Analytics pode lidar com o tráfego?Using 1 SU, could this Stream Analytics job handle the traffic? O trabalho pode acompanhar a entrada utilizando o tamanho predefinido do lote de 1000.The job can keep up with the input using the default batch size of 1000. A latência padrão do serviço web Studio (clássico) de análise de sentimento (com um tamanho padrão de lote de 1000) não cria mais do que um segundo de latência.The default latency of the sentiment analysis Studio (classic) web service (with a default batch size of 1000) creates no more than a second of latency.

A latência geral ou de ponta a ponta do stream Analytics seria normalmente de alguns segundos.The Stream Analytics job's overall or end-to-end latency would typically be a few seconds. Veja mais detalhadamente este trabalho de Stream Analytics, especialmente as chamadas de função Studio (clássicas).Take a more detailed look into this Stream Analytics job, especially the Studio (classic) function calls. Com um lote de 1000, uma produção de 10.000 eventos leva cerca de 10 pedidos para o serviço web.With a batch size of 1000, a throughput of 10,000 events takes about 10 requests to the web service. Mesmo com um SU, existem ligações simultâneas suficientes para acomodar este tráfego de entrada.Even with one SU, there are enough concurrent connections to accommodate this input traffic.

Se a taxa de entrada de eventos aumentar em 100x, então o trabalho stream Analytics precisa processar 1.000.000 tweets por segundo.If the input event rate increases by 100x, then the Stream Analytics job needs to process 1,000,000 tweets per second. Existem duas opções para realizar a escala aumentada:There are two options to accomplish the increased scale:

  1. Aumente o tamanho do lote.Increase the batch size.
  2. Partição do fluxo de entrada para processar os eventos em paralelo.Partition the input stream to process the events in parallel.

Com a primeira opção, a latência do emprego aumenta.With the first option, the job latency increases.

Com a segunda opção, terá de providenciar mais SUs para ter pedidos de serviço web mais simultâneos (clássicos) do Studio (clássico).With the second option, you will have to provision more SUs to have more concurrent Studio (classic) web service requests. Este maior número de SUs, aumenta o custo do emprego.This greater number of SUs, increases the job cost.

Vejamos a escala usando as seguintes medidas de latência para cada tamanho do lote:Let's look at the scaling using the following latency measurements for each batch size:

LatênciaLatency Tamanho do loteBatch size
200 ms200 ms Lotes de 1000 eventos ou abaixo1000-event batches or below
250 ms250 ms Lotes de 5.000 eventos5,000-event batches
300 ms300 ms Lotes de 10.000 eventos10,000-event batches
500 ms500 ms Lotes de 25.000 eventos25,000-event batches
  1. Utilizando a primeira opção (não fornecendo mais SUs).Using the first option (not provisioning more SUs). O tamanho do lote pode ser aumentado para 25.000.The batch size could be increased to 25,000. Aumentar o tamanho do lote desta forma permitirá ao trabalho processar 1.000.000 eventos com 20 ligações simultâneas ao serviço web Studio (clássico) (com uma latência de 500 ms por chamada).Increasing the batch size in this way will allow the job to process 1,000,000 events with 20 concurrent connections to the Studio (classic) web service (with a latency of 500 ms per call). Assim, a latência adicional do trabalho stream Analytics devido aos pedidos de função de sentimento contra os pedidos de serviço web do Studio (clássico) seria aumentada de 200 para 500 ms.So the additional latency of the Stream Analytics job due to the sentiment function requests against the Studio (classic) web service requests would be increased from 200 ms to 500 ms. No entanto, o tamanho do lote não pode ser aumentado infinitamente, uma vez que os serviços web do Studio (clássico) requerem que o tamanho da carga útil de um pedido seja 4 MB ou menor, e o serviço web solicita tempo de operação após 100 segundos de funcionamento.However, batch size can't be increased infinitely as the Studio (classic) web services requires the payload size of a request be 4 MB or smaller, and web service requests timeout after 100 seconds of operation.
  2. Utilizando a segunda opção, o tamanho do lote é deixado a 1000, com latência de serviço web de 200 ms, cada 20 ligações simultâneas ao serviço web seria capaz de processar 1000 * 20 * 5 eventos = 100.000 por segundo.Using the second option, the batch size is left at 1000, with 200-ms web service latency, every 20 concurrent connections to the web service would be able to process 1000 * 20 * 5 events = 100,000 per second. Assim, para processar 1.000.000 eventos por segundo, o trabalho precisaria de 60 SUs.So to process 1,000,000 events per second, the job would need 60 SUs. Em comparação com a primeira opção, o trabalho stream Analytics faria mais pedidos de lote de serviço web, gerando, por sua vez, um custo acrescido.Compared to the first option, Stream Analytics job would make more web service batch requests, in turn generating an increased cost.

Abaixo está uma tabela para a produção do trabalho stream Analytics para diferentes SUs e tamanhos de lote (em número de eventos por segundo).Below is a table for the throughput of the Stream Analytics job for different SUs and batch sizes (in number of events per second).

tamanho do lote (latência ML)batch size (ML latency) 500 (200 ms)500 (200 ms) 1.000 (200 ms)1,000 (200 ms) 5.000 (250 ms)5,000 (250 ms) 10.000 (300 ms)10,000 (300 ms) 25.000 (500 ms)25,000 (500 ms)
1 SU1 SU 2.5002,500 50005,000 20 00020,000 30,00030,000 50 00050,000
3 SUs3 SUs 2.5002,500 50005,000 20 00020,000 30,00030,000 50 00050,000
6 SUs6 SUs 2.5002,500 50005,000 20 00020,000 30,00030,000 50 00050,000
12 SUs12 SUs 50005,000 10,00010,000 40.00040,000 60 00060,000 100.000100,000
18 SUs18 SUs 7.5007,500 15 00015,000 60 00060,000 90.00090,000 150.000150,000
24 SUs24 SUs 10,00010,000 20 00020,000 80.00080,000 120,000120,000 200,000200,000
60 SUs60 SUs 25.00025,000 50 00050,000 200,000200,000 300,000300,000 500 000500,000

Por esta altura, já deves ter uma boa compreensão de como funciona o Studio (clássico) no Stream Analytics.By now, you should already have a good understanding of how Studio (classic) functions in Stream Analytics work. Você provavelmente também entende que os trabalhos stream Analytics "retiram" dados de fontes de dados e cada "pull" devolve um lote de eventos para o trabalho stream Analytics para processar.You likely also understand that Stream Analytics jobs "pull" data from data sources and each "pull" returns a batch of events for the Stream Analytics job to process. Como é que este modelo de puxar impacta os pedidos de serviço web studio (clássicos) do serviço web?How does this pull model impact the Studio (classic) web service requests?

Normalmente, o tamanho do lote que definimos para as funções studio (clássicas) não será exatamente divisível pelo número de eventos devolvidos por cada trabalho do Stream Analytics "pull".Normally, the batch size we set for Studio (classic) functions won't exactly be divisible by the number of events returned by each Stream Analytics job "pull". Quando isto ocorre, o serviço web Studio (clássico) é chamado com lotes "parciais".When this occurs, the Studio (classic) web service is called with "partial" batches. A utilização de lotes parciais evita incorrer em despesas adicionais de latência de trabalho em eventos de auxão para puxar.Using partial batches avoids incurring additional job latency overhead in coalescing events from pull to pull.

Na área monitor de um trabalho stream analytics, foram adicionadas três métricas adicionais relacionadas com a função.In the Monitor area of a Stream Analytics job, three additional function-related metrics have been added. São PEDIDOS DE FUNÇÃO, EVENTOS DE FUNÇÃO E PEDIDOS DE FUNÇÃO FALHADOS, como mostra o gráfico abaixo.They are FUNCTION REQUESTS, FUNCTION EVENTS and FAILED FUNCTION REQUESTS, as shown in the graphic below.

Scale Stream Analytics com Métricas de Funções de Estúdio (clássico)Scale Stream Analytics with Studio (classic) Functions Metrics

Os são definidos da seguinte forma:The are defined as follows:

PEDIDOS DE FUNÇÃO: O número de pedidos de função.FUNCTION REQUESTS: The number of function requests.

EVENTOS DE FUNÇÃO: Os números dos pedidos de função.FUNCTION EVENTS: The number events in the function requests.

PEDIDOS DE FUNÇÃO FALHADO : O número de pedidos de função falhados.FAILED FUNCTION REQUESTS: The number of failed function requests.

Principais takeawaysKey Takeaways

Para escalar um trabalho stream analytics com funções studio (clássicas), considere os seguintes fatores:To scale a Stream Analytics job with Studio (classic) functions, consider the following factors:

  1. A taxa de entrada do evento.The input event rate.
  2. A latência tolerada para o trabalho de Stream Analytics em execução (e, portanto, o tamanho do lote dos pedidos de serviço web studio (clássico).The tolerated latency for the running Stream Analytics job (and thus the batch size of the Studio (classic) web service requests).
  3. As SUs stream analytics a forquisiadas e o número de pedidos de serviço web studio (clássicos) (os custos adicionais relacionados com a função).The provisioned Stream Analytics SUs and the number of Studio (classic) web service requests (the additional function-related costs).

Uma consulta stream analytics totalmente dividida foi usada como um exemplo.A fully partitioned Stream Analytics query was used as an example. Se for necessária uma consulta mais complexa, o Microsoft Q&Página de perguntas para o Azure Stream Analytics é um ótimo recurso para obter ajuda adicional da equipa do Stream Analytics.If a more complex query is needed, the Microsoft Q&A question page for Azure Stream Analytics is a great resource for getting additional help from the Stream Analytics team.

Passos seguintesNext steps

Para saber mais sobre stream analytics, consulte:To learn more about Stream Analytics, see: