13

Ключевые методы пакетных тензорных вычислений

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

В тензорной основе EvoXпакетные тензорные вычислениянаходятся на уровне алгоритмического представления: они единообразно отображают кандидатов, оценки и состояние эволюционного цикла втензоры с пакетной размерностью, а затем передают их GPU-дружественным пакетным операторам и скомпилированному вычислительному графу. Цель предельно ясна — превратить «последовательную эволюцию отдельных особей» в «параллельную эволюцию всей популяции», чтобы вычислительная мощность работала на сам поиск, а не расходовалась на планирование и запуск.

Процесс эволюции → граф пакетных тензорных вычисленийКлючевые методы пакетных тензорных вычислений① Тензорная организацияТензор популяции X[N × D]Цели и ограничения F[N × M]Выход оценки Y[N × M]Состояние эволюцииСкаляр или небольшой тензорный буфер② Пакетные операторы (по размерности N)МутацияX′ = X + σ·randn(X)СкрещиваниеПарная рекомбинация по размерности NОтборidx = topk(F, k)ОценкаY = fθ(X)③ Компиляционная оптимизация и пропускная способностьСлияние операторовМеньше запусков ядерВнутрипакетный параллелизмВсе кандидаты выполняются одновременноПереиспользование памятиПереиспользование буферов снижает затратыАсинхронное выполнениеПерекрытие вычислений и передачи данныхЕдиный тензорный вычислительный графXОбъединённый операторFОдин пакетный вызов охватывает всю партию кандидатовМетрики пропускной способностиКандидатов/с · Поколений/сОдин пакетный вызов охватывает всю партию кандидатовТолько общая пропускная способность отражает реальную эффективность поискаЗадержка одного шагаКандидатов/сМетрики переключаются при пакетном выполнении

I. Представление эволюционного процесса в виде тензоров

Если принять, что пакетная размерность N обозначает число кандидатов (особей), то три ключевых элемента эволюции напрямую выражаются в виде тензоров:

  • Тензор кандидатов: популяция X организуется как [N × D], где D — число переменных решения одного кандидата.
  • Тензор целей: цели и ограничения F организуются как [N × M], где M — число целевых/ограничительных членов; в многокритериальном случае каждая цель — это отдельный столбец F.
  • Переменные состояния: номер поколения, текущий оптимум, размер шага и т. п. хранятся в скалярных или небольших тензорных буферах, а не записываются попиксельно через объекты Python.

Таким образом, скрещивание, мутация, отбор и оценка полностью обрабатываются пакетно по размерности N, и в эволюционном цикле больше не возникает ветвлений и управляющих потоков для отдельных особей.

II. Пакетные операторы: от N вызовов по одному кандидату к одной пакетной операции

Три минимальных сопоставимых выражения обрисовывают базовую форму пакетных операторов:

  • Мутация: X′ = X + σ·randn(X) — вся партия кандидатов за одну пакетную операцию получает индивидуальные случайные возмущения, а σ управляет их интенсивностью.
  • Отбор: idx = topk(F, k) — по приспособленности N кандидатов за один раз выбираются индексы первых k кандидатов.
  • Оценка: Y = fθ(X) — один пакетный прямой проход или пакетная симуляция заменяет N вызовов по одному кандидату.

Ключ не в конкретном операторе, а в том, что все кандидаты совместно используют единый тензорный вычислительный граф: один пакетный вызов позволяет сократить накладные расходы интерпретатора и запуска ядер, заставляя вычислительную мощность GPU/многоядерных систем действительно работать на эволюционный поиск. Обработка ограничений и выхода за границы также может выполняться с помощью масок-тензоров в рамках той же пакетной операции, без отдельных ветвлений для конкретных кандидатов.

III. Оптимизация вычислительного графа и метрики пропускной способности

Если записать многопоколенную эволюцию в виде компилируемого графа потоков данных, можно дополнительно выжать производительность:Слияние операторовсокращает число запусков ядер,Внутрипакетный параллелизмобеспечивает одновременное выполнение всех кандидатов,Асинхронное выполнениепозволяет перекрывать вычисления и передачу данных,Переиспользование памятисокращает выделение промежуточных тензоров. Соответственно, метрики производительности также должны сместиться с «задержки одного шага» ккандидатов/с или поколений/спропускной способности — при пакетном выполнении один вызов обрабатывает всю партию кандидатов, и только общая пропускная способность реально отражает эффективность поиска.

Типичное заблуждение
Не оборачивайте пакетные операторы в цикл по отдельным особям — это равносильно возврату накладных расходов интерпретатора и запуска ядер, а пакетная размерность утрачивает смысл параллелизма. Критерий прост: на одном шаге эволюции планирование должно вестись только на уровне «пакета», без уровня «особи».