2.92K subscribers
185 photos
6 files
381 links
Квантование & Прунинг & Дистилляция

Блог про сжатие сетей и не только.
От древнейших времен по настоящее время.
Download Telegram
FP4 All the Way: Fully Quantized Training of LLMs
[Статья][Анонимный не анонимный репозитрий]

📘 Введение

Висело оно у меня давно в бэклоге, но в кулуарах напомнили.

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

Как известно, для параметров и активаций моделей не требуется представление вещественных чисел высокой точности, чтобы работать приемлемо. Обучение в половинной точности уже давно стало стандартом, да и в FP8 народ вполне себе успешно обучает. Следующая очевидная цель - обучение в FP4, тем более, что последнее поколение от “зеленых” c блмным названием (Blackwell) имеет его поддержку на уровне архитектуры.

И в ряде работ, вышедших в этом году (Training LLMs with MXFP4, Quartet), включая разбираемую, были предложены техники по стабилизации обучения в FP4.
🔬 Метод

Форматы FP4

Первым делом исследуют конфигурации форматов FP4. Напомню, что MXFP4 квантизует веса группами по 32 и квантизует скейлы в E8M0, а NVFP4 группами по 16 и скейлы в E4M3. Авторы фиксируют размер группы 16 и перебирают варианты квантизации скейлов от E1M6 до E8M0. Обучают Llama-like LLM на 350M параметров и замечают, что при E4M3/E3M4 скейлах достигается минимальный лосс (при фиксированном числе итераций). Из всех конфигураций расходится только E1M6 (c cамым узким диапазоном). В дальнейшем везде используют E4M3. Блоки размера 16 выбирают так как при больших лосс сходится хуже, а меньшие уже не дают профита.

Стохастическая квантизация

Квантизовать можно к ближайшему значению, а можно стохастически - вверх или вниз, с вероятностью, зависящей от расстояния до соседа.

Ребята из интела перебирают разные варианты детерминистического и стохастического квантования для весов/градиентов и активаций и получают, что лучше всего сходится вариант с детерминированной квантизацией весов и активаций на прямом проходе, и стохастической для градиентов и активаций на обратном проходе, Роль стохастики в квантизации - уменьшить bias, возникающий из-за округления тензоров.

В ходе оптимизации сигнал от градиента постепенно убывает и с какого-то момента перекрывается шумом оптимизации. Не мудрствуя лукаво, авторы предлагают обучать небольшое время с градиентами в более высокой (bf16) точности (на прямом проходе все еще FP4). И это позволяет сойтись до уровня half-precision обучения за то же суммарное число итераций.

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

Обучают семейство моделей архитектуры Llama-2 на датасете Красная Пижама. В главном эксперименте учат модель размера 7B на 1Т токенах причем не абы на чем, а на ускорителях Intel Gaudi2 (сыр 🧀 тут ни при чем, это в честь архитектора)

Обучение идет без спайков, лосс отстает несколько от bf16 бейзлайна, но нагоняет после короткой фазы с более точными градиентами (QAF).

0-шоты без QAF чуть хуже безйлайна, с QAF - такие же примерно. Впрочем, все равно оно лишь чуть лучше рандома)

💡 Выводы

Выглядит как очередной аргумент перейти на обучение LLM в FP4. Сам по себе метод выглядит не шибко изощренно, хотя необходимость QAF для лучших результатов несколько противоречит названию статьи (надо было назвать FP4 Most the way). Quartet в этом отношении по изящнее. Интересно, кто из крупных игроков выложит первый техрепорт про полное обучение серьезной модели в FP4? Ставлю либо на Нвидию, либо на Moonshot.
4🔥1
А еще двое дорогих коллег (один из которых небезызвестный черный саморез) пару часов назад выступили на GPU MODE с рассказом про Квартет.

https://www.youtube.com/watch?v=Uj-QRMDNHC4
🔥10
Автодополнитель стал чертовски сообразителен)

AGI видать и, правда, не за горами.
😁45
Диффузия против авторегрессии

[Статья] [Код статьи] [Критикующий её блогпост]

📘 Введение

На текущий момент генеративный мир делят авторегрессионная и диффузионная парадигмы. Первая себя лучше показывает в задачах работы с последовательностями общего вида, вторая — при работе с данными, обладающими некой пространственно-временной структурой.

За последний год было несколько интересных заходов в текстовые генеративки. Основной value proposition — более быстрая генерация за счёт параллельной генерации многих токенов за раз. Но по качеству, при заданном размере модели и бюджете обучения, авторегрессионки всё ещё выглядят предпочтительнее.

Есть ещё один аспект, который может дать мотивацию к использованию текстовых диффузионок — максимально достижимое качество в условиях ограниченного количества данных. И данный вопрос является темой обсуждения ниже.
👍3
🔬 Метод

Есть такие scaling laws, описывающие зависимость функции ошибки от размера модели и бюджета обучения. На практике датасет ограничен, и интуитивно понятно, что многократный проход по нему с какого-то момента не будет приносить особой пользы.

