Mettre à l’échelle votre travail Stream Analytics avec des fonctions Azure Machine Learning Studio (classique)Scale your Stream Analytics job with Azure Machine Learning Studio (classic) functions

Conseil

Il est vivement recommandé d’utiliser des UDF Azure Machine Learning au lieu d’une UDF Azure Machine Learning Studio (classique) pour améliorer les performances et la fiabilité.It is highly recommended to use Azure Machine Learning UDFs instead of Azure Machine Learning Studio (classic) UDF for improved performance and reliability.

Cet article explique comment mettre efficacement à l’échelle des travaux Azure Stream Analytics qui utilisent des fonctions Azure Machine Learning studio (classique).This article discusses how to efficiently scale Azure Stream Analytics jobs that use Azure Machine Learning Studio (classic) functions. Pour plus d’informations sur la procédure de mise à l’échelle des travaux Stream Analytics en général, voir l’article Mise à l’échelle des travaux.For information on how to scale Stream Analytics jobs in general see the article Scaling jobs.

Qu’est-ce qu’une fonction studio (classique) dans Stream Analytics ?What is a Studio (classic) function in Stream Analytics?

Une fonction Machine Learning studio (classique) dans Stream Analytics peut être utilisée comme un appel de fonction standard dans le langage de requête 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. En arrière-plan toutefois, ces appels de fonction constituent en fait des demandes de service web studio (classique).Behind the scenes, however, these function calls are actually Studio (classic) Web Service requests.

Il est possible d’améliorer le débit des demandes de service web studio (classique) en traitant « par lots » plusieurs lignes dans le même appel d’API de service web.You can improve the throughput of Studio (classic) web service requests by "batching" multiple rows together in the same web service API call. Ce regroupement est appelé un mini-lot.This grouping is called a mini-batch. Pour plus d’informations, consultez Services web Azure Machine Learning Studio (classique).For more information, see Azure Machine Learning Studio (classic) Web Services. La prise en charge de studio (classique) dans Stream Analytics est en préversion.Support for Studio (classic) in Stream Analytics is in preview.

Configuration d’un travail Stream Analytics avec des fonctions studio (classique)Configure a Stream Analytics job with Studio (classic) functions

Deux paramètres permettent de configurer la fonction studio (classique) utilisée par le travail Stream Analytics :There are two parameters to configure the Studio (classic) function used by your Stream Analytics job:

  • Taille de lot des appels de fonction studio (classique).Batch size of the Studio (classic) function calls.
  • Nombre d’unités streaming (SU) approvisionnées pour le travail Stream Analytics.The number of Streaming Units (SUs) provisioned for the Stream Analytics job.

Pour déterminer les valeurs appropriées de SU, choisissez d’optimiser la latence du travail Stream Analytics ou le débit de chaque 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. Il est toujours possible d’ajouter des SU à un travail pour augmenter le débit d’une requête Stream Analytics correctement partitionnée.SUs may always be added to a job to increase the throughput of a well-partitioned Stream Analytics query. Des SU supplémentaires augmentent le coût d’exécution du travail.Additional SUs do increase the cost of running the job.

Déterminez la tolérance de latence pour votre travail Stream Analytics.Determine the latency tolerance for your Stream Analytics job. Une augmentation de la taille de lot aura pour effet d’accroître la latence des demandes studio (classique) et du travail Stream Analytics.Increasing the batch size will increase the latency of your Studio (classic) requests and the latency of the Stream Analytics job.

L’augmentation de la taille de lot permet au travail Stream Analytics de traiter davantage d’événements avec le même nombre de demandes de service web studio (classique).Increasing the batch size allows the Stream Analytics job to process more events with the same number of Studio (classic) web service requests. La latence du service web studio (classique) croît généralement moins vite que la taille de lot.The increase of Studio (classic) web service latency is usually sublinear to the increase of batch size.

Quelle que soit la situation, il est important de prendre en compte la taille de lot la plus économique pour un service web studio (classique).It's important to consider the most cost-efficient batch size for a Studio (classic) web service in any given situation. La taille de lot par défaut pour les demandes de service web est de 1 000.The default batch size for web service requests is 1000. Vous pouvez modifier cette taille par défaut à l’aide de l’API REST Stream Analytics ou du client PowerShell pour Stream Analytics.You can change this default size using the Stream Analytics REST API or the PowerShell client for Stream Analytics.

