Share via


O que é o Autotune para configurações do Apache Spark no Fabric?

O Autotune ajusta automaticamente as configurações do Apache Spark para acelerar a execução da carga de trabalho e otimizar o desempenho geral. O Autotune economiza tempo e recursos em comparação com o ajuste manual, que requer muito esforço, recursos, tempo e experimentação. O Autotune usa dados de execução históricos das cargas de trabalho para descobrir e aplicar iterativamente as configurações mais efetivas a uma carga de trabalho específica.

Observação

No momento, o recurso de ajuste de consulta do Autotune no Microsoft Fabric está em preview.

Ajuste de consulta

O Autotune define três configurações do Spark para cada uma das consultas separadamente:

  • spark.sql.shuffle.partitions – Define a contagem de partições para embaralhamento de dados durante junções ou agregações. O valor padrão é 200.
  • spark.sql.autoBroadcastJoinThreshold – Define o tamanho máximo em bytes para uma tabela que é transmitida para todos os nós de trabalho ao executar uma operação de junção. O valor padrão é 10 MB.
  • spark.sql.files.maxPartitionBytes – Define o número máximo de bytes a serem empacotados em uma única partição ao ler arquivos. Funciona para fontes baseadas em arquivo Parquet, JSON e ORC. O padrão é 128 MB.

Dica

O ajuste de consulta do Autotune examina consultas individuais e cria um modelo de ML distinto para cada uma. Ele destina-se especificamente a:

  • Consultas repetitivas
  • Consultas de execução prolongada (aquelas com mais de 15 segundos de execução)
  • Consultas de API SQL do Spark (excluindo aquelas escritas na API RDD, que são muito raras), mas otimizamos todas as consultas independentemente da linguagem (Scala, PySpark, R, Spark SQL)

Esse recurso é compatível com notebooks, definições de trabalho do Spark e pipelines. Os benefícios variam de acordo com a complexidade da consulta, os métodos usados e a estrutura. Testes extensivos mostraram que as maiores vantagens são obtidas com consultas relacionadas à análise exploratória de dados, como leitura de dados, execução de junções, agregações e classificação.

Captura de tela do tempo de execução com o Autotune habilitado.

Intuição baseada em IA por trás do Autotune

O recurso de Autotune utiliza um processo iterativo para otimizar o desempenho da consulta. Ele começa com uma configuração padrão e emprega um modelo de machine learning para avaliar a efetividade. Quando um usuário envia uma consulta, o sistema recupera os modelos armazenados com base nas interações anteriores. Ele gera configurações potenciais em torno de uma configuração padrão chamada centroide. Aplica-se o melhor candidato previsto pelo modelo. Após a execução da consulta, os dados de desempenho são enviados de volta ao sistema para refinar o modelo.

O loop de feedback desloca gradualmente o centroide para as configurações ideais. Ele refina o desempenho ao longo do tempo, minimizando o risco de regressão. Atualizações contínuas baseadas em consultas do usuário permitem o refinamento dos parâmetros de comparação do desempenho. Além disso, o processo atualiza as configurações do centroide para garantir que o modelo se mova para configurações mais eficientes de forma incremental. Isso é possível ao avaliar os desempenhos passados e usando-os para guiar ajustes futuros. Ele usa todos os pontos de dados para mitigar o impacto de anomalias.

Da perspectiva de uma IA responsável, o recurso de Autotune inclui mecanismos de transparência projetados para informar você sobre uso de dados e benefícios. A segurança e a privacidade estão alinhadas com os padrões da Microsoft. O monitoramento contínuo mantém o desempenho e a integridade do sistema após o início.

Habilitar o Autotune

O Autotune está disponível em todas as regiões de produção, mas está desabilitado por padrão. Você pode ativá-lo através do conjunto de configurações do Spark dentro do ambiente. Para habilitar o Autotune, crie um novo ambiente ou, para o ambiente existente, defina a propriedade Spark 'spark.ms.autotune.enabled = true', conforme mostrado na captura de tela abaixo. Essa configuração é herdada por todos os notebooks e trabalhos em execução nesse ambiente, ajustando-os automaticamente.

Captura de tela da habilitação do Autotune.

Além disso, o Autotune tem mecanismo interno para monitoramento de desempenho e detecção de regressões no desempenho. Por exemplo, se uma consulta processar uma quantidade excepcionalmente grande de dados, o Autotune será desativado automaticamente. Normalmente, ele requer de 20 a 25 iterações para aprender e identificar a configuração ideal.

Observação

O Autotune é compatível com o Fabric Runtime 1.1 e o Runtime 1.2. O Autotune não funciona quando o modo de alta simultaneidade ou o ponto de extremidade privado estão habilitados. No entanto, o Autotune se integra perfeitamente ao dimensionamento automático, independentemente de sua configuração.

É possível controlar o Autotune por meio das Configurações do Spark para seu respectivo notebook do Spark ou código de definição de trabalho do Spark. Para desabilitar o Autotune, execute os seguintes comandos como a primeira célula (notebook) ou linha do código (SJD).

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

Estudo de caso

Ao executar uma consulta do Spark, o Autotune cria um modelo de ML personalizado, dedicado a otimizar a execução da consulta. Ele analisa padrões de consulta e necessidades de recursos. Considere uma consulta inicial filtrando um conjunto de dados com base em um atributo específico, como um país. Embora o exemplo use filtragem geográfica, o princípio se aplica universalmente a qualquer atributo ou operação na consulta:

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

O Autotune aprende com essa consulta, otimizando as execuções subsequentes. Quando a consulta é alterada, por exemplo, alterando o valor do filtro ou aplicando uma transformação de dados diferente, a essência estrutural dela costuma permanecer consistente:

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

Apesar das alterações, o Autotune identifica a estrutura fundamental da nova consulta, implementando otimizações aprendidas anteriormente. Esse recurso garante alta eficiência sustentada, sem a necessidade de reconfiguração manual para cada nova iteração de consulta.

Logs

Em cada uma das consultas, o Autotune determina as configurações mais ideais para três configurações do Spark. Você pode exibir as configurações sugeridas navegando até os logs. As configurações recomendadas pelo Autotune estão localizadas nos logs do driver, especificamente nas entradas que começam com [Autotune].

Captura de tela dos logs do Autotune dentro do hub de monitoramento.

Você encontra vários tipos de entradas nos logs. Estes são os principais:

Status Descrição
AUTOTUNE_DISABLED Ignorado. O Autotune está desabilitado, impedindo a recuperação de dados telemétricos e a otimização de consulta. Permita que o Autotune use plenamente seus recursos, respeitando a privacidade do cliente".
QUERY_TUNING_DISABLED Ignorado. O ajuste de consulta do Autotune está desabilitado. Habilite-o para ajustar as configurações das consultas SQL do Spark.
QUERY_PATTERN_NOT_MATCH Ignorado. Não houve correspondência no padrão de consulta. O Autotune é efetivo para consultas somente leitura.
QUERY_DURATION_TOO_SHORT Ignorado. A duração da consulta é muito curta para otimizar. O Autotune requer consultas mais longas para um ajuste efetivo. As consultas devem ser executadas por pelo menos 15 segundos.
QUERY_TUNING_SUCCEED Êxito. Ajuste de consulta concluído. Configurações ideais do Spark aplicadas.

Observação de transparência

Em conformidade com o padrão de IA Responsável, esta seção visa esclarecer os usos e a validação do recurso de Autotune, promovendo a transparência e permitindo a tomada de decisões informadas.

Finalidade do Autotune

O Autotune foi desenvolvido para aprimorar a eficiência da carga de trabalho do Apache Spark, principalmente para profissionais de dados. Suas principais funções incluem:

  • Automatizar o ajuste de configuração do Apache Spark para reduzir os tempos de execução.
  • Minimizar os esforços de ajuste manual.
  • Utilizar dados históricos da carga de trabalho para refinar as configurações iterativamente.

Validação do Autotune

O Autotune passou por inúmeros testes para garantir sua efetividade e segurança:

  • Testes rigorosos com diversas cargas de trabalho do Spark para verificar a eficácia do algoritmo de ajuste.
  • Parâmetros de comparação em relação aos métodos de otimização padrão do Spark para demonstrar os benefícios de desempenho.
  • Estudos de caso do mundo real destacando o valor prático do Autotune.
  • Conformidade com padrões rígidos de segurança e privacidade para proteger os dados do usuário.

Os dados do usuário são usados exclusivamente para aprimorar o desempenho da carga de trabalho, com proteções robustas que evitam o uso indevido ou a exposição de informações confidenciais.