4

De la lista de candidatos al grafo computacional tensorial

AI999第4课:现代计算底座与张量化并行演化
00:00

En la computación evolutiva, ladiversidades el requisito previo para la eficacia del algoritmo: solo manteniendo suficientes soluciones candidatas la presión de selección no empujará prematuramente a la población hacia un óptimo local. Sin embargo, la diversidad también implica una enorme carga computacional: una sola ejecución suele requerir evaluar decenas de miles o incluso millones de soluciones candidatas. Cuando los candidatos se escriben como un arreglo de objetos ordinarios y se envían a evaluar uno por uno mediante bucles elemento a elemento, la mayor parte del tiempo de cómputo se consume en la programación individual y en el flujo de control del lenguaje anfitrión, y no en el cálculo numérico real; esta es precisamentela razón fundamental de que los bucles seriales tradicionales de CPU sean ineficientes al procesar decenas de miles de evaluaciones de candidatos.

De la lista de candidatos al grafo computacional tensorialEl salto en la forma de representaciónLista de candidatos (procesamiento individual)Cada candidato es un objeto independiente1Candidato x₁2Candidato x₂3Candidato x₃4Candidato x₄Candidato por candidato · bucle serial de CPUIneficiente al evaluar decenas de miles de vecesEl costo está en la programación individual y el flujo de controlTensor de candidatosToda la generación de candidatos escrita de forma unificada[tamaño de población, dimensión de solución]Una fila = una solución candidataGrafo computacional: operaciones tensorialesLa selección y la actualización de estado entran en el grafo y reciben optimización de compilaciónMutaciónActúa sobre toda la poblaciónEvaluaciónToda una generación de una vezSelecciónIndexación tensorialActualización de estadoNodo de reducciónTodo el grafo recibe optimización de compilación: fusión de operadores · programación paralelaForma de salida de la evaluación: [tamaño de población] o [tamaño de población, número de objetivos]Cómputo global: mutación, evaluación, selección y actualización de estado entran juntas en el grafo computacional

El salto en la forma de representación: de la lista de candidatos al grafo computacional tensorial

El cambio que aporta EvoX no es la aceleración local de un operador concreto, sino elcambio en la forma de representar el proceso evolutivo: pasar del procesamiento basado en listas, candidato por candidato, a un cómputo por lotes en el que el tensor es un ciudadano de primera clase. El conjunto de candidatos ya no queda disperso en arreglos de objetos, sino que se organiza de forma unificada como tensores junto con los resultados de evaluación y el estado del algoritmo, de modo que pueden participar en las operaciones como un todo.

  • Tensor de candidatos: toda la generación de candidatos se escribe como un tensor de forma [tamaño de población, dimensión de solución]. Ahora «un candidato» es solo una fila del tensor, y ya no un objeto independiente del lenguaje anfitrión.
  • Operadores por lotes: operaciones como la mutación actúan directamente sobre toda la población; una sola llamada completa la actualización de todos los candidatos, en lugar de invocarse N veces en un bucle.
  • Evaluación por lotes: mediante evaluate(tensor de candidatos) se obtienen de una sola vez los resultados de evaluación de toda la generación; la unidad de conteo de las evaluaciones pasa de «unidad» a «lote».
  • Grafo computacional: la selección y la actualización de estado ya no son solo lógica de control serial, sino nodos del grafo, y por ello obtienen oportunidades de optimización de compilación como fusión de operadores y programación paralela.

Comparación entre ambas formas de escribir el código

La forma basada en listas se aproxima a: extraer candidato por candidato, evaluar uno por uno, comparar uno por uno y actualizar el estado; cada paso depende de bucles del lenguaje anfitrión, lo que dificulta la optimización global. La forma tensorial, en cambio, es: tensor de candidatos → mutación → evaluación → selección → actualización de estado; toda la cadena está compuesta por operaciones tensoriales y se expresa como un grafo computacional, y el compilador puede hacer fusión y programación de dispositivos sobre todo el grafo. Nota: la lógica del algoritmo (distribución de mutación, presión de selección) no ha sido reescrita; lo que se ha reescrito es laforma de representación.

Término clave
Cómputo tensorial: tomar el tensor como unidad mínima de procesamiento, hacer que la mutación, la evaluación, la selección y la actualización de estado actúen de forma por lotes sobre toda la población, y permitir que estas operaciones por lotes entren en el grafo computacional para recibir optimización de compilación. El salto clave de esta página puede resumirse en una frase: de la «lista de candidatos» al «grafo computacional tensorial».