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. 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 via le paramètre de configuration Spark au sein de l’environnement ou dans une seule session en incluant le paramètre Spark correspondant dans votre notebook Spark ou le code de définition de travail Spark.
Paramétrage des requêtes
Le réglage automatique configure trois paramètres Apache 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 Apache 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 Apache 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.
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
La mise en forme automatique est disponible dans toutes les régions de production, mais est désactivée par défaut. Vous pouvez l’activer via le paramètre de configuration Spark dans l’environnement. Pour activer l’autotune, créez un environnement ou, pour l’environnement existant, définissez la propriété Spark « spark.ms.autotune.enabled = true », comme illustré dans la capture d’écran ci-dessous. Ce paramètre est ensuite hérité par tous les blocs-notes et travaux s’exécutant dans cet environnement, en les paramétrant automatiquement.
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 activer la mise en forme automatique au sein d’une session unique en incluant le paramètre Spark respectif dans votre notebook Spark ou le code Spark Job Definition.
%%sql
SET spark.ms.autotune.enabled=TRUE
Vous pouvez contrôler l’autotune par le biais des paramètres Spark pour votre cahier Spark ou de 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 Apache 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].
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.