Ridimensionare il processo di Analisi di flusso con funzioni di Machine Learning Studio (versione classica)

Suggerimento

È consigliabile usare funzioni definite dall'utente di Azure Machine Learning anziché funzioni definite dall'utente di Machine Learning Studio (versione classica) per migliorare le prestazioni e l'affidabilità.

Importante

Il supporto dello studio di Azure Machine Learning (versione classica) terminerà il 31 agosto 2024. È consigliabile passare ad Azure Machine Learning entro tale data.

A partire dal 1° dicembre 2021, non sarà possibile creare nuove risorse di Machine Learning Studio (versione classica) (area di lavoro e piano di servizio Web). Fino al 31 agosto 2024, è possibile continuare a usare gli esperimenti e i servizi Web esistenti di Machine Learning Studio (versione classica).

La documentazione relativa allo studio di Machine Learning (versione classica) è in fase di ritiro e potrebbe non essere aggiornata in futuro.

Questo articolo illustra come ridimensionare in modo efficiente i processi di Analisi di flusso di Azure che usano funzioni di Machine Learning Studio (versione classica). Per informazioni su come ridimensionare processi di Analisi di flusso in generale, vedere l'articolo relativo al ridimensionamento dei processi.

Che cos'è una funzione di Studio (versione classica) in Analisi di flusso?

Una funzione di Machine Learning Studio (classica) in Analisi di flusso può essere usata come una normale chiamata di funzione nel linguaggio di query di Analisi di flusso. In background, tuttavia, queste chiamate di funzione sono effettivamente richieste del servizio Web Studio (versione classica).

È possibile migliorare la velocità effettiva delle richieste del servizio Web di Studio (versione classica) "raggruppando" più righe nella stessa chiamata API del servizio Web. Questo raggruppamento è denominato mini-batch. Per altre informazioni, vedere Servizi Web di Machine Learning Studio (versione classica). Supporto per Studio (versione classica) in Analisi di flusso.

Configurare un processo di Analisi di flusso con funzioni di Studio (versione classica)

Esistono due parametri per configurare la funzione studio (classica) usata dal processo di Analisi di flusso:

  • Dimensioni batch delle chiamate di funzione di Studio (versione classica).
  • Il numero di unità di streaming (SU) di cui è stato eseguito il provisioning per il processo di Analisi di flusso.

Per determinare i valori appropriati per le unità di streaming, decidere se si vuole ottimizzare la latenza del processo di Analisi di flusso o la velocità effettiva di ogni SU. È sempre possibile aggiungere unità di streaming a un processo per aumentare la velocità effettiva di una query di Analisi di flusso con partizionamento efficiente. Le unità di streaming aumentano il costo di esecuzione del processo.

Determinare la tolleranza di latenza per il processo di analisi di flusso. L'aumento delle dimensioni del batch aumenterà la latenza delle richieste di Studio (versione classica) e la latenza del processo di Analisi di flusso.

L'aumento delle dimensioni del batch consente al processo di Analisi di flusso di elaborare più eventi con lo stesso numero di richieste di servizio Web di Studio (versione classica). L'aumento della latenza del servizio Web studio (versione classica) è in genere sottolineare all'aumento delle dimensioni del batch.

È importante considerare le dimensioni batch più convenienti per un servizio Web Studio (versione classica) in una determinata situazione. Le dimensioni del batch predefinite per le richieste del servizio Web sono pari a 1000. È possibile modificare questa dimensione predefinita usando l'API REST di Analisi di flusso o il client di PowerShell per Analisi di flusso.

Dopo aver stabilito le dimensioni del batch, è possibile impostare il numero di unità di streaming (SU) in base al numero di eventi che la funzione deve elaborare al secondo. Per altre informazioni sulle unità di streaming, vedere Processi di scalabilità di Analisi di flusso.

Ogni 6 UR ottengono 20 connessioni simultanee al servizio Web Studio (versione classica). Tuttavia, 1 processo di SU e 3 processi di SU ottengono 20 connessioni simultanee.

