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

Autotune ottimizza automaticamente le configurazioni di Apache Spark per ridurre al minimo il tempo di esecuzione del carico di lavoro e ottimizza i carichi di lavoro. Consente di ottenere di più con meno. Questa funzionalità riduce il tempo di esecuzione e supera i guadagni ottenuti da carichi di lavoro ottimizzati manualmente da esperti, che richiedono notevoli sforzi e sperimentazione.

Sfrutta l'esecuzione cronologica dei dati dai carichi di lavoro per apprendere in modo iterativo le configurazioni ottimali per un determinato carico di lavoro e il relativo tempo di esecuzione.

Importante

Microsoft Fabric è attualmente disponibile in ANTEPRIMA. Queste informazioni si riferiscono a un prodotto in versione preliminare che può essere modificato in modo sostanziale prima del rilascio. Microsoft non fornisce alcuna garanzia, espressa o implicita, rispetto alle informazioni fornite qui.

Ottimizzazione delle query

Attualmente, autotune configura tre configurazioni a livello di query di Apache Spark:

  • spark.sql.shuffle.partitions : consente di configurare il numero di partizioni da usare durante la sequenza casuale dei dati per join o aggregazioni. Il valore predefinito è 200.
  • spark.sql.autoBroadcastJoinThreshold : configura le dimensioni massime in byte per una tabella che verrà trasmessa a tutti i nodi di lavoro durante l'esecuzione di un join. Il valore predefinito è 10 MB.
  • spark.sql.files.maxPartitionBytes : 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.

Poiché non sono disponibili dati cronologici durante la prima esecuzione di autotune, le configurazioni verranno impostate in base a un modello di base. Questo modello si basa sull'euristica correlata al contenuto e alla struttura del carico di lavoro stesso. Tuttavia, poiché la stessa query o lo stesso carico di lavoro viene eseguita ripetutamente, si osserveranno miglioramenti sempre più significativi da autotune. Man mano che i risultati delle esecuzioni precedenti vengono usati per ottimizzare il modello e personalizzarlo in base a un'area di lavoro o a un carico di lavoro specifico.

Nota

Man mano che l'algoritmo esplora varie configurazioni, è possibile notare piccole differenze nei risultati. Questa operazione è prevista, poiché autotune funziona in modo iterativo e migliora con ogni ripetizione della stessa query.

Panoramica dell'algoritmo di ottimizzazione della configurazione

Per la prima esecuzione della query, al momento dell'invio, un modello di Machine Learning (ML) inizialmente sottoposto a training usando query di benchmark open source standard (ad esempio, TPC-DS) guiderà la ricerca intorno ai vicini dell'impostazione corrente (a partire dall'impostazione predefinita). Tra i candidati vicini, il modello di Machine Learning seleziona la configurazione migliore con il tempo di esecuzione stimato più breve. In questa esecuzione, il "centroid" è la configurazione predefinita, intorno alla quale l'ottimizzazione automatica genera nuovi candidati.

In base alle prestazioni della seconda esecuzione per ogni configurazione suggerita, si ripete il training del modello di Machine Learning aggiungendo la nuova osservazione da questa query e aggiornando il centroid confrontando le prestazioni delle ultime due esecuzioni. Se la corsa precedente è migliore, il centroide verrà aggiornato nella direzione inversa dell'aggiornamento precedente (simile all'approccio di slancio nel training DNN); se la nuova esecuzione è migliore, l'impostazione di configurazione più recente diventa il nuovo centroid. In modo iterativo, l'algoritmo cercherà gradualmente nella direzione con prestazioni migliori.

Abilitare o disabilitare la funzionalità di ottimizzazione automatica

Autotune è disabilitato per impostazione predefinita ed è controllato dalle impostazioni di configurazione di Apache Spark. Abilitare facilmente Autotune all'interno di una sessione eseguendo il codice seguente nel notebook o aggiungendolo nel codice di definizione del processo Spark:

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

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

%%sql 
GET spark.ms.autotune.queryTuning.enabled

Per disabilitare Autotune, eseguire i comandi seguenti:

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

Nota sulla trasparenza

Microsoft segue lo standard di intelligenza artificiale responsabile e questa nota sulla trasparenza mira a fornire una documentazione chiara che definisce gli usi previsti di Autotune e l'evidenza che la funzionalità è adatta allo scopo prima che il servizio diventi disponibile esternamente. Microsoft comprende l'importanza della trasparenza e garantisce che i nostri clienti dispongano delle informazioni necessarie per prendere decisioni informate quando si usano i nostri servizi.

Usi previsti dell'Autotune

L'obiettivo principale di Autotune è ottimizzare le prestazioni dei carichi di lavoro apache Spark automatizzando il processo di ottimizzazione della configurazione di Apache Spark. Il sistema è progettato per essere usato da data engineer, data scientist e altri professionisti coinvolti nello sviluppo e nella distribuzione di carichi di lavoro Apache Spark. Gli usi previsti di Autotune includono:

  • Ottimizzazione automatica delle configurazioni di Apache Spark per ridurre al minimo il tempo di esecuzione del carico di lavoro per accelerare il processo di sviluppo
  • Riduzione del lavoro manuale richiesto per l'ottimizzazione della configurazione di Apache Spark
  • Uso dell'esecuzione cronologica dei dati dai carichi di lavoro per apprendere in modo iterativo configurazioni ottimali

Prove che l'Autotune è adatto a scopo

Per garantire che Autotune soddisfi gli standard di prestazioni desiderati e sia adatto all'uso previsto, abbiamo condotto test e convalida rigorosi. L'evidenza include:

  1. Test e convalida interni completi usando vari carichi di lavoro e set di dati di Apache Spark per verificare l'efficacia degli algoritmi di ottimizzazione automatica
  2. Confronti con tecniche alternative di ottimizzazione della configurazione di Apache Spark, che illustrano i miglioramenti delle prestazioni e l'efficienza ottenuti da Autotune
  3. Case study e testimonianze dei clienti che mostrano applicazioni di successo di Autotune in progetti reali
  4. Conformità ai requisiti di sicurezza e privacy standard del settore, garantendo la protezione dei dati dei clienti e della proprietà intellettuale

Vogliamo garantire che la privacy e la sicurezza dei dati siano prioritarie. I dati verranno usati solo per eseguire il training del modello che gestisce il carico di lavoro specifico. Vengono adottate misure rigorose per garantire che nessuna informazione sensibile venga usata nei processi di archiviazione o training.