Lorsque vous avez choisi une taille de lot, vous pouvez définir le nombre d’unités de streaming (SU) en fonction du nombre d’événements que la fonction doit traiter par seconde.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. Pour plus d’informations sur les unités de diffusion en continu, voir Mise à l’échelle des travaux Stream Analytics.For more information about streaming units, see Stream Analytics scale jobs.

Chaque ensemble de 6 SU bénéficie de 20 connexions simultanées au service web studio (classique).Every 6 SUs get 20 concurrent connections to the Studio (classic) web service. Toutefois, 1 travail SU et 3 travaux SU obtiennent 20 connexions simultanées.However, 1 SU job and 3 SU jobs get 20 concurrent connections.

Si votre application génère 200 000 événements par seconde, et que taille du lot est de 1 000, la latence de service web qui en résulte est 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. Avec ce débit, chaque connexion peut envoyer cinq requêtes au service web studio (classique) par seconde.This rate means that every connection can make five requests to the Studio (classic) web service each second. Dans le cas de 20 connexions, le travail Stream Analytics peut traiter 20 000 événements en 200 ms et 100 000 événements en une seconde.With 20 connections, the Stream Analytics job can process 20,000 events in 200 ms and 100,000 events in a second.

Pour traiter 200 000 événements par seconde, le travail Stream Analytics a besoin de 40 connexions simultanées, ce qui correspond à 12 SU.To process 200,000 events per second, the Stream Analytics job needs 40 concurrent connections, which come out to 12 SUs. Le diagramme ci-dessous illustre les demandes effectuées du travail Stream Analytics vers le point de terminaison de service web studio (classique). Pour chaque ensemble de 6 unités de streaming, il existe 20 connexions simultanées au service web studio (classique) maximum.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.

Mise à l’échelle de Stream Analytics avec des fonctions studio (classique) – Exemple de deux travauxScale Stream Analytics with Studio (classic) Functions two job example

Généralement, B _ pour la taille de lot, _L_ pour la latence du service web en millisecondes pour la taille de lot B, le débit d’un travail Stream Analytics avec _N*_ unités de diffusion en continu est le suivant :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:

Mise à l’échelle de Stream Analytics avec des fonctions studio (classique) – FormuleScale Stream Analytics with Studio (classic) Functions Formula

Vous pouvez également configurer le « nombre maximal d’appels simultanés » sur le service web studio (classique).You can also configure the 'max concurrent calls' on the Studio (classic) web service. Il est recommandé de définir ce paramètre sur la valeur maximale (200 actuellement).It's recommended to set this parameter to the maximum value (200 currently).

Pour plus d’informations sur ce paramètre, consultez l’article Mise à l’échelle pour les services web Machine Learning studio (classique).For more information on this setting, review the Scaling article for Machine Learning Studio (classic) Web Services.

Exemple – Analyse de sentimentsExample – Sentiment Analysis

L’exemple suivant comprend un travail Stream Analytics avec la fonction studio (classique) d’analyse des sentiments (cf. Tutoriel d’intégration de Machine Learning studio (classique) à Stream Analytics).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 requête est une requête simple entièrement partitionnée suivie de la fonction _ *sentiment**, comme indiqué dans l’exemple suivant :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

Commençons par examiner la configuration nécessaire pour créer un travail Stream Analytics qui analyse le sentiment de tweets à un débit de 10 000 tweets par seconde.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.