Se l'applicazione genera 200.000 eventi al secondo e la dimensione del batch è 1000, la latenza del servizio Web risultante è 200 ms. Questa frequenza significa che ogni connessione può effettuare cinque richieste al servizio Web Studio (versione classica) ogni secondo. Con 20 connessioni, il processo di Analisi di flusso può elaborare 20.000 eventi in 200 ms e 100.000 eventi al secondo.

Per elaborare 200.000 eventi al secondo, il processo di Analisi di flusso necessita di 40 connessioni simultanee, pari a 12 unità di streaming. Il diagramma seguente illustra le richieste dal processo di Analisi di flusso all'endpoint servizio Web studio (versione classica): ogni 6 unità di streaming ha 20 connessioni simultanee al servizio Web Studio (versione classica) al massimo.

Scale Stream Analytics with Studio (classic) Functions two job example

In generale, posto che B sta per dimensioni batch e L sta per latenza del servizio Web per le dimensioni batch B in millisecondi, la velocità effettiva di un processo di Analisi di flusso con N unità di streaming è:

Scale Stream Analytics with Studio (classic) Functions Formula

È anche possibile configurare il numero massimo di chiamate simultanee nel servizio Web Studio (versione classica). È consigliabile impostare questo parametro sul valore massimo (200 attualmente).

Per altre informazioni su questa impostazione, vedere l'articolo Ridimensionamento per i servizi Web di Machine Learning Studio (versione classica).

Esempio: Analisi di valutazione

L'esempio seguente include un processo di Analisi di flusso con la funzione sentiment analysis Studio (versione classica), come descritto nell'esercitazione sull'integrazione di Machine Learning Studio (versione classica) di Analisi di flusso.

La query è una semplice query completamente partizionata seguita dalla funzione di sentiment, come illustrato nell'esempio seguente:

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

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

Esaminiamo la configurazione necessaria per creare un processo di Analisi di flusso, che esegue l'analisi della valutazione dei tweet a una velocità di 10.000 tweet al secondo.

Usando 1 unità di streaming, questo processo di Analisi di flusso può gestire il traffico? Mantenendo le dimensioni batch predefinite, pari a 1000, il processo deve riuscire a gestire l'input. La latenza predefinita del servizio Web di Analisi del sentiment Studio (versione classica) (con dimensioni batch predefinite pari a 1000) non crea più di un secondo di latenza.

La latenza totale o end-to-end del processo di Analisi di flusso sarebbe normalmente di pochi secondi. Esaminare in modo più dettagliato questo processo di Analisi di flusso, in particolare le chiamate di funzione di Studio (versione classica). Con una dimensione batch pari a 1000, una velocità effettiva di 10.000 eventi richiede circa 10 richieste al servizio Web. Anche con una unità di streaming, il numero di connessioni simultanee è sufficiente per gestire il traffico di input.

Se la frequenza degli eventi di input aumenta di 100 volte, il processo di Analisi di flusso deve elaborare 1.000.000 di tweet al secondo. Per sostenere l'aumentata richiesta, sono disponibili due opzioni:

  1. Aumentare le dimensioni batch.
  2. Partizionare il flusso di input per elaborare gli eventi in parallelo.

Con la prima opzione aumenta la latenza del processo.

Con la seconda opzione, sarà necessario effettuare il provisioning di più unità di streaming per avere più richieste di servizio Web di Studio (versione classica) di Studio simultanee. Questo numero maggiore di unità di streaming aumenta il costo del processo.

Esaminiamo il ridimensionamento usando le misure di latenza seguenti per ogni dimensione batch:

Latenza Dimensioni dei batch
200 ms Batch da 1000 eventi o meno
250 ms Batch da 5.000 eventi
300 ms Batch da 10.000 eventi
500 ms Batch da 25.000 eventi
  1. Utilizzo della prima opzione (senza effettuare il provisioning di altre unità di streaming). È possibile aumentare le dimensioni del batch a 25.000. L'aumento delle dimensioni del batch in questo modo consentirà al processo di elaborare 1.000.000 eventi con 20 connessioni simultanee al servizio Web Studio (versione classica) (con una latenza di 500 ms per chiamata). Pertanto, la latenza aggiuntiva del processo di Analisi di flusso dovuta alle richieste di funzione sentiment rispetto alle richieste del servizio Web studio (versione classica) verrebbe aumentata da 200 ms a 500 ms. Tuttavia, le dimensioni del batch non possono essere aumentate infinitamente perché i servizi Web di Studio (versione classica) richiedono che le dimensioni del payload di una richiesta siano di 4 MB o inferiori e il timeout delle richieste del servizio Web dopo 100 secondi di operazione.
  2. Se si usa la seconda opzione, le dimensioni batch rimangono pari a 1000. Con una latenza del servizio Web di 200 ms, ogni 20 connessioni simultanee al servizio Web sarebbe possibile elaborare 1000 * 20 * 5 eventi = 100.000 al secondo. Per elaborare 1.000.000 di eventi al secondo, quindi, il processo richiederebbe 60 unità di streaming. Rispetto alla prima opzione, il processo di Analisi di flusso invierebbe più richieste batch al servizio Web, generando così un costo maggiore.

Di seguito è riportata una tabella della velocità effettiva del processo di Analisi di flusso per diverse unità di streaming e dimensioni batch, in numero di eventi al secondo.

Dimensioni batch (latenza ML) 500 (200 ms) 1.000 (200 ms) 5.000 (250 ms) 10.000 (300 ms) 25.000 (500 ms)
1 unità di archiviazione 2500 5,000 20,000 30.000 50,000
3 unità di archiviazione 2500 5,000 20,000 30.000 50,000
6 unità di archiviazione 2500 5,000 20,000 30.000 50,000
12 unità di archiviazione 5.000 10,000 40.000 60.000 100,000
18 unità di archiviazione 7.500 15.000 60.000 90.000 150.000
24 unità di archiviazione 10,000 20.000 80.000 120.000 200.000
... ... ... ... ... ...
60 unità di archiviazione 25,000 50,000 200.000 300.000 500,000

A questo proposito, si dovrebbe avere già una buona conoscenza del funzionamento di Studio (versione classica) in Analisi di flusso. I processi di Analisi di flusso eseguono il pull dei dati dalle origini dati e ogni pull restituisce un batch di eventi al processo di Analisi di flusso per l'elaborazione. In che modo questo modello pull influisce sulle richieste del servizio Web studio (versione classica)?

In genere, le dimensioni del batch impostate per le funzioni di Studio (versione classica) non saranno divisibile esattamente in base al numero di eventi restituiti da ogni processo di Analisi di flusso "pull". In questo caso, il servizio Web Studio (versione classica) viene chiamato con batch "parziali". L'uso di batch parziali evita il sovraccarico della latenza dei processi nell'unione di eventi tra un pull e l'altro.

Nell'area di monitoraggio di un processo di Analisi di flusso sono state aggiunte altre tre metriche relative alle funzioni. Le metriche sono FUNCTION REQUESTS, FUNCTION EVENTS e FAILED FUNCTION REQUESTS e sono illustrate nella figura seguente.

Scale Stream Analytics with Studio (classic) Functions Metrics

Di seguito sono riportate le rispettive definizioni.

FUNCTION REQUESTS: numero di richieste di funzione.

FUNCTION EVENTS: numero di eventi nelle richieste di funzione.

FAILED FUNCTION REQUESTS: numero di richieste di funzione non riuscite.

Risultati principali

Per ridimensionare un processo di Analisi di flusso con funzioni di Studio (versione classica), considerare i fattori seguenti:

  1. Frequenza degli eventi di input.
  2. Latenza tollerata per il processo di Analisi di flusso in esecuzione (e quindi le dimensioni batch delle richieste del servizio Web studio (versione classica).
  3. Le unità di streaming di Analisi di flusso di cui è stato effettuato il provisioning e il numero di richieste di servizio Web di Studio (versione classica) (costi aggiuntivi correlati alle funzioni).

È stata usata come esempio una query di Analisi di flusso completamente partizionata. Se è necessaria una query più complessa, è possibile usare la Pagina delle domande di Domande e risposte Microsoft per Analisi di flusso di Azure per ottenere altre informazioni dal team di Analisi di flusso.

Passaggi successivi

Per altre informazioni su Analisi di flusso, vedere: