Escalado del trabajo de Stream Analytics con funciones de Azure Machine Learning Studio (clásico)Scale your Stream Analytics job with Azure Machine Learning Studio (classic) functions

Sugerencia

Es muy recomendable usar las UDF de Azure Machine Learning en lugar de las de Azure Machine Learning Studio (clásico) para mejorar el rendimiento y la confiabilidad.It is highly recommended to use Azure Machine Learning UDFs instead of Azure Machine Learning Studio (classic) UDF for improved performance and reliability.

En este artículo se describe cómo escalar de manera eficaz trabajos de Azure Stream Analytics que usan funciones de Azure Machine Learning Studio (clásico).This article discusses how to efficiently scale Azure Stream Analytics jobs that use Azure Machine Learning Studio (classic) functions. Para más información sobre cómo escalar trabajos de Stream Analytics en general, consulte el artículo Escalado de trabajos de Azure Stream Analytics para incrementar el rendimiento de procesamiento de flujo de datos.For information on how to scale Stream Analytics jobs in general see the article Scaling jobs.

¿Qué es una función de Studio (clásico) en Stream Analytics?What is a Studio (classic) function in Stream Analytics?

Una función de Machine Learning Studio (clásico) en Stream Analytics puede utilizarse como una llamada de función normal en el lenguaje de consulta de 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. No obstante, en segundo plano, estas llamadas de función son en realidad solicitudes de servicio web de Studio (clásico).Behind the scenes, however, these function calls are actually Studio (classic) Web Service requests.

Puede mejorar el rendimiento de las solicitudes de servicio web de Studio (clásico) al agrupar en "lotes" varias filas en la misma llamada API de servicio web.You can improve the throughput of Studio (classic) web service requests by "batching" multiple rows together in the same web service API call. Esta agrupación se denomina minilote.This grouping is called a mini-batch. Para más información, consulte Servicios web de Azure Machine Learning Studio (clásico).For more information, see Azure Machine Learning Studio (classic) Web Services. Compatibilidad de Studio (clásico) en Stream Analytics.Support for Studio (classic) in Stream Analytics.

Configuración de un trabajo de Stream Analytics con funciones de Studio (clásico)Configure a Stream Analytics job with Studio (classic) functions

Hay dos parámetros para configurar la función de Studio (clásico) usada por el trabajo de Stream Analytics:There are two parameters to configure the Studio (classic) function used by your Stream Analytics job:

  • El tamaño de lote de las llamadas de función de Studio (clásico).Batch size of the Studio (classic) function calls.
  • El número de unidades de streaming (SU) aprovisionadas para el trabajo de Stream Analytics.The number of Streaming Units (SUs) provisioned for the Stream Analytics job.

Para determinar los valores adecuados para las SU, decida si desea optimizar la latencia de cada trabajo de Stream Analytics o el rendimiento 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. Siempre se pueden agregar SU a un trabajo para aumentar el rendimiento de una consulta de Stream Analytics bien particionada.SUs may always be added to a job to increase the throughput of a well-partitioned Stream Analytics query. Las SU adicionales aumentarán el costo de ejecución del trabajo.Additional SUs do increase the cost of running the job.

Determine la tolerancia de la latencia para el trabajo de Stream Analytics.Determine the latency tolerance for your Stream Analytics job. Aumentar el tamaño del lote aumentará la latencia de las solicitudes de Studio (clásico) y la latencia del trabajo de Stream Analytics.Increasing the batch size will increase the latency of your Studio (classic) requests and the latency of the Stream Analytics job.

Aumentar el tamaño del lote permite que el trabajo de Stream Analytics procese más eventos con el mismo número de solicitudes de servicio web de Studio (clásico).Increasing the batch size allows the Stream Analytics job to process more events with the same number of Studio (classic) web service requests. El aumento de la latencia del servicio web de Studio (clásico) suele ser infralineal al aumento del tamaño del lote.The increase of Studio (classic) web service latency is usually sublinear to the increase of batch size.

Es importante tener en cuenta el tamaño de lote más rentable para un servicio web de Studio (clásico) en cualquier situación dada.It's important to consider the most cost-efficient batch size for a Studio (classic) web service in any given situation. El tamaño del lote predeterminado para las solicitudes de servicio web es de 1000.The default batch size for web service requests is 1000. Puede cambiar este tamaño predeterminado con la API REST de Stream Analytics o el cliente de PowerShell para Stream Analytics.You can change this default size using the Stream Analytics REST API or the PowerShell client for Stream Analytics.

Una vez que se haya decidido por un tamaño de lote, puede establecer el número de unidades de streaming (SU) según el número de eventos que la función tenga que procesar 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 más información sobre el ajuste de las unidades de streaming, consulte Escalación de trabajos de Stream Analytics.For more information about streaming units, see Stream Analytics scale jobs.

Cada 6 SU, se obtienen 20 conexiones simultáneas al servicio web de Studio (clásico).Every 6 SUs get 20 concurrent connections to the Studio (classic) web service. Sin embargo, 1 trabajo de SU y 3 trabajos de SU obtienen 20 conexiones simultáneas.However, 1 SU job and 3 SU jobs get 20 concurrent connections.

Si la aplicación genera 200 000 eventos por segundo y el tamaño del lote es de 1000, la latencia del servicio web resultante es 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 tasa significa que cada conexión puede hacer cinco solicitudes al servicio web de Studio (clásico) en un segundo.This rate means that every connection can make five requests to the Studio (classic) web service each second. Con 20 conexiones, el trabajo de Stream Analytics puede procesar 20 000 eventos en 200 ms y 100 000 eventos en un segundo.With 20 connections, the Stream Analytics job can process 20,000 events in 200 ms and 100,000 events in a second.

Para procesar 200 000 eventos por segundo, el trabajo de Stream Analytics necesita 40 conexiones simultáneas, lo que viene a ser 12 SU.To process 200,000 events per second, the Stream Analytics job needs 40 concurrent connections, which come out to 12 SUs. En el diagrama siguiente se muestran las solicitudes desde el trabajo de Stream Analytics hasta el punto de conexión del servicio web de Studio (clásico): cada 6 SU, se obtienen 20 conexiones simultáneas al servicio web de Studio (clásico) como 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.

Escalado de Stream Analytics con funciones de Studio (clásico): dos ejemplos de trabajoScale Stream Analytics with Studio (classic) Functions two job example

En general, si B _ es el tamaño de lote y _L*_ es la latencia del servicio web con el tamaño de lote B en milisegundos, el rendimiento de un trabajo de Stream Analytics con _ N SU es: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:

Fórmula de escalado de Stream Analytics con funciones de Studio (clásico)Scale Stream Analytics with Studio (classic) Functions Formula

También puede configurar las "llamadas simultáneas máximas" en el servicio web de Studio (clásico).You can also configure the 'max concurrent calls' on the Studio (classic) web service. Se recomienda establecer este parámetro en el valor máximo (actualmente 200).It's recommended to set this parameter to the maximum value (200 currently).

Para obtener más información sobre esta configuración, consulte el artículo de Escalado para servicio web de Machine Learning Studio (clásico).For more information on this setting, review the Scaling article for Machine Learning Studio (classic) Web Services.

Ejemplo: Análisis de opinionesExample – Sentiment Analysis

En el ejemplo siguiente se incluye un trabajo de Stream Analytics con la función de análisis de opiniones de Studio (clásico), como se describe en el tutorial de integración de Stream Analytics y Machine Learning Studio (clásico).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.

La consulta es una consulta sencilla completamente particionada seguida de la función sentiment, tal como se muestra en el ejemplo siguiente: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 a examinar la configuración necesaria para crear un trabajo de Stream Analytics que se encarga del análisis de opiniones de tweets con una frecuencia 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, ¿podría este trabajo de Stream Analytics administrar el tráfico?Using 1 SU, could this Stream Analytics job handle the traffic? El trabajo debería poder mantenerse al nivel de la entrada con el tamaño de lote predeterminado de 1000.The job can keep up with the input using the default batch size of 1000. La latencia predeterminada del servicio web de análisis de opiniones de Studio (clásico) (con un tamaño de lote predeterminado de 1000) genera una latencia de no más de un segundo.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.

La latencia general o total del trabajo de Stream Analytics sería normalmente de unos segundos.The Stream Analytics job's overall or end-to-end latency would typically be a few seconds. Examine con más detalle este trabajo de Stream Analytics, especialmente las llamadas de función de Studio (clásico).Take a more detailed look into this Stream Analytics job, especially the Studio (classic) function calls. Con un tamaño de lote de 1000, un rendimiento de 10 000 eventos supondrá unas 10 solicitudes al servicio web.With a batch size of 1000, a throughput of 10,000 events takes about 10 requests to the web service. Incluso con 1 SU, hay suficientes conexiones simultáneas para dar cabida a este tráfico de entrada.Even with one SU, there are enough concurrent connections to accommodate this input traffic.

Si la tasa de eventos de entrada aumenta en 100 x, el trabajo de Stream Analytics necesita procesar 1 000 000 de 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. Hay dos opciones para lograr una escala mayor:There are two options to accomplish the increased scale:

  1. Aumente el tamaño de lote.Increase the batch size.
  2. Particione el flujo de entrada para procesar los eventos en paralelo.Partition the input stream to process the events in parallel.

Con la primera opción, la latencia del trabajo aumenta.With the first option, the job latency increases.

Con la segunda opción, será necesario aprovisionar más SU para tener más solicitudes simultáneas de servicio web de Studio (clásico).With the second option, you will have to provision more SUs to have more concurrent Studio (classic) web service requests. Este mayor número de SU aumenta el costo del trabajo.This greater number of SUs, increases the job cost.

Echemos un vistazo a la escala usando las siguientes medidas de latencia para cada tamaño de lote:Let's look at the scaling using the following latency measurements for each batch size:

LatenciaLatency Tamaño de loteBatch size
200 ms200 ms Lotes de 1000 eventos o menos1000-event batches or below
250 ms250 ms Lotes de 5000 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. Uso de la primera opción (no aprovisionar más SU).Using the first option (not provisioning more SUs). Se podría aumentar el tamaño de lote a 25 000.The batch size could be increased to 25,000. Aumentar el tamaño de lote de este modo permitirá que el trabajo procese 1 000 000 eventos con 20 conexiones simultáneas al servicio web de Studio (clásico) (con una latencia de 500 ms por llamada).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). De modo que, la latencia adicional del trabajo de Stream Analytics debido a las solicitudes de la función de opinión contra las solicitudes del servicio web de Studio (clásico) aumentaría de 200 ms a 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. Sin embargo, el tamaño de lote no se puede aumentar de manera indefinida, dado que el servicio web de Studio (clásico) necesita que el tamaño de la carga de una solicitud sea de 4 MB o menos, y las solicitudes de servicio web tienen un tiempo de espera de 100 segundos de funcionamiento.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. Con la segunda opción, el tamaño de lote se deja en 1000; con una latencia del servicio web de 200 ms, con cada 20 conexiones simultáneas al servicio web se podrían procesar 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. Por tanto, para procesar 1 000 000 eventos por segundo, el trabajo necesitaría 60 SU.So to process 1,000,000 events per second, the job would need 60 SUs. En comparación con la primera opción, el trabajo de Stream Analytics haría más solicitudes de lote de servicio web, lo que a su vez generaría un mayor costo.Compared to the first option, Stream Analytics job would make more web service batch requests, in turn generating an increased cost.

A continuación se muestra una tabla del rendimiento del trabajo de Stream Analytics para diferentes SU y tamaños de lote (en 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).

Tamaño del lote (latencia de Aprendizaje automático)batch size (ML latency) 500 (200 ms)500 (200 ms) 1000 (200 ms)1,000 (200 ms) 5000 (250 ms)5,000 (250 ms) 10 000 (300 ms)10,000 (300 ms) 25 000 (500 ms)25,000 (500 ms)
1 unidad de búsqueda1 SU 2,5002,500 5.0005,000 20.00020,000 30,00030,000 50.00050,000
3 unidades de búsqueda3 SUs 2,5002,500 5.0005,000 20.00020,000 30,00030,000 50.00050,000
6 unidades de búsqueda6 SUs 2,5002,500 5.0005,000 20.00020,000 30,00030,000 50.00050,000
12 unidades de búsqueda12 SUs 5.0005,000 10 00010,000 40.00040,000 60 00060,000 100 000100,000
18 unidades de búsqueda18 SUs 7 5007,500 15,00015,000 60 00060,000 90 00090,000 150 000150,000
24 unidades de búsqueda24 SUs 10 00010,000 20.00020,000 80 00080,000 120 000120,000 200 000200,000
60 unidades de búsqueda60 SUs 25 00025,000 50.00050,000 200 000200,000 300 000300,000 500.000500,000

En este momento, ya debe tener un buen conocimiento de las funciones de Studio (clásico) en Stream Analytics.By now, you should already have a good understanding of how Studio (classic) functions in Stream Analytics work. Probablemente también sepa que los trabajos de Stream Analytics "extraen" datos de los orígenes de datos y que cada "extracción" devuelve un lote de eventos que procesa el trabajo de Stream Analytics.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. ¿Cómo afecta este modelo de extracción a las solicitudes del servicio web de Studio (clásico)?How does this pull model impact the Studio (classic) web service requests?

Normalmente, el tamaño de lote que se establece para las funciones de Studio (clásico) no será divisible exactamente por el número de eventos devueltos por cada "extracción" del trabajo de Stream Analytics.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". Cuando suceda esto, se llamará al servicio web de Studio (clásico) con lotes "parciales".When this occurs, the Studio (classic) web service is called with "partial" batches. El uso de lotes parciales evita incurrir en una sobrecarga de latencia adicional del trabajo en los eventos de combinación de una extracción a otra.Using partial batches avoids incurring additional job latency overhead in coalescing events from pull to pull.

En el área de supervisión de un trabajo de Stream Analytics, se han agregado tres métricas adicionales relacionadas con las funciones.In the Monitor area of a Stream Analytics job, three additional function-related metrics have been added. Y son: SOLICITUDES DE FUNCIONES, EVENTOS DE FUNCIONES y SOLICITUDES DE FUNCIONES CON ERRORES, como se muestra en el siguiente gráfico.They are FUNCTION REQUESTS, FUNCTION EVENTS and FAILED FUNCTION REQUESTS, as shown in the graphic below.

Métricas de escalado de Stream Analytics con funciones de Studio (clásico)Scale Stream Analytics with Studio (classic) Functions Metrics

Se definen de la manera siguiente:The are defined as follows:

SOLICITUDES DE FUNCIONES: número de solicitudes de función.FUNCTION REQUESTS: The number of function requests.

EVENTOS DE FUNCIONES: número de eventos en las solicitudes de función.FUNCTION EVENTS: The number events in the function requests.

SOLICITUDES DE FUNCIONES CON ERRORES: número de solicitudes de función con errores.FAILED FUNCTION REQUESTS: The number of failed function requests.

Puntos claveKey Takeaways

Para escalar un trabajo de Stream Analytics con funciones de Studio (clásico), tenga en cuenta los siguientes factores:To scale a Stream Analytics job with Studio (classic) functions, consider the following factors:

  1. La tasa de eventos de entrada.The input event rate.
  2. La latencia permitida para el trabajo de Stream Analytics en ejecución (y, por tanto, el tamaño de lote de las solicitudes de servicio web de Studio [clásico]).The tolerated latency for the running Stream Analytics job (and thus the batch size of the Studio (classic) web service requests).
  3. Las SU de Stream Analytics aprovisionadas y el número de solicitudes de servicio web de Studio (clásico) (los costos relacionados con funciones adicionales).The provisioned Stream Analytics SUs and the number of Studio (classic) web service requests (the additional function-related costs).

Como ejemplo se ha utilizado una consulta de Stream Analytics totalmente particionada.A fully partitioned Stream Analytics query was used as an example. Si se necesita una consulta más compleja, la Página de preguntas y respuestas de Microsoft sobre Azure Stream Analytics es un excelente recurso para obtener ayuda adicional del equipo de 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.

Pasos siguientesNext steps

Para obtener más información sobre Stream Analytics, vea:To learn more about Stream Analytics, see: