Skala ditt Stream Analytics-jobb med Funktioner i Machine Learning Studio (klassisk)

Dricks

Vi rekommenderar starkt att du använder Azure Machine Learning UDF i stället för Machine Learning Studio (klassisk) UDF för bättre prestanda och tillförlitlighet.

Viktigt!

Stödet för Azure Machine Learning Studio (klassisk) upphör den 31 augusti 2024. Vi rekommenderar att du övergår till Azure Machine Learning vid det datumet.

Från och med den 1 december 2021 kan du inte skapa nya Machine Learning Studio-resurser (klassiska) (arbetsyta och webbtjänstplan). Till och med den 31 augusti 2024 kan du fortsätta att använda befintliga Machine Learning Studio-experiment (klassiska) och webbtjänster. Mer information finns i:

Dokumentationen för Machine Learning Studio (klassisk) dras tillbaka och kanske inte uppdateras i framtiden.

I den här artikeln beskrivs hur du effektivt skalar Azure Stream Analytics-jobb som använder funktioner i Machine Learning Studio (klassisk). Information om hur du skalar Stream Analytics-jobb i allmänhet finns i artikeln Skalningsjobb.

Vad är en Studio-funktion (klassisk) i Stream Analytics?

En Machine Learning Studio-funktion (klassisk) i Stream Analytics kan användas som ett vanligt funktionsanrop i Stream Analytics-frågespråket. I bakgrunden är dock dessa funktionsanrop faktiskt Studio-webbtjänstbegäranden (klassisk).

Du kan förbättra dataflödet för Studio-webbtjänstbegäranden (klassisk) genom att "batchindela" flera rader tillsammans i samma API-anrop för webbtjänsten. Den här grupperingen kallas för en mini-batch. Mer information finns i Machine Learning Studio (klassiska) webbtjänster. Stöd för Studio (klassisk) i Stream Analytics.

Konfigurera ett Stream Analytics-jobb med Studio-funktioner (klassiska)

Det finns två parametrar för att konfigurera den Studio-funktion (klassisk) som används av ditt Stream Analytics-jobb:

  • Batchstorleken för studiofunktionen (klassisk) anropar.
  • Antalet enheter för direktuppspelning (SUS) som har etablerats för Stream Analytics-jobbet.

För att fastställa lämpliga värden för SU:er bestämmer du om du vill optimera svarstiden för Stream Analytics-jobbet eller dataflödet för varje SU. SUs kan alltid läggas till i ett jobb för att öka dataflödet för en välpartitionerad Stream Analytics-fråga. Ytterligare SU:er ökar kostnaden för att köra jobbet.

Fastställa svarstidstoleransen för ditt Stream Analytics-jobb. Om du ökar batchstorleken ökar svarstiden för dina Studio-begäranden (klassiska) och svarstiden för Stream Analytics-jobbet.

Om du ökar batchstorleken kan Stream Analytics-jobbet bearbeta fler händelser med samma antal Studio-webbtjänstbegäranden (klassisk). Ökningen av svarstiden för Studio-webbtjänsten (klassisk) är vanligtvis sublinear till ökningen av batchstorleken.

Det är viktigt att tänka på den mest kostnadseffektiva batchstorleken för en Studio-webbtjänst (klassisk) i en viss situation. Standard batchstorleken för webbtjänstbegäranden är 1 000. Du kan ändra den här standardstorleken med stream analytics REST API eller PowerShell-klienten för Stream Analytics.

När du har bestämt dig för en batchstorlek kan du ange antalet strömningsenheter (SUs) baserat på antalet händelser som funktionen behöver bearbeta per sekund. Mer information om strömningsenheter finns i Stream Analytics-skalningsjobb.

Var 6:e SUS får 20 samtidiga anslutningar till Studio-webbtjänsten (klassisk). Men 1 SU-jobb och 3 SU-jobb får 20 samtidiga anslutningar.

