Che cos'è l'ottimizzazione automatica per le configurazioni di Apache Spark in Fabric?

L'ottimizzazione automatica regola automaticamente la configurazione di Apache Spark per velocizzare l'esecuzione del carico di lavoro e ottimizzare le prestazioni complessive. L'ottimizzazione automatica consente di risparmiare tempo e risorse rispetto all'ottimizzazione manuale, che richiede un'ampia gamma di risorse, risorse, tempo e sperimentazione. L'ottimizzazione automatica usa i dati di esecuzione cronologici dei carichi di lavoro per individuare e applicare in modo iterativo le configurazioni più efficaci per un carico di lavoro specifico.

Nota

La funzionalità di ottimizzazione delle query di ottimizzazione automatica in Microsoft Fabric è attualmente in anteprima.

Ottimizzazione delle query

Autotune configura tre impostazioni spark per ognuna delle query separatamente:

  • spark.sql.shuffle.partitions : imposta il numero di partizioni per la sequenza casuale dei dati durante join o aggregazioni. Il valore predefinito è 200.
  • spark.sql.autoBroadcastJoinThreshold - Imposta le dimensioni massime della tabella in byte trasmesse a tutti i nodi di lavoro quando viene eseguita l'operazione di join. Il valore predefinito è 10 MB.
  • spark.sql.files.maxPartitionBytes - Definisce il numero massimo di byte da comprimere in una singola partizione durante la lettura dei file. Funziona per origini basate su file Parquet, JSON e ORC. Il valore predefinito è 128 MB.

Suggerimento

L'ottimizzazione delle query di ottimizzazione automatica esamina le singole query e crea un modello di Machine Learning distinto per ogni query. È destinato in particolare a:

  • Query ripetitive
  • Query con esecuzione prolungata (con più di 15 secondi di esecuzione)
  • Query Spark SQL (escluse quelle scritte nell'API RDD, che sono molto rare)

Questa funzionalità è compatibile con notebook, definizioni di processi Spark e pipeline.

Screenshot del tempo di esecuzione con ottimizzazione automatica abilitata.

Intuizione basata sull'intelligenza artificiale dietro l'autotune

La funzionalità di ottimizzazione automatica usa un processo iterativo per ottimizzare le prestazioni delle query. Inizia con una configurazione predefinita e usa un modello di Machine Learning per valutare l'efficacia. Quando un utente invia una query, il sistema recupera i modelli archiviati in base alle interazioni precedenti. Genera potenziali configurazioni relative a un'impostazione predefinita denominata centroid. Viene applicato il candidato migliore stimato dal modello. Dopo l'esecuzione della query, i dati sulle prestazioni vengono inviati al sistema per perfezionare il modello.

Il ciclo di feedback sposta gradualmente il centroide verso le impostazioni ottimali. Ottimizza le prestazioni nel tempo riducendo al minimo il rischio di regressione. Gli aggiornamenti continui basati sulle query utente consentono di perfezionare i benchmark delle prestazioni. Inoltre, il processo aggiorna le configurazioni centroidi per garantire che il modello passi verso impostazioni più efficienti in modo incrementale. Ciò si ottiene valutando le prestazioni passate e utilizzandole per guidare le modifiche future. Usa tutti i punti dati per attenuare l'impatto delle anomalie.

Dal punto di vista dell'IA responsabile, la funzionalità autotune include meccanismi di trasparenza progettati per tenere informati l'utilizzo e i vantaggi dei dati. La sicurezza e la privacy sono allineate agli standard di Microsoft. Il monitoraggio continuo mantiene le prestazioni e l'integrità del sistema dopo l'avvio.

Abilitare la regolazione automatica

L'ottimizzazione automatica è disponibile in tutte le aree, ma è disabilitata per impostazione predefinita. È possibile abilitarla in base alle esigenze tramite le impostazioni di configurazione di Apache Spark. È possibile abilitare l'ottimizzazione automatica all'interno di una sessione eseguendo il codice seguente nel notebook o includendolo nel notebook Spark o nel codice di definizione del processo Spark. Inoltre, Autotune ha un meccanismo predefinito per il monitoraggio delle prestazioni e per rilevare le regressioni delle prestazioni. Ad esempio, se la query si comporta improvvisamente in modo anomalo ed elabora più dati del solito, l'ottimizzazione automatica viene disattivata automaticamente. L'ottimizzazione automatica richiede diverse iterazioni per apprendere e identificare la configurazione ottimale. In genere, la configurazione ottimale viene determinata dopo 20-25 iterazioni.

Nota

Autotune è compatibile con Fabric Runtime 1.1 e Runtime 1.2. Autotune non funziona quando la modalità di concorrenza elevata o quando l'endpoint privato è abilitato. Tuttavia, l'ottimizzazione automatica si integra perfettamente con la scalabilità automatica, indipendentemente dalla configurazione.

%%sql 
SET spark.ms.autotune.enabled=TRUE 

Per verificare e confermare l'attivazione, usare i comandi seguenti:

%%sql 
GET spark.ms.autotune.enabled

Per disabilitare la regolazione automatica, eseguire i comandi seguenti:

%%sql 
SET spark.ms.autotune.enabled=FALSE 

Case study

Quando si esegue una query Spark, l'ottimizzazione automatica crea un modello di Machine Learning personalizzato dedicato all'ottimizzazione dell'esecuzione della query. Analizza i modelli di query e le esigenze delle risorse. Si consideri un filtro di query iniziale che filtra un set di dati in base a un attributo specifico, ad esempio un paese. Anche se in questo esempio viene usato il filtro geografico, il principio si applica universalmente a qualsiasi attributo o operazione all'interno della query:

%%pyspark
df.filter(df.country == "country-A")

Autotune apprende da questa query, ottimizzando le esecuzioni successive. Quando la query cambia, ad esempio, modificando il valore del filtro o applicando una trasformazione dei dati diversa, l'essenza strutturale della query rimane spesso coerente:

%%pyspark
df.filter(df.country == "country-B")

Nonostante le modifiche, l'ottimizzazione automatica identifica la struttura fondamentale della nuova query, implementando ottimizzazioni apprese in precedenza. Questa funzionalità garantisce un'efficienza elevata sostenuta senza la necessità di riconfigurazione manuale per ogni nuova iterazione di query.

Registri

Per ognuna delle query, l'ottimizzazione automatica determina le impostazioni più ottimali per tre configurazioni Spark. È possibile visualizzare le impostazioni suggerite passando ai log. Le configurazioni consigliate per l'ottimizzazione automatica si trovano nei log del driver, in particolare quelle voci che iniziano con [Autotune].

Screenshot dei log di ottimizzazione automatica all'interno dell'hub di monitoraggio.

È possibile trovare vari tipi di voci nei log. Di seguito sono riportate le chiavi seguenti:

Stato Descrizione
AUTOTUNE_DISABLED Operazione ignorata. Autotune è disabilitato; impedire il recupero dei dati di telemetria e l'ottimizzazione delle query. Abilitare Autotune per usare completamente le sue funzionalità rispettando la privacy dei clienti".
QUERY_TUNING_DISABLED Operazione ignorata. L'ottimizzazione automatica delle query è disabilitata. Abilitarlo per ottimizzare le impostazioni per le query Spark SQL.
QUERY_PATTERN_NOT_MATCH Operazione ignorata. Il criterio di query non corrisponde. Autotune è efficace per le query di sola lettura.
QUERY_DURATION_TOO_SHORT Operazione ignorata. La durata della query è troppo breve per ottimizzare. L'ottimizzazione automatica richiede query più lunghe per un'ottimizzazione efficace. Le query devono essere eseguite per almeno 15 secondi.
QUERY_TUNING_SUCC edizione Enterprise D Esito positivo. Ottimizzazione delle query completata. Impostazioni spark ottimali applicate.

Nota sulla trasparenza

In conformità allo standard di IA responsabile, questa sezione mira a chiarire gli usi e la convalida della funzionalità autotune, promuovendo la trasparenza e abilitando il processo decisionale informato.

Scopo dell'autotune

Autotune è sviluppato per migliorare l'efficienza del carico di lavoro apache Spark, principalmente per i professionisti dei dati. Le funzioni chiave includono:

  • Automazione dell'ottimizzazione della configurazione di Apache Spark per ridurre i tempi di esecuzione.
  • Riduzione al minimo delle attività di ottimizzazione manuale.
  • Utilizzo dei dati cronologici del carico di lavoro per perfezionare le configurazioni in modo iterativo.

Convalida dell'ottimizzazione automatica

Autotune è stato sottoposto a test approfonditi per garantire la sua efficacia e sicurezza:

  • Test rigorosi con carichi di lavoro Spark diversi per verificare l'efficacia dell'algoritmo di ottimizzazione.
  • Benchmarking su metodi di ottimizzazione Spark standard per illustrare i vantaggi delle prestazioni.
  • Case study reali che evidenziano il valore pratico di Autotune.
  • Conformità a rigorosi standard di sicurezza e privacy per proteggere i dati degli utenti.

I dati utente vengono usati esclusivamente per migliorare le prestazioni del carico di lavoro, con protezioni affidabili per impedire l'uso improprio o l'esposizione di informazioni riservate.