[Статус работ]
Кажется, Юдковский решил, что слишком много сабмитов в этом году на NeurIPS, и положил overleaf дабы тормознуть AGI.
Кажется, Юдковский решил, что слишком много сабмитов в этом году на NeurIPS, и положил overleaf дабы тормознуть AGI.
Сильно запоздалый пост из-за праздников и NeurIPS дедлайна, но все же дошли 🚶♀️ в итоге руки ✋.
Ниже подборка статей с 1️⃣ постерной сессии на ICLR, которые так или иначе были связаны с EfficientDL:
MambaQuant: Quantizing the Mamba Family with Variance Aligned Rotation Methods
В данной статье акцентируют внимание на квантизации Mamba 🐍- архитектур в разных задачах. Наивная адаптация методов квантизации для трансформерных LLM просаживает сильно качество на S6 моделях. Авторы анализируют проблемные места в квантизации мамб, где накапливается большая ошибка и предлагают свое решение:
🎯 Whitening преобразование вместо Адамара в offline rotations.
🎯 Добавление scaling факторов в модель в стиле SmoothQuant, учитывающих специфику Mamba, для упрощения задачи квантизации.
Метод валидируется на ряде NLP/Vision задач, где показывает заметное улучшение по сравнению с бейзлайнами при квантизации весов и активаций.
FlashRNN: I/O-Aware Optimization of Traditional RNNs on modern hardware
Трансформеры нынче SOTA во многих приложениях, однако в некоторых задачах (типа определении четности), показывают себе плохо, а RNN - хорошо. Однако RNN плохо параллелизуются и вообще неэффективно используют ресурсы GPU. Ребята написали кастомные fused CUDA/Triton кернелы, эффективно использующие иерархию памяти, для forward и backward и смогли добиться ускорения до 50 раз по сравнению с ванильной торчовой реализацией.
OSTQuant: Refining Large Language Model Quantization with Orthogonal and Scaling Transformations for Better Distribution Fitting
В данной статье предлагают оценивать эффективность квантизации по тому, насколько плотно покрывает сетка квантизации целевое распределение. При наивном round-to-nearest подходе из-за выбросов, большая часть объема не используется. Добавление обучаемых вращений из SpinQuant и scaling факторов а-ля SmoothQuant позволяет более равномерно распределять распределение весов по решетке и тем самым улучшает качество квантования. К сожалению, на постере не было ни одного из авторов, а какой-то левый чувак, который не особо был в теме, потому содержательного разговора не получилось.
Approaching Rate-Distortion Limits in Neural Compression with Lattice Transform Coding
В данной работе авторы ставят своей задачу добиться сжатия сигналов любой природы как можно ближе к теоретико-информационному пределу. Для этого обучают автокодировщик (маленькую MLP), чтобы преобразовывать входные данные (с возможными выбросами и широким диапазоном значение), в некоторое более регулярное множество, и затем проектируют на оптимальную сетку (E8 для 8-мерной векторной квантизации, Λ24 для 24-мерной квантизации). Валидируют преимущественно на синтетике. Когда я спросил авторов про trellis-based квантизацию из QTIP, который потенциально может быть еще ближе к rate-distortion limit, авторы ответили, что не знают, что это такое.
Streamlining Redundant Layers to Compress Large Language Models
Идея простая - находим последовательность наименее важных блоков в трансформере по косинусной близости (по аналогии с The Unreasonable Ineffectiveness of the Deeper Layers), пруним, вставляем один трансформерный блок / FFN и дообучаем немного. Работает несколько лучше, чем просто прунинг блоков (кто бы сомневался).
DuoAttention: Efficient Long-Context LLM Inference with Retrieval and Streaming Heads
Головы Attention делятся на 2 типа - Retrieval heads, которые могут аттендиться на любой токен в последовательности, и Streaming heads, которые смотрят только на последние токены и attention sinks в начале последовательности. Для вторых можно сэкономить на вычислениях и памяти, храня только кэш для самого начала и некоторого фиксированного количества последних токенов. Для определения streaming голов маску в каждом attention параметризуют как взвешенную сумму полного causal attention и streaming attention. И те головы, где коэффициент streaming attention наибольший далее обрабатываются как streaming heads. Предложенная техника позволяет уменьшить кэш почти вдвое без просадки на LongBench задачах.
Ниже подборка статей с 1️⃣ постерной сессии на ICLR, которые так или иначе были связаны с EfficientDL:
MambaQuant: Quantizing the Mamba Family with Variance Aligned Rotation Methods
В данной статье акцентируют внимание на квантизации Mamba 🐍- архитектур в разных задачах. Наивная адаптация методов квантизации для трансформерных LLM просаживает сильно качество на S6 моделях. Авторы анализируют проблемные места в квантизации мамб, где накапливается большая ошибка и предлагают свое решение:
🎯 Whitening преобразование вместо Адамара в offline rotations.
🎯 Добавление scaling факторов в модель в стиле SmoothQuant, учитывающих специфику Mamba, для упрощения задачи квантизации.
Метод валидируется на ряде NLP/Vision задач, где показывает заметное улучшение по сравнению с бейзлайнами при квантизации весов и активаций.
FlashRNN: I/O-Aware Optimization of Traditional RNNs on modern hardware
Трансформеры нынче SOTA во многих приложениях, однако в некоторых задачах (типа определении четности), показывают себе плохо, а RNN - хорошо. Однако RNN плохо параллелизуются и вообще неэффективно используют ресурсы GPU. Ребята написали кастомные fused CUDA/Triton кернелы, эффективно использующие иерархию памяти, для forward и backward и смогли добиться ускорения до 50 раз по сравнению с ванильной торчовой реализацией.
OSTQuant: Refining Large Language Model Quantization with Orthogonal and Scaling Transformations for Better Distribution Fitting
В данной статье предлагают оценивать эффективность квантизации по тому, насколько плотно покрывает сетка квантизации целевое распределение. При наивном round-to-nearest подходе из-за выбросов, большая часть объема не используется. Добавление обучаемых вращений из SpinQuant и scaling факторов а-ля SmoothQuant позволяет более равномерно распределять распределение весов по решетке и тем самым улучшает качество квантования. К сожалению, на постере не было ни одного из авторов, а какой-то левый чувак, который не особо был в теме, потому содержательного разговора не получилось.
Approaching Rate-Distortion Limits in Neural Compression with Lattice Transform Coding
В данной работе авторы ставят своей задачу добиться сжатия сигналов любой природы как можно ближе к теоретико-информационному пределу. Для этого обучают автокодировщик (маленькую MLP), чтобы преобразовывать входные данные (с возможными выбросами и широким диапазоном значение), в некоторое более регулярное множество, и затем проектируют на оптимальную сетку (E8 для 8-мерной векторной квантизации, Λ24 для 24-мерной квантизации). Валидируют преимущественно на синтетике. Когда я спросил авторов про trellis-based квантизацию из QTIP, который потенциально может быть еще ближе к rate-distortion limit, авторы ответили, что не знают, что это такое.
Streamlining Redundant Layers to Compress Large Language Models
Идея простая - находим последовательность наименее важных блоков в трансформере по косинусной близости (по аналогии с The Unreasonable Ineffectiveness of the Deeper Layers), пруним, вставляем один трансформерный блок / FFN и дообучаем немного. Работает несколько лучше, чем просто прунинг блоков (кто бы сомневался).
DuoAttention: Efficient Long-Context LLM Inference with Retrieval and Streaming Heads
Головы Attention делятся на 2 типа - Retrieval heads, которые могут аттендиться на любой токен в последовательности, и Streaming heads, которые смотрят только на последние токены и attention sinks в начале последовательности. Для вторых можно сэкономить на вычислениях и памяти, храня только кэш для самого начала и некоторого фиксированного количества последних токенов. Для определения streaming голов маску в каждом attention параметризуют как взвешенную сумму полного causal attention и streaming attention. И те головы, где коэффициент streaming attention наибольший далее обрабатываются как streaming heads. Предложенная техника позволяет уменьшить кэш почти вдвое без просадки на LongBench задачах.
Beware of Calibration Data for Pruning Large Language Models
Авторы замечают, что для прунинга SparseGPT/Wanda выбор данных имеет значение. Данные из обучающей выборки предпочтительны (часть экспериментов делают на своей модели DCLM-7B), но если их нет, можно сгенерировать самой сжимаемой LLMкой взяв некоторый префикс. При генерации выкидывают последовательности с самой большой перплексией. Далее авторы обнаруживают, что сгенерированные данные ближе к обучающей выборке чем варианты калибровочных данных c4/wikitext2/red pajama. Бешеного прироста качества нет, но улучшение на 0.5-1% при 50% / 2:4 sparsity консистентно для разных моделей.
Продолжение следует... (надеюсь 😅)
Авторы замечают, что для прунинга SparseGPT/Wanda выбор данных имеет значение. Данные из обучающей выборки предпочтительны (часть экспериментов делают на своей модели DCLM-7B), но если их нет, можно сгенерировать самой сжимаемой LLMкой взяв некоторый префикс. При генерации выкидывают последовательности с самой большой перплексией. Далее авторы обнаруживают, что сгенерированные данные ближе к обучающей выборке чем варианты калибровочных данных c4/wikitext2/red pajama. Бешеного прироста качества нет, но улучшение на 0.5-1% при 50% / 2:4 sparsity консистентно для разных моделей.
Продолжение следует... (надеюсь 😅)
Microscaling Data Formats for Deep Learning (+NVFP)
[Статья][Код]
Введение
С ростом размера LLM, затрат на обучение и инференс все более актуальным становится вопрос эффективных вычислений. Опыт показывает (BitNet, QuEST), что вполне реально гонять обучение с низкобитными весами и активациями, и при хорошей реализации даже оптимально по флопсам. Однако, вычисления в низкой битности требуют аппаратной поддержки.
В поколении Blackwell зеленые 💚 завезли аппаратную поддержку новых малобитных типов чисел с плавающей точкой с плавающей точкой -
[Статья][Код]
Введение
С ростом размера LLM, затрат на обучение и инференс все более актуальным становится вопрос эффективных вычислений. Опыт показывает (BitNet, QuEST), что вполне реально гонять обучение с низкобитными весами и активациями, и при хорошей реализации даже оптимально по флопсам. Однако, вычисления в низкой битности требуют аппаратной поддержки.
В поколении Blackwell зеленые 💚 завезли аппаратную поддержку новых малобитных типов чисел с плавающей точкой с плавающей точкой -
NVFP4/MXFP{4,6,8}
.Метод
Основная фича, которая обеспечивает стабильность и эффективность низкобитных операций, — это аппаратная поддержка операций с квантизованными тензорами с малыми группами. Чем меньше количество весов, для которых берется общий масштаб (скейл), тем точнее их можно аппроксимировать, но тем и больше накладные расходы на хранение и операции с ними.
Дабы уменьшить расходы по памяти скейлы хранятся в меньшей точности. А операции с ними имеют эффективную кернельную реализацию, что обеспечивает малое замедление по сравнению с
1️⃣ NVFP4 - это FP4 (E2M1) с group_size 16, где скейл квантизуется в FP8 (E4M3). Итого 4.5 бит на параметр.
2️⃣ Семейство MXFP форматов включает в себя 4/6/8-бита. Скейл квантизуется в экзотический E8M0 формат - т.е в логарифмическую шкалу, благодаря чему операции со скейлами можно свести к очень дешевым битовым сдвигам. Размер группы 32 - т.е имеем 4.25 бит на параметр.
Эксперименты
В Whitepaper MXFP формата прогнали эксперименты на PTQ и QAT Vision/Audio/Text модельках (BERT и Encoder-Decoder для перевода с языка на язык). Наивный PTQ каст в MXFP8 работает ожидаемо без просадок, в MXFP6/MXFP4 имеет место заметное ухудшение, но небольшой QAT позволяет почти восстановить качество в большинстве случаев до уровня half precision.
Затем авторы гоняют обучение с весами/активациями/градиентами квантованными в MXFP6 на GPTшкам от 20M до 1.5B и кривая обучения почти совпадает c half-precision (за исключение спайков).
Последующие статьи, заслуживающие отдельного разбора
💥 Training LLMs with MXFP4
💥 И совсем свежая Quartet от коллег из IST (и в частности @black_samorez_channel)
Показали эффективность обучения в MXFP4 на более серьезных масштабах.
В первой статье смогли добиться ускорения 1.7x против bf16, и 1.3x против fp8, а в Quartet 2.3x против bf16 и 1.6x против fp8.
В качестве удачного внедрения NVFP4 можно вспомнить (тоже заслуживающую разбора) SVD-Quant https://hanlab.mit.edu/blog/svdquant-nvfp4, где на RTX 5090 смогли добиться 3-х кратного ускорения инференса FLUX.
Выводы
Переход к FP4 в качестве стандартного типа для обучения кажется делом времени (широкого распространения Blackwell чипов в датацентрах). Интрига в том, в какой момент придется остановиться. Дойдем ли до полностью тернарных сетей в будущем, или они окажутся Парето-неоптимальными? Время ⏳ покажет…
Основная фича, которая обеспечивает стабильность и эффективность низкобитных операций, — это аппаратная поддержка операций с квантизованными тензорами с малыми группами. Чем меньше количество весов, для которых берется общий масштаб (скейл), тем точнее их можно аппроксимировать, но тем и больше накладные расходы на хранение и операции с ними.
Дабы уменьшить расходы по памяти скейлы хранятся в меньшей точности. А операции с ними имеют эффективную кернельную реализацию, что обеспечивает малое замедление по сравнению с
per-tensor/per-channel
кватнизацией.1️⃣ NVFP4 - это FP4 (E2M1) с group_size 16, где скейл квантизуется в FP8 (E4M3). Итого 4.5 бит на параметр.
2️⃣ Семейство MXFP форматов включает в себя 4/6/8-бита. Скейл квантизуется в экзотический E8M0 формат - т.е в логарифмическую шкалу, благодаря чему операции со скейлами можно свести к очень дешевым битовым сдвигам. Размер группы 32 - т.е имеем 4.25 бит на параметр.
Эксперименты
В Whitepaper MXFP формата прогнали эксперименты на PTQ и QAT Vision/Audio/Text модельках (BERT и Encoder-Decoder для перевода с языка на язык). Наивный PTQ каст в MXFP8 работает ожидаемо без просадок, в MXFP6/MXFP4 имеет место заметное ухудшение, но небольшой QAT позволяет почти восстановить качество в большинстве случаев до уровня half precision.
Затем авторы гоняют обучение с весами/активациями/градиентами квантованными в MXFP6 на GPTшкам от 20M до 1.5B и кривая обучения почти совпадает c half-precision (за исключение спайков).
Последующие статьи, заслуживающие отдельного разбора
💥 Training LLMs with MXFP4
💥 И совсем свежая Quartet от коллег из IST (и в частности @black_samorez_channel)
Показали эффективность обучения в MXFP4 на более серьезных масштабах.
В первой статье смогли добиться ускорения 1.7x против bf16, и 1.3x против fp8, а в Quartet 2.3x против bf16 и 1.6x против fp8.
В качестве удачного внедрения NVFP4 можно вспомнить (тоже заслуживающую разбора) SVD-Quant https://hanlab.mit.edu/blog/svdquant-nvfp4, где на RTX 5090 смогли добиться 3-х кратного ускорения инференса FLUX.
Выводы
Переход к FP4 в качестве стандартного типа для обучения кажется делом времени (широкого распространения Blackwell чипов в датацентрах). Интрига в том, в какой момент придется остановиться. Дойдем ли до полностью тернарных сетей в будущем, или они окажутся Парето-неоптимальными? Время ⏳ покажет…
[Папир][Датасет на лицехватс][Пост на CV Time]
Коллеги из Yandex Research выкатили публичный датасет, под названием Alchemist 🧪, из 3 c небольшим тысяч картинок, собранных из интернета, для дообучения диффузионок.
Данный датасет, отобранный с помощью довольно занятного пайплайна, дает заметный прирост качества на разных моделях (в отличие от LAION-Aesthetics и просто фоток анимешных тяночек).
Так что, ежели кому нужно заалайнить модельку на качественных данных, далеко ходить теперь не надо.
Коллеги из Yandex Research выкатили публичный датасет, под названием Alchemist 🧪, из 3 c небольшим тысяч картинок, собранных из интернета, для дообучения диффузионок.
Данный датасет, отобранный с помощью довольно занятного пайплайна, дает заметный прирост качества на разных моделях (в отличие от LAION-Aesthetics и просто фоток анимешных тяночек).
Так что, ежели кому нужно заалайнить модельку на качественных данных, далеко ходить теперь не надо.
Look Ma, No Bubbles! Designing a Low-Latency Megakernel for Llama-1B
[Блогпост]
Прямой (да и обратный) проход через современную LLM, подразумевает запуск нескольких сотен кернелов (attention, mlp, нормализаций).
Команда из Стэнфорда обнаруживает, что скорость инференса маленьких LLM (1-3B параметров) упирается не в вычисления/память, а во время запуска кернелов. Эффективные движки для инференса (vLLM/SGLang) позволяют только на 50% использовать пропускную способность новых видеокарт (H100/GB200). Там некоторые операции уже слиты в один вызов кернела, но самих вызовов все еще остается много.
И авторы предлагают реализовать весь forward pass в виде одного Megakernel 😱!
Из нюансов реализации стоит выделить следующее:
1️⃣ Управление памятью. Так как за shared memory борются сразу несколько процессов, надо эффективно распределить ее и раздавать по запросу. Для это используется некий вариант paging.
2️⃣ Синхронизация. Теперь у нас много операций работающих асинхронно и требуется внутри кернела регулировать то, чтобы процесс не начал работать, пока не будут готовы все необходимые входы (т.е attention не запустился, пока не готовы Q, K, V).
В результате удается добиться ускорения на Llama-1B при инференсе с батчом 1:
🏃♂️ 2.5x против vLLM, 1.5x против SGLang на H100
🏃♂️ 3.5x против vLLM, 2.5x против SGLang на GB200
Утилизация ширины памяти для H100 достигает 78%.
[Блогпост]
Прямой (да и обратный) проход через современную LLM, подразумевает запуск нескольких сотен кернелов (attention, mlp, нормализаций).
Команда из Стэнфорда обнаруживает, что скорость инференса маленьких LLM (1-3B параметров) упирается не в вычисления/память, а во время запуска кернелов. Эффективные движки для инференса (vLLM/SGLang) позволяют только на 50% использовать пропускную способность новых видеокарт (H100/GB200). Там некоторые операции уже слиты в один вызов кернела, но самих вызовов все еще остается много.
И авторы предлагают реализовать весь forward pass в виде одного Megakernel 😱!
Из нюансов реализации стоит выделить следующее:
1️⃣ Управление памятью. Так как за shared memory борются сразу несколько процессов, надо эффективно распределить ее и раздавать по запросу. Для это используется некий вариант paging.
2️⃣ Синхронизация. Теперь у нас много операций работающих асинхронно и требуется внутри кернела регулировать то, чтобы процесс не начал работать, пока не будут готовы все необходимые входы (т.е attention не запустился, пока не готовы Q, K, V).
В результате удается добиться ускорения на Llama-1B при инференсе с батчом 1:
🏃♂️ 2.5x против vLLM, 1.5x против SGLang на H100
🏃♂️ 3.5x против vLLM, 2.5x против SGLang на GB200
Утилизация ширины памяти для H100 достигает 78%.
На Data Fest 2025 30 мая Влад Голощапов (автор канала @GradientWitnesses) представил весьма занимательный доклад про геометрию лосс функции в нейронных сетях.
Данный вопрос неоднократно поднимался в разных работах, и был довольно популярной темой для исследования между 2017-2019, но несмотря на это тема не то что все еще содержит нерешенные вопросы, а является непаханым полем. И истинная геометрия лосс-поверхности (во всяком случае в рассмотренных задачах) очень далека от типичных предположений.
Доклад будет интересен как теоретикам, так и всем, увлекающимся ML и оптимизацией чего-либо.
[Запись доклада] (доклад в интервале 3:49-4:19)
[Презентация]
Данный вопрос неоднократно поднимался в разных работах, и был довольно популярной темой для исследования между 2017-2019, но несмотря на это тема не то что все еще содержит нерешенные вопросы, а является непаханым полем. И истинная геометрия лосс-поверхности (во всяком случае в рассмотренных задачах) очень далека от типичных предположений.
Доклад будет интересен как теоретикам, так и всем, увлекающимся ML и оптимизацией чего-либо.
[Запись доклада] (доклад в интервале 3:49-4:19)
[Презентация]
Выложили квантизованную в 4️⃣ бита модель DeepSeek-R1-0528!
✅ Качество при ризонинге сохраняется на 99,82% (среднее по AIME/GPTQ/MATH500).
🔊 DeepSeek-R1-0528 стал ещё более "болтливым" 🗣, поэтому для лучших результатов (как исходной, так и квантизованной модели) рекомендуется увеличить контекст до 65К токенов.
Модель на 🤗:
- ISTA-DASLab/DeepSeek-R1-0528-GPTQ-4b-128g-experts
✅ Качество при ризонинге сохраняется на 99,82% (среднее по AIME/GPTQ/MATH500).
🔊 DeepSeek-R1-0528 стал ещё более "болтливым" 🗣, поэтому для лучших результатов (как исходной, так и квантизованной модели) рекомендуется увеличить контекст до 65К токенов.
Модель на 🤗:
- ISTA-DASLab/DeepSeek-R1-0528-GPTQ-4b-128g-experts
Log-Linear Attention
[Статья][Код]
Введение
Вообще, давно пора было бы смириться с тем фактом, что лучше Attention ничего нет на свете, но человек в своем упрямстве продолжает искать альтернативы более быстрые и не уступающие по качеству.
И коллектив авторов (звезд Голливуда в мире AI) выкатил статью про очередного "убийцу" ☠️ Attention -
[Статья][Код]
Введение
Вообще, давно пора было бы смириться с тем фактом, что лучше Attention ничего нет на свете, но человек в своем упрямстве продолжает искать альтернативы более быстрые и не уступающие по качеству.
И коллектив авторов (звезд Голливуда в мире AI) выкатил статью про очередного "убийцу" ☠️ Attention -
Log-Linear Attention
.Метод
Почти с момента выхода Attention было предложено много альтернатив с субквадратичной сложностью. Если убрать softmax в Attention - операцию можно посчитать за линейное по длине последовательности число операций. Аналогично, SSM (S4, Mamba-1/2), DeltaNet линейно масштабируются с ростом числа токенов. Тем не менее, несмотря на успехи на отдельных задачах - вытеснить трансформер с пьедестала никому не удалось.
Попытка запихнуть весь контекст в скрытое состояние фиксированного размера, по всей видимости, фундаментально ограничивает модель в возможности знать все в длинном контексте.
Потому предлагается промежуточный вариант - логарифмическая по памяти и времени операция, являющаяся надстройкой над одним из линейных механизмов attention. Токены разбиваются на корзинки с экспоненциально растущим числом токенов. Самые свежие токены обычно важнее для предсказания следующего, потому в одной корзине меньше токенов, и, соответственно, их вес больше, а с отдалением от текущей позиции размер корзинок растет, а вклад индивидуальных токенов убывает. Log-Linear attention сначала вычисляет линейный attention по корзинкам, а затем суммирует с некоторыми обучаемыми коэффициентами результат каждой корзинки (коэффициенты предсказывает отдельная MLP). Число корзинок растет логарифмически с длиной - потому и имеем
Log-Linear Attention можно представить в виде структурированной матрицы HODLR (Hierarchically Off-Diagonal Low-Rank), где диагональные блоки нижнетреугольные, а внедиагональная часть состоит из блоков ранга-1, где размер блока растет с удалением от диагонали.
Log-Linear Attention можно применить как поверх Linear Attention, так и Mamba-2 и DeltaNet. И для всего написаны соответствующие кернелы.
Эксперименты
Для валидации метода авторы обучают модельки на синтетических и реальных задачах.
На синтетике Log-Linear модификация значительно улучшает качество DeltaNet на MQAR (достать несколько элементов из контекста).
Далее авторы обучают в сопоставимых условиях (700-800M параметров, 50B токенов из Long-Data-Collections с длиной последовательности 16k) Transformer, DeltaNet и Mamba-2 (без и с Log-Linear надстройки). Log-Linear дает небольшой прирост поверх DeltaNet и Mamba-2.
По скорости инференса на длинных контекстах Log-Linear Mamba-2 медленнее Mamba-2 (в ~2 раза на 64k/128k токенах), но быстрее Attention.
На Needle-in-Haystack в бенче, где нужно достать один токен Log-Linear хорош, в multi-key/multi-value задачах Log-Linear лучше линейных бейзлайнов, но хуже Attention.
На LongBench где-то дает прирост, а где-то не дает.
За что уважение авторам - они не утверждают, что предложенная модификация бьет все и всея, а стараются более менее честно все замерить.
Выводы
С точки зрения математики все красиво - вообще вопросов нет, и уважение 🤠 мастерам написания ядер на CUDA. В целом выглядит как неплохой промежуточный вариант между Attention и линейными по длине альтернативами, но как будто требует валидации бюджетах и размерах моделей ближе к production-grade.
Почти с момента выхода Attention было предложено много альтернатив с субквадратичной сложностью. Если убрать softmax в Attention - операцию можно посчитать за линейное по длине последовательности число операций. Аналогично, SSM (S4, Mamba-1/2), DeltaNet линейно масштабируются с ростом числа токенов. Тем не менее, несмотря на успехи на отдельных задачах - вытеснить трансформер с пьедестала никому не удалось.
Попытка запихнуть весь контекст в скрытое состояние фиксированного размера, по всей видимости, фундаментально ограничивает модель в возможности знать все в длинном контексте.
Потому предлагается промежуточный вариант - логарифмическая по памяти и времени операция, являющаяся надстройкой над одним из линейных механизмов attention. Токены разбиваются на корзинки с экспоненциально растущим числом токенов. Самые свежие токены обычно важнее для предсказания следующего, потому в одной корзине меньше токенов, и, соответственно, их вес больше, а с отдалением от текущей позиции размер корзинок растет, а вклад индивидуальных токенов убывает. Log-Linear attention сначала вычисляет линейный attention по корзинкам, а затем суммирует с некоторыми обучаемыми коэффициентами результат каждой корзинки (коэффициенты предсказывает отдельная MLP). Число корзинок растет логарифмически с длиной - потому и имеем
O(L log L)
как итоговую сложность операции. Для эффективной реализации используют деревья Фенвика.Log-Linear Attention можно представить в виде структурированной матрицы HODLR (Hierarchically Off-Diagonal Low-Rank), где диагональные блоки нижнетреугольные, а внедиагональная часть состоит из блоков ранга-1, где размер блока растет с удалением от диагонали.
Log-Linear Attention можно применить как поверх Linear Attention, так и Mamba-2 и DeltaNet. И для всего написаны соответствующие кернелы.
Эксперименты
Для валидации метода авторы обучают модельки на синтетических и реальных задачах.
На синтетике Log-Linear модификация значительно улучшает качество DeltaNet на MQAR (достать несколько элементов из контекста).
Далее авторы обучают в сопоставимых условиях (700-800M параметров, 50B токенов из Long-Data-Collections с длиной последовательности 16k) Transformer, DeltaNet и Mamba-2 (без и с Log-Linear надстройки). Log-Linear дает небольшой прирост поверх DeltaNet и Mamba-2.
По скорости инференса на длинных контекстах Log-Linear Mamba-2 медленнее Mamba-2 (в ~2 раза на 64k/128k токенах), но быстрее Attention.
На Needle-in-Haystack в бенче, где нужно достать один токен Log-Linear хорош, в multi-key/multi-value задачах Log-Linear лучше линейных бейзлайнов, но хуже Attention.
На LongBench где-то дает прирост, а где-то не дает.
За что уважение авторам - они не утверждают, что предложенная модификация бьет все и всея, а стараются более менее честно все замерить.
Выводы
С точки зрения математики все красиво - вообще вопросов нет, и уважение 🤠 мастерам написания ядер на CUDA. В целом выглядит как неплохой промежуточный вариант между Attention и линейными по длине альтернативами, но как будто требует валидации бюджетах и размерах моделей ближе к production-grade.
Multiverse: Your Language Models Secretly Decide How to Parallelize and Merge Generation
[Статья][Код (Page Not Found)][Страница проекта (мое почтение)]
Вряд ли для кого уже будет новостью, что test-time compute scaling значительно улучшает качество моделей на задачах, требующих рассуждений. Причем можно масштабировать, как в длину, так и в ширину. Более того, LLM можно научить (а можно попробовать прямо из коробки) решать задачу от лица нескольких взаимодействующих процессов.
И команда из CMU/Nvidia предложила свой метод (с небольшим дообучением), под названием MulitVerse, где модель динамически переключается между последовательной и параллельной генерацией.
[Статья][Код (Page Not Found)][Страница проекта (мое почтение)]
Вряд ли для кого уже будет новостью, что test-time compute scaling значительно улучшает качество моделей на задачах, требующих рассуждений. Причем можно масштабировать, как в длину, так и в ширину. Более того, LLM можно научить (а можно попробовать прямо из коробки) решать задачу от лица нескольких взаимодействующих процессов.
И команда из CMU/Nvidia предложила свой метод (с небольшим дообучением), под названием MulitVerse, где модель динамически переключается между последовательной и параллельной генерацией.
Метод
Многие задачи допускают параллелизм. Авторы определяют 2 варианта:
1️⃣ Коллективный. Задача разбивается на независимые подзадачи. Процессы могут независимо решать каждую из них, а в конце результат агрегируется.
2️⃣ Селективный. Есть несколько веток рассуждений - правильные и неправильные. Неправильные отбрасываются.
Анализируя решения задач из s1.1-1k DeepSeek-R1/Gemini 2.0 Flash Thinking авторы обнаруживают что при авторегрессионной генерации многие решения содержат вышеописанные паттерны. Но можно ли генерировать их параллельно? Причем автоматически понимать, когда это нужно.
Могут ли сами LLM распознать что генерируют параллельно? Для валидации данной гипотезу обучают MLP поверх скрытых состояний (где последовательным веткам дается метка 1, а параллельным - 0) перед языковой головой и качество оказывается чуть лучше рандома. Из чего делают вывод, что, мол, не распознают 😩.
Дабы научить модель запускать параллелизм, когда надо, авторы собирают датасет на основе из s1.1-1k (с помощью Gemini 2.5 Pro). Ответы на задачи размечают специальными тегами:
🌐
🌐
🌐
🌐
При входе в блок
Обучение занимает примерно 3 часа на 8 B 200 (порадуемся за челов).
Все это может быть эффективно реализовано с помощью Radix Attention из SGLang.
Результаты
Метод валидируют на ряде ризонинг задач - AIME/GPQA-Diamond/MATH500. Дообучают Qwen2.5-32B-Instruct. Генерацию ограничивают от 1k до 4к токенов (мало для таких задач).
Полученная модель работает гораздо лучше, чем исходный Qwen. Просто авторегрессионное дообучение на трейсах тоже значительно улучшает качество по сравнению с изначальной моделью, но немного уступает Mutliverse и не дает желаемого параллелизма.
Явное указание в промпте (Mutliverse) с указанием think in parallel работает чуть лучше, чем Mutliverse-zero - без данной инструкции, но не всегда.
Mutliverse и заданном контекстом окне чуть лучше авторегрессивной генерации.
Степень параллелизма, достигаемая на практике, около 15-17%. И итоговое ускорение генерации (при фиксированной длине генерации) - до 18.5%.
Вывод
Интересное исследование, с красивой страницей проекта и качественной реализацией. Однако, не хватает сравнения с некоторыми очевидными бейзлайнами - такими как Self-Consistency и Hogwild. Кроме того, любопытно, как оно себя поведет поверх моделей, которые уже могут в ризонинг и на более длинных контекстах.
Многие задачи допускают параллелизм. Авторы определяют 2 варианта:
1️⃣ Коллективный. Задача разбивается на независимые подзадачи. Процессы могут независимо решать каждую из них, а в конце результат агрегируется.
2️⃣ Селективный. Есть несколько веток рассуждений - правильные и неправильные. Неправильные отбрасываются.
Анализируя решения задач из s1.1-1k DeepSeek-R1/Gemini 2.0 Flash Thinking авторы обнаруживают что при авторегрессионной генерации многие решения содержат вышеописанные паттерны. Но можно ли генерировать их параллельно? Причем автоматически понимать, когда это нужно.
Могут ли сами LLM распознать что генерируют параллельно? Для валидации данной гипотезу обучают MLP поверх скрытых состояний (где последовательным веткам дается метка 1, а параллельным - 0) перед языковой головой и качество оказывается чуть лучше рандома. Из чего делают вывод, что, мол, не распознают 😩.
Дабы научить модель запускать параллелизм, когда надо, авторы собирают датасет на основе из s1.1-1k (с помощью Gemini 2.5 Pro). Ответы на задачи размечают специальными тегами:
🌐
<Parallel> / </Parallel>
- начало/конец параллельного блока🌐
<Outline> / </Outline>
- описание подзадачи🌐
<Path> / </Path>
- решение подзадачи🌐
<Conclusion> / </Conclusion>
- вывод на основе решенийПри входе в блок
<Path>
процессы генерируют независимо (attention маска одного процесса не дает смотреть на другой). Обучение занимает примерно 3 часа на 8 B 200 (порадуемся за челов).
Все это может быть эффективно реализовано с помощью Radix Attention из SGLang.
Результаты
Метод валидируют на ряде ризонинг задач - AIME/GPQA-Diamond/MATH500. Дообучают Qwen2.5-32B-Instruct. Генерацию ограничивают от 1k до 4к токенов (мало для таких задач).
Полученная модель работает гораздо лучше, чем исходный Qwen. Просто авторегрессионное дообучение на трейсах тоже значительно улучшает качество по сравнению с изначальной моделью, но немного уступает Mutliverse и не дает желаемого параллелизма.
Явное указание в промпте (Mutliverse) с указанием think in parallel работает чуть лучше, чем Mutliverse-zero - без данной инструкции, но не всегда.
Mutliverse и заданном контекстом окне чуть лучше авторегрессивной генерации.
Степень параллелизма, достигаемая на практике, около 15-17%. И итоговое ускорение генерации (при фиксированной длине генерации) - до 18.5%.
Вывод
Интересное исследование, с красивой страницей проекта и качественной реализацией. Однако, не хватает сравнения с некоторыми очевидными бейзлайнами - такими как Self-Consistency и Hogwild. Кроме того, любопытно, как оно себя поведет поверх моделей, которые уже могут в ризонинг и на более длинных контекстах.
На канале GPU Mode неделю назад появилось видео от Songlin Yang (гуру линейных вниманиев), где она в течение часа дает содержательный и интересный обзор области.
Кроме того, в феврале она выступала у Sasha Rush (известный персонаж на 🤗) с похожим материалом.
Рекомендую к просмотру!
[Либа с реализациями разных субквадратичных альтернатив вниманию]
Кроме того, в феврале она выступала у Sasha Rush (известный персонаж на 🤗) с похожим материалом.
Рекомендую к просмотру!
[Либа с реализациями разных субквадратичных альтернатив вниманию]
Энтузиасты выкатили минималистичную реализацию типа vLLM под названием nano-vllm (название вдохновлено понятно кем).
Утверждается, что либа предлагает:
🚀 Скорости сопоставимые с vllm.
📖 Читаемый код.
⚡ Фишки для оптимизации/параллелизма- кэширование префикса, тензорный параллелизм, CUDA графы и прочее.
[Репка]
Утверждается, что либа предлагает:
🚀 Скорости сопоставимые с vllm.
📖 Читаемый код.
⚡ Фишки для оптимизации/параллелизма- кэширование префикса, тензорный параллелизм, CUDA графы и прочее.
[Репка]
Unified Scaling Laws for Compressed Representations
[Статья]
Введение
В ряде предыдущих работ (Sparsity Scaling Laws, Scaling laws for precision) было продемонстрировано, что для сжатых моделей действуют законы масштабирования, аналогичные известному принципу Шиншиллы, а влияние сжатия можно выразить через эффективное число параметров.
Однако ранее эффект мультимодального сжатия (сочетание разреженности, квантования и других методов) не исследовался систематически. Кроме того, результаты по Precision Scaling Laws были получены в довольно наивной, субоптимальной с точки зрения качества, постановке.
Эту задачу взяла на себя группа исследователей из IST Austria. В своей работе они выявили общие закономерности масштабирования для различных способов представления данных. Более того, было показано, что емкость такого представления можно выразить через способность аппроксимировать случайный гауссовский шум.
[Статья]
Введение
В ряде предыдущих работ (Sparsity Scaling Laws, Scaling laws for precision) было продемонстрировано, что для сжатых моделей действуют законы масштабирования, аналогичные известному принципу Шиншиллы, а влияние сжатия можно выразить через эффективное число параметров.
Однако ранее эффект мультимодального сжатия (сочетание разреженности, квантования и других методов) не исследовался систематически. Кроме того, результаты по Precision Scaling Laws были получены в довольно наивной, субоптимальной с точки зрения качества, постановке.
Эту задачу взяла на себя группа исследователей из IST Austria. В своей работе они выявили общие закономерности масштабирования для различных способов представления данных. Более того, было показано, что емкость такого представления можно выразить через способность аппроксимировать случайный гауссовский шум.
Метод & Эксперименты
Типичный scaling law в Deep Learning имеет вид некоей зависимости
Сжатая модель в каком-то смысле эквивалентна меньшей несжатой модели. В Precision scaling laws было показано, что лосс имеет экспоненциальную зависимость от битности P - (
В данной работе подтверждают это же наблюдение. Однако для QAT используется рецепт из QuEST с Incoherence Preprocessing / маскировкой шумных градиентов, благодаря чему удается добиться значительно лучшего качества при той же степени сжатия.
Далее авторы предлагают универсальную формулу для эффективной битности представления через Gaussian MSE (GMSE) фит - ошибку при сжатии на гауссовых данных. Достоинством такого подхода является то, что он не требует никакой выборки для оценки.
Полученная зависимость хорошо ложится на эксперимент. Гауссов шум и квантизация с эквивалентной MSE дают один и тот же лосс.
Затем авторы пробуют:
💣 Спарсификацию весов и активаций
💣 Прунинг и квантизацию весов
💣 Спарсификацию и квантизацию всего и всея
Оказывается, что ошибка достаточно в широких пределах факторизуется по ошибкам индивидуальных методов сжатия.
То же самое справедливо для квантизации с “выбросами”.
Кроме того авторы перебирают разные варианты INT и FP форматов (с разными экспонентами и мантиссами). В 4-битах INT4 оказывается лучше FP4 (E2M1), а в 8 битах E4M3 / E2M5 показывают себя лучше всего.
Для повышения эффективности sparse training используют banded маскирование для градиентов (убирают самые маленькие и самые большие градиенты). И оно работает лучше наивного magnitude pruning с фиксированной маской (и RigL).
Приведенные выше эксперименты гоняли на семействе Llama-подобных моделей размером от 30M до 200M на C4 данных при фиксированном отношении числа параметров к размеру модели (
Вывод
Полезное и интересное исследование как с академической, так и практической точки зрения. Возможность оценить емкость представления через GMSE позволяет быстро проверить перспективность того или иного метода сжатия без масштабных экспериментов. И свойство факторизации ошибки при знании потенциального профита от отдельных методов сжатия дает возможность подобрать оптимальную конфигурацию.
Типичный scaling law в Deep Learning имеет вид некоей зависимости
Loss(N, D)
, где N - размер модели, D - количество сэмплов, увиденных по время обучения. Сжатая модель в каком-то смысле эквивалентна меньшей несжатой модели. В Precision scaling laws было показано, что лосс имеет экспоненциальную зависимость от битности P - (
1 - e^{-alpha P})
. Причем имеет место факторизация по сжатию весов/активаций/KV-кэшей. В данной работе подтверждают это же наблюдение. Однако для QAT используется рецепт из QuEST с Incoherence Preprocessing / маскировкой шумных градиентов, благодаря чему удается добиться значительно лучшего качества при той же степени сжатия.
Далее авторы предлагают универсальную формулу для эффективной битности представления через Gaussian MSE (GMSE) фит - ошибку при сжатии на гауссовых данных. Достоинством такого подхода является то, что он не требует никакой выборки для оценки.
Полученная зависимость хорошо ложится на эксперимент. Гауссов шум и квантизация с эквивалентной MSE дают один и тот же лосс.
Затем авторы пробуют:
💣 Спарсификацию весов и активаций
💣 Прунинг и квантизацию весов
💣 Спарсификацию и квантизацию всего и всея
Оказывается, что ошибка достаточно в широких пределах факторизуется по ошибкам индивидуальных методов сжатия.
То же самое справедливо для квантизации с “выбросами”.
Кроме того авторы перебирают разные варианты INT и FP форматов (с разными экспонентами и мантиссами). В 4-битах INT4 оказывается лучше FP4 (E2M1), а в 8 битах E4M3 / E2M5 показывают себя лучше всего.
Для повышения эффективности sparse training используют banded маскирование для градиентов (убирают самые маленькие и самые большие градиенты). И оно работает лучше наивного magnitude pruning с фиксированной маской (и RigL).
Приведенные выше эксперименты гоняли на семействе Llama-подобных моделей размером от 30M до 200M на C4 данных при фиксированном отношении числа параметров к размеру модели (
N/D=100
= 5 шиншилл). Вывод
Полезное и интересное исследование как с академической, так и практической точки зрения. Возможность оценить емкость представления через GMSE позволяет быстро проверить перспективность того или иного метода сжатия без масштабных экспериментов. И свойство факторизации ошибки при знании потенциального профита от отдельных методов сжатия дает возможность подобрать оптимальную конфигурацию.
Пользуясь случаем, заодно и приложу выступление с прошедшего ДатаФеста выступления первого автора статьи выше (@black_samorez_channel) Обучение LLM в низкой точности вычислений (речь про статьи QuEST и Quartet).