Назад к блогу

Dust: предобучение трансформеров без обратного распространения

Dust: предобучение трансформеров без обратного распространения

Исследователи предлагают Dust — метод предобучения трансформеров, который полностью отказывается от обратного распространения в пользу поиска по пространству активаций. Вместо градиентов алгоритм использует возмущения на уровне отдельных токенов, что позволяет оценивать тысячи вариантов за один прямой проход и делает обучение на порядки эффективнее существующих эволюционных подходов. Это интересно как принципиальная проверка гипотезы: можно ли обучить сложную архитектуру с нуля, не считая ни одного градиента.

Обратное распространение (backprop) — стандартный способ обучения нейросетей: ошибка на выходе раскручивается назад по слоям, и каждый вес получает свою долю вины. Авторы Dust предлагают отказаться от этой аналитической структуры и заменить её брутфорс-вычислениями и поиском. Вопрос, который они разбирают, нетривиален: можно ли вообще обучить трансформер с нуля, не считая ни одного градиента через цепочное правило, и что для этого нужно.

Зачем заменять backprop

Авторы исходят из того, что в режиме больших вычислений общие методы, масштабируемые с вычислениями, в конечном итоге выигрывают, а требование дифференцируемости может ограничивать пространство работающих архитектур. Поэтому они строят Dust.

Ключевая идея — виртуальная популяция. В отличие от weight-space ES, это даёт популяцию как минимум на три порядка больше. При большой популяции (то есть существенно больших вычислениях) Dust приближает backprop, а в некоторых настройках даже превосходит его. Авторы, однако, прямо оговаривают: они не пытаются сделать Dust достаточно вычислительно эффективным, чтобы заменить backprop сегодня, и для практической альтернативы при текущих уровнях вычислений нужно на порядки больше вычислительной эффективности.

Почему искать по активациям, а не по весам

Пространство активаций интереснее для поиска потому, что рассуждение — вербализуемое или нет — «живёт» именно в активациях, а не в весах. Из этого следует, что обучение можно свести к поиску по скрытому рассуждению.

Dust сочетает возмущение в пространстве активаций с общим правилом присвоения заслуг, которое назначает разные награды на уровне токенов разным типам слоёв в блоке трансформера. Эти два смещения вместе с деталями реализации и мерами эффективности — например, избеганием интерференции между возмущёнными модулями — и составляют весь алгоритм. На практике это даёт порядки выигрыша: от 1M токенов Dust примерно в 10^3–10^4 раз эффективнее реализации трансформера EGGROLL.

Постановка задачи

Цель формулируется как заложить основы алгоритма поискового кредитного присвоения, конкурентоспособного с backprop на самой сложной задаче, которую авторы могли придумать: предобучение трансформеров. При этом на метод накладываются явные ограничения: не делать его вычислительно эффективным настолько, чтобы заменить backprop сегодня, и не обучать новые виды нейросетей, которые он делает доступными, — например, сети с внешней программой в цикле или трансформеры, зацикленные на много шагов, которые backpropagation through time с трудом обучает. И то и другое оставлено на будущую работу.

Все веса модели обучаются этим способом, кроме 2L скаляров остаточного смешивания, которые обучаются обычным weight-space ES.

Почему не evolution strategies

Узкое место evolution strategy — размер популяции: каждому члену нужна своя возмущённая копия весов и свой прямой проход, поэтому число членов ограничено доступным количеством прямых проходов. Каждый член всё равно остаётся одним элементом последовательности в батче.

Dust обходит это, возмущая активации независимо на каждом токене: в этом токене сеть ведёт себя так, будто к весам слоя, породившего активации, применено низкоранговое возмущение, хотя само возмущение в весах не материализуется. Последовательность в трансформере содержит несколько тысяч токенов, поэтому один прямой проход оценивает несколько тысяч членов на последовательность вместо одного.

Как считается кредит

Для линейного слоя y_t = W x_t выход возмущается на всех токенах добавлением шума, после чего выполняется прямой проход. Здесь σ — масштаб шума. На каждом токене s вычисляется центрированное снижение потерь c_s: это разница между возмущённой потерей текущего розыгрыша и средней возмущённой потерей на этом токене по розыгрышам, оценённым вместе в одном батчевом прямом проходе. Награда джиттера на токене t — это снижение потерь на t и, с затуханием γ, снижения потерь на последующих токенах, до которых джиттер доходит через внимание:

r_t = Σ_{s ≥ t} γ^{s−t} c_s

При γ = 0 джиттер вознаграждается только собственным токеном. Один независимый джиттер всех токенов — это draw, а популяция — это K розыгрышей. Усреднённый по розыгрышам шум, взвешенный наградой, даёт оценку ошибки на выходе слоя, а её внешнее произведение со входом слоя, уже вычисленным прямым проходом, просуммированное по токенам, — градиент весов.

Интерференция и меры против неё

При доступной популяции главная стоимость — интерференция: в одном прямом проходе джиттерятся много слоёв на многих токенах, поэтому изменение потерь, вознаграждающее шум одного токена, подхватывает эффект всех остальных возмущений в этом проходе.

Против этого применяются три меры. Разные типы слоёв джиттерятся в отдельных прямых проходах, каждый со своим масштабом шума, и каждый блок получает свои проходы. Внутренности внимания (query, key, value, gate, value embedding) джиттерятся отдельно: для них пересчитывается только выход внимания их блока с джиттером из кэшированных чистых активаций, а джиттеры оцениваются по выравниванию с оценёнными градиентами выхода внимания. Языковая модель-голова джиттерится напрямую на кэшированных логитах, пересчитывая только кросс-энтропию и только часть словаря за один draw, — это стоит малую долю прямого прохода и позволяет голове работать с гораздо большей популяцией.

При неограниченной популяции интерференция исчезает в пределе: градиент складывается линейно, а ошибки — как квадратный корень, поэтому их отношение падает с ростом популяции.

Гиперпараметры

Настраиваются масштаб шума каждого типа слоя, credit decay внутренностей внимания и доля популяции, которую получает каждый слой. Есть два способа настройки: grid search с обучением на малом бюджете токенов, сохраняющий настройку с наибольшим снижением потерь (надёжный, но дорогой), либо grid search, максимизирующий косинус между оценкой и backprop-градиентом на одном батче без обучения.

Credit decay γ задаёт, насколько шум в токене t вознаграждается снижением потерь на последующих токенах. Внутренности внимания кредитуются иначе: через оценку ошибки на выходе внимания по текущим и будущим токенам, а не напрямую по потерям токенов. Все слои не требуют кредитов от будущих токенов, кроме keys, values, gates и value embeddings, которые читаются последующими токенами и получают γ близкую к единице. Конкретные значения по умолчанию не приводятся.

Как сравнивали и что получилось

Стенд и методология

Обучение ведётся на GPT-style трансформерах на FineWeb с 4096-токенным BPE-токенизатором, батчем 16k токенов (8 последовательностей по 2048 токенов), одной эпохой и SGD с моментом при постоянной скорости обучения. Базовая модель имеет 8 слоёв и ширину 512. Бюджеты токенов перебираются от 100k до 20M, популяции — от 64 до 16k, backprop тюнится на той же сетке при каждом бюджете.

Популяция считается по-разному у участников: в draw для Dust и в прямых проходах батча для EGGROLL. Draw немного дешевле прямого прохода, потому что чистый прямой проход кэшируется, и draw, джиттерящий блок l, перезапускает только блоки с l и далее. K не включает draws головы и внутренностей внимания — они составляют малую долю FLOPs обновления.

Отдельно повторяли лестницу на 1M токенов под Adam для всех трёх методов, заново настраивая learning rates backprop, гиперпараметры Dust и step size, momentum и fitness shaping EGGROLL при каждой популяции.

Результаты

УсловиеDustEGGROLLbackprop
100k токеновниже backprop с нескольких сотен drawsподходит на 0.02 к Dust при 64 draws—
1M токеновниже backprop с тысячи drawsна 0.4–0.6 выше Dust—
10M токеновлестница выровнялась, предел чуть выше backpropна 0.4–0.6 выше Dust—
20M токеновлестница падает на 16k draws, предел 4.431 (95% интервал 3.89–4.58)на 0.4–0.6 выше Dust4.633

EGGROLL при 16k — в 256 раз большая популяция — всё равно не достигает Dust при 64 draws.

Под Adam EGGROLL почти ничего не выигрывает: его настроенная Adam-лестница в пределах 0.01 от SGD-лестницы из Table 1 при каждой популяции. Adam улучшает и Dust, и backprop, оставляя форму лестницы похожей; Dust с большой популяцией догоняет backprop, и интервал её предела лежит ниже backprop.

Оговорки

Оценка предела при 20M токенов слабо ограничена: лестница всё ещё падает, поэтому её следует читать как свидетельство сокращения разрыва, а не как измеренный предел. Механизм возможного превосходства над backprop не ясен. Вычислительная эффективность не была фокусом работы.

Возникновение backprop-подобных градиентов

Традиционное мнение: zeroth-order методы не могут обучать большие сети, потому что прямой проход возвращает один скаляр, дисперсия оценки градиента растёт с числом возмущённых измерений, а вместе с ней и нужная популяция. Это проверяли напрямую, обучая четыре размера — 2M, 7M, 38M и 243M параметров (диапазон в 120 раз) при фиксированных 10M токенов.

Измерялся косинус между оценкой Dust и backprop-градиентом на одном и том же батче, по типу слоя и по слою, на backprop-обученных чекпоинтах от 10M до 1B токенов, при росте популяции с 64 до 128k прямых проходов на шаг. Косинус растёт с популяцией для каждого типа слоя на каждой стадии обучения, и двухпараметрический закон

cos(K) = c_max / sqrt(1 + c/K)

подгоняется к каждому типу слоя с RMSE ниже 0.06, где c_max — потолок, а c — популяция, при которой слой достигает c_max/sqrt(2). Для чекпоинта на 100M токенов подгонки к средним по типу слоя косинусам имеют RMSE 0.0032–0.0367. Насколько близко градиенты Dust подходят к backprop, варьируется по типу слоя и по слою. Оценка EGGROLL при том же числе прямых проходов растёт с популяцией, но всё ещё ниже 0.05 по косинусу при 128k для каждого типа, кроме головы. С ростом числа токенов косинусы сохраняются по большинству слоёв, а при больших популяциях косинус остаётся плоским на двух порядках величины по токенам.

Полезные градиенты возникают из большой популяции сами по себе, без встроенного правила цепочки, лишь при лёгкой настройке гиперпараметров для максимизации косинусного сходства.

Пограничные случаи и ограничения

Проблемными остаются малые популяции: при 100k и 1M токенов Dust заканчивает ниже backprop, начиная с нескольких сотен отрисовок при 100k и с тысячи при 1M, а при 10M и 20M разрыв сокращается с ростом популяции. Большие бюджеты токенов тоже проблемны: требуемая для достижения и превышения backprop популяция растёт с числом токенов, хотя при достаточно большой популяции косинус остаётся плоским на двух порядках токенов, и это требование может перестать расти.

Глубокие сети отдельно не выделены; вместо этого проверялся размер модели от 2M до 243M параметров при фиксированных 10M токенов. Большие модели часто более популяционно-эффективны, а маленькие насыщаются раньше, тогда как большие продолжают улучшаться с ростом популяции.

Авторы прямо пишут, что вычислительная эффективность не была фокусом работы и нужны порядки величины большей эффективности, прежде чем Dust станет практической альтернативой backprop при текущих уровнях вычислений.

Связь с предыдущими работами

Ранние zeroth-order работы по предобучению языковых моделей (Allaire et al., 2025) изучали трудность обучения трансформеров с нуля через возмущения весов; их более поздний метод KronZO использует компактные возмущения с кронекеровой структурой и выборочные направленные обновления, чтобы улучшить предобучение и снизить потребление памяти. EGGROLL делает большие популяции возмущений весов эффективными на GPU за счёт низкоранговой структуры.

Dust, напротив, ищет по активациям и использует награды для каждого токена, чтобы извлечь больше сигнала из каждого прямого прохода. Возмущения активаций в Dust опираются на node perturbation. Dust оценивает сигнал от прямых возмущений во время предобучения трансформера, комбинируя награды для каждого токена с локальными целями для выходов внимания.

Что из этого следует на практике

  • Один прямой проход вместо популяции копий. Возмущая активации на каждом токене, Dust получает популяцию в несколько тысяч членов на одну последовательность — против одного члена на прямой проход у weight-space ES. Отсюда и порядки выигрыша: от 1M токенов Dust в 10^3–10^4 раз эффективнее EGGROLL-Transformer.
  • Кредит можно назначать без цепочного правила. Награда за джиттер складывается из снижения потерь на своём токене и, с затуханием γ, на последующих токенах, до которых джиттер доходит через внимание. При γ = 0 награда ограничена собственным токеном.
  • Интерференция — главная стоимость при доступной популяции. Её снимают разделением проходов: разные типы слоёв, внутренности внимания и голова джиттерятся отдельно, а голова — прямо на кэшированных логитах. В пределе большой популяции интерференция исчезает, потому что градиент растёт линейно, а ошибка — как корень.
  • Оценка совместима с современными оптимизаторами. Adam улучшает и Dust, и backprop, тогда как EGGROLL почти ничего от него не выигрывает. Оценка Dust работает с оптимизаторами, которые были настроены под backprop-градиенты.
  • Косинус с backprop растёт с популяцией и держится с ростом токенов. Это обнадёживает для масштабирования, хотя требуемая популяция для достижения backprop растёт с числом токенов. То, что градиенты Dust приближаются к backprop, но не сходятся точно, авторы считают хорошим свойством: другая траектория оптимизации в экспериментах может быть даже лучше.
  • Сегодня это не замена backprop. Нужны порядки величины большей вычислительной эффективности, прежде чем Dust станет практической альтернативой при текущих уровнях вычислений.

Источники

Похожее