Partilhar via


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

O Autotune ajusta automaticamente a configuração 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 esforço, recursos, tempo e experimentação extensivos. O Autotune usa dados históricos de execução de suas cargas de trabalho para descobrir e aplicar iterativamente as configurações mais eficazes para uma carga de trabalho específica.

Nota

O recurso de ajuste automático de consulta no Microsoft Fabric está atualmente em visualização.

Ajuste de consultas

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

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

Gorjeta

O ajuste automático de consultas examina consultas individuais e cria um modelo de ML distinto para cada consulta. Visa especificamente:

  • Consultas repetitivas
  • Consultas de longa duração (aquelas com mais de 15 segundos de execução)
  • Consultas da API do Spark SQL (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 com base na complexidade da consulta, nos métodos usados e na 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 ecrã do tempo de execução com o autotune ativado.

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 aprendizado de máquina para avaliar a eficácia. 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 centroid. 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 centróide 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 de usuários permitem o refinamento de benchmarks de desempenho. Além disso, o processo atualiza as configurações centróides para garantir que o modelo se mova para configurações mais eficientes de forma incremental. Isto consegue-se avaliando desempenhos passados e utilizando-os para orientar futuros ajustamentos. Utiliza todos os pontos de dados para mitigar o impacto das anomalias.

Do ponto de vista da IA responsável, o recurso Autotune inclui mecanismos de transparência projetados para mantê-lo informado sobre o uso de dados e os 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 lançamento.

Ativar o autotune

O Autotune está disponível em todas as regiões de produção, mas está desativado por padrão. Você pode ativá-lo através da configuração do Spark no 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 blocos de anotações e trabalhos em execução nesse ambiente, ajustando-os automaticamente.

Captura de ecrã a mostrar a ativação do autotune.

O Autotune inclui um mecanismo integrado para monitorar o desempenho e detetar regressões de desempenho. Por exemplo, se uma consulta processar uma quantidade anormalmente grande de dados, o Autotune será desativado automaticamente. Normalmente, são necessárias de 20 a 25 iterações para aprender e identificar a configuração ideal.

Nota

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 quando o ponto de extremidade privado está ativado. No entanto, o autotune integra-se perfeitamente com o dimensionamento automático, independentemente da sua configuração.

Você pode controlar o Autotune através das Configurações do Spark para seu respetivo bloco de anotações do Spark ou código de definição de trabalho do Spark. Para desativar o Autotune, execute os seguintes comandos como a primeira célula (bloco de anotações) ou linha do código (SJD).

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

Caso prático

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 este exemplo use filtragem geográfica, o princípio se aplica universalmente a qualquer atributo ou operação dentro da consulta:

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

O Autotune aprende com essa consulta, otimizando as execuções subsequentes. Quando a consulta muda, por exemplo, alterando o valor do filtro ou aplicando uma transformação de dados diferente, a essência estrutural da consulta geralmente permanece 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.

Registos

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

Captura de tela dos logs do autotune dentro do Hub de Monitoramento.

Pode encontrar vários tipos de entradas nos seus registos. Os seguintes incluem os principais:

Status Description
AUTOTUNE_DISABLED Ignorado. O Autotune está desativado; impedindo a recuperação de dados de telemetria e a otimização de consultas. Permita que o Autotune utilize plenamente as suas capacidades, respeitando a privacidade do cliente.".
QUERY_TUNING_DISABLED Ignorado. O ajuste automático de consultas está desativado. Habilite-o para ajustar as configurações de suas consultas do Spark SQL.
QUERY_PATTERN_NOT_MATCH Ignorado. O padrão de consulta não correspondeu. O Autotune é eficaz para consultas somente leitura.
QUERY_DURATION_TOO_SHORT Ignorado. A duração da sua consulta é muito curta para ser otimizada. O Autotune requer consultas mais longas para um ajuste eficaz. As consultas devem ser executadas por pelo menos 15 segundos.
QUERY_TUNING_SUCCEED Êxito. Ajuste de consulta concluído. Configurações de faísca ideais aplicadas.

Nota de transparência

Em conformidade com o Responsible AI Standard, esta seção tem como objetivo esclarecer os usos e a validação do recurso Autotune, promovendo a transparência e permitindo a tomada de decisões informadas.

Objetivo do Autotune

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

  • Automatizando o ajuste de configuração do Apache Spark para reduzir os tempos de execução.
  • Minimização dos esforços de ajuste manual.
  • Utilizando dados históricos de carga de trabalho para refinar configurações iterativamente.

Validação do Autotune

O Autotune foi submetido a testes extensivos para garantir a sua eficácia e segurança:

  • Testes rigorosos com diversas cargas de trabalho do Spark para verificar a eficácia do algoritmo de ajuste.
  • Benchmarking em relação aos métodos padrão de otimização do Spark para demonstrar benefícios de desempenho.
  • Estudos de caso reais que destacam o valor prático do Autotune.
  • Adesão a rigorosos padrões de segurança e privacidade para salvaguardar os dados dos utilizadores.

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