Simultaneidade e paralelismo

O parâmetro concurrency controla quantos programas são gerados e avaliados simultaneamente. Esse é o hiperparâmetro de tempo de execução mais impactante.

  • n = 1 (encadeamento sequencial): gere um programa, aguarde a avaliação e gere o próximo. Cada geração vê o resultado anterior, criando uma cadeia de melhorias incrementais que se concentram em um ponto ideal local. Essa abordagem resulta na menor capacidade de processamento, mas na exploração mais focada. Use esse modo para convergir intencionalmente em uma região específica.

  • n = 3-12 (Ponto ideal): esse é o intervalo mais usado na prática, equilibrando a análise detalhada e a exploração. Vários programas estão em andamento simultaneamente, então algumas gerações não veem os resultados mais recentes, o que introduz uma diversidade natural. O banco de dados evolutivo mantém taxa de transferência suficiente para uma dinâmica populacional saudável.

  • n = 13-30 (alta exploração): muitos programas são executados em paralelo. A maioria das gerações não vê os resultados umas das outras. Esse modo é útil para problemas altamente não convexos com muitos pontos de otimização local em que a exploração ampla é mais importante do que a exploração profunda.

  • n = 23-30 (limitado; evite): exceder 30 geradores paralelos limita o back-end do LLM. As solicitações ficam em fila, aumentando a latência por geração. A menos que você tenha uma cota dedicada, mantenha esse número abaixo de 30.

Recomendações

As recomendações a seguir servem como ponto de partida para configurar a simultaneidade e o paralelismo do AlphaEvolve.

Tipo de problema Simultaneidade Justificativa
Abordagem conhecida e bem compreendida 3 a 5 Exploração focada
Otimização geral, paisagem desconhecida 8–12 Análise detalhada/exploração equilibrada
Altamente não convexo, com muitos pontos de otimização local 15–25 Análise geral
Zoom proposital em um ponto de otimização local 1 Cadeia sequencial

Comece com concurrency=10 e ajuste com base nos seguintes indicadores:

  • Platô de pontuação: aumente a simultaneidade para sair dos pontos de otimização locais.

  • Muitas avaliações com falha: diminua a simultaneidade para reduzir o desperdício de computação.

  • Avaliações lentas (mais de 5 minutos): uma simultaneidade maior mantém o pipeline de avaliação ocupado.

  • Avaliações rápidas (menos de 10 segundos): uma simultaneidade menor permite que gerações sucessivas se baseiem diretamente nos resultados umas das outras.

Simultaneidade x limites de experimentos ativos

É importante distinguir entre a simultaneidade no nível do programa e os limites de experimentos para envolvidos no projeto:

  • Simultaneidade do programa (concurrency): configurada em runSettings (entre 1 e 30), controla o número de programas candidatos gerados e avaliados simultaneamente em um único experimento.
  • Limite de experimentos ativos:um projeto está sujeito a um limite de 30 experimentos ativos simultaneamente (STARTED ou RUNNING) por local. A tentativa de iniciar ou retomar um experimento além desse limite retorna um erro RESOURCE_EXHAUSTED. Para resolver isso, pare ou conclua os experimentos em execução antes de iniciar novos. Modificar concurrency em um experimento não muda a contagem de experimentos ativos.