Om ditt program genererar 200 000 händelser per sekund och batchstorleken är 1 000 är den resulterande svarstiden för webbtjänsten 200 ms. Den här kursen innebär att varje anslutning kan göra fem begäranden till Studio-webbtjänsten (klassisk) varje sekund. Med 20 anslutningar kan Stream Analytics-jobbet bearbeta 20 000 händelser på 200 ms och 100 000 händelser på en sekund.

För att bearbeta 200 000 händelser per sekund behöver Stream Analytics-jobbet 40 samtidiga anslutningar, som kommer ut till 12 SU:er. Följande diagram illustrerar begäranden från Stream Analytics-jobbet till studiowebbtjänstslutpunkten (klassisk) – Var 6:e SUS har högst 20 samtidiga anslutningar till Studio-webbtjänsten (klassisk).

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

I allmänhet är B för batchstorlek, L för webbtjänstens svarstid i batchstorlek B i millisekunder, dataflödet för ett Stream Analytics-jobb med N SUS:

Scale Stream Analytics with Studio (classic) Functions Formula

Du kan också konfigurera "maximala samtidiga anrop" på Studio-webbtjänsten (klassisk). Vi rekommenderar att du anger den här parametern till det maximala värdet (200 för närvarande).

Mer information om den här inställningen finns i artikeln Skalning för Machine Learning Studio (klassiska) webbtjänster.

Exempel – Attitydanalys

I följande exempel ingår ett Stream Analytics-jobb med funktionen sentiment analysis Studio (klassisk) enligt beskrivningen i självstudiekursen för Integrering av Stream Analytics Machine Learning Studio (klassisk).

Frågan är en enkel fullständigt partitionerad fråga följt av attitydfunktionen , som du ser i följande exempel:

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

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

Nu ska vi undersöka konfigurationen som krävs för att skapa ett Stream Analytics-jobb, som utför attitydanalys av tweets med en hastighet av 10 000 tweets per sekund.

Kan det här Stream Analytics-jobbet hantera trafiken med hjälp av 1 SU? Jobbet kan hänga med i indata med standard batchstorleken 1 000. Standardsvarstiden för webbtjänsten sentiment analysis Studio (klassisk) (med en standard batchstorlek på 1 000) skapar inte mer än en sekunds svarstid.

Stream Analytics-jobbets totala svarstid eller svarstid från slutpunkt till slutpunkt skulle vanligtvis vara några sekunder. Ta en mer detaljerad titt på det här Stream Analytics-jobbet, särskilt Studio-funktionsanrop (klassisk). Med en batchstorlek på 1 000 tar ett dataflöde på 10 000 händelser cirka 10 begäranden till webbtjänsten. Även med en SU finns det tillräckligt med samtidiga anslutningar för att hantera den här indatatrafiken.

Om händelsefrekvensen för indata ökar med 100 gånger måste Stream Analytics-jobbet bearbeta 1 000 000 tweets per sekund. Det finns två alternativ för att uppnå den ökade skalan:

  1. Öka batchstorleken.
  2. Partitionering av indataströmmen för att bearbeta händelserna parallellt.

Med det första alternativet ökar jobbfördröjningen.

Med det andra alternativet måste du etablera fler SUS:er för att få fler samtidiga Studio-webbtjänstbegäranden (klassisk). Det här större antalet SUS:er ökar jobbkostnaden.

Nu ska vi titta på skalningen med hjälp av följande svarstidsmått för varje batchstorlek:

Svarstid Batchstorlek
200 ms 1 000-händelsebatch eller lägre
250 ms 5 000-händelsebatch
300 ms 10 000-händelsebatch
500 ms 25 000-händelsebatch
  1. Använd det första alternativet (etablerar inte fler SUS:er). Batchstorleken kan ökas till 25 000. Om du ökar batchstorleken på det här sättet kan jobbet bearbeta 1 000 000 händelser med 20 samtidiga anslutningar till Studio-webbtjänsten (klassisk) (med en svarstid på 500 ms per anrop). Så den ytterligare svarstiden för Stream Analytics-jobbet på grund av attitydfunktionsbegäranden mot Studio-webbtjänstbegäranden (klassisk) skulle ökas från 200 ms till 500 ms. Batchstorleken kan dock inte ökas oändligt eftersom Studio-webbtjänsterna (klassiska) kräver att nyttolaststorleken för en begäran är 4 MB eller mindre, och tidsgränsen för webbtjänstbegäranden efter 100 sekunders drift.
  2. Med det andra alternativet lämnas batchstorleken på 1 000, med svarstid på 200 ms webbtjänst, var 20:e samtidiga anslutningar till webbtjänsten skulle kunna bearbeta 1 000 * 20 * 5 händelser = 100 000 per sekund. Så för att bearbeta 1 000 000 händelser per sekund skulle jobbet behöva 60 SUs. Jämfört med det första alternativet skulle Stream Analytics-jobbet göra fler batchbegäranden för webbtjänsten, vilket i sin tur skulle generera en ökad kostnad.

Nedan visas en tabell för dataflödet för Stream Analytics-jobbet för olika SUs- och batchstorlekar (i antal händelser per sekund).

batchstorlek (ML-svarstid) 500 (200 ms) 1 000 (200 ms) 5 000 (250 ms) 10 000 (300 ms) 25 000 (500 ms)
1 SU 2 500 5 000 20 000 30,000 50,000
3 SUS:er 2 500 5 000 20 000 30,000 50,000
6 SUs 2 500 5 000 20 000 30,000 50,000
12 SUs 5 000 10,000 40,000 60 000 100,000
18 SUs 7 500 15 000 60 000 90,000 150 000
24 SUS:er 10,000 20 000 80 000 120 000 200 000
... ... ... ... ... ...
60 SUs 25,000 50,000 200 000 300,000 500,000

Vid det här laget bör du redan ha en god förståelse för hur Studio (klassisk) fungerar i Stream Analytics. Du förstår förmodligen också att Stream Analytics-jobb "hämtar" data från datakällor och varje "pull" returnerar en batch med händelser som Stream Analytics-jobbet ska bearbeta. Hur påverkar den här pull-modellen studiobegäranden (klassiska) webbtjänst?

Normalt är batchstorleken som vi har angett för Studio-funktioner (klassisk) inte exakt delbar med antalet händelser som returneras av varje Stream Analytics-jobb "pull". När detta inträffar anropas Studio-webbtjänsten (klassisk) med "partiella" batchar. Om du använder partiella batchar undviks extra jobbfördröjningar vid sammankoppling av händelser från pull till pull.

I området Övervaka i ett Stream Analytics-jobb har ytterligare tre funktionsrelaterade mått lagts till. De är FUNKTIONSBEGÄRANDEN, FUNKTIONSHÄNDELSER OCH MISSLYCKADE FUNKTIONSBEGÄRANDEN, enligt bilden nedan.

Scale Stream Analytics with Studio (classic) Functions Metrics

Definieras enligt följande:

FUNKTIONSBEGÄRANDEN: Antalet funktionsbegäranden.

FUNKTIONSHÄNDELSER: Antalet händelser i funktionsbegäranden.

MISSLYCKADE FUNKTIONSBEGÄRANDEN: Antalet misslyckade funktionsbegäranden.

Viktiga lärdomar

Om du vill skala ett Stream Analytics-jobb med Studio-funktioner (klassiska) bör du tänka på följande faktorer:

  1. Indatahändelsehastigheten.
  2. Den tolererade svarstiden för stream analytics-jobbet som körs (och därmed batchstorleken för Studio-webbtjänstbegäranden (klassisk).
  3. Etablerade Stream Analytics-SUS:er och antalet Studio-webbtjänstbegäranden (klassisk) (de ytterligare funktionsrelaterade kostnaderna).

En fullständigt partitionerad Stream Analytics-fråga användes som exempel. Om det behövs en mer komplex fråga är microsofts Q&A-frågesida för Azure Stream Analytics en bra resurs för att få ytterligare hjälp från Stream Analytics-teamet.

Nästa steg

Mer information om Stream Analytics finns i: