Напомню основную суть Evolution Strategies, про которые я уже когда-то писал:
Итак, вы находитесь в текущей точке пространства параметров - Theta. Метод пытается совершить градиентный подъём в нём, но, так как градиентов-то никаких нет, мы пытаемся его оценить как бы с помощью конечной разности. Одна итерация метода выглядит так:
1) Сэмплируем N стандартных нормальных шумов
2) Генерируем N новых Theha_i = Theta + Sigma * Noise_i
3) Получаем качество в этих точках - R_i
4) Оценка градиента Grad равна сумме по всем R_i * Noise_i / (N * Sigma)
5) Делаем шаг по нему: Theta_new = Theta + Alpha * Grad
У одной команды ресёрчеров родилась смелая идея - а что, если оптимизировать LLM с помощью такого метода? Для этого нужно использовать метод с пачкой оптимизаций (не особо гениальных, надо сказать):
- Вместо того, чтобы передавать шумы на воркеры для эвала, мы просто передаём рандом сид, и потом восстанавливаем такой же шум из него
- Чтобы минимизировать затраты по памяти, мы применяем этот шум in-place по одному тензору, а после эвала точно таким же образом вычитаем этот шум обратно
- Также, при подсчёте итогового шага мы делаем всё in-place для экономии памяти, слой за слоем
То есть, по факту применяется самый базовый ES-алгоритм, и получаются результаты, сопоставимые с GRPO-обучением на их задаче. Я не собираюсь детально оценивать, лучше это или хуже бейзлайна, интересен даже сам факт сопоставимости.
Главная загадка природы - как ES с размером популяции 30 (!!!) смог оптимизировать модель с миллиардом параметров? Авторы отсылают к идее о том, что обучение LLM на самом деле происходит в пространстве гораздо меньшей размерности, чем кажется.
Они упоминают статью Intrinsic Dimensionality Explains the Effectiveness of Language Model Fine-Tuning [2020]. У Техножрицы были про неё отдельные посты, я же ограничусь совсем кратким пересказом:
Авторы берут разные языковые модели и дообучают их на задачах, но при этом искусственно ограничивают размерность подпространства, что-то типа LoRA. Они перебирают размерность этого обучения и смотрят на качество, затем высчитывают так называемый
d_90 = какой размерности нужна "LoRA", чтобы получить 90% от качества полной модели.Результаты получились такие - во-первых, в процессе претрейна
d_90, если запускать из данного чекпоинта, падает со временем. Во-вторых, чем больше модель, тем меньше этот самый d_90. То есть, если предобучить большую модель на большом датасете, то дотюнивать модель можно в пространстве очень маленькой размерности.На мой взгляд, это всё очень интересно. В то же время, возникает вопрос - если вся модель файнтюнится с помощью ES, потому что это всё происходит в пространстве маленькой размерности, получается, что можно напрямую LoRA с помощью ES? Есть повод задуматься о том, что можно выжать из претрейна LLM таким образом. Может быть, суперинтеллект и не выйдет, но, вполне возможно, получится хорошо забустить генерализацию или другие желаемые качества. А так, как пространство параметров маленькое, переобучения можно почти не бояться, и нужно совсем немного данных.
@knowledge_accumulator