В статье было исследование поведение AR LLM в условии ограниченных данных и предложен модифицированный закон Шиншиллы, учитывающий diminishing return от повторного прохода по данным. Для авторегрессивных LM 4-раза эпохи примерно так же хороши, как одна, а дальше польза от роста бюджета обучения уменьшается.

В AR парадигме модель предсказывает обычно следующий токен слева направо (хотя существуют и вариации с произвольным порядком). Диффузионая LLM в самой популярной постановке учится расшумлять исходный текст, в котором токены заменяются с некоторой вероятностью на специальный [MASK] токен.

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

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

Авторы обучают семейство Llama-like языковых моделей размером от 7M до 2.5B параметров на выборках до 100М уникальных токенов. Всего обучаются по 100 AR и диффузионных моделей.

Для обеих парадигм строят зависимость валидационного лосса от числа эпох. AR сначала идут бодрее, но потом начинают переобучаться, в то время, как диффузия продолжает улучшаться по лоссу на валидации даже при нескольких сотнях эпох.
И самый низкий лосс достигается диффузионной моделью на заданной сетке параметров. Поверх обученных моделей фитируют data-constrained scaling law откуда выходит, что диффузионки могут несколько сотен раз эффективно проходиться по одним и тем же токенам.

Затем сравнивают 0-шоты, которые едва-едва лучше рандома, используя чекпоинты с наименьшим валидационным лоссом. И диффузия оказывается несколько лучше в data-constrained settings.

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

Можно ли поднять качество AR-моделей за счет аугментации? Attention drop / маскирование токенов в AR никак не помогает. А вот обучение с разными перестановками порядка токенов будто бы позволяет достичь того же валидационного лосса, что и диффузия.

🤔 Критика

Блогпост, вышедший вскоре, разносит методологию данной статейки, хоть и в целом подтверждает ключевые выводы. Авторы блогпоста обращают внимание на следующие моменты:

📌 Лосс для диффузии и авторегрессии сранивать вообще-то некорректно, так как один - это правдподобие, а другой - оценка на него.

📌 В правильное выражение для лосса диффузии входит множитель, зависящий от шага диффузии, без которого формула, использованная в первой статье неверна.

📌 Early stopping на валидации делать не кошерно. Валидационный лосс для AR может начать расти из-за самоуверенных неточных предсказаний, но качество на бенчмарках все равно продолжит расти. И, собственно, так оно и оказывается.

📌 Используемая зависимости для scaling laws справедлива только в ограниченном диапазоне, так как в ней нигде не возникает возможность роста валидационного лосса, которая имеет место в большом числе эпох.

Критики проводят примерно те же эксперименты, но на больших моделях / объёмах данных и приходят к тому же выводы, что диффузия при большом количестве проходов выходит на лучшее качество.

Кроме того, отмечают авторы, диффузия обладает двухсторонним вниманием, которое более выразительно и потенциально может выжать нечто большее из контекста.

💡 Выводы

Не знаю, насколько близок тот момент, когда человечество будет реально упираться в данные, а не вычисления, и 100 эпох по квадриллиону токенов будет чем-то посильным, а пока на ближайшее будущее авторегрессионная парадигма все еще остается предпочтительной в NLP, будучи более вычислительно эффективной. Интересно, насколько выводы переносятся на файнтьюны на маленьких датасетах. Сможет ли диффузия выжать больше из маленького SFT датасета? Кроме того, диффузионный подход, будучи более молодым здесь, возможно, имеет еще некий потенциал для прокачки.
8👍3
Наткнулся на симпатичный блогпост с визуализацией различных FP8 форматов.

Полезно, чтобы понимать диапазон значений и густоту уровней квантизации около данной точки.
🔥195🤔4
Give Me FP32 or Give Me Death? Challenges and Solutions for Reproducible Reasoning
[Статья][Код]

Введение

На днях от думающих 🤔 машин Миры Мурати вышел занятный блогпостик про воспроизводимость ответов LLM.

В июне этого года вышла статья посвященная той же проблеме с упором на ризонинг с хайпожорским 😆 названием. Ее и сегодня и разберем.
👍6
🔬 Метод

Процедура жадного декодирования в LLMах на каждом шаге выбирает токен с наибольшей вероятностью, и, казалось, бы должна быть полностью детерминированной. Выдавать один и тот же ответ на разных размерах батча, GPU. Но не тут то было…

Корень зла в том, что арифметические операции в конечной точности не ассоциативны из-за точности округления:

(a + b) + c вообще говоря не a + (b + c)


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

Для FP32 проблема стоит еще не так остро из-за большой мантиссы, но для BF16 c 7 битами мантиссы эффект может быть вполне осязаемым.

Дабы оценить разброс в зависимости от экспериментальной конфигурации, авторы подготовили 12 конфигураций: 2 типа GPU, распараллеливанием на 2 и 4 GPU и 3 варианта размера батча и для каждого из них посчитали метрики на бенчах.

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

Рассматривают 2 ризонящие модели:
- DeepSeek-R1-Distill-
- Qwen-7B, DeepSeek-R1-Distill-Llama-8B
и 2 неризонящие:
- Qwen2.5-7B-Instruct
- Llama-3.1-8B-Instruct

И замеряют на всяком там AIME и LiveCodeBench.

И обнаруживают следующее:

📌 При жадном декодировании разброс для BF16 довольно нетривиален - 1%, а то и 5-9% для ризонящих моделей. Для FP16 разброс меньше, и для FP32 еще меньше. Примечательно, что для дистиллов дипсика разброс даже для FP32 иногда нетривиален.
📌 Средняя выходная длина может очень сильно варьироваться от конфигурации. До 9000 токенов на AIME.

Авторы присматриваются к вероятностям логитов моделей и замечают, что зачастую разница между top-1 и top-2 невелика. В особенности, для рассуждающих моделей. И изменения последнего значащего бита может быть достаточно, что изменить предсказание следующего токена.

💡 Выводы

Учитывая приведенные выше нюансы, авторы утверждают, что для хорошей воспроизводимости необходимо инферить в более высокой точности, что, конечно, потребует больших вычислительных затрат, но, мол, куда деваться. Дабы не хранить чекпоинт в FP32 весь в памяти, предлагается держать его в исходной точности, а затем делать upcast в FP32 на лету.

Мораль такова - эффект от конечной точности LLM вполне весомый, и если нужно выбить соту - вполне рабочая стратегия шатать размер батча и железо для инференса 😅.
🔥92😁2👍1
На канале GPU MODE пару недель назад вышла интересная лекция от Кристофера Де Са (один из чуваков, стоявших за QuIP/QuIP#/QTIP/YAQA, а точнее за теоретической подоплекой всего перечисленного).

В ней он дает некоторую базу про задачу квантизации, квадратичные приближения, откуда берется GPTQ и Incoherence Processing. В частности, я сам наконец понял, как можно было дойти до разложения Холески в GPTQ 😄.

Базарит дядька довольно забавно и корчит физиономии, так что не заскучаете.
🔥176
😁11🤡3🤬2👎1😭1🤷1
😁4🍓2🤝21😭1
This media is not supported in your browser
VIEW IN TELEGRAM
😁1
Jet-Nemotron: Efficient Language Model with Post Neural Architecture Search

[Статья]
[Код рады бы запоенсорсить, да комплаенс не позволяет]
[Авторазбор на gonzo_ML_podcasts]


Введение

Лучшие умы 🧠 человечества уже без малого десятилетие озадачены поиском более эффективной альтернативы механизму внимания. Было много интересных решений, но как оказывалось, чего-то в них всегда не хватало, чтобы иметь ту же выразительность и универсальность, что attention.

Потому вместо полного отказа от attention люди пробовали гибридные модели с небольшим количеством attention блоков и заменой всего остального на что-то более дешевое (Mamba, LinearAttention, и т.д.).

И сегодняшняя статья про поиск 🔎 такого гибрида.
4🔥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 для максимизации скорости ⚡️.
🔥42👏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, справедливые для рассмотренных задач, могут не переноситься на продвинутый ризонинг или ворочание репозиториев с кодом.

Тем не менее - сильная инженерная работа.
🔥2👏2
Некоторое время назад мы обсуждали диффузионные LMки в контексте выжимания максимального качества в условиях ограниченности данных.

И вот недавно вышла интересная статья и не менее интересный разбор на gonzo_ML про то, как получить самую лучшую модель, когда мы упираемся в данные, а не вычисления.
2🔥1
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://t.me/gonzo_ML/832), когда производительность очень больших моделей может ухудшиться, прежде чем снова начать улучшаться. Статья показывает, что при правильной настройке регуляризации эту проблемную область можно сгладить, получив чистый закон масштабирования.

Ключевой вывод заключается в том, что оптимальное значение затухания весов для сверхпараметризованных моделей значительно выше стандартной практики -- вплоть до 30x. Такая агрессивная регуляризация позволяет более крупным моделям продолжать улучшаться там, где их нерегуляризованные аналоги переобучились бы. Для датасета в 200M токенов этот регуляризованный рецепт следует степенному закону L̂₂₀₀ₘ,ₙ = 0.05 / N¹·⁰² + 3.43, что предсказывает наилучшую асимптоту лосса в 3.43.

2. Ансамблирование: лучший путь к масштабированию
👍51
Из горячо обсуждаемой книженции Юдковского и Соареса.

Даже если не соглашаться с позицией авторов частично или полностью, сей опус стоит прочитать, чтобы поржать.
🌭19👍2👏2🤡2
Pretraining Large Language Models with NVFP4
[Статья][PR в Transformer Engine]

Введение

На днях команда из одной зеленой компании выкатила технический отчет про обучение в NVFP мамбы-хуямбы гибридной трансформер-мамбы модели на довольно солидном масштабе - 10Т токенов и 12B параметров.

За последний год вышла не одна статья про обучение в FP4 (вот, вот и вот). Но все то было на масштабах на порядки меньше по данным и размерам моделей. И вполне закономерный вопрос - остаются ли рабочими предложенные идеи для моделей, хоть сколь либо интересным на практике.

И ребята, скомбинировав идеи из прошлых статей, смогли получить рецепт близкий по скорости сходимости к FP8.
😁4👀2🔥1