Jet-Nemotron: Efficient Language Model with Post Neural Architecture Search
[Статья]
[Код рады бы запоенсорсить, да комплаенс не позволяет]
[Авторазбор на gonzo_ML_podcasts]
Введение
Лучшие умы 🧠 человечества уже без малого десятилетие озадачены поиском более эффективной альтернативы механизму внимания. Было много интересных решений, но как оказывалось, чего-то в них всегда не хватало, чтобы иметь ту же выразительность и универсальность, что attention.
Потому вместо полного отказа от attention люди пробовали гибридные модели с небольшим количеством attention блоков и заменой всего остального на что-то более дешевое (Mamba, LinearAttention, и т.д.).
И сегодняшняя статья про поиск 🔎 такого гибрида.
[Статья]
[Код рады бы запоенсорсить, да комплаенс не позволяет]
[Авторазбор на gonzo_ML_podcasts]
Введение
Лучшие умы 🧠 человечества уже без малого десятилетие озадачены поиском более эффективной альтернативы механизму внимания. Было много интересных решений, но как оказывалось, чего-то в них всегда не хватало, чтобы иметь ту же выразительность и универсальность, что attention.
Потому вместо полного отказа от attention люди пробовали гибридные модели с небольшим количеством attention блоков и заменой всего остального на что-то более дешевое (Mamba, LinearAttention, и т.д.).
И сегодняшняя статья про поиск 🔎 такого гибрида.
❤3🔥1
🔬 Метод
Чтобы не учить на триллионах токенов с нуля берут за основу предобученную модель, в данном случае из семейства Qwen-2.5.
Определение позиций блоков, где необходим attention
На первом этапе учат суперсеть (как в ProxylessNAS) с разными опциями блоков - как исходным attention, так и линейными по длине альтернативами (Mamba, GLA, DeltaNet, Gated Delta Net, RWKV7).
Суперсеть дистиллируется на логитах исходной модели, на каждом forward pass сэмплируется один из возможных путей.
Затем с помощью beam search ищут конфигурацию, оптимизирующую некоторую целевую метрику - лосс или точность на бенчмарке. И эту модель дообучают на большем количестве данных.
Замечают следующее:
📌 Для MMLU/retrieval полный attention необходим лишь в паре блоков.
📌 Важные блоки для MMLU/retrieval, вообще говоря, не пересекаются
📌 Обь единения блоков для MMLU/retrieval почти достаточно для задач по математике
Выводы справедливы для разных архитектур линейных слоев.
Выбор блока
Из рассмотренных вариантов по соотношению скорость/качество лушче всего себя показывает Gated DeltaNet, и далее используется в качестве основного.
Новый attention блок
Авторы предлагают новый attention блок - JetBlock. В его основе динамическая (зависящая от входа) свертка, примененная к value, и статические свертки на query и key. И нечто под названием time-mixing + gating в конце.
Этот блок по скорости такой же примерно, как альтернативы, но лучше по качеству.
Зачем дотюнивают параметры размерности ключей/значений / числа голов JetBlock для максимизации скорости ⚡️.
Чтобы не учить на триллионах токенов с нуля берут за основу предобученную модель, в данном случае из семейства Qwen-2.5.
Определение позиций блоков, где необходим attention
На первом этапе учат суперсеть (как в ProxylessNAS) с разными опциями блоков - как исходным attention, так и линейными по длине альтернативами (Mamba, GLA, DeltaNet, Gated Delta Net, RWKV7).
Суперсеть дистиллируется на логитах исходной модели, на каждом forward pass сэмплируется один из возможных путей.
Затем с помощью beam search ищут конфигурацию, оптимизирующую некоторую целевую метрику - лосс или точность на бенчмарке. И эту модель дообучают на большем количестве данных.
Замечают следующее:
📌 Для MMLU/retrieval полный attention необходим лишь в паре блоков.
📌 Важные блоки для MMLU/retrieval, вообще говоря, не пересекаются
📌 Обь единения блоков для MMLU/retrieval почти достаточно для задач по математике
Выводы справедливы для разных архитектур линейных слоев.
Выбор блока
Из рассмотренных вариантов по соотношению скорость/качество лушче всего себя показывает Gated DeltaNet, и далее используется в качестве основного.
Новый attention блок
Авторы предлагают новый attention блок - JetBlock. В его основе динамическая (зависящая от входа) свертка, примененная к value, и статические свертки на query и key. И нечто под названием time-mixing + gating в конце.
Этот блок по скорости такой же примерно, как альтернативы, но лучше по качеству.
Зачем дотюнивают параметры размерности ключей/значений / числа голов JetBlock для максимизации скорости ⚡️.
🔥4❤2👏2
🧪Эксперименты
Подход проверяют на Qwen-2.5-1.5B, Qwen-2.5-3B получая модели Jet-Nemotron-2B, Jet-Nemotron-4B, соотвественно.
На этапе поиска архитектуры обучают на 50B токенах, а финальное дообучение на 400B.
По метрикам все типа хорошо, заметный прирост качества на бенчах по сравнению с безлайном (MMLU-Pro, GSM8k, GPQA, CommonSense, Retreival задачах).
Ускорение растет с длиной контекста. На 4к/8к ускорение порядка 15% на префилл, но может достигать 6 раз на длинах контекста 256k. Ускорение на декодировании еще больше, до 53 с лишним раз 😱 на длинных контекстах, где оно ограничено в любом случае наличием небольшого количества full-attention.
💡 Выводы
Результат смотрится довольно впечатляюще. Однако есть опасение, что хорошие метрики обусловлены удачным протоколом дообучения 😺. Кроме того, мне кажется, что процедура слишком трудоемкая, чтобы получить широкое распространение. Да и паттерны важности attention, справедливые для рассмотренных задач, могут не переноситься на продвинутый ризонинг или ворочание репозиториев с кодом.
Тем не менее - сильная инженерная работа.
Подход проверяют на Qwen-2.5-1.5B, Qwen-2.5-3B получая модели Jet-Nemotron-2B, Jet-Nemotron-4B, соотвественно.
На этапе поиска архитектуры обучают на 50B токенах, а финальное дообучение на 400B.
По метрикам все типа хорошо, заметный прирост качества на бенчах по сравнению с безлайном (MMLU-Pro, GSM8k, GPQA, CommonSense, Retreival задачах).
Ускорение растет с длиной контекста. На 4к/8к ускорение порядка 15% на префилл, но может достигать 6 раз на длинах контекста 256k. Ускорение на декодировании еще больше, до 53 с лишним раз 😱 на длинных контекстах, где оно ограничено в любом случае наличием небольшого количества full-attention.
💡 Выводы
Результат смотрится довольно впечатляюще. Однако есть опасение, что хорошие метрики обусловлены удачным протоколом дообучения 😺. Кроме того, мне кажется, что процедура слишком трудоемкая, чтобы получить широкое распространение. Да и паттерны важности attention, справедливые для рассмотренных задач, могут не переноситься на продвинутый ризонинг или ворочание репозиториев с кодом.
Тем не менее - сильная инженерная работа.
🔥2👏2
Некоторое время назад мы обсуждали диффузионные LMки в контексте выжимания максимального качества в условиях ограниченности данных.
И вот недавно вышла интересная статья и не менее интересный разбор на gonzo_ML про то, как получить самую лучшую модель, когда мы упираемся в данные, а не вычисления.
И вот недавно вышла интересная статья и не менее интересный разбор на gonzo_ML про то, как получить самую лучшую модель, когда мы упираемся в данные, а не вычисления.
❤2🔥1
Forwarded from gonzo-обзоры ML статей
Pre-training under infinite compute
Konwoo Kim, Suhas Kotha, Percy Liang, Tatsunori Hashimoto
Статья: https://arxiv.org/abs/2509.14786
Код: https://github.com/marin-community/marin/tree/suhas/data-efficiency
Прикольная работа про законы скейлинга, разные экспоненты и пользу дистилляции и ансамблирования. Авторы задают очень интересный вопрос: в будущем, когда компьюта будет дофига, а данные кончатся, как наиболее эффективно обучать модели? Ответы интересны.
Исследование начинается с создания базового сценария, который имитирует текущую практику в условиях нехватки данных: берётся фиксированный датасет на 200М токенов, и для него либо увеличивается количество эпох обучения, либо масштабируется число параметров модели. Результаты не слишком удивляют: оба подхода в конечном итоге приводят к переобучению, когда лосс на валидации выходит на плато, а затем начинает расти. Это показывает, что простое вливание большего количества вычислений в существующие рецепты даёт убывающую и в конечном счёте отрицательную отдачу, ограничивая достижимую производительность.
Вопрос, что можно сделать по-другому?
Вместо оценки производительности при фиксированном вычислительном бюджете авторы предлагают измерять конечный потенциал рецепта обучения по асимптоте его закона масштабирования. Найдя методы, которые заставляют лосс монотонно убывать с ростом вычислений, можно аппроксимировать эту зависимость степенным законом и экстраполировать производительность при стремлении вычислений к бесконечности. Эта асимптота представляет собой наилучший возможный лосс, которого данный рецепт может достичь на фиксированном датасете, что даёт более надёжную метрику для будущего с избытком вычислительных ресурсов.
Ядро статьи заключается в поиске простых, но эффективных алгоритмических приёмов, которые обеспечивают желаемое монотонное масштабирование и приводят к более низким асимптотам лосса.
1. Агрессивная регуляризация для масштабирования параметров
Ключ к предотвращению переобучения при масштабировании параметров одной модели -- это правильная регуляризация. Авторы обнаружили, что совместный подбор скорости обучения, количества эпох и weight decay для каждого размера модели позволяет достичь чистого, монотонного убывания лосса, которое следует степенному закону. Этот результат согласуется с современной теорией машинного обучения о сверхпараметризации и «двойном спуске» (double descent, https://www.tgoop.com/gonzo_ML/832), когда производительность очень больших моделей может ухудшиться, прежде чем снова начать улучшаться. Статья показывает, что при правильной настройке регуляризации эту проблемную область можно сгладить, получив чистый закон масштабирования.
Ключевой вывод заключается в том, что оптимальное значение затухания весов для сверхпараметризованных моделей значительно выше стандартной практики -- вплоть до 30x. Такая агрессивная регуляризация позволяет более крупным моделям продолжать улучшаться там, где их нерегуляризованные аналоги переобучились бы. Для датасета в 200M токенов этот регуляризованный рецепт следует степенному закону L̂₂₀₀ₘ,ₙ = 0.05 / N¹·⁰² + 3.43, что предсказывает наилучшую асимптоту лосса в 3.43.
2. Ансамблирование: лучший путь к масштабированию
Konwoo Kim, Suhas Kotha, Percy Liang, Tatsunori Hashimoto
Статья: https://arxiv.org/abs/2509.14786
Код: https://github.com/marin-community/marin/tree/suhas/data-efficiency
Прикольная работа про законы скейлинга, разные экспоненты и пользу дистилляции и ансамблирования. Авторы задают очень интересный вопрос: в будущем, когда компьюта будет дофига, а данные кончатся, как наиболее эффективно обучать модели? Ответы интересны.
Исследование начинается с создания базового сценария, который имитирует текущую практику в условиях нехватки данных: берётся фиксированный датасет на 200М токенов, и для него либо увеличивается количество эпох обучения, либо масштабируется число параметров модели. Результаты не слишком удивляют: оба подхода в конечном итоге приводят к переобучению, когда лосс на валидации выходит на плато, а затем начинает расти. Это показывает, что простое вливание большего количества вычислений в существующие рецепты даёт убывающую и в конечном счёте отрицательную отдачу, ограничивая достижимую производительность.
Вопрос, что можно сделать по-другому?
Вместо оценки производительности при фиксированном вычислительном бюджете авторы предлагают измерять конечный потенциал рецепта обучения по асимптоте его закона масштабирования. Найдя методы, которые заставляют лосс монотонно убывать с ростом вычислений, можно аппроксимировать эту зависимость степенным законом и экстраполировать производительность при стремлении вычислений к бесконечности. Эта асимптота представляет собой наилучший возможный лосс, которого данный рецепт может достичь на фиксированном датасете, что даёт более надёжную метрику для будущего с избытком вычислительных ресурсов.
Ядро статьи заключается в поиске простых, но эффективных алгоритмических приёмов, которые обеспечивают желаемое монотонное масштабирование и приводят к более низким асимптотам лосса.
1. Агрессивная регуляризация для масштабирования параметров
Ключ к предотвращению переобучения при масштабировании параметров одной модели -- это правильная регуляризация. Авторы обнаружили, что совместный подбор скорости обучения, количества эпох и weight decay для каждого размера модели позволяет достичь чистого, монотонного убывания лосса, которое следует степенному закону. Этот результат согласуется с современной теорией машинного обучения о сверхпараметризации и «двойном спуске» (double descent, https://www.tgoop.com/gonzo_ML/832), когда производительность очень больших моделей может ухудшиться, прежде чем снова начать улучшаться. Статья показывает, что при правильной настройке регуляризации эту проблемную область можно сгладить, получив чистый закон масштабирования.
Ключевой вывод заключается в том, что оптимальное значение затухания весов для сверхпараметризованных моделей значительно выше стандартной практики -- вплоть до 30x. Такая агрессивная регуляризация позволяет более крупным моделям продолжать улучшаться там, где их нерегуляризованные аналоги переобучились бы. Для датасета в 200M токенов этот регуляризованный рецепт следует степенному закону L̂₂₀₀ₘ,ₙ = 0.05 / N¹·⁰² + 3.43, что предсказывает наилучшую асимптоту лосса в 3.43.
2. Ансамблирование: лучший путь к масштабированию
👍5❤1
Pretraining Large Language Models with NVFP4
[Статья][PR в Transformer Engine]
Введение
На днях команда из одной зеленой компании выкатила технический отчет про обучение в NVFPмамбы-хуямбы гибридной трансформер-мамбы модели на довольно солидном масштабе - 10Т токенов и 12B параметров.
За последний год вышла не одна статья про обучение в FP4 (вот, вот и вот). Но все то было на масштабах на порядки меньше по данным и размерам моделей. И вполне закономерный вопрос - остаются ли рабочими предложенные идеи для моделей, хоть сколь либо интересным на практике.
И ребята, скомбинировав идеи из прошлых статей, смогли получить рецепт близкий по скорости сходимости к FP8.
[Статья][PR в Transformer Engine]
Введение
На днях команда из одной зеленой компании выкатила технический отчет про обучение в NVFP
За последний год вышла не одна статья про обучение в FP4 (вот, вот и вот). Но все то было на масштабах на порядки меньше по данным и размерам моделей. И вполне закономерный вопрос - остаются ли рабочими предложенные идеи для моделей, хоть сколь либо интересным на практике.
И ребята, скомбинировав идеи из прошлых статей, смогли получить рецепт близкий по скорости сходимости к FP8.
😁4👀2
🔬 Метод
Предложенный NVIDIA рецепт обучения в FP4 включает следующие ключевые составляющие:
📌 Адамаровы вращения для борьбы с выбросами и большей стабильности.
📌 Стохастическое округление градиентов по параметрам.
📌 2d скейлинги в блоках 16x16, которые позволяют нивелировать нестыковку между поведением модели на прямом и обратном проходе.
📌 Несколько первых блоков в начале и конце модели держат в bfloat16 (в сумме 15% от размера модели). Если их квантизовать - обучение нестабильно.
В конце, подобно статье от Intel, предлагают учить модель небольшое число итераций в bf16, чтобы сократить разрыв по качеству между bf16 и fp4 обучением. Конечная модель уже не такая компактная и быстрая на инференсе, но типа сэкономили на обучении.
🧪Эксперименты
Обучают очередной Nemotron на некоей смеси данных с большой долей синты с warmup-stable decay расписанием.
Большую часть обучения лосс FP4 не сильно отстает от FP8, но разрыв немного увеличивается в конце, при маленьких шагах обучения.
По бенчам +/- на уровне бейзлайна.
Все компоненты метода важны. Аблейтят довольно странно, стартуя с 3Т токенов убирают одну за другую составляющую. Не очевидно, что эффект будет таким же, если с нуля запустить несколько обучений с отказом от компонент по одной.
MXFP менее эффективен на обучении и достигает того же лосса, что и NVFP, при на 36% большем количестве данных.
💡 Выводы
Рецепт выглядит рабочим. Но по ощущениям все же требуется немало свистоплясок. Кроме того, необходимость держать часть слоев в bf16 несколько осложняет интеграцию и ограничивает максимально достижимое ускорение. Не хватает сравнительного анализа квантизации трансформерных и Mamba-2 слоев, хотя это кажется важным и интересным. Есть мнение, что SSMки тяжелее квантизуются.
Предложенный NVIDIA рецепт обучения в FP4 включает следующие ключевые составляющие:
📌 Адамаровы вращения для борьбы с выбросами и большей стабильности.
📌 Стохастическое округление градиентов по параметрам.
📌 2d скейлинги в блоках 16x16, которые позволяют нивелировать нестыковку между поведением модели на прямом и обратном проходе.
📌 Несколько первых блоков в начале и конце модели держат в bfloat16 (в сумме 15% от размера модели). Если их квантизовать - обучение нестабильно.
В конце, подобно статье от Intel, предлагают учить модель небольшое число итераций в bf16, чтобы сократить разрыв по качеству между bf16 и fp4 обучением. Конечная модель уже не такая компактная и быстрая на инференсе, но типа сэкономили на обучении.
🧪Эксперименты
Обучают очередной Nemotron на некоей смеси данных с большой долей синты с warmup-stable decay расписанием.
Большую часть обучения лосс FP4 не сильно отстает от FP8, но разрыв немного увеличивается в конце, при маленьких шагах обучения.
По бенчам +/- на уровне бейзлайна.
Все компоненты метода важны. Аблейтят довольно странно, стартуя с 3Т токенов убирают одну за другую составляющую. Не очевидно, что эффект будет таким же, если с нуля запустить несколько обучений с отказом от компонент по одной.
MXFP менее эффективен на обучении и достигает того же лосса, что и NVFP, при на 36% большем количестве данных.
💡 Выводы
Рецепт выглядит рабочим. Но по ощущениям все же требуется немало свистоплясок. Кроме того, необходимость держать часть слоев в bf16 несколько осложняет интеграцию и ограничивает максимально достижимое ускорение. Не хватает сравнительного анализа квантизации трансформерных и Mamba-2 слоев, хотя это кажется важным и интересным. Есть мнение, что SSMки тяжелее квантизуются.
🔥7❤3
[Гитхаб репа]
Коллеги из страны, подарившей ранее миру шедевры Моцарта и Штрауса, а еще и GPTQ, выкатили на неделе либу
Данный проект по существу является адаптацией
Чекпоинты с обучения сохраняются в
В либе реализован небходимый базовый функционал для обучения LLM:
📌 Zero (1-3)
📌 Градиентный чекпоинтинг
📌 Оффлоадинг
📌 Разные опции для mixed-precision
На текущий момент, поддерживается обучение в half precision, INT8, FP8. Было бы прикольно в будущем увидеть реализацию обучения для FP4 форматов, поддерживаемых Blackwell, со всеми прибамбасами для стабилизации обучения.
Сравнения по скорости обучения с популярными фреймворками (accelerate / deepspeed) я не увидел. Представлены только абсолютные числа по времени обучения для модели заданной архитектуры. Удается достичь примерно 40-60% SOL (speed-of-light, максимально возможной производительности на заданном железе). На маленьких моделях fp8 почти не дает ускорения обучения, но с ростом размера нейронки - профит становится заметнее.
Интересно, как дальше будет развиваться проект. Более чем сильно, учитывая, что писал все человек в одну харю)
Коллеги из страны, подарившей ранее миру шедевры Моцарта и Штрауса, а еще и GPTQ, выкатили на неделе либу
llm
.q
для quantization-aware training LLMок, написанную на чистом C/C++.Данный проект по существу является адаптацией
llm.c
от Карпатого под обучение квантизованных моделей.Чекпоинты с обучения сохраняются в
.safetensors
формат, т.е совместимый с 🤗 экосистемой.В либе реализован небходимый базовый функционал для обучения LLM:
📌 Zero (1-3)
📌 Градиентный чекпоинтинг
📌 Оффлоадинг
📌 Разные опции для mixed-precision
На текущий момент, поддерживается обучение в half precision, INT8, FP8. Было бы прикольно в будущем увидеть реализацию обучения для FP4 форматов, поддерживаемых Blackwell, со всеми прибамбасами для стабилизации обучения.
Сравнения по скорости обучения с популярными фреймворками (accelerate / deepspeed) я не увидел. Представлены только абсолютные числа по времени обучения для модели заданной архитектуры. Удается достичь примерно 40-60% SOL (speed-of-light, максимально возможной производительности на заданном железе). На маленьких моделях fp8 почти не дает ускорения обучения, но с ростом размера нейронки - профит становится заметнее.
Интересно, как дальше будет развиваться проект. Более чем сильно, учитывая, что писал все человек в одну харю)
🔥21
Bridging the Gap Between Promise and Performance for Microscaling FP4 Quantization
[Статья][Экспериментальный код][Либа с быстрыми Blackwell кернелами][Коллекция на лицехватс]
Вместе с выходом поколения ⚫️well зеленые добавили поддержку Miscroscaling FP4 форматов (разбиралось выше тут и тут ).
Утверждается, что данные форматы дают существенную экономию памяти и ускорение вычислений (при weight+activation квантизации и для compute-bound сценариев) “практически” без просадки в качестве.
И в рамках данной работы мы с коллегами из IST Austria / EPFL решили проверить, что есть это “практически“ на самом деле, и исследовать полезность разных техник из литературы и личного арсенала для квантизации LLMок.
[Статья][Экспериментальный код][Либа с быстрыми Blackwell кернелами][Коллекция на лицехватс]
Вместе с выходом поколения ⚫️well зеленые добавили поддержку Miscroscaling FP4 форматов (разбиралось выше тут и тут ).
Утверждается, что данные форматы дают существенную экономию памяти и ускорение вычислений (при weight+activation квантизации и для compute-bound сценариев) “практически” без просадки в качестве.
И в рамках данной работы мы с коллегами из IST Austria / EPFL решили проверить, что есть это “практически“ на самом деле, и исследовать полезность разных техник из литературы и личного арсенала для квантизации LLMок.
🔬 Метод
Напомним, что MXFP формат приводит скейлы в E8M0, то есть к степеням двойки, что позволяет представлять очень большие и очень маленькие числа, но, возможно, очень неточно. NVFP квантизует скейлы в E4M3 со сравнительно узким диапазоном значений [-448, 448], но более плотной сеткой.
Вращения 🌀
Исходные распределения весов и активаций отличаются от нормального более тяжелыми хвостами. Особенно активаций. Ортогональные вращения, в частности пресловутые Адамаровы повороты, приводят их к почти нормальным, с меньшим разбросом. И данное свойство по идее должно стабильно улучшать или не ухудшать ошибку квантизации.
Однако, как оказалось повороты могут иногда быть вредны 😱.
При квантизации в NVFP формат методом округления к ближайшему (Round-to-Nearest) ошибки квантизации с поворотом оказалась больше, чем без. Вот это поворот, как говорится.
В предположении того, что оригинальные веса/активации распределены по Лапласу, а повернутые - нормально, были получены оценки на квадратичную ошибку в зависимости от размера группы квантизации. И при маленьких размерах группы ошибка для Лапласовского распределения может быть меньше, чем для нормального. С увеличением размера группы вращения становятся более полезными.
Для MXFP вращения полезны и позволяют существенно снизить ошибку округления весов.
Характерный диапазон значений ⚖️
Мы, вернее, @black_samorez_channel, построили гистограммы значений весов и активаций. Оказалось, что веса и активации хорошо укладываются в FP8 E4M3, Диапазон же E8M0 сильно избыточен - на практике вы вряд ли встретите 2^{-128} или 2^{127}.
Что не дает выигрыша ☹️
SmoothQuant (метод переноса сложности квантизации с весов на активации) оказался не очень полезен. SpinQuant (обучаемые преобразования) не дают профита в сравнении с Адамаровыми вращениями. Другие преобразования из литературы, дискретные синусы/косинусы и вариации Адамаровых тоже не шибко полезны.
Еще пара мелких трюков 🪄
Вместо absmax скейлов полезно подбирать оптимальный по MSE на некоторой сетке значений. Actorder порядок в GPTQ https://github.com/vllm-project/vllm/pull/8135 (без перегруппировки весов) тоже чуть-чуть да помогает.
И итоговый метод из вращения маленькой матрицей, которую можно зафьюзить в кернел матричного умножения, подбора скейла и actorder был назван MR-GPTQ (Micro‑Rotated‑GPTQ).
Напомним, что MXFP формат приводит скейлы в E8M0, то есть к степеням двойки, что позволяет представлять очень большие и очень маленькие числа, но, возможно, очень неточно. NVFP квантизует скейлы в E4M3 со сравнительно узким диапазоном значений [-448, 448], но более плотной сеткой.
Вращения 🌀
Исходные распределения весов и активаций отличаются от нормального более тяжелыми хвостами. Особенно активаций. Ортогональные вращения, в частности пресловутые Адамаровы повороты, приводят их к почти нормальным, с меньшим разбросом. И данное свойство по идее должно стабильно улучшать или не ухудшать ошибку квантизации.
Однако, как оказалось повороты могут иногда быть вредны 😱.
При квантизации в NVFP формат методом округления к ближайшему (Round-to-Nearest) ошибки квантизации с поворотом оказалась больше, чем без. Вот это поворот, как говорится.
В предположении того, что оригинальные веса/активации распределены по Лапласу, а повернутые - нормально, были получены оценки на квадратичную ошибку в зависимости от размера группы квантизации. И при маленьких размерах группы ошибка для Лапласовского распределения может быть меньше, чем для нормального. С увеличением размера группы вращения становятся более полезными.
Для MXFP вращения полезны и позволяют существенно снизить ошибку округления весов.
Характерный диапазон значений ⚖️
Мы, вернее, @black_samorez_channel, построили гистограммы значений весов и активаций. Оказалось, что веса и активации хорошо укладываются в FP8 E4M3, Диапазон же E8M0 сильно избыточен - на практике вы вряд ли встретите 2^{-128} или 2^{127}.
Что не дает выигрыша ☹️
SmoothQuant (метод переноса сложности квантизации с весов на активации) оказался не очень полезен. SpinQuant (обучаемые преобразования) не дают профита в сравнении с Адамаровыми вращениями. Другие преобразования из литературы, дискретные синусы/косинусы и вариации Адамаровых тоже не шибко полезны.
Еще пара мелких трюков 🪄
Вместо absmax скейлов полезно подбирать оптимальный по MSE на некоторой сетке значений. Actorder порядок в GPTQ https://github.com/vllm-project/vllm/pull/8135 (без перегруппировки весов) тоже чуть-чуть да помогает.
И итоговый метод из вращения маленькой матрицей, которую можно зафьюзить в кернел матричного умножения, подбора скейла и actorder был назван MR-GPTQ (Micro‑Rotated‑GPTQ).
🧪Эксперименты
Метод прогнали на семействах моделей Llama-3 и Qwen-3. Качество замеряли на 4 задачах из OpenLLM Leaderboard V1 (GSM8K, MMLU-CoT, HellaSwag, Winogrande). И отдельно для Llama-3.1-8B-Instruct Platinum бенч (сборная солянка из задач, откуда почистили примеры с забагованными условиями или ответами).
Основные наблюдения следующие:
📌 INT4 (group_size=32, без квантизации скейлов) ~= NVFP4
📌 MXFP4 заметно хуже NVFP4 по качеству
📌 Вращения заметно улучшают MXFP, но не особо полезны для NVFP. Разрыв между двумя MXFP и NVFP все равно существенный.
📌 QAT тоже дает более заметный прирост метрик для MXFP, для NVFP побить GPTQ оказывается непросто.
📌 Для малюток размером 1B параметров просадки большие - до 20% от исходного качества, для моделей побольше - Qwen3-32B / Llama-3.3-70B-Instruct в пределах 1-2%.
Использование QuTLASS кернелов для матричных умножений позволяет достичь ускорения, близкого к максимально возможному (без учёта операций с поворотами и скейлами). MXFP демонстрирует немного более высокую скорость по сравнению с NVFP. Матричные операции ускоряются в 4 раза на B200 и в 6 раз на RTX5090 (против half precision). Общее ускорение (end-to-end) составляет до 2 раз на B200 и до 6 раз на RTX5090.
💡 Выводы
FP4 в режиме post-training weight+activation квантизации дает довольно хорошее ускорение, но некоторую просадку в качестве. Отказ от FP в пользу INT не столько уж очевидно правильный шаг. На рассмотренных задачах большие модели почти lossless, но не факт, что так будет на бенчах посложнее - требующих сложных цепочек рассуждений или агентских. Будем посмотреть.
Метод прогнали на семействах моделей Llama-3 и Qwen-3. Качество замеряли на 4 задачах из OpenLLM Leaderboard V1 (GSM8K, MMLU-CoT, HellaSwag, Winogrande). И отдельно для Llama-3.1-8B-Instruct Platinum бенч (сборная солянка из задач, откуда почистили примеры с забагованными условиями или ответами).
Основные наблюдения следующие:
📌 INT4 (group_size=32, без квантизации скейлов) ~= NVFP4
📌 MXFP4 заметно хуже NVFP4 по качеству
📌 Вращения заметно улучшают MXFP, но не особо полезны для NVFP. Разрыв между двумя MXFP и NVFP все равно существенный.
📌 QAT тоже дает более заметный прирост метрик для MXFP, для NVFP побить GPTQ оказывается непросто.
📌 Для малюток размером 1B параметров просадки большие - до 20% от исходного качества, для моделей побольше - Qwen3-32B / Llama-3.3-70B-Instruct в пределах 1-2%.
Использование QuTLASS кернелов для матричных умножений позволяет достичь ускорения, близкого к максимально возможному (без учёта операций с поворотами и скейлами). MXFP демонстрирует немного более высокую скорость по сравнению с NVFP. Матричные операции ускоряются в 4 раза на B200 и в 6 раз на RTX5090 (против half precision). Общее ускорение (end-to-end) составляет до 2 раз на B200 и до 6 раз на RTX5090.
💡 Выводы
FP4 в режиме post-training weight+activation квантизации дает довольно хорошее ускорение, но некоторую просадку в качестве. Отказ от FP в пользу INT не столько уж очевидно правильный шаг. На рассмотренных задачах большие модели почти lossless, но не факт, что так будет на бенчах посложнее - требующих сложных цепочек рассуждений или агентских. Будем посмотреть.
🔥4❤1🤔1
Less is More: Recursive Reasoning with Tiny Networks
[Статья][Код]
Введение
Большие языковые модели прокачались за последнее время настолько, что уже могут решать (если надлежащим образом завести) сложнейшие олимпиадные задачи и контексты по программированию. Однако, некоторые классы задач (вероятно, из-за формата не очень привычного и удобного для них) до сих пор даются им со скрипом - ARC-AGI 1 / 2 имени Франсуа Шолле, судоку и разные паззлы.
Специализированные небольшие модели, с нужными inductive bias-ами вполне способны с ними конкурировать.
Некоторое время назад вышла Hierarchical Reasoning Model (HRM) , которая при скромных размерах (27M параметров) выбила хорошие метрики на вышеупомянутых головоломках.
В разбираемой сегодня работе было предложено некоторое развитие идеи HRM под названием Tiny Recursion Model (TRM), которое оказалось эффективнее и по размеру (7M параметров) и лучше по метрикам.
[Статья][Код]
Введение
Большие языковые модели прокачались за последнее время настолько, что уже могут решать (если надлежащим образом завести) сложнейшие олимпиадные задачи и контексты по программированию. Однако, некоторые классы задач (вероятно, из-за формата не очень привычного и удобного для них) до сих пор даются им со скрипом - ARC-AGI 1 / 2 имени Франсуа Шолле, судоку и разные паззлы.
Специализированные небольшие модели, с нужными inductive bias-ами вполне способны с ними конкурировать.
Некоторое время назад вышла Hierarchical Reasoning Model (HRM) , которая при скромных размерах (27M параметров) выбила хорошие метрики на вышеупомянутых головоломках.
В разбираемой сегодня работе было предложено некоторое развитие идеи HRM под названием Tiny Recursion Model (TRM), которое оказалось эффективнее и по размеру (7M параметров) и лучше по метрикам.
❤5
🔬 Метод
Эффективной стратегией при решении сложных задач является итеративное улучшение решения. Авторегрессионные языковые модели добиваются этого с помощью длинных цепочек рассуждений и для того, чтобы такой механизм эффективно работал, требуется дообучение на специальных данных или некая вариация RLя.
В качестве альтернативы можно держать выход некоторого фиксированного размера и итеративно его улучшать, обновляя раз за разом некоторое скрытое состояние.
HRM
В HRM 4 обучаемые компоненты:
📌 Входной эмбеддинг
📌 Низкоуровневая сеть
📌Выходной эмбеддинг
Предсказание модель выдает не сразу, а через несколько прогонов. Сначала в цикле делается несколько прогонов через f_L, и один прогон через f_H. Прогоны делаются до определенной неким образом сходимости и последнее выходное состояние
Чтобы такую конструкцию можно было обучать эффективно по памяти, авторы делают предположение, что на последней итерации уравнение обновления скрытых состояний сошлось к фиксированной точке и можно делать приближение 1-го порядка, из которого следует, что достаточно считать градиенты только на последней итерации, а прошлые гонять с no_grad менеджером контекста. Тем самым не нужно хранить объемный граф вычислений.
В HRM максимально число итераций выставляется в 16, но бывает так, что можно сойтись гораздо раньше. И для этого обучают специальную голову поверх
За счет нескольких прогонов имеем эффективно большую глубину. Данный подход напоминает AlBERT, и Adaptive Computation Time из бородатых 🧔♂️ времен.
👶 TRM
В TRM предлагают переосмыслить архитектуру и процедуру обучения TRM. Вместо низкоуровневого и высокоуровневого состояния есть только одно скрытое состояние z и ответ y. Фактически z_L выполняет роль y, а z_H - z.
На практике сходимость и условия теоремы про фиксированную точку могут не выполняться и авторы переосмысляют алгоритм итераций так, чтобы можно было не исходить из этого предположения. Как и в HRM можно прогнать несколько итераций улучшения решения и сделать backprop на самой последней (но через все прогоны f_L). Данная модификация дает основной прирост метрик.
Далее авторы замечают, что не имеет смысла держать две модели (low-level и high-level) и одна модель работает не хуже.
Использование одного скрытого состояния z и выходного признака оптимально по качеству. Добавление большего числа скрытых состояний только ухудшает качество, якобы потому что это неестественно 🤷♂️ (более строго аргумента не приводится), а одно состояние на ответ тоже сильно хуже - мол, пытаемся в один вектор впихнуть и решение и скрытый признак. Логика такая, что модели нужно держать последнее актуальное решение и то, как она к нему пришла.
Хаки для улучшения качества
Делать модель больше не имеет смысла в виду ограниченности обучающей выборки. 2-слойная модель работает лучше всего, 4-слойная уже переобучается (регуляризации, правда, не особо шатали, по всей видимости).
Для малой длины контекста (рассматриваемые задачи имеют фиксированный размер входов) вместо Attention лучше себя показывает MLP-Mixer . На задачах побольше MLP-Mixer более склонен к переобучению, и потому берется стандартный трансформер.
Кроме того, для стабилизации обучения и борьбы с переобучением используют экспоненциальное скользящее среднее (EMA).
Количество рекурсий и отношение частоты обновление y и z настраивается для выжимания максимального качества.
Эффективной стратегией при решении сложных задач является итеративное улучшение решения. Авторегрессионные языковые модели добиваются этого с помощью длинных цепочек рассуждений и для того, чтобы такой механизм эффективно работал, требуется дообучение на специальных данных или некая вариация RLя.
В качестве альтернативы можно держать выход некоторого фиксированного размера и итеративно его улучшать, обновляя раз за разом некоторое скрытое состояние.
HRM
В HRM 4 обучаемые компоненты:
📌 Входной эмбеддинг
f_I(x
)📌 Низкоуровневая сеть
f_L(x + z_L + z_H)
, обновляющая состояние z_L
📌 Высокоуровневая сеть f_H(x + z_L + z_H)
, обновляющая состояние z_H
📌Выходной эмбеддинг
f_O(z_H)
Предсказание модель выдает не сразу, а через несколько прогонов. Сначала в цикле делается несколько прогонов через f_L, и один прогон через f_H. Прогоны делаются до определенной неким образом сходимости и последнее выходное состояние
z_H
подается в выходную голову откуда получается предсказание для целевой задачи.Чтобы такую конструкцию можно было обучать эффективно по памяти, авторы делают предположение, что на последней итерации уравнение обновления скрытых состояний сошлось к фиксированной точке и можно делать приближение 1-го порядка, из которого следует, что достаточно считать градиенты только на последней итерации, а прошлые гонять с no_grad менеджером контекста. Тем самым не нужно хранить объемный граф вычислений.
В HRM максимально число итераций выставляется в 16, но бывает так, что можно сойтись гораздо раньше. И для этого обучают специальную голову поверх
z_H
, которая говорит, пора ли останавливаться. За счет нескольких прогонов имеем эффективно большую глубину. Данный подход напоминает AlBERT, и Adaptive Computation Time из бородатых 🧔♂️ времен.
👶 TRM
В TRM предлагают переосмыслить архитектуру и процедуру обучения TRM. Вместо низкоуровневого и высокоуровневого состояния есть только одно скрытое состояние z и ответ y. Фактически z_L выполняет роль y, а z_H - z.
На практике сходимость и условия теоремы про фиксированную точку могут не выполняться и авторы переосмысляют алгоритм итераций так, чтобы можно было не исходить из этого предположения. Как и в HRM можно прогнать несколько итераций улучшения решения и сделать backprop на самой последней (но через все прогоны f_L). Данная модификация дает основной прирост метрик.
Далее авторы замечают, что не имеет смысла держать две модели (low-level и high-level) и одна модель работает не хуже.
Использование одного скрытого состояния z и выходного признака оптимально по качеству. Добавление большего числа скрытых состояний только ухудшает качество, якобы потому что это неестественно 🤷♂️ (более строго аргумента не приводится), а одно состояние на ответ тоже сильно хуже - мол, пытаемся в один вектор впихнуть и решение и скрытый признак. Логика такая, что модели нужно держать последнее актуальное решение и то, как она к нему пришла.
Хаки для улучшения качества
Делать модель больше не имеет смысла в виду ограниченности обучающей выборки. 2-слойная модель работает лучше всего, 4-слойная уже переобучается (регуляризации, правда, не особо шатали, по всей видимости).
Для малой длины контекста (рассматриваемые задачи имеют фиксированный размер входов) вместо Attention лучше себя показывает MLP-Mixer . На задачах побольше MLP-Mixer более склонен к переобучению, и потому берется стандартный трансформер.
Кроме того, для стабилизации обучения и борьбы с переобучением используют экспоненциальное скользящее среднее (EMA).
Количество рекурсий и отношение частоты обновление y и z настраивается для выжимания максимального качества.
👍1
🧪Эксперименты
TRM валидируют на Sudoku-Extreme, Maze-Hard и ARC-AGI 1 / 2. TRM, оказывается стабильно лучше HRM. На ARC-AGI метрики оказываются на уровне ведущих reasoning моделей (несколько уступая Grok 4).
Для обучения TRM используется train set, к которому применяются всевозможные аугментации, определяемые симметриями задач. TRM-MLP-Mixer хорош на Sudoku, но уступает TRM-Attn на остальных задачах.
💡 Выводы
Выходит, что в определенных нишах небольшие специализированные модельки все еще способны конкурировать с массивными general-purpose. С практической точки зрения интересно, возможно ли отмасштабировать такую или подобную архитектуру на real-world задачи. Концепция итеративного обновления решения близка к диффузионным моделям, можно ли это рассматривать как некоторое обобщение?
TRM валидируют на Sudoku-Extreme, Maze-Hard и ARC-AGI 1 / 2. TRM, оказывается стабильно лучше HRM. На ARC-AGI метрики оказываются на уровне ведущих reasoning моделей (несколько уступая Grok 4).
Для обучения TRM используется train set, к которому применяются всевозможные аугментации, определяемые симметриями задач. TRM-MLP-Mixer хорош на Sudoku, но уступает TRM-Attn на остальных задачах.
💡 Выводы
Выходит, что в определенных нишах небольшие специализированные модельки все еще способны конкурировать с массивными general-purpose. С практической точки зрения интересно, возможно ли отмасштабировать такую или подобную архитектуру на real-world задачи. Концепция итеративного обновления решения близка к диффузионным моделям, можно ли это рассматривать как некоторое обобщение?
❤2
Вчера мы затронули Tiny Recursion Model, и на gonzo-обзоры ML статей сегодня вышел подробный и содержательный лонгрид про Hierarchical Reasoning Model.
Рекомендую к прочтению)
Рекомендую к прочтению)
Forwarded from gonzo-обзоры ML статей
Hierarchical Reasoning Model
Guan Wang, Jin Li, Yuhao Sun, Xing Chen, Changling Liu, Yue Wu, Meng Lu, Sen Song, Yasin Abbasi Yadkori
Статья: https://arxiv.org/abs/2506.21734
Код: https://github.com/sapientinc/HRM
Иерархического лонгрида вам на выходные!
Не сделал в своё время ручной разбор этой работы про HRM от сингапурцев из Sapient Intelligence (сделал правда автоматический), но она важная, стоит разобрать. Тем более, что свежая TRM (https://arxiv.org/abs/2510.04871) ей вдохновляется.
Эта интересная летняя работа предложила вдохновлённую мозгом иерархическую модель с быстрой и медленной сетями. Модель была довольно скромного размера (27M) и обучалась всего на 1000 примерах. При этом она получила очень высокие скоры на нескольких сложных задачах. В частности, она также сумела обойти o3-mini-high (а также гигантскую DeepSeek-R1 и Claude 3.7) на ARC-AGI-1 и 2, что весьма круто. Что стоит за этой моделью и как она работает? Разберём.
Современные трансформеры добились значительных результатов в разных задачах, но сама их архитектура в целом довольно неглубокая с фиксированной глубиной (но есть исключения с рекурсией или динамической глубиной). Из-за этого они ограничены низкими классами вычислительной сложности (такими как AC⁰ или TC⁰, https://arxiv.org/abs/2308.03212, схемы фиксированной глубины) и с трудом справляются с проблемами, требующими глубокого, итеративного и алгоритмического мышления. Напомню, что RNN сидят в более высоком классе и вообще вроде как Тьюринг полны. Подробнее про классы тут (https://en.wikipedia.org/wiki/TC_(complexity)).
Вдохновляясь иерархической обработкой на разных временных масштабах, присущей человеческому мозгу, авторы представляют Hierarchical Reasoning Model (HRM) — новую рекуррентную архитектуру.
🏗 Структура HRM
В основе HRM лежат три принципа, наблюдаемые в нейронных вычислениях: иерархическая обработка, разделение во времени и рекуррентные связи. Архитектура включает два взаимозависимых рекуррентных модуля, работающих на разных временных масштабах:
1. Высокоуровневый (H) модуль для медленного, абстрактного и обдуманного планирования.
2. Низкоуровневый (L) модуль для быстрых, детальных и подчинённых вычислений.
Динамика модели разворачивается в течение
- Иерархическая сходимость
Cтандартные RNN имеют тенденцию сходиться преждевременно. Когда скрытое состояние установилось около фиксированной точки, магнитуды обновлений уменьшаются, по факту замораживая последующие вычисления и ограничивая эффективную глубину сети. Хочется, чтобы сходимость была постепенной, но синженерить этот подход трудно. HRM борется с преждевременной сходимостью с помощью процесса, который авторы называют иерархической сходимостью (Hierarchical convergence). В каждом цикле L-модуль сходится к локальному равновесию, но оно зависит от высокоуровневого состояния модуля H, которое тот выдал для данного цикла. После T шагов, H-модуль инкорпорирует в себя полученный результат и обновляет своё состояние, тем самым задавая новый контекст для следующего цикла L-модуля, который теперь сойдётся к другому локальному равновесию.
Это похоже на менеджера проекта (H-модуль), который ставит конкретную подзадачу (например, «решить этот угол в судоку»). L-модуль выступает в роли исполнителя, который быстро итерируется для решения этой конкретной подзадачи. Как только исполнитель заканчивает, он отчитывается, и менеджер использует этот результат для постановки следующей подзадачи. Это не даёт модели застрять и позволяет ей выполнять структурированные, многошаговые вычисления, поддерживая высокую активность на протяжении многих шагов и достигая эффективной глубины
Guan Wang, Jin Li, Yuhao Sun, Xing Chen, Changling Liu, Yue Wu, Meng Lu, Sen Song, Yasin Abbasi Yadkori
Статья: https://arxiv.org/abs/2506.21734
Код: https://github.com/sapientinc/HRM
Иерархического лонгрида вам на выходные!
Не сделал в своё время ручной разбор этой работы про HRM от сингапурцев из Sapient Intelligence (сделал правда автоматический), но она важная, стоит разобрать. Тем более, что свежая TRM (https://arxiv.org/abs/2510.04871) ей вдохновляется.
Эта интересная летняя работа предложила вдохновлённую мозгом иерархическую модель с быстрой и медленной сетями. Модель была довольно скромного размера (27M) и обучалась всего на 1000 примерах. При этом она получила очень высокие скоры на нескольких сложных задачах. В частности, она также сумела обойти o3-mini-high (а также гигантскую DeepSeek-R1 и Claude 3.7) на ARC-AGI-1 и 2, что весьма круто. Что стоит за этой моделью и как она работает? Разберём.
Современные трансформеры добились значительных результатов в разных задачах, но сама их архитектура в целом довольно неглубокая с фиксированной глубиной (но есть исключения с рекурсией или динамической глубиной). Из-за этого они ограничены низкими классами вычислительной сложности (такими как AC⁰ или TC⁰, https://arxiv.org/abs/2308.03212, схемы фиксированной глубины) и с трудом справляются с проблемами, требующими глубокого, итеративного и алгоритмического мышления. Напомню, что RNN сидят в более высоком классе и вообще вроде как Тьюринг полны. Подробнее про классы тут (https://en.wikipedia.org/wiki/TC_(complexity)).
Вдохновляясь иерархической обработкой на разных временных масштабах, присущей человеческому мозгу, авторы представляют Hierarchical Reasoning Model (HRM) — новую рекуррентную архитектуру.
🏗 Структура HRM
В основе HRM лежат три принципа, наблюдаемые в нейронных вычислениях: иерархическая обработка, разделение во времени и рекуррентные связи. Архитектура включает два взаимозависимых рекуррентных модуля, работающих на разных временных масштабах:
1. Высокоуровневый (H) модуль для медленного, абстрактного и обдуманного планирования.
2. Низкоуровневый (L) модуль для быстрых, детальных и подчинённых вычислений.
Динамика модели разворачивается в течение
N
высокоуровневых циклов, каждый из которых состоит из T
низкоуровневых временных шагов. L-модуль обновляется на каждом шаге, и его состояние зависит от H-модуля, который остаётся неизменным на протяжении всего цикла. H-модуль обновляется только один раз за цикл, используя конечное состояние L-модуля.- Иерархическая сходимость
Cтандартные RNN имеют тенденцию сходиться преждевременно. Когда скрытое состояние установилось около фиксированной точки, магнитуды обновлений уменьшаются, по факту замораживая последующие вычисления и ограничивая эффективную глубину сети. Хочется, чтобы сходимость была постепенной, но синженерить этот подход трудно. HRM борется с преждевременной сходимостью с помощью процесса, который авторы называют иерархической сходимостью (Hierarchical convergence). В каждом цикле L-модуль сходится к локальному равновесию, но оно зависит от высокоуровневого состояния модуля H, которое тот выдал для данного цикла. После T шагов, H-модуль инкорпорирует в себя полученный результат и обновляет своё состояние, тем самым задавая новый контекст для следующего цикла L-модуля, который теперь сойдётся к другому локальному равновесию.
Это похоже на менеджера проекта (H-модуль), который ставит конкретную подзадачу (например, «решить этот угол в судоку»). L-модуль выступает в роли исполнителя, который быстро итерируется для решения этой конкретной подзадачи. Как только исполнитель заканчивает, он отчитывается, и менеджер использует этот результат для постановки следующей подзадачи. Это не даёт модели застрять и позволяет ей выполнять структурированные, многошаговые вычисления, поддерживая высокую активность на протяжении многих шагов и достигая эффективной глубины
NT
.🔥2