Recursion strikes back Тема про рекурсию активно развивается в последний год. Мне кажется, это уже становится трендом, который должен дать много полезного выхлопа. Вот даже YCombinator на днях выложил видео “Recursion Is The Next Scaling Law In AI”, где они разбирают HRM и TRM (которые мы разобрали полгода назад, здесь и здесь соответственно) — опережаем YC в важных вещах на полгода! 💪😁 Ну а если серьёзно, то хочется эту тему немного дополнить. Видео хорошее, если хотите понять идеи за HRM/TRM и пока ещё не успели это сделать. И они молодцы, что при этом даже показывают немного кода для объяснения. Но видео могло бы быть сильно лучше, если бы авторы дали чуть больше контекста. Что хорошо, они начинают с RNN, это ценно, а то в современном мире для многих ничего кроме трансформеров уже не существует. Исторический контекст HRM мы разбирали здесь, там кроме просто RNN как класса было много важных добавлений про Clockwork RNN и быстрые-медленные веса. Что плохо, в видео рассказывают про HRM/TRM напрочь игнорируя важные работы-предшественницы. Во-первых, как вы можете догадаться, это мой любимый Universal Transformer (2018) про который я вам тут уже все уши прожужжал. Ну это прям странно ничего не сказать про эту работу, когда она была одной из первых важных вех с рекурсией в трансформерной эре. Были, конечно ещё Transformer-XL (2019) и Compressive Transformer (2019), но у последних двух рекурсия была по последовательности (что хорошо для обработки длинных последовательностей особенно когда у тебя контекстное окно мелкое, как было в те годы), а у UT рекурсия по глубине, используя шаренные веса общего для всех слоя, это другое. То есть для XL это скорее память, а для UT — вычисления. Ещё в 2019 был ALBERT aka A Lite BERT, который я вижу как UT-Lite, тоже шаренные веса, то есть применяется один и тот же слой, но нет механизма адаптивной остановки, количество рекурсий (=глубина трансформера) задана и фиксирована извне, просто работает всегда L итераций. UT в отличие от него для каждого токена мог решать, как долго его надо обрабатывать — простые можно быстро прогнать через несколько слоёв и успокоиться, а сложные можно и подольше поварить, если надо. Работа про HRM при этом на UT ссылается, он как бы один из предшественников, а работа про TRM вообще про него молчит, хотя TRM сильно более похож на UT, чем HRM. Второй большой момент — в конце 2025 появилась работа про URM, которую мы тогда же немедленно и разобрали. URM — это прям уже практически UT, и они конечно не могли не сослаться. В видео YC стоило бы его включить, как никак уже почти пять месяцев прошло, да и результат как бы лучше, чем у HRM/TRM. Пытался оставить им комментарий в ютубе, но все мои комментарии со ссылками ютуб по-тихому грохнул, я их не вижу 😿 Ну и ещё напрочь были проигнорированы все истории про Looped Transformers (которые по сути синоним UT) и которые уже появляются на масштабах малых LLM, из наиболее известных это Huginn (https://arxiv.org/abs/2502.05171) и Ouro (https://ouro-llm.github.io/). Чтобы лучше подсветить разницу между всеми этими моделями, я в новой версии своей статьи про UT+memory даже табличку собрал (см. Table 9 здесь https://arxiv.org/abs/2604.21999v3). Возвращаясь к теме про рекуррентность, таки да, я тоже считаю, что это большая тема. “Итерация от человека. Рекурсия - от Бога.” 😁 С теоретической стороны от неё поближе будет к универсальным вычислениям. С более практической стороны это два офигенных свойства: 1) низкий memory footprint — вместо модели, требующей памяти на условно 24 слоя, мы получаем модель весом в 24 раза меньше (ладно, в реальности не в 24, ибо эмбеддинги ещё, но тем не менее). Для edge и особенно носимых устройств вообще биг дил. С нынешними ценами на память — тоже 😁 1b) А как следствие ещё и избавляемся от постоянной загрузки весов из HBM (или ещё хуже обычной памяти, или совсем-совсем хуже — с диска) в SRAM ускорителя, что ещё всё ускоряет. Меньше гоняем данные — больше считаем, utilization ускорителя растёт.