gonzo-обзоры ML статей – Telegram
gonzo-обзоры ML статей
24K subscribers
2.71K photos
2 videos
3 files
1.34K links
Авторы:
Гриша Сапунов, ранее руководитель разработки Яндекс-Новостей, ныне CTO Intento. Области интересов: AI/ML/DL, биоинформатика.
Лёша Тихонов, ранее аналитик в Яндексе, автор Автопоэта, Нейронной Обороны... Области интересов: discrete domain, NLP, RL.
Download Telegram
Less is More: Recursive Reasoning with Tiny Networks
Alexia Jolicoeur-Martineau
Статья: https://arxiv.org/abs/2510.04871
Код: https://github.com/SamsungSAILMontreal/TinyRecursiveModels

Недавно разобранная HRM (https://news.1rj.ru/str/gonzo_ML/4097) продемонстрировала интересный результат с малым размером модели, при этом последующий анализ от организаторов ARC-AGI показал, что в первую очередь на результат влияет последовательное улучшение ответа (deep supervision), а рекурсия в H и L модулях добавляет не очень много. Новая работа про TRM (Tiny Recursive Model) ставит под сомнение необходимость всей этой сложности и исповедует философию — «меньше значит больше». Новая модель TRM содержит 5M-19M параметров (есть нюансы), против 27M у HRM

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

Также постоянно следует помнить, что сравнение HRM/TRM с традиционными LLM во многом ущербно, это модели совсем разных классов. LLM -- довольно общие модели, обученные на всём интернете на задачах продолжения текста, включая сложные файнтюны на чат, инструкции, решение различных задач по математике и прочим дисциплинам и т.д. То, что при этом они способны _ещё_ и решать судоку, лабиринты, тесты ARC-AGI -- для меня на самом деле довольно удивительно. Все современные LLM это трансформер-декодеры (есть гибриды с SSM, но здесь это не важно). HRM/TRM -- это трансформер-энкодер (как BERT), он не продолжает никакую последовательность токен за токеном, он обрабатывает все токены сразу и генерит новую последовательность той же длины, что и входная. HRM/TRM (в отличие от BERT, тоже обученного примерно на всём интернете) обучается только на одну конкретную задачу из списка, ни про какую универсальность здесь речи пока нет. Так что все восторженные посты в духе, что вот появилась модель в миллион раз меньшая по размеру и бьющая лучшие топовые LLM и скоро всем им кранты, дотацентры не нужны и прочее -- надо делить на тот же миллион, многие из авторов вообще не разобрались, что сделано.

🩼 Что было не так с HRM

В HRM было несколько моментов, потенциально требующих улучшения.

* Implicit Function Theorem (IFT) with 1-step gradient approximation: Есть вопрос про бэкпроп только через две из всех рекурсий (последнее состояние H и L), которым я также задавался. Нет уверенности, что IFT применима к данному кейсу с HRM. Вообще не факт, что неподвижная точка достигается. Авторы оригинальной работы использовали по два шага рекурсии на каждом из уровней (H и L), и получается, что HRM предполагала достижение неподвижной точки обоими модулями лишь после двух прямых проходов L, одного H и снова одного L. Это вызывает сомнения.

* ACT (Adaptive Computation Time): уменьшало количество вычислений, но имело свою цену. Q-learning для значений продолжения/остановки требовал дополнительного прямого прохода через HRM.

* Отсылки к биологии: Авторы создавали HRM изначально с отсылкой к биологическим процессам, и (корреляционно) подтверждали аналогию с реальным мозгом млеков. Это интересно, но не объясняет, почему HRM была сделана именно так как сделана.

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

Идея авторов работы про TRM -- можно упростить HRM и рекурсивный процесс в ней, и понять модель без необходимости в биологических аргументах, теоремах о непрерывной точке, иерархических интерпретаций и двух разных сетей. Заодно они объясняют, почему 2 -- это оптимальное количество фич (z_L и z_H).

🏗 Архитектура TRM

Модель устроена так, что есть одна маленькая сеть, являющаяся по сути стандартным блоком трансформера: [self-attention, norm, MLP, norm]. В оригинальной идее таких блоков было 4 (но после экспериментов пришли к 2).
10👍2
На входе у неё три элемента: input (x), latent (z) и prediction (y), они все суммируются в одно значение. В самом начале прилетает только x, всё остальное нули (?). Базовая итерация, аналогичная модулю L в HRM генерит значение latent (z, оно же обозначено в формуле рекурсии как z_L) на выходе слоя, и обновлённый z поступает обратно на вход модулю, где он теперь добавляется к input (x) не как нуль. Выход-предсказание (y, оно же в формуле обозначено как z_H) тоже добавляется, но поскольку оно не обновилось, оно ничего не меняет. Значение z_H будет посчитано только в конце итерации на базе z_L и предыдущего z_H, вход x здесь не участвует.

Обучение по сути идёт на трёх уровнях. Описанный выше процесс -- это самый глубокий уровень, называется latent recursion. Итого, рекурсивный процесс TRM содержит n вычислений f_L и одно вычисление f_H, бэкпроп идёт через всю рекурсию, нет больше необходимости полагаться на теоремы о неподвижной точке.

Уровнем выше можно гонять и несколько итераций f_H, последовательно улучшая оба значения z_L (z) и z_H (y). Этот процесс называется deep recursion.

Наконец, ещё уровнем выше кроме рекурсивного процесса есть и deep supervision, как у HRM. Цикл обучения включает до Nₛᵤₚ=16 шагов супервизии. На каждом шаге модель выполняет процесс deep recursion:

1. Внутренний цикл (latent recursion): Сначала сеть обновляет скрытый признак рассуждений z в течение n=6 шагов (z ← net(x, y, z)), а затем один раз уточняет ответ y (y ← net(y, z)).
2. Внешний цикл (deep recursion): Внутренний цикл выполняется T=3 раза. Первые T-1=2 выполнения проходят без отслеживания градиентов, чтобы эффективно приблизить скрытые состояния к хорошему решению. Последнее выполнение позволяет градиентам пройти через все n+1=7 вызовов сети. Полученные (y,z) затем отсоединяются от графа вычислений и используются для инициализации следующего шага супервизии.

Такая структура позволяет крошечной двухслойной сети достигать эффективной глубины в 42 слоя на каждом шаге супервизии (как я понимаю это (6+1) шагов внутреннего цикла * 3 внешних цикла * 2 слоя), что в итоге может значительно превысить 384 слоя (здесь будет 42*16=672), которых достигал её предшественник HRM.

🤔 Переинтерпретация HRM

Это в целом идейно повторяет иерархический подход HRM с двумя сетями/фичами/латентами. Здесь можно задаться вопросом, почему две иерархические фичи, не одна, не три или ещё сколько-то? Авторы предлагают своё объяснение, переинтерпретируя фичу z_H как эмбеддинг текущего решения, которое если надо будет преобразовано в выходной токен через выходную голову сети и argmax. Фича z_L в свою очередь -- это латентная фича, напрямую не связанная с выходным решением, но которая может быть в него трансформирована через f_H. В такой интерпретации иерархия не нужна: есть вход x, есть предложенное решение y (ранее называемое z_H), есть латентная фича для ризонинга z (ранее z_L). Модель последовательно улучшает свой латент z, а затем на базе него и предыдущего решения y выдаёт новый y (но может остаться и со старым, если он хорош).

Итого, TRM предлагает гораздо более простую и интуитивную интерпретацию:
* y (ранее z_H): Текущий (в виде эмбеддинга) выходной ответ.
* z (ранее z_L): Скрытый признак, представляющий след рассуждений или «цепочку мыслей» (chain-of-thought).

На сам алгоритм это не влияет, это лишь реинтерпретация для лучшего понимания и это ответ на то, почему две фичи: удержание в памяти контекста вопроса x, предыдущего ризонинга z и предыдущего ответа y помогает модели итерировать своё решение, следующий ризонинг z и следующий ответ y. Если не передавать предыдущий z, то модель не будет знать, как она пришла к предыдущему решению. Если не передавать предыдущий y, то модель не будет знать, какое решение было до этого и будет вынуждена хранить его где-то внутри z вместо того чтобы использовать z для латентного ризонинга.
👍43🔥2❤‍🔥1
Интересно, что это отличается от латентного ризонинга в стиле Coconut (https://news.1rj.ru/str/gonzo_ML/3567), там он был на уровне токенов при авторегрессионной генерации, тут же он скорее на уровне глубины вызова модели, разворачивание идёт в другом измерении.

Авторы пробовали другое количество фич, как в большую, так и в меньшую стороны. Один из вариантов разбивал z на множество фич z_i и каждая итерация рекурсии обновляла одну конкретную фичу из них, перенося все остальные как есть. Качество упало относительно варианта с двумя фичами (но не удивлюсь, если следующая работа найдёт этому причины, типа проблем с градиентным сигналом, и предложит хаки, чтобы это заработало). Авторы объясняют это тем, что нет какой-то причины для разбиения z на множество частей. Другая крайность, с одной фичей z_H, привела к ещё более серьёзному падению качества. Авторы объясняют это необходимостью для модели хранить решение y внутри z (но может надо просто отскейлить скрытый эмбеддинг?).

В предложенной схеме отпадает и необходимость в двух отдельных сетях H и L (и соответственно в 2x параметров) -- решаемая задача z ← f_L(x + y + z) или y ← f_H(y + z) определяется по наличию или отсутствию x на входе (но что это значит на уровне обучения модели и структуры эмбеддингов -- для меня вопрос). В итоге имеем одну сеть вместо двух, и абляции показали, что это даёт улучшение на Sudoku-Extreme с 82.4% до 87.4% (но тоже не удивлюсь, если при скейлинге окажется, что это таки играет, просто недообучили и не вбухали компьюта сколько надо).

🗼 Другие архитектурные модификации

Авторы пробовали докинуть больше слоёв в модели, но получили оверфиттинг. Как они пишут “Surprisingly, we found that adding layers decreased generalization due to overfitting.” Не знаю, честно говоря, что тут такого прямо surprising, ML 101 какой-то, ну да ладно. В современный век видимо все привыкли, что надо скейлить.

В другую сторону, уменьшая слои, но увеличивая количество рекурсий, чтобы эффективная глубина и количество компьюта оставались теми же, обнаружили, что 2 слоя это оптимум, дают на Sudoku-Extreme улучшение с 79.5% до 87.4%, а число параметров в два раза меньше (5M вместо 10M). Авторы ссылаются на работу “Fixed Point Diffusion Models” (https://arxiv.org/abs/2401.08741), где вроде тоже два слоя оказались оптимальны в контексте deep equilibrium diffusion models, но там перформанс был аналогичен более тяжёлым моделям, а здесь он прямо выше. Less is more. Маленькая сеть в сочетании с глубокой рекурсией и deep supervision позволяет обойти оверфиттинг при малом количестве данных. Интересно, как было бы при скейлинге датасета.

Был эксперимент под влиянием MLP-Mixer (https://news.1rj.ru/str/gonzo_ML/776) с заменой self-attention на MLP, работающем на всей длине последовательности, поскольку он требует меньше параметров для случая, когда длина контекста (L) меньше скрытой размерности (D). Это улучшило результат на Sudoku-Extreme с 74.7% до 87.4%, но ухудшило для Maze-Hard и ARC-AGI, требующих большего контекста.

TRM упрощает механизм адаптивного времени вычислений (ACT). Можно отказаться от отдельного вычисления для continue loss, достаточно иметь halting probability, тогда минус один forward pass модели, но по-прежнему достаточно точное определение, когда модели нужно остановиться, что значительно ускоряет процесс. Это дало слабое улучшение с 86.1% до 87.4% (непонятно какие здесь доверительные интервалы).

Также имплементировали экспоненциальное скользящее среднее (EMA, 0.999) для весов, поскольку на малом количестве данных модель быстро оверфитится и начинает расходиться, тоже улучшает качество с 79.9% до 87.4% (ну или скорее ухудшает с 87.4% до 79.9%, когда от полной модели это отнимают). Как я понимаю, берётся предыдущее сглаженное значение параметров модели с весом 0.999 и добавляется новое с весом 0.001.
2👍1
Подбирали количество рекурсий, обнаружили оптимальные значения для HRM T = 3, n = 3 (эквивалентно 48 рекурсиям) и для TRM T = 3, n = 6 (42 рекурсии), это на Sudoku-Extreme. TRM требует бэкпропа через всю глубину рекурсии (правда T на это не влияет, там T-1 шагов делаются без градиента), так что увеличение начинает приводить к Out of Memory.

🧪 Эксперименты

Тестирование такое же, как и в статье для HRM: ARC-AGI-1 и -2, Sudoku-Extreme, Maze-Hard.

В Sudoku-Extreme использовались 1K примеров для обучения и проверка на 423K примеров. Maze-Hard по 1000 примеров в обучении и тесте. То есть вроде как в HRM, может с поправкой на random seed и конкретные выборки тысячи примеров. Для ARC-AGI использовался также датасет ConceptARC для аугментации (это вроде не как в HRM, но похоже на то, что делала команда ARC-AGI в своей проверке). Аугментации тоже не уверен, что целиком повторяли таковые из статьи про HRM, надо копать глубже. Цифры для HRM в точности такие же как в оригинальной статье, так что видимо брали из самой статьи, но с другой стороны код для HRM в репе TRM тоже лежит.

Общий результат, TRM достигает ещё более высоких цифр, чем HRM:
* 74.7%/87.4% (версия с attention/версия с MLP) против 55% для Sudoku
* 85.3% (версия с attention, версия с MLP даёт 0) против 74.5% для Maze
* 44.6%/29.6% (attn/MLP) против 40.3% для ARC-AGI-1
* 7.8%/2.4% (attn/MLP) против 5.0% для ARC-AGI-2

Интересно, что для судоку лучше работает версия с MLP, для остальных, требующих большего контекста, лучше версия с вниманием. Версия TRM с вниманием содержала 7M параметров, версия с MLP -- 5M для Sudoku и 19M для остальных задач. HRM всегда была 27M.

В приложении есть небольшая секция про идеи, которые не сработали. Среди таковых:
* Замена SwiGLU MLP на SwiGLU MoE -- генерализация сильно просела, но возможно на большем количестве данных было бы по-другому.
* пробовали проводить градиенты меньше, чем через всю рекурсию -- например, только через последние 4 шага -- никак не помогло, только всё усложнило.
* убирание ACT всё ухудшило
* общие веса для эмбеддингов входа и выхода всё ухудшили
* замена рекурсии на fixed-point iteration из TocrhDEQ замедлило и ухудшило. Возможно, это лишнее подтверждение, что сходимость к неподвижной точке не важна.

ARC-AGI проверили результаты для TRM (https://x.com/arcprize/status/1978872651180577060)
- ARC-AGI-1: 40%, $1.76/task
- ARC-AGI-2: 6.2%, $2.10/task
Здесь разброс между статьёй и измерениями самих ARC меньше, чем был у HRM.

TRM меньше, но рантайм жрёт больше (неудивительно при наличии рекурсии). Возможно, более хорошие результаты не от того, что модель умнее, а от того, что училась дольше? Не понял, насколько модели одинаковы по части затраченных FLOPS, было бы интересно посмотреть.

---

Короче, работа прикольная, эмпирический результат интересный. Нет чувства, что глубоко понятна теоретическая часть, почему именно эти рекурсии работают так хорошо. Также эта работа -- прикольный пример какой-то архитектурной изобретательности в противовес вечному скейлингу моделей (хотя отскейлить эту конкретную тоже интересно, как и распространить её на другие классы задач). Думаю, будут развития. Эксперименты не выглядят сильно дорогими, рантайм от <24 часов до примерно трёх дней максимум на 4*H100, если верить данным в репе.

Всем хороших рекурсий!
🔥10👍43🤮1
This media is not supported in your browser
VIEW IN TELEGRAM
6
Агенты для исследования массово выходят в опенсорс.

Сразу две работы за последнее время:
* Barbarians at the Gate: How AI is Upending Systems Research (https://news.1rj.ru/str/gonzo_ML_podcasts/966)
* Scientific Algorithm Discovery by Augmenting AlphaEvolve with Deep Research (https://news.1rj.ru/str/gonzo_ML_podcasts/979)

Используют OpenEvolve (https://github.com/codelion/openevolve) и DeepEvolve (https://github.com/liugangcode/deepevolve)
1👍15🔥10
Если не видели, тут очередной курс по трансформерам выкладывают.

CME 295 - Transformers & Large Language Models
This course explores the world of Transformers and Large Language Models (LLMs). You'll learn the evolution of NLP methods, the core components of the Transformer architecture, along with how they relate to LLMs as well as techniques to enhance model performance for real-world applications. Through a mix of theory and practical insights, this course will equip you with the knowledge to leverage LLMs effectively. Ideal for those with a background in calculus, linear algebra, and basic machine learning concepts.

https://cme295.stanford.edu/syllabus/
🔥29👍31💩1