4

От списка кандидатов к тензоризованному вычислительному графу

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

В эволюционных вычисленияхразнообразие— обязательное условие эффективности алгоритма: только поддерживая достаточно большое число кандидатных решений, можно избежать того, что давление отбора слишком рано загонит популяцию в локальный оптимум. Но разнообразие одновременно означает огромный объём вычислений — за один запуск часто требуется оценить десятки тысяч и даже миллионы кандидатных решений. Когда кандидаты записаны в виде обычного массива объектов и поочерёдно отправляются на оценку в цикле, большая часть времени вычислений уходит на поэлементное планирование и управляющие потоки宿主-языка, а не на собственно численные операции. Именно в этом и заключаетсянизкая эффективность традиционного последовательного CPU-цикла при обработке десятков тысяч оценок кандидатов— его коренная причина.

От списка кандидатов к тензоризованному вычислительному графуСмена парадигмы представленияСписок кандидатов (поэлементная обработка)Каждый кандидат — отдельный объект1Кандидат x₁2Кандидат x₂3Кандидат x₃4Кандидат x₄По одному кандидату · последовательный CPU-циклНизкая эффективность при десятках тысяч оценокНакладные расходы — на поэлементном планировании и управляющих потокахТензор кандидатовВсё поколение кандидатов записывается сразу[размер популяции, размерность решения]Одна строка = одно кандидатное решениеВычислительный граф: тензоризованные операцииОтбор и обновление состояния попадают в граф и подвергаются компиляционной оптимизацииМутацияДействует на всю популяциюОценкаЗа один вызов — всё поколениеОтборТензорная индексацияОбновление состоянияУзел редукцииВесь граф подвергается компиляционной оптимизации: слияние операторов · параллельное планированиеФорма выхода оценки: [размер популяции] или [размер популяции, число целей]Целостное вычисление: мутация, оценка, отбор и обновление состояния за один раз попадают в вычислительный граф

Смена парадигмы представления: от списка кандидатов к тензоризованному вычислительному графу

EvoX приносит не локальное ускорение какого-либо оператора, аизменение способа представления эволюционного процесса: от поэлементной обработки кандидатов по одному к пакетным вычислениям, где тензор — полноправный участник. Множество кандидатов больше не разбросано по массиву объектов, а вместе с результатами оценки и состоянием алгоритма организовано в единый тензор, что позволяет им участвовать в вычислениях целиком.

  • Тензор кандидатов: всё поколение кандидатов записывается в тензор формы [размер популяции, размерность решения]. При этом «один кандидат» — это всего лишь одна строка тензора, а не отдельный объект宿主-языка.
  • Пакетные операторы: такие операции, как мутация, применяются напрямую ко всей популяции, и один вызов завершает обновление всех кандидатов, а не требует N вызовов в цикле.
  • Пакетная оценка: в форме evaluate(тензор кандидатов) за один раз получаются результаты оценки всего поколения; единица измерения количества оценок меняется с «штуки» на «пакет».
  • Вычислительный граф: отбор и обновление состояния перестают быть лишь последовательной управляющей логикой и становятся узлами графа, получая тем самым возможность компиляционной оптимизации — слияния операторов, параллельного планирования и т. п.

Сравнение двух способов записи

Списочная запись выглядит примерно так: поочерёдно извлечь кандидата, поочерёдно оценить, поочерёдно сравнить и обновить состояние — каждый шаг опирается на циклы宿主-языка, и целостная оптимизация затруднена. Тензоризованная запись такова: тензор кандидатов → мутация → оценка → отбор → обновление состояния; вся цепочка состоит из тензорных операций и выражена в виде вычислительного графа, для которого компилятор может выполнять слияние и планирование на устройствах. Обратите внимание: логика алгоритма (распределение мутаций, давление отбора) не была переписана — переписанспособ представления.

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