5

Organisation tensorielle des populations, de l'évaluation et de l'état

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

Dans l'implémentation technique des algorithmes évolutionnaires,l'organisation tensorielleunifie la représentation de « ce qu'est la population, comment elle est évaluée et où en est l'exécution » : au lieu d'objets et de listes épars, on obtient des tenseurs réguliers. Il s'agit essentiellement d'établir un contrat de données unifié pour la population, l'évaluation et l'état, afin que le calcul par lots, la résidence sur l'appareil et l'ordonnancement parallèle ultérieur partagent une même sémantique mémoire.

Organisation tensorielle des populations, de l'évaluation et de l'étatMapper de façon unifiée les solutions candidates, l'évaluation de la fitness et l'état de l'algorithme en tenseurs calculables par lots entiersOrganisation séquentielle traditionnelleObjets et listes stockés de façon disperséeListe de candidatsListe / collection d'objetsÉvaluation individuelleAppels répétés à la fonction d'évaluationÉtat disperséScalaires / variables globalesBoucle sur chaque individuAllers-retours fréquents entre l'hôte et l'appareilTensorisationl'organisation tensoriellePopulation · évaluation · état unifiés en tenseurs réguliers, formant un contrat de données unifiéNDTenseur de population[N, D]N est la dimension de lot, D la dimension de décisionMutation et croisement par lotsEn une seule passeNMKMatrice d'évaluation[N, M] ou [N, M+K]M objectifs, K contraintesVectorisation de la fonction d'évaluationRenvoie les résultats du lot entierConteneur de tenseurs d'étatScalaire ou petit tenseurGénération, meilleure solution, état du générateur aléatoireRésidence unifiée sur l'appareilPoints de contrôle et reproductibilitéExemple : N = 1024, D = 50, M = 2 · population [1024, 50], évaluation [1024, 2]Dimension de lot en tête : opérateurs vectorisés sur tout le lot selon NIndividus de longueur variable : remplissage + masque ou segmentation en bucketsÉtat unifié : reproductible, traçable, mis à jour par lots

Tensorisation de la population : encodage en [N, D]

Organiser N solutions candidates selon la dimension de lot en un tenseur d'encodage de forme [N, D]. Les variables continues, discrètes ou les encodages multi-segments peuvent être exprimés par des tenseurs de champs ou des blocs groupés, en conservant un type de données et un emplacement d'appareil unifiés.

  • Dimension de lot en tête: on place généralement N à la position la plus externe, afin qu'un même opérateur s'exécute de manière vectorisée sur tout le lot.
  • Blocage par champs: si un individu est composé de plusieurs segments de paramètres, on peut le décomposer en [N, D1] + [N, D2] + … tout en conservant un stockage contigu.
  • Gestion des longueurs variables: les individus de longueur variable sont traités par remplissage avec masque ou par segmentation en buckets, afin d'éviter que des structures hétérogènes ne perturbent le calcul par lots.

Matricialisation des résultats d'évaluation : [N, M] et [N, K]

Une évaluation par lots produit une matrice de fitness [N, M] ; les objectifs multiples, contraintes multiples et indicateurs supplémentaires peuvent être juxtaposés en [N, M+K] ou stockés dans des tables séparées, évitant ainsi les appels répétés à la fonction d'évaluation pour chaque individu.

Gestion unifiée des tenseurs d'état

La génération, l'état du générateur aléatoire, les hyperparamètres de stratégie, la meilleure solution, le cache d'historique, l'état de classement ou d'échantillonnage sont eux aussi intégrés dans des tenseurs ou un conteneur d'état structuré, garantissant reproductibilité, traçabilité et mises à jour par lots.

Exemple : N=1024, D=50, M=2
La population est représentée par un tenseur [1024, 50], les valeurs d'évaluation par un tenseur [1024, 2] et les contraintes par un tenseur [1024, K]. La génération, la meilleure solution best_x et l'état aléatoire rng_state résident de façon unifiée sur l'appareil en tant que tenseurs d'état. La mise à jour de chaque génération s'effectue globalement sur la même dimension de lot, plutôt que par une boucle Python sur chaque individu.

Bénéfices et limites de l'organisation tensorielle

Des tenseurs unifiés permettent de réduire les allers-retours entre l'hôte et l'appareil, d'abaisser le coût des boucles et de fournir une base de données pour le parallélisme ultérieur des opérateurs ; il faut toutefois gérer la validité des masques, le gaspillage dû au remplissage, la croissance de l'échelle multi-objectifs et le coût de synchronisation des états.