Hvad er autotune til Apache Spark-konfigurationer i Fabric?

Autotune justerer automatisk Apache Spark-konfigurationen for at fremskynde udførelsen af arbejdsbelastningen og for at optimere den overordnede ydeevne. Autotune sparer tid og ressourcer sammenlignet med manuel justering, hvilket kræver omfattende indsats, ressourcer, tid og eksperimenter. Autotune bruger historiske udførelsesdata fra dine arbejdsbelastninger til iterativt at finde og anvende de mest effektive konfigurationer for en bestemt arbejdsbelastning.

Bemærk

Funktionen til automatisk justering af forespørgsler i Microsoft Fabric er i øjeblikket en prøveversion.

Justering af forespørgsler

Autotune konfigurerer tre Spark-indstillinger for hver af dine forespørgsler separat:

  • spark.sql.shuffle.partitions – Angiver partitionsantallet for datablanding under joinforbindelser eller sammenlægninger. Standardværdien er 200.
  • spark.sql.autoBroadcastJoinThreshold – Angiver den maksimale tabelstørrelse i byte, der udsendes til alle medarbejdernoder, når joinhandlingen udføres. Standardværdien er 10 MB.
  • spark.sql.files.maxPartitionBytes – Definerer det maksimale antal byte, der skal pakkes til en enkelt partition, når filer læses. Fungerer for parquet-, JSON- og ORC-filbaserede kilder. Standarden er 128 MB.

Tip

Autotune-forespørgselsjustering undersøger individuelle forespørgsler og opretter en særskilt ML-model for hver forespørgsel. Det er specifikt rettet mod:

  • Gentagne forespørgsler
  • Langvarige forespørgsler (dem med mere end 15 sekunders udførelse)
  • Spark SQL API-forespørgsler (undtagen dem, der er skrevet i RDD-API'en, som er meget sjældne), men vi optimerer alle forespørgsler uanset sproget (Scala, PySpark, R, Spark SQL)

Denne funktion er kompatibel med notesbøger, Spark-jobdefinitioner og pipelines. Fordelene varierer afhængigt af forespørgslens kompleksitet, de anvendte metoder og strukturen. Omfattende test har vist, at de største fordele opnås med forespørgsler, der er relateret til udforskende dataanalyser – f.eks. læsning af data, kørsel af joinforbindelser, sammenlægninger og sortering.

Skærmbillede af udførelsestid med autotune aktiveret.

AI-baseret intuition bag Autotune

Funktionen Autotune bruger en iterativ proces til at optimere forespørgslens ydeevne. Det starter med en standardkonfiguration og anvender en model til maskinel indlæring til at evaluere effektiviteten. Når en bruger sender en forespørgsel, henter systemet de gemte modeller baseret på de tidligere interaktioner. Det genererer potentielle konfigurationer omkring en standardindstilling med navnet centroid. Den bedste kandidat, der forudsiges af modellen, anvendes. Efter udførelse af forespørgslen sendes ydelsesdataene tilbage til systemet for at tilpasse modellen.

Feedbackløkken flytter gradvist centroiden mod optimale indstillinger. Den afgrænser ydeevnen over tid, samtidig med at risikoen for regression minimeres. Kontinuerlige opdateringer, der er baseret på brugerforespørgsler, muliggør finjustering af benchmarks for ydeevne. Desuden opdaterer processen centroidkonfigurationerne for at sikre, at modellen trinvist bevæger sig i retning af mere effektive indstillinger. Dette opnås ved at evaluere tidligere resultater og bruge dem til at vejlede fremtidige justeringer. Den bruger alle datapunkterne til at afhjælpe virkningen af uregelmæssigheder.

Fra et ansvarligt AI-perspektiv indeholder funktionen Autotune gennemsigtighedsmekanismer, der er designet til at holde dig informeret om dit dataforbrug og dine fordele. Sikkerheden og beskyttelsen af personlige oplysninger er i overensstemmelse med Microsofts standarder. Løbende overvågning bevarer ydeevne og systemintegritet efter start.

Aktivér autotune

Autotune er tilgængelig på tværs af alle produktionsområder, men er deaktiveret som standard. Du kan aktivere den via spark-konfigurationsindstillingen i miljøet. Hvis du vil aktivere Autotune, skal du enten oprette et nyt miljø eller for det eksisterende miljø angive Spark-egenskaben 'spark.ms.autotune.enabled = true' som vist på skærmbilledet nedenfor. Denne indstilling nedarves derefter af alle notesbøger og job, der kører i det pågældende miljø, og justerer dem automatisk.

Skærmbillede af aktivering af autotune.

Autotune indeholder en indbygget mekanisme til overvågning af ydeevnen og registrering af regressioner for ydeevnen. Hvis en forespørgsel f.eks. behandler en usædvanlig stor mængde data, deaktiveres Autotune automatisk. Det kræver typisk 20 til 25 gentagelser for at lære og identificere den optimale konfiguration.

Bemærk

Autotune er kompatibel med Fabric Runtime 1.1 og Runtime 1.2. Autotune fungerer ikke, når tilstanden med høj samtidighed, eller når det private slutpunkt er aktiveret. Autotune kan dog uden problemer integreres med automatisk skalering, uanset konfiguration.

Du kan styre Autotune via Spark Indstillinger for din respektive Spark-notesbog eller Spark Job Definition-kode. Hvis du vil deaktivere Autotune, skal du udføre følgende kommandoer som den første celle (notesbog) eller linje i koden (SJD).

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

Casestudie

Når du udfører en Spark-forespørgsel, opretter Autotune en brugerdefineret ML-model, der er dedikeret til at optimere udførelsen af forespørgslen. Den analyserer forespørgselsmønstre og ressourcebehov. Overvej en indledende forespørgsel, der filtrerer et datasæt baseret på en bestemt attribut, f.eks. et land. I dette eksempel bruges geografisk filtrering, men princippet gælder universelt for enhver attribut eller handling i forespørgslen:

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

Autotune lærer af denne forespørgsel og optimerer efterfølgende udførelser. Når forespørgslen f.eks. ændres ved at ændre filterværdien eller anvende en anden datatransformation, forbliver forespørgslens strukturelle essens ofte konsistent:

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

På trods af ændringer identificerer autotune den grundlæggende struktur i den nye forespørgsel og implementerer tidligere lærte optimeringer. Denne funktion sikrer vedvarende høj effektivitet uden behov for manuel omkonfiguration for hver ny forespørgsels-gentagelse.

Logfiler

For hver af dine forespørgsler bestemmer autotune de mest optimale indstillinger for tre Spark-konfigurationer. Du kan få vist de foreslåede indstillinger ved at gå til loggene. De konfigurationer, der anbefales af autotune, findes i driverlogfilerne, især de poster, der starter med [Autotune].

Skærmbillede af autotune-logge i Overvågningshub.

Du kan finde forskellige typer poster i dine logge. Følgende omfatter de vigtigste:

Status Beskrivelse
AUTOTUNE_DISABLED Springes. Autotune er deaktiveret. forhindre telemetridatahentning og forespørgselsoptimering. Gør det muligt for Autotune at bruge sine funktioner fuldt ud, samtidig med at kundernes personlige oplysninger respekteres.".
QUERY_TUNING_DISABLED Springes. Automatisk justering af forespørgsler er deaktiveret. Aktivér den for at finjustere indstillingerne for dine Spark SQL-forespørgsler.
QUERY_PATTERN_NOT_MATCH Springes. Forespørgselsmønsteret stemmer ikke overens. Autotune gælder for skrivebeskyttede forespørgsler.
QUERY_DURATION_TOO_SHORT Springes. Din forespørgselsvarighed er for kort til at blive optimeret. Autotune kræver længere forespørgsler for at opnå effektiv justering. Forespørgsler skal køre i mindst 15 sekunder.
QUERY_TUNING_SUCCEED Vellykket. Forespørgselsjusteringen er fuldført. Der anvendes optimale sparkindstillinger.

Gennemsigtighedsnote

I overensstemmelse med den ansvarlige AI-standard har dette afsnit til formål at tydeliggøre brug og validering af Autotune-funktionen, fremme gennemsigtighed og muliggøre informeret beslutningstagning.

Formålet med Autotune

Autotune er udviklet til at forbedre Apache Spark-arbejdsbelastningens effektivitet, primært for datateknikere. Dens vigtigste funktioner omfatter:

  • Automatiser justering af Apache Spark-konfiguration for at reducere kørselstider.
  • Minimering af manuel justering.
  • Brug historiske arbejdsbelastningsdata til at afgrænse konfigurationer iterativt.

Validering af Autotune

Autotune har gennemgået omfattende test for at sikre dens effektivitet og sikkerhed:

  • Strenge test med forskellige Spark-arbejdsbelastninger for at kontrollere effektiviteten af justeringsalgoritmen.
  • Benchmarking i forhold til spark-standardoptimeringsmetoder for at demonstrere ydeevnefordele.
  • Casestudier fra den virkelige verden, der fremhæver Autotunes praktiske værdi.
  • Overholdelse af strenge standarder for sikkerhed og beskyttelse af personlige oplysninger for at beskytte brugerdata.

Brugerdata bruges udelukkende til at forbedre din arbejdsbelastnings ydeevne med robust beskyttelse for at forhindre misbrug eller eksponering af følsomme oplysninger.