Итак, мы прочитали Шиншиллу, Каплана и прочие работы про scaling laws и разобрали их.

Мы знаем рецепты: хотим модель на N параметров - прикинули, сколько нужно токенов и FLOPs и какой будет loss. Даже размер батча подбирать научились.

Вроде, все супер.

Но есть вопрос, на который scaling laws не отвечают: с каким learning rate обучать модель?

Learning Rate - это размер шага, которым оптимизатор двигает веса на каждой итерации.

Если он слишком большой, то обучение штормит или взрывается (loss улетает в бесконечность).

Если он слишком маленький, то модель ползет к минимуму слишком медленно и за бюджет токенов не доходит до хорошего качества.

Где-то посередине есть оптимум, но он свой для каждой конфигурации.

И вот в чем проблема: оптимальный LR зависит от размера модели, а точнее, от ее ширины. Подобрал идеальный LR на модели в 100M параметров, и на модели 100B он уже совсем другой.

Остается только перебирать заново, что ну очень дорого: один прогон модели на 175B стоит миллионы долларов и недели GPU-времени, а перебор - это десятки-сотни таких прогонов.

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

μP (maximal update parametrization) и μTransfer убирают это гадание на рунах из абрикосовой косточки.

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


Что такое μP

Кроме гипер параметров самой архитектуры (сколько у модели слоев, какая у них ширина, какой тип attention используется, какое количество нейронов) у модели есть еще два гипер параметра, про которые редко говорят.

  1. С каких чисел стартуют веса. Перед обучением веса заполняют случайным шумом. И вариация тут заключается в том, на сколько крупный этот шум или, другими словами, какой у него разброс.
  2. Насколько большой шаг делает каждый слой при обучении. Это learning rate, и не обязательно один на всех: у разных слоев он может быть разным.

Вот эти два набора правил: каким шумом инициализировать и какой LR у каждого слоя, - называются параметризацией.

Это не веса и не архитектура, а правила настройки вокруг них. Одну и ту же модель можно стартовать по разным таким правилам, и обучаться она будет от этого сильно по-разному.