Share via


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 de l'API Spark SQL (à l'exception de celles écrites dans l'API RDD, qui sont très rares), mais nous optimisons toutes les requêtes quel que soit le langage (Scala, PySpark, R, Spark SQL)

Cette fonctionnalité est compatible avec les notebooks, les définitions de tâches Spark et les pipelines. Les avantages varient en fonction de la complexité de la requête, des méthodes utilisées et de la structure. Des tests approfondis ont montré que les requêtes liées à l'analyse exploratoire des données, telles que la lecture des données, l'exécution de jointures, d'agrégations et de tris, présentent les avantages les plus importants.

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

L'autoréglage est disponible dans toutes les régions de production, mais il est désactivé par défaut.s, les agrégations et les tris. Vous pouvez l'activer par le biais du jeu de configuration Spark dans l'environnement. Pour activer Autotune, créez un nouvel environnement ou, pour l'environnement existant, définissez la propriété Spark 'spark.ms.autotune.enabled = true' comme indiqué dans la capture d'écran ci-dessous. Ce paramètre est ensuite hérité par tous les ordinateurs portables et les travaux exécutés dans cet environnement, ce qui permet de les ajuster automatiquement.

Capture d'écran de l'activation de l'autotune.

Autotune comprend un mécanisme intégré de contrôle des performances et de détection des régressions. Par exemple, si une requête traite un volume de données anormalement élevé, Autotune se désactive automatiquement. Il faut généralement 20 à 25 itérations pour apprendre et identifier la configuration optimale.

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.

Vous pouvez contrôler l'Autotune par le biais des paramètres Spark pour votre cahier Spark ou votre code Spark Job Definition respectif. Pour désactiver l'Autotune, exécutez les commandes suivantes en tant que première cellule (notebook) ou ligne du code (SJD).

%%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.