Qu’est-ce que l’autotune pour les configurations Apache Spark dans Fabric et comment l’activer et le désactiver ?

L’optimisation automatique des configurations Apache Spark permet de réduire le temps d’exécution de la charge de travail et d’optimiser les charges de travail. Il vous permet d’en faire plus avec moins. Cette fonctionnalité réduit le temps d’exécution et surpasse les gains réalisés par les charges de travail paramétrées manuellement par les experts, ce qui nécessite des efforts et des expérimentations considérables.

Il tire parti de l’exécution des données historiques à partir de vos charges de travail pour apprendre de manière itérative les configurations optimales pour une charge de travail donnée et son temps d’exécution.

Important

Microsoft Fabric est actuellement en préversion. Certaines informations portent sur un produit en préversion susceptible d’être substantiellement modifié avant sa publication. Microsoft ne donne aucune garantie, expresse ou implicite, concernant les informations fournies ici.

Paramétrage des requêtes

Actuellement, l’autotune configure trois configurations Apache Spark au niveau de la requête :

  • spark.sql.shuffle.partitions - configure le nombre de partitions à utiliser lors de la lecture aléatoire des données pour les jointures ou les agrégations. La valeur par défaut est 200.
  • spark.sql.autoBroadcastJoinThreshold - configure la taille maximale en octets d’une table qui sera diffusée sur tous les nœuds Worker lors de l’exécution d’une jointure. La valeur par défaut est de 10 Mo.
  • spark.sql.files.maxPartitionBytes - nombre maximal d’octets à empaquetonner dans une seule partition lors de la lecture de fichiers. Fonctionne pour les sources basées sur des fichiers Parquet, JSON et ORC. La valeur par défaut est 128 Mo.

Étant donné qu’aucune donnée historique n’est disponible lors de la première exécution de l’autotune, les configurations sont définies en fonction d’un modèle de base de référence. Ce modèle s’appuie sur des heuristiques liées au contenu et à la structure de la charge de travail elle-même. Toutefois, à mesure que la même requête ou la même charge de travail est exécutée à plusieurs reprises, nous observerons des améliorations de plus en plus significatives de l’autotune. Comme les résultats des exécutions précédentes sont utilisés pour affiner le modèle et l’adapter à un espace de travail ou une charge de travail spécifique.

Notes

Lorsque l’algorithme explore différentes configurations, vous pouvez remarquer des différences mineures dans les résultats. Cela est attendu, car l’autotune fonctionne de manière itérative et s’améliore à chaque répétition de la même requête.

Vue d’ensemble de l’algorithme de paramétrage de configuration

Pour la première exécution de la requête, lors de l’envoi, un modèle Machine Learning (ML) initialement formé à l’aide de requêtes d’évaluation open source standard (par exemple, TPC-DS) guide la recherche autour des voisins du paramètre actuel (à partir de la valeur par défaut). Parmi les candidats voisins, le modèle ML sélectionne la meilleure configuration avec le temps d’exécution prédit le plus court. Dans cette exécution, le « centroïde » est la configuration par défaut, autour de laquelle l’autotune génère de nouveaux candidats.

En fonction des performances de la deuxième exécution par configuration suggérée, nous réentraînons le modèle ML en ajoutant la nouvelle observation de cette requête et mettons à jour le centroïde en comparant les performances des deux dernières exécutions. Si l’exécution précédente est meilleure, le centroïde est mis à jour dans le sens inverse de la mise à jour précédente (similaire à l’approche d’impulsion dans l’entraînement DNN) ; si la nouvelle exécution est meilleure, le paramètre de configuration le plus récent devient le nouveau centroïde. De façon itérative, l’algorithme recherche progressivement dans la direction avec de meilleures performances.

Activer ou désactiver l’autotune

L’autotune est désactivé par défaut et contrôlé par les paramètres de configuration Apache Spark. Activez facilement l’autotune au sein d’une session en exécutant le code suivant dans votre notebook ou en l’ajoutant dans votre code de définition de travail Spark :

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

Pour vérifier et confirmer son activation, utilisez les commandes suivantes :

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

Pour désactiver l’autotune, exécutez les commandes suivantes :

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

Note de transparence

Microsoft suit la norme d’IA responsable et cette note de transparence vise à fournir une documentation claire définissant les utilisations prévues d’Autotune et la preuve que la fonctionnalité est adaptée à son objectif avant que le service ne devienne disponible en externe. Nous comprenons l’importance de la transparence et nous assurons que nos clients disposent des informations nécessaires pour prendre des décisions éclairées lors de l’utilisation de nos services.

Utilisations prévues de l’autotune

L’objectif principal de l’optimisation automatique est d’optimiser les performances des charges de travail Apache Spark en automatisant le processus de réglage de la configuration Apache Spark. Le système est conçu pour être utilisé par les ingénieurs données, les scientifiques des données et d’autres professionnels impliqués dans le développement et le déploiement de charges de travail Apache Spark. Les utilisations prévues de l’autotune sont les suivantes :

  • Réglage automatique des configurations Apache Spark pour réduire le temps d’exécution de la charge de travail afin d’accélérer le processus de développement
  • Réduction de l’effort manuel requis pour le réglage de la configuration d’Apache Spark
  • Tirer parti de l’exécution des données historiques à partir des charges de travail pour apprendre de manière itérative les configurations optimales

Preuve que l’autotune est adaptée à l’objectif

Pour nous assurer qu’Autotune répond aux normes de performances souhaitées et qu’il est adapté à son utilisation prévue, nous avons effectué des tests et une validation rigoureux. La preuve comprend :

  1. Tests et validation internes approfondis à l’aide de différentes charges de travail et jeux de données Apache Spark pour confirmer l’efficacité des algorithmes d’optimisation automatique
  2. Comparaisons avec d’autres techniques d’optimisation de la configuration Apache Spark, illustrant les améliorations de performances et les gains d’efficacité obtenus par l’optimisation automatique
  3. Études de cas et témoignages de clients présentant des applications réussies d’Autotune dans des projets réels
  4. Conformité aux exigences de sécurité et de confidentialité standard du secteur, garantissant la protection des données client et de la propriété intellectuelle

Nous voulons nous assurer que nous hiérarchisons la confidentialité et la sécurité des données. Vos données seront utilisées uniquement pour entraîner le modèle qui sert votre charge de travail spécifique. Nous prenons des mesures strictes pour nous assurer qu’aucune information sensible n’est utilisée dans nos processus de stockage ou de formation.