Ridimensionare il processo di Analisi di flusso con funzioni di Studio di Machine Learning (versione classica)
Suggerimento
Per migliorare le prestazioni e l'affidabilità si consiglia di usare le funzioni definite dall'utente di Azure Machine Learning, anziché le funzioni definite dall'utente di Azure Machine Learning Studio (versione classica).
Importante
Il supporto di Azure Machine Learning Studio (versione classica) terminerà il 31 agosto 2024. Si consiglia di passare ad Azure Machine Learning entro tale data.
A partire dal 1° dicembre 2021 non è possibile creare nuove risorse (area di lavoro e piano di servizio Web) dello di Machine Learning Studio (versione classica). Fino al 31 agosto 2024 è possibile continuare a usare gli esperimenti e i servizi Web esistenti di Machine Learning Studio (versione classica). Per altre informazioni, vedi:
- Migrare a Azure Machine Learning da Machine Learning Studio (versione classica)
- Cos'è Azure Machine Learning?
La documentazione relativa a Machine Learning Studio (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 le funzioni di Studio di Machine Learning (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 Studio di Machine Learning (versione classica) in Analisi di flusso può essere usata come una normale chiamata di funzione nel linguaggio di query di Analisi di flusso. Tuttavia, in background, queste chiamate di funzione sono in realtà richieste del servizio Web di Studio (versione classica).
È possibile migliorare la velocità effettiva di Studio (versione classica) tramite "invio in batch" di più righe nella stessa chiamata all'API del servizio Web. Questo raggruppamento è denominato mini-batch. Per altre informazioni, vedere Servizi Web di Studio di Machine Learning (versione classica). Supporto per Studio (versione classica) in Analisi di flusso.
Configurare un processo di Analisi di flusso con funzioni di Studio di Machine Learning (versione classica)
Per configurare la funzione Studio di Machine Learning (versione classica) usata dal processo di analisi di flusso, sono disponibili due parametri:
- 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 dei batch aumenterà la latenza delle richieste di Studio (versione classica) e la latenza del processo di Analisi di flusso.
L'aumento delle dimensioni dei batch consente al processo di Analisi di flusso di elaborare più eventi con lo stesso numero di richieste del servizio Web di Studio (versione classica). L'aumento della latenza del servizio Web di Studio è in genere sublineare all'aumento delle dimensioni dei batch.
È importante considerare le dimensioni del batch più convenienti per un servizio Web di 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 unità di streaming si ottengono 20 connessioni simultanee al servizio Web di 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 indica che ogni connessione può inviare cinque richieste al servizio Web di 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 di Studio (versione classica). Ogni 6 unità di streaming dispone al massimo di 20 connessioni simultanee al servizio Web di Studio (versione classica).
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 è:
È anche possibile configurare il 'numero massimo di chiamate simultanee' nel servizio Web di Studio (versione classica). È consigliabile impostare questo parametro sul valore massimo (200 attualmente).
Per altre informazioni su questa impostazione, vedere l'articolo Ridimensionamento di un servizio Web di Studio di Machine Learning (versione classica).
Esempio: Analisi di valutazione
L'esempio seguente include un processo di Analisi di flusso con la funzione di Studio di analisi di valutazione, come descritto nell'esercitazione sull'integrazione tra Analisi di flusso di Studio di Machine Learning (versione classica).
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 Studio (versione classica) di analisi di valutazione (con dimensioni batch predefinite pari a 1000) crea non più di un secondo di latenza.
La latenza totale o end-to-end del processo di Analisi di flusso sarebbe normalmente di pochi secondi. Si esamina ora più da vicino 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:
- Aumentare le dimensioni batch.
- 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 eseguire il provisioning di più unità di streaming per ottenere più richieste simultanee al servizio Web di Studio (versione classica). 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 del 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 |
- Utilizzo della prima opzione (senza effettuare il provisioning di altre unità di streaming). È possibile aumentare le dimensioni del batch a 25.000. Aumentare le dimensioni del batch in questo modo consentirà al processo di elaborare 1.000.000 di eventi con 20 connessioni simultanee al servizio Web di Studio (versione classica), con una latenza di 500 ms per ogni chiamata. La latenza aggiuntiva del processo di Analisi di flusso dovuta alle richieste della funzione di valutazione rispetto alle richieste del servizio Web di Studio (versione classica) aumenterebbe da 200 ms a 500 ms. Tuttavia non è possibile aumentare le dimensioni batch all'infinito, perché i servizi Web di Studio (versione classica) richiedono dimensioni del payload della richiesta pari a 4 MB. Le richieste di servizio Web di dimensioni inferiori scadono dopo 100 secondi di attività.
- 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 punto dovrebbe essere chiaro il funzionamento delle funzioni 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. Come influisce tale modello pull sulle richieste al servizio Web di Studio (versione classica)?
In genere, le dimensioni batch impostate per le funzioni di Studio (versione classica) non sono esattamente divisibili per il numero di eventi restituiti da ogni pull del processo di Analisi di flusso. Quando ciò accade, il servizio Web di 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.
Nuove metriche di monitoraggio correlate alle funzioni
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.
I sono definiti come segue:
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:
- Frequenza degli eventi di input.
- Latenza consentita per il processo di Analisi di flusso in esecuzione e dimensioni batch delle richieste al servizio Web di Studio (versione classica).
- Unità di streaming di Analisi di flusso di cui è stato eseguito il provisioning e numero di richieste al servizio Web di Studio (versione classica), oltre ai 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: