9

Paralelismo en GPU y mejora de la evolución mediante la evolución

AI999第5课:方法演化:从优化解到优化算法本身
00:00

Cuando los algoritmos evolutivos se utilizan paramejorar los propios algoritmos evolutivos, coexisten dos niveles de cómputo en el sistema: el nivel interno se encarga de ejecutar y evaluar un gran número de configuraciones de algoritmos sobre numerosos casos de tarea, mientras que el nivel externo selecciona, muta y actualiza las configuraciones a partir de esos resultados de ejecución. Sin una base sólida de paralelismo, la evolución del nivel externo queda atrapada por la evaluación secuencial del nivel interno y se convierte en un cuello de botella.El paralelismo en GPUes precisamente la clave que convierte la «mejora de la evolución mediante la evolución» de una idea teórica en un proceso ejecutable de alto rendimiento: las tareas del nivel interno se ejecutan en paralelo por lotes y generan continuamente datos de rendimiento, y la evolución del nivel externo utiliza esos datos como retroalimentación para seleccionar de forma continua mejores configuraciones de algoritmos.

Mejorar la evolución mediante la evolución: bucle cerrado de dos niveles con paralelismo en GPUEnvío de la nueva generación de configuracionesEvolución externa: selector de configuracionesSegún la retroalimentación de aptitud, selecciona · muta · actualiza las configuraciones de algoritmosRetroalimentación de aptitudCapa de agregación de evaluaciones: retroalimentación estadísticaAgrega el rendimiento de las tareas paralelas del nivel interno → estima la aptitud de cada configuraciónAgregación del rendimiento de las tareasEjecución por lotes en paralelo con GPU · Nivel interno: configuración × caso de tareaConfiguración θ1Configuración θ2Configuración θ3Configuración θ4Cada celda = una ejecución paralela y una puntuación de una configuración de algoritmo sobre un caso de tareaPor qué es clave el paralelismoMuestras de retroalimentación más abundantesEstimación de aptitud más estableDirección de búsqueda más fiableMecanismo de bucle cerradoRendimiento paraleloRetroalimentación de rendimientoSelección de configuraciones

Cada nivel cumple su función

  • Nivel interno (ejecución y evaluación): ejecuta por lotes en la GPU un gran número de configuraciones candidatas de algoritmos (distintos hiperparámetros, operadores o estrategias de búsqueda) y completa la ejecución y la puntuación de cada caso de tarea. La granularidad fina y el gran volumen de tareas encajan a la perfección con las características de rendimiento por lotes de la GPU.
  • Nivel intermedio (agregación de retroalimentación): agrega el rendimiento bruto de la enorme cantidad de tareas del nivel interno en indicadores estadísticos, estima la calidad de cada configuración sobre toda la distribución de tareas y forma la aptitud que utilizará el nivel externo.
  • Nivel externo (selección de configuraciones): toma la retroalimentación estadística como entrada, realiza selección, mutación o actualización, genera la siguiente generación de configuraciones y las devuelve al nivel interno, cerrando así el bucle.

Por qué el paralelismo en GPU es insustituible

En un bucle secuencial tradicional, el tiempo real de una sola iteración viene determinado conjuntamente por la «cantidad de configuraciones candidatas × cantidad de muestras de tareas»; en cuanto la escala crece un poco, se vuelve inasumible, por lo que el bucle secuencial se convierte en el principal cuello de botella que limita la escala de configuraciones candidatas y de muestras de tareas. El paralelismo en GPU permite que un gran número de algoritmos del nivel interno se ejecuten simultáneamente, degradando el bucle secuencial de «cuello de botella principal» a «coste de procesamiento por lotes aceptable», ampliando así al mismo tiempo el espacio de configuraciones explorables y el volumen de muestras de tareas.

Mecanismo central: un bucle cerrado

Todo el sistema puede resumirse como «rendimiento paralelo de las tareas del nivel interno → agregación de la retroalimentación de rendimiento → selección de configuraciones del nivel externo» : cuanto mayor es el grado de paralelismo, más abundantes son las muestras de retroalimentación, más estable es la estimación de la aptitud por parte del nivel externo y más fiable es la dirección de mejora de las configuraciones; las configuraciones mejoradas se devuelven a la capa inferior y entran en la siguiente ronda de rendimiento paralelo. Es precisamente este bucle cerrado el que dota a los algoritmos de capacidad de autoptimización continua y convierte la «mejora de la evolución mediante la evolución» de una idea teórica en un proceso eficiente y ejecutable.

Puntos propensos a error
No confundas los dos niveles: el nivel interno «ejecuta tareas con el algoritmo y asigna puntuaciones», mientras que el nivel externo «selecciona configuraciones mediante la evolución». La retroalimentación solo puede provenir del rendimiento real de ejecución del nivel interno, y no de conjeturas aleatorias del nivel externo ni de constantes establecidas artificialmente.