¿Qué es el ajuste automático para las configuraciones de Apache Spark en Fabric?
El ajuste automático ajusta automáticamente las configuraciones de Apache Spark, lo que acelera la ejecución de la carga de trabajo y optimiza el rendimiento general. El ajuste automático ahorra tiempo y recursos en comparación con el ajuste manual, lo que requiere un esfuerzo extenso, recursos, tiempo y experimentación. El ajuste automático usa datos de ejecución históricos de las cargas de trabajo para detectar y aplicar de forma iterativa las configuraciones más eficaces para una carga de trabajo específica.
Nota:
La característica de ajuste de consultas del ajuste automático de Microsoft Fabric está actualmente en versión preliminar. El ajuste automático está disponible en todas las regiones de producción, pero está deshabilitado de forma predeterminada. Puede activarlo a través de la configuración de Spark dentro del entorno o d entro de una sola sesión mediante la inclusión de la configuración de Spark correspondiente en el cuaderno de Spark o el código de definición de trabajo de Spark.
Ajuste de las consultas
El ajuste automático configura tres opciones de Apache Spark para cada una de las consultas por separado:
spark.sql.shuffle.partitions
: establece el recuento de particiones para el orden aleatorio de datos durante combinaciones o agregaciones. El valor predeterminado es 200.spark.sql.autoBroadcastJoinThreshold
: configura el tamaño máximo en bytes para una tabla que se transmite a todos los nodos de trabajo al realizar una operación de combinación. El valor predeterminado es de 10 MB.spark.sql.files.maxPartitionBytes
: Define el número máximo de bytes que se empaquetan en una sola partición al leer archivos. Funciona para orígenes basados en archivos Parquet, JSON y ORC. El valor predeterminado es 128 MB.
Sugerencia
El ajuste de consultas del ajuste automático examina las consultas individuales y crea un modelo de ML distinto para cada consulta. Se dirige específicamente a:
- Consultas repetitivas
- Consultas de ejecución prolongada (aquellas con más de 15 segundos de ejecución)
- Consultas de la API de Apache Spark SQL (excepto las escritas en la API de RDD, que son muy poco frecuentes), pero optimizamos todas las consultas independientemente del lenguaje (Scala, PySpark, R, Spark SQL)
Esta característica es compatible con cuadernos, definiciones de trabajos de Apache Spark y canalizaciones. Las ventajas varían en función de la complejidad de la consulta, los métodos usados y la estructura. Las pruebas exhaustivas han demostrado que se obtienen mayores ventajas con consultas relacionadas con el análisis de datos exploratorios, como la lectura de datos, la ejecución de combinaciones, agregaciones y ordenación.
Intuición basada en IA detrás del ajuste automático
La característica de ajuste automático utiliza un proceso iterativo para optimizar el rendimiento de las consultas. Comienza con una configuración predeterminada y emplea un modelo de aprendizaje automático para evaluar la eficacia. Cuando un usuario envía una consulta, el sistema recupera los modelos almacenados en función de las interacciones anteriores. Genera posibles configuraciones en torno a una configuración predeterminada denominada centroid. Se aplica el mejor candidato previsto por el modelo. Después de la ejecución de la consulta, los datos de rendimiento se devuelven al sistema para mejorar el modelo.
El bucle de comentarios cambia gradualmente el centroid hacia una configuración óptima. Ajusta el rendimiento a lo largo del tiempo, a la vez que minimiza el riesgo de regresión. Las actualizaciones continuas basadas en las consultas de usuario permiten el ajuste de los puntos de referencia de rendimiento. Además, el proceso actualiza las configuraciones centroid para asegurarse de que el modelo avanza hacia una configuración más eficaz de forma incremental. Esto se logra mediante la evaluación de los rendimientos anteriores y su uso para guiar los ajustes futuros. Usa todos los puntos de datos para mitigar el impacto de las anomalías.
Desde una perspectiva de inteligencia artificial responsable, la característica de ajuste automático incluye mecanismos de transparencia diseñados para mantenerle informado sobre el uso y las ventajas de los datos. La seguridad y la privacidad se alinean con los estándares de Microsoft. La supervisión continua mantiene el rendimiento y la integridad del sistema después del lanzamiento.
Habilitación del ajuste automático
El ajuste automático está disponible en todas las regiones de producción, pero está deshabilitado de forma predeterminada. Puede activarlo a través de la configuración de Spark dentro del entorno. Para habilitar el ajuste automático, cree un nuevo entorno o, para el entorno existente, establezca la propiedad de Spark "spark.ms.autotune.enabled = true", como se muestra en la captura de pantalla siguiente. A continuación, todos los cuadernos y trabajos que se ejecutan en ese entorno heredan esta configuración, que los ajusta automáticamente.
El ajuste automático incluye un mecanismo integrado para la supervisión del rendimiento y para detectar regresiones de rendimiento. Por ejemplo, si una consulta procesa una cantidad inusualmente grande de datos, el ajuste automático se desactivará automáticamente. El ajuste automático requiere entre 20 y 25 iteraciones para aprender e identificar la configuración óptima.
Nota:
El ajuste automático es compatible con Fabric Runtime 1.1 y Runtime 1.2. El ajuste automático no funciona con el modo de simultaneidad alta o cuando el punto de conexión privado está habilitado. Sin embargo, el ajuste automático se integra perfectamente con el escalado automático, independientemente de su configuración.
Puede habilitar el ajuste automático dentro de una sola sesión mediante la inclusión de la configuración de Spark correspondiente en el cuaderno de Spark o el código de definición de trabajo de Spark.
%%sql
SET spark.ms.autotune.enabled=TRUE
Puede controlar el ajuste automático a través de la configuración de Spark para el cuaderno de Spark respectivo o el código de definición de trabajo de Spark. Para deshabilitar el ajuste automático, ejecuta los siguientes comandos como la primera celda (cuaderno) o línea del código (SJD).
%%sql
SET spark.ms.autotune.enabled=FALSE
Caso práctico
Al ejecutar una consulta de Apache Spark, el ajuste automático crea un modelo de ML personalizado dedicado a optimizar la ejecución de la consulta. Analiza los patrones de consulta y las necesidades de recursos. Considere la posibilidad de que una consulta inicial filtre un conjunto de datos basado en un atributo específico, como un país. Aunque en este ejemplo se usa el filtrado geográfico, el principio se aplica universalmente a cualquier atributo u operación dentro de la consulta:
%%pyspark
df.filter(df.country == "country-A")
El ajuste automático aprende de esta consulta, optimizando las ejecuciones posteriores. Cuando la consulta cambia, por ejemplo, modificando el valor del filtro o aplicando una transformación de datos diferente, la esencia estructural de la consulta suele ser coherente:
%%pyspark
df.filter(df.country == "country-B")
A pesar de las modificaciones, el ajuste automático identifica la estructura fundamental de la nueva consulta, implementando optimizaciones aprendidas anteriormente. Esta funcionalidad garantiza una alta eficiencia sostenida sin necesidad de reconfiguración manual para cada nueva iteración de consulta.
Registros
Para cada una de las consultas, el ajuste automático determina la configuración más óptima para tres configuraciones de Spark. Para ver la configuración sugerida, vaya a los registros. Las configuraciones recomendadas por el ajuste automático se encuentran en los registros del controlador, específicamente en las entradas que comienzan por [Autotune].
Puede encontrar varios tipos de entradas en los registros. Entre las siguientes se incluyen las que son clave:
Estado | Descripción |
---|---|
AUTOTUNE_DISABLED | Se omite. El ajuste automático está deshabilitado; evita la recuperación de datos de telemetría y la optimización de consultas. Habilite el ajuste automático para usar completamente sus funcionalidades al tiempo que respeta la privacidad del cliente". |
QUERY_TUNING_DISABLED | Se omite. El ajuste de consultas de ajuste automático está deshabilitado. Habilite esta opción para ajustar la configuración de las consultas SQL de Spark. |
QUERY_PATTERN_NOT_MATCH | Se omite. El patrón de consulta no coincide. El ajuste automático es eficaz para las consultas de solo lectura. |
QUERY_DURATION_TOO_SHORT | Se omite. La duración de la consulta es demasiado corta para optimizar. El ajuste automático requiere consultas más largas para un ajuste eficaz. Las consultas deben ejecutarse durante al menos 15 segundos. |
QUERY_TUNING_SUCCEED | Correcto. Se completó la optimización de consultas. Configuración óptima de Spark aplicada. |
Nota de transparencia
En cumplimiento de la norma de IA responsable, esta sección tiene como objetivo aclarar los usos y la validación de la característica de ajuste automático (Autotune), promover la transparencia y habilitar la toma de decisiones fundamentada.
Propósito del ajuste automático (Autotune)
El ajuste automático se ha desarrollado para mejorar la eficacia de la carga de trabajo de Apache Spark, principalmente para profesionales de datos. Sus funciones clave incluyen:
- Automatización del ajuste de la configuración de Apache Spark para reducir los tiempos de ejecución.
- Minimizar los esfuerzos de ajuste manual.
- Utilizar datos históricos de carga de trabajo para ajustar las configuraciones de forma iterativa.
Validación del ajuste automático
El ajuste automático ha realizado pruebas exhaustivas para garantizar su eficacia y seguridad:
- Pruebas rigurosas con diversas cargas de trabajo de Spark para comprobar la eficacia del algoritmo de optimización.
- Pruebas comparativas con métodos de optimización estándar de Spark para demostrar las ventajas de rendimiento.
- Casos prácticos reales para resaltar el valor práctico del ajuste automático.
- Cumplimiento de estrictos estándares de seguridad y privacidad para proteger los datos de los usuarios.
Los datos de usuario se usan exclusivamente para mejorar el rendimiento de la carga de trabajo, con protecciones sólidas para evitar el uso indebido o la exposición de información confidencial.