Avec 1 SU, ce travail Stream Analytics pourrait-il de gérer le trafic ?Using 1 SU, could this Stream Analytics job handle the traffic? Le travail peut prendre en charge le trafic d’entrée en utilisant la taille de lot par défaut de 1 000.The job can keep up with the input using the default batch size of 1000. La latence par défaut du service web studio (classique) d’analyse des sentiment (avec une taille de lot par défaut de 1 000) ne crée pas plus d’une seconde de latence.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 latence totale ou de bout en bout du travail Stream Analytics serait généralement de l’ordre de quelques secondes.The Stream Analytics job's overall or end-to-end latency would typically be a few seconds. Examinons ce travail Stream Analytics plus en détail, en particulier les appels de fonction studio (classique).Take a more detailed look into this Stream Analytics job, especially the Studio (classic) function calls. Avec une taille de lot de 1 000, un débit de 10 000 événements nécessitera l’envoi de 10 requêtes environ au service web.With a batch size of 1000, a throughput of 10,000 events takes about 10 requests to the web service. Même avec 1 unité de streaming, le nombre de connexions simultanées est suffisant pour prendre en charge ce trafic d’entrée.Even with one SU, there are enough concurrent connections to accommodate this input traffic.

Si le taux d’événements d’entrée est multiplié par 100, le travail Stream Analytics devra alors traiter 1 000 000 de tweets par seconde.If the input event rate increases by 100x, then the Stream Analytics job needs to process 1,000,000 tweets per second. Deux options permettent de gérer cette augmentation :There are two options to accomplish the increased scale:

  1. Augmentez la taille du lot.Increase the batch size.
  2. Partitionnez le flux d’entrée pour traiter les événements en parallèle.Partition the input stream to process the events in parallel.

Si nous choisissons la première option, la latence du travail augmente.With the first option, the job latency increases.

Avec la seconde option, vous devrez provisionner plus de SU pour générer plus de demandes de service web studio (classique) simultanées.With the second option, you will have to provision more SUs to have more concurrent Studio (classic) web service requests. Ce plus grand nombre de SU entraîne une augmentation du coût du travail.This greater number of SUs, increases the job cost.

Observons la mise à l’échelle à l’aide des mesures de latence suivantes pour chaque taille de lot :Let's look at the scaling using the following latency measurements for each batch size:

LatenceLatency Taille du lotBatch size
200 ms200 ms lots de 1 000 événements maximum1000-event batches or below
250 ms250 ms lots de 5 000 événements5,000-event batches
300 ms300 ms lots de 10 000 événements10,000-event batches
500 ms500 ms lots de 25 000 événements25,000-event batches
  1. Utilisation de la première option (ne pas provisionner plus d’unités de stockage).Using the first option (not provisioning more SUs). Vous pourriez augmenter la taille du lot pour atteindre 25 000.The batch size could be increased to 25,000. Cette augmentation permettra au travail de traiter un million d’événements avec 20 connexions simultanées au service web studio (classique) (avec une latence de 500 ms par appel).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). La latence supplémentaire du travail Stream Analytics découlant des demandes de la fonction sentiment par rapport aux demandes de service web studio (classique) passerait donc de 200 ms à 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. Toutefois, la taille de lot ne peut pas être augmentée à l’infini, car les services web studio (classique) exigent que la taille utile d’une requête soit de 4 Mo maximum et imposent un délai d’expiration de 100 secondes pour les demandes de service web.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. Si nous utilisions la deuxième option, en conservant une taille de lot de 1000, avec une latence de service web de 200 ms, chaque ensemble de 20 connexions simultanées au service web est en mesure de traiter 20 * 1000 * 5 événements = 100 000 événements par seconde.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. Pour traiter 1 000 000 d’événements par seconde, le travail aurait donc besoin de 60 unités de diffusion en continu.So to process 1,000,000 events per second, the job would need 60 SUs. Par rapport à la première option, le travail Stream Analytics effectuerait un plus grand nombre de demandes de service web par lot, ce qui entraînerait alors une augmentation des coûts.Compared to the first option, Stream Analytics job would make more web service batch requests, in turn generating an increased cost.

Le tableau ci-après présente le débit du travail Stream Analytics pour différentes unités de diffusion en continu et tailles de lot (en nombre d’événements par seconde).Below is a table for the throughput of the Stream Analytics job for different SUs and batch sizes (in number of events per second).

Taille de lot (latence Machine Learning)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 unité de diffusion en continu1 SU 2 5002,500 5 0005,000 20 00020,000 30,00030,000 50 00050,000
3 unités de diffusion en continu3 SUs 2 5002,500 5 0005,000 20 00020,000 30,00030,000 50 00050,000
6 unités de diffusion en continu6 SUs 2 5002,500 5 0005,000 20 00020,000 30,00030,000 50 00050,000
12 unités de diffusion en continu12 SUs 5 0005,000 10 00010,000 40 00040,000 60 00060,000 100 000100,000
18 unités de diffusion en continu18 SUs 7 5007,500 15,00015,000 60 00060,000 90 00090,000 150 000150,000
24 unités de diffusion en continu24 SUs 10 00010,000 20 00020,000 80 00080,000 120 000120,000 200 000200,000
60 unités de diffusion en continu60 SUs 25 00025,000 50 00050,000 200 000200,000 300 000300,000 500 000500,000

Vous avez déjà une bonne compréhension du fonctionnement des fonctions studio (classique) dans Stream Analytics.By now, you should already have a good understanding of how Studio (classic) functions in Stream Analytics work. Vous devez également avoir compris que les travaux Stream Analytics tirent (pull) les données des sources de données, et que chaque tirage retourne un lot d’événements destinés à être traités par le travail 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. Comment ce modèle de transmission de type pull affecte-t-il les demandes de service web studio (classique) ?How does this pull model impact the Studio (classic) web service requests?

En règle générale, la taille de lot définie pour les fonctions studio (classique) n’est pas exactement divisible par le nombre d’événements retournés par chaque tirage (pull) de travail 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". Dans ce cas, le service web studio (classique) est appelé avec des lots « partiels ».When this occurs, the Studio (classic) web service is called with "partial" batches. L’utilisation de lots partiels évite un surcroît de latence de travail induit par le regroupement des événements issus des différentes transmissions de type pull.Using partial batches avoids incurring additional job latency overhead in coalescing events from pull to pull.

Dans la zone de surveillance d’un travail Stream Analytics, trois nouvelles métriques associées aux fonctions ont été ajoutées.In the Monitor area of a Stream Analytics job, three additional function-related metrics have been added. Il s’agit des métriques DEMANDES DE FONCTION, ÉVÉNEMENTS DE FONCTION et DEMANDES DE FONCTION AYANT ÉCHOUÉ, comme illustré dans le graphique ci-après.They are FUNCTION REQUESTS, FUNCTION EVENTS and FAILED FUNCTION REQUESTS, as shown in the graphic below.

Mise à l’échelle de Stream Analytics avec des fonctions studio (classique) – MétriquesScale Stream Analytics with Studio (classic) Functions Metrics

Les définitions de ces métriques sont les suivantes :The are defined as follows:

DEMANDES DE FONCTION : Nombre de demandes de fonction.FUNCTION REQUESTS: The number of function requests.

ÉVÉNEMENTS DE FONCTION : Nombre d’événements dans les demandes de fonction.FUNCTION EVENTS: The number events in the function requests.

DEMANDES DE FONCTION AYANT ÉCHOUÉ : Nombre de demandes de fonction ayant échoué.FAILED FUNCTION REQUESTS: The number of failed function requests.

Points clésKey Takeaways

Pour mettre à l’échelle un travail Stream Analytics avec des fonctions studio (classique), prenez en compte les facteurs suivants :To scale a Stream Analytics job with Studio (classic) functions, consider the following factors:

  1. Taux d’événements d’entrée.The input event rate.
  2. Latence tolérée pour le travail Stream Analytics en cours d’exécution (et donc taille de lot des demandes de service web studio (classique)).The tolerated latency for the running Stream Analytics job (and thus the batch size of the Studio (classic) web service requests).
  3. SU Stream Analytics provisionnées et nombre de demandes de service web studio (classique) (coûts associés aux fonctions supplémentaires).The provisioned Stream Analytics SUs and the number of Studio (classic) web service requests (the additional function-related costs).

Notre exemple portait sur une requête Stream Analytics entièrement partitionnée.A fully partitioned Stream Analytics query was used as an example. Si vous avez besoin d’une requête plus complexe, la Page de questions Microsoft Q&A pour Azure Stream Analytics est une précieuse ressource pour obtenir une aide supplémentaire auprès de l’équipe 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.

Étapes suivantesNext steps

Pour en savoir plus sur Stream Analytics, consultez :To learn more about Stream Analytics, see: