Qu’est-ce que le réglage automatique pour les configurations Apache Spark dans Fabric ?

Le réglage automatique ajuste automatiquement la configuration d’Apache Spark afin d’accélérer l’exécution de la charge de travail et d’optimiser les performances globales. Le réglage automatique permet d’économiser du temps et des ressources par rapport au réglage manuel qui nécessite beaucoup d’efforts, de ressources, de temps et d’expérimentation. Le réglage automatique utilise les données d’exécution historiques de vos charges de travail pour découvrir et appliquer de manière itérative les configurations les plus efficaces pour une charge de travail spécifique.

Remarque

Le réglage automatique des requêtes de Microsoft Fabric est actuellement en phase d’aperçu.

Paramétrage des requêtes

Le réglage automatique configure trois paramètres Spark pour chacune de vos requêtes séparément :

  • spark.sql.shuffle.partitions – Définit le nombre de partitions pour le mélange des données pendant les jointures ou les agrégations. La valeur par défaut est 200.
  • spark.sql.autoBroadcastJoinThreshold – Définit la taille maximale de la table en octets qui est diffusée à tous les nœuds Worker lors de l’exécution de l’opération de jointure. La valeur par défaut est 10 Mo.
  • spark.sql.files.maxPartitionBytes – Définit le nombre maximum d'octets à regrouper 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 de 128 Mo.

Conseil

Le réglage automatique des requêtes examine les requêtes individuelles et crée un modèle ML distinct pour chacune d’entre elles. Il cible spécifiquement :

  • Les requêtes répétitives
  • Les requêtes de longue durée (celles dont l’exécution dure plus de 15 secondes)
  • Les requêtes Spark SQL (à l’exception de celles écrites dans l’API RDD, qui sont très rares)

Cette fonctionnalité est compatible avec les notebooks, les définitions de tâches Spark et les pipelines.

Capture d’écran du temps d’exécution avec le réglage automatique activé.

Intuition basée sur l’IA derrière le réglage automatique

La fonctionnalité de réglage automatique utilise un processus itératif pour optimiser les performances des requêtes. Elle commence par une configuration par défaut et emploie un modèle Machine Learning pour évaluer l’efficacité. Lorsqu’un utilisateur soumet une requête, le système récupère les modèles stockés en fonction des interactions précédentes. Il génère des configurations potentielles autour d’un paramètre par défaut appelé centroïde. Le meilleur candidat prédit par le modèle est appliqué. Après l’exécution de la requête, les données de performance sont renvoyées au système pour affiner le modèle.

La boucle de rétroaction déplace progressivement le centroïde vers les paramètres optimaux. Elle affine les performances au fil du temps tout en minimisant le risque de régression. Les mises à jour continues basées sur les requêtes des utilisateurs permettent d’affiner les repères de performance. En outre, le processus met à jour les configurations du centroïde pour s’assurer que le modèle évolue vers des paramètres plus efficaces de manière incrémentale. Pour ce faire, les performances passées sont évaluées et utilisées pour guider les ajustements futurs. Il utilise tous les points de données pour atténuer l’impact des anomalies.

Du point de vue de l’IA responsable, la fonctionnalité de réglage automatique comprend des mécanismes de transparence conçus pour vous tenir informé de l’utilisation de vos données et des avantages qui en découlent. La sécurité et la confidentialité sont conformes aux normes de Microsoft. La surveillance continue maintient les performances et l’intégrité du système après le lancement.

Activer le réglage automatique

Le réglage automatique est disponible dans toutes les régions, mais il est désactivé par défaut. Vous pouvez l’activer si nécessaire via les paramètres de configuration d’Apache Spark. Vous pouvez activer le réglage automatique dans une session en exécutant le code suivant dans votre notebook ou en l’incluant dans votre notebook Spark ou dans le code de définition de la tâche Spark. En outre, le réglage automatique dispose d’un mécanisme intégré pour le monitoring des performances et pour détecter les régressions de performances. Par exemple, si votre requête se comporte soudainement de manière anormale et traite plus de données que d’habitude, le réglage automatique se désactive automatiquement. Le réglage automatique nécessite plusieurs itérations pour apprendre et identifier la configuration optimale. En général, la configuration optimale est déterminée après 20 à 25 itérations.

Remarque

Le réglage automatique est compatible avec Fabric Runtime 1.1 et Runtime 1.2. Le réglage automatique ne fonctionne pas lorsque le mode d’accès concurrentiel élevé ou le point de terminaison privé sont activés. Cependant, le réglage automatique s’intègre de manière transparente à la mise à l’échelle automatique, quelle que soit sa configuration.

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

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

%%sql 
GET spark.ms.autotune.enabled

Pour désactiver le réglage automatique, exécutez les commandes suivantes :

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

Étude de cas

Lors de l’exécution d’une requête Spark, le réglage automatique crée un modèle ML personnalisé dédié à l’optimisation de l’exécution de la requête. Il analyse les modèles de requête et les besoins en ressources. Considérez une requête initiale filtrant un jeu de données en fonction d’un attribut spécifique, tel qu’un pays. Bien que cet exemple utilise le filtrage géographique, le principe s’applique universellement à n’importe quel attribut ou opération de la requête :

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

Le réglage automatique apprend de cette requête, optimisant ainsi les exécutions ultérieures. Lorsque la requête change, par exemple en modifiant la valeur du filtre ou en appliquant une transformation de données différente, l’essence structurelle de la requête reste souvent cohérente :

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

Malgré les modifications, le réglage automatique identifie la structure fondamentale de la nouvelle requête et implémente les optimisations apprises précédemment. Cette capacité garantit une efficacité élevée et durable sans qu’il soit nécessaire de reconfigurer manuellement chaque nouvelle itération de la requête.

Journaux d’activité

Pour chacune de vos requêtes, le réglage automatique détermine les paramètres les plus optimaux pour trois configurations Spark. Vous pouvez consulter les paramètres suggérés en naviguant vers les journaux. Les configurations recommandées par le réglage automatique se trouvent dans les journaux du pilote, plus précisément les entrées commençant par [Autotune].

Capture d’écran des journaux de réglage automatique à l’intérieur de Monitoring Hub.

Vous pouvez trouver différents types d’entrées dans vos journaux. Les principales sont les suivantes :

Statut Description
AUTOTUNE_DISABLED Ignoré. Le réglage automatique est désactivé, ce qui empêche la récupération des données de télémétrie et l’optimisation des requêtes. Activez le réglage automatique pour utiliser pleinement ses capacités tout en respectant la vie privée de vos clients. ».
QUERY_TUNING_DISABLED Ignoré. Le réglage automatique des requêtes est désactivé. Activez-le pour affiner les paramètres de vos requêtes SQL Spark.
QUERY_PATTERN_NOT_MATCH Ignoré. Le modèle de requête ne correspond pas. Le réglage automatique est efficace pour les requêtes en lecture seule.
QUERY_DURATION_TOO_SHORT Ignoré. La durée de votre requête est trop courte pour être optimisée. Le réglage automatique nécessite des requêtes plus longues pour un réglage efficace. Les requêtes doivent être exécutées pendant au moins 15 secondes.
QUERY_TUNING_SUCCEED Opération réussie. Le réglage de requête est terminé. Les paramètres optimaux de spark ont été appliqués.

Note de transparence

Conformément à la norme d’IA responsable, cette section vise à clarifier l’utilisation et la validation de la fonctionnalité de réglage automatique, afin de promouvoir la transparence et de permettre une prise de décision en connaissance de cause.

Objectif de réglage automatique

Le réglage automatique est développé pour améliorer l’efficacité de la charge de travail Apache Spark, principalement pour les professionnels des données. Ses principales fonctions sont les suivantes :

  • Automatiser le réglage de la configuration d’Apache Spark pour réduire les temps d’exécution.
  • Minimiser les efforts de réglage manuel.
  • Utiliser les données historiques de la charge de travail pour affiner les configurations de manière itérative.

Validation du réglage automatique

Le réglage automatique a fait l’objet de tests approfondis afin de garantir son efficacité et sa sécurité :

  • Tests rigoureux avec diverses charges de travail Spark pour vérifier l’efficacité de l’algorithme de réglage.
  • Comparaison avec les méthodes d’optimisation Spark standard pour démontrer les avantages en termes de performances.
  • Des études de cas réels soulignant la valeur pratique de réglage automatique.
  • Adhésion à des normes strictes de sécurité et de confidentialité pour protéger les données des utilisateurs.

Les données des utilisateurs sont exclusivement utilisées pour améliorer les performances de votre charge de travail, avec des protections solides pour éviter l’utilisation abusive ou l’exposition d’informations sensibles.