Simultaneidad y paralelismo

El parámetro concurrency controla cuántos programas se generan y evalúan de forma simultánea. Este parámetro es el hiperparámetro de tiempo de ejecución más importante.

  • n = 1 (cadena secuencial): Genera un programa, espera la evaluación y, luego, genera el siguiente. Cada generación ve el resultado anterior, lo que crea una cadena de mejoras incrementales que se enfoca en un óptimo local. Este enfoque da como resultado el rendimiento más lento, pero la explotación más enfocada. Usa este modo para converger de forma intencional en una región específica.

  • n = 3-12 (punto óptimo): Este es el rango más usado en la práctica, ya que equilibra la exploración y la explotación. Hay varios programas en curso de forma simultánea, por lo que algunas generaciones no ven los resultados más recientes, lo que introduce diversidad natural. La base de datos evolutiva mantiene un rendimiento suficiente para una dinámica de población saludable.

  • n = 13-30 (exploración alta): Muchos programas se ejecutan en paralelo. La mayoría de las generaciones no ven los resultados de las demás. Este modo es útil para problemas muy no convexos con muchos óptimos locales en los que la exploración amplia importa más que la explotación profunda.

  • n = 23-30 (limitado; evita): Si superas los 30 generadores paralelos, se limita el backend del LLM. Las solicitudes se ponen en cola, lo que aumenta la latencia por generación. A menos que tengas una cuota dedicada, no superes los 30.

Recomendaciones

Las siguientes recomendaciones sirven como punto de partida para configurar la simultaneidad y el paralelismo para AlphaEvolve.

Tipo de problema Simultaneidad Razones
Enfoque conocido y bien comprendido 3–5 Explotación enfocada
Optimización general, panorama desconocido 8–12 Exploración/explotación equilibrada
Muy no convexo, muchos óptimos locales 15–25 Exploración amplia
Enfoque intencional en el óptimo local 1 Cadena secuencial

Comienza con concurrency=10 y ajusta según los siguientes indicadores:

  • Estabilización de la puntuación: Aumenta la simultaneidad para escapar de los óptimos locales.

  • Muchas evaluaciones fallidas: Disminuye la simultaneidad para reducir el procesamiento desperdiciado.

  • Evaluaciones lentas (más de 5 minutos): Una simultaneidad más alta mantiene ocupada la canalización de evaluación.

  • Evaluaciones rápidas (menos de 10 segundos): Una simultaneidad más baja permite que las generaciones sucesivas se basen directamente en los resultados de las demás.

Simultaneidad frente a límites de experimentos activos

Es importante distinguir entre la simultaneidad a nivel del programa y los límites de experimentos a nivel del proyecto:

  • Simultaneidad del programa (concurrency): Se configura en runSettings (entre 1 y 30) y controla la cantidad de programas candidatos que se generan y evalúan de forma simultánea en un solo experimento.
  • Límite de experimentos activos: Un proyecto está sujeto a un límite de 30 experimentos activos (STARTED o RUNNING) simultáneamente por ubicación. Si intentas iniciar o reanudar un experimento más allá de este límite, se muestra un error RESOURCE_EXHAUSTED. Para resolver este problema, detén o completa los experimentos en ejecución existentes antes de iniciar otros nuevos (si modificas concurrency dentro de un experimento, no se cambia la cantidad de experimentos activos).