5

Organización tensorial de población, evaluación y estado

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

En la implementación ingenieril de algoritmos evolutivos,la organización tensorialmapea de forma unificada «qué es la población, cómo se evalúa y en qué paso va la ejecución» desde objetos y listas dispersos hacia tensores regulares. Su esencia es establecer un contrato de datos unificado para población, evaluación y estado, de modo que el cálculo por lotes, la residencia en dispositivo y la posterior programación paralela compartan una misma semántica de memoria.

Organización tensorial de población, evaluación y estadoMapear de forma unificada las soluciones candidatas, la evaluación de aptitud y el estado del algoritmo en tensores computables por lotesOrganización secuencial tradicionalObjetos y listas almacenados de forma dispersaLista de candidatosLista / colección de objetosEvaluación individualLlamadas a la función de evaluación en bucleEstado dispersoEscalares / variables globalesBucle individuo por individuoTránsito frecuente entre host y dispositivoTensorizaciónla organización tensorialPoblación · evaluación · estado unificados en tensores regulares, formando un contrato de datos unificadoNDTensor de población[N, D]N es la dimensión de lote, D la dimensión de decisiónMutación y cruce por lotesEn una sola pasadaNMKMatriz de evaluación[N, M] o [N, M+K]M objetivos, K restriccionesVectorización de la función de evaluaciónDevuelve resultados de todo el loteContenedor de tensores de estadoEscalares o tensores pequeñosGeneración, mejor solución, estado del generador aleatorioResidencia unificada en dispositivoPuntos de control y reproducibilidadEjemplo: N = 1024, D = 50, M = 2 · población [1024, 50], evaluación [1024, 2]Lote por fuera: los operadores vectorizan todo el lote a lo largo de la dimensión NIndividuos de longitud variable: relleno + máscara o bucketingEstado unificado: reproducible, rastreable y actualizable por lotes

Tensorización de la población: codificada como [N, D]

Organizar las N soluciones candidatas por dimensión de lote en un tensor de codificación de forma [N, D]. Las variables continuas, discretas o las codificaciones por segmentos pueden expresarse mediante tensores de campo o bloques agrupados, manteniendo un tipo de dato y una ubicación de dispositivo unificados.

  • Lote por fuera: normalmente se coloca N en la capa más externa, de modo que el mismo operador se ejecute de forma vectorizada sobre todo el lote.
  • Bloques de campos: si el individuo se compone de varios segmentos de parámetros, puede dividirse en [N, D1] + [N, D2] + … manteniendo un almacenamiento contiguo.
  • Tratamiento de longitud variable: los individuos de longitud variable se tratan con relleno más máscara o con bucketing, para evitar que las estructuras heterogéneas rompan el cálculo por lotes.

Matricialización de los resultados de evaluación: [N, M] y [N, K]

Una única evaluación por lotes produce una matriz de aptitud [N, M]; los múltiples objetivos, múltiples restricciones e indicadores adicionales pueden yuxtaponerse como [N, M+K] o almacenarse en tablas separadas, evitando llamar a la función de evaluación en un bucle individuo por individuo.

Gestión unificada del estado como tensores

La generación, el estado del generador aleatorio, los hiperparámetros de la estrategia, la mejor solución, la caché histórica, el ranking o el estado de muestreo también entran en tensores o en un contenedor de estado estructurado, garantizando reproducibilidad, trazabilidad y actualización por lotes.

Ejemplo: N=1024, D=50, M=2
La población se representa como un tensor [1024, 50], los valores de evaluación como un tensor [1024, 2] y las restricciones como [1024, K]. La generación generation, la mejor solución best_x y el estado aleatorio rng_state residen de forma unificada en el dispositivo como tensores de estado. La actualización de cada generación puede completarse íntegramente sobre la misma dimensión de lote, en lugar de un bucle de Python individuo por individuo.

Beneficios y límites de la organización

Los tensores unificados reducen el tránsito entre host y dispositivo, disminuyen la sobrecarga de bucles y proporcionan una base de datos para el paralelismo posterior de operadores; sin embargo, es necesario gestionar la validez de las máscaras, el desperdicio por relleno, el crecimiento de la escala multiobjetivo y el coste de sincronización del estado.