Better & Faster Large Language Models via Multi-token Prediction
[Статья] [Кода нет, но есть модели]
Введение
Раз уж пост вышел на Love. Death. Transformers. и братва требует пояснений, разберем.
За последние несколько лет мы наблюдали несколько качественных скачков возможностей LLM. Однако в основе их работы все еще (преимущественно) лежит задача предсказания следующего токена.
Данная незамысловатая задача позволяет решать задачи любой сложности, но существенным недостатком является дороговизна 💵 инференса, когда ради одного несчастного токена приходится загружать всю модель (или часть слоев в случае MoE) в быструю память и сгружать обратно.
Дабы повысить эффективность инференса предлагается незамысловатое решение - предсказывать несколько токенов за раз. На самом деле такое уже было еще в далеком 2020-м году, и в сценарии дообучения однотокенной модели (Medusa). Заслуга авторов из Меты в том, что они исследовали разные варианты предсказания токенов для моделей разного размера.
[Статья] [Кода нет, но есть модели]
Введение
Раз уж пост вышел на Love. Death. Transformers. и братва требует пояснений, разберем.
За последние несколько лет мы наблюдали несколько качественных скачков возможностей LLM. Однако в основе их работы все еще (преимущественно) лежит задача предсказания следующего токена.
Данная незамысловатая задача позволяет решать задачи любой сложности, но существенным недостатком является дороговизна 💵 инференса, когда ради одного несчастного токена приходится загружать всю модель (или часть слоев в случае MoE) в быструю память и сгружать обратно.
Дабы повысить эффективность инференса предлагается незамысловатое решение - предсказывать несколько токенов за раз. На самом деле такое уже было еще в далеком 2020-м году, и в сценарии дообучения однотокенной модели (Medusa). Заслуга авторов из Меты в том, что они исследовали разные варианты предсказания токенов для моделей разного размера.
👍7
Метод
Архитектура следующая - есть трансформерная тушка и несколько голов, каждая из которых предсказывает k-ый следующий токен (для головы с индексом k). Если я правильно понял, эти головы на самом деле преобразуют эмбеддинг перед подачей в unembedding матрицу (из размерности модели в размер словаря), а сама unembedding матрица общая для всех токенов.
Обучают на стандартный кроссэнтропийный лосс.
Дабы расход памяти не взрывался от тяжелых матриц логитов, авторы предлагают делать backward по каждой голове в отдельности (в LigerKernel на этапе обучения логиты считают чанками и делают backprop на них, к слову).
Эксперименты
Обучают семейство моделей размером от 300M to 13B параметров на датасете из ~100B токенов какого-то кода. Валидируют на
На маленьких моделях предсказание нескольких токенов вперед работает плохо, но начиная с какого-то размера (~3B) становится лучше по бенчам.
4 головы отпимальны по качеству для словаря в 32к токенов (8 для байтов).
Далее метод проверяют в сценарии дообучения и сравнивают 3 варианта:
⚡️Дообучение на предсказание 1 токена вперед, для модели обученной предсказывать 1 токен вперед
⚡️Дообучение на предсказание 1 токена вперед, для модели обученной предсказывать 4 токена вперед
⚡️Дообучение на предсказание 4 токена вперед, для модели обученной предсказывать 4 токена вперед
Оказывается, что второй вариант работает лучше всего почему-то.
Multi-token prediction работает не очень на multiple-choice задачах. Вероятно потому, что там требуется выдать всего один или немного токенов.
Потом тестируются на синтетике - Induction Heads, арифметике многочленов и наблюдают некоторый прирост качества, который объясняют тем, что в таких задачах полезно смотреть слегка наперед.
Очевидный практический плюс от многотокенного предсказания - ускорение 🚤 инференса в 3 раза на BPE токенах и около 6 на байтах.
Вывод
Mutli-token prediction выглядит как естественная и рабочая история. Тем более что в нашумевшем DeepSeek-V3 (где использовалась модифицированная версия метода с трансфорнеыми блоками на каждый новый токен) данная стратегия тоже отлично завелась. Вероятно, она будет стандартной в будущих моделях. Ждем 🦙-4, Qwen-3?
Архитектура следующая - есть трансформерная тушка и несколько голов, каждая из которых предсказывает k-ый следующий токен (для головы с индексом k). Если я правильно понял, эти головы на самом деле преобразуют эмбеддинг перед подачей в unembedding матрицу (из размерности модели в размер словаря), а сама unembedding матрица общая для всех токенов.
Обучают на стандартный кроссэнтропийный лосс.
Дабы расход памяти не взрывался от тяжелых матриц логитов, авторы предлагают делать backward по каждой голове в отдельности (в LigerKernel на этапе обучения логиты считают чанками и делают backprop на них, к слову).
Эксперименты
Обучают семейство моделей размером от 300M to 13B параметров на датасете из ~100B токенов какого-то кода. Валидируют на
MBPP, HumanEval, APPS
- сравнительно простых задачах про код. Пробуют обучать на сырых байтах и словаре из 32к токенов.На маленьких моделях предсказание нескольких токенов вперед работает плохо, но начиная с какого-то размера (~3B) становится лучше по бенчам.
4 головы отпимальны по качеству для словаря в 32к токенов (8 для байтов).
Далее метод проверяют в сценарии дообучения и сравнивают 3 варианта:
⚡️Дообучение на предсказание 1 токена вперед, для модели обученной предсказывать 1 токен вперед
⚡️Дообучение на предсказание 1 токена вперед, для модели обученной предсказывать 4 токена вперед
⚡️Дообучение на предсказание 4 токена вперед, для модели обученной предсказывать 4 токена вперед
Оказывается, что второй вариант работает лучше всего почему-то.
Multi-token prediction работает не очень на multiple-choice задачах. Вероятно потому, что там требуется выдать всего один или немного токенов.
Потом тестируются на синтетике - Induction Heads, арифметике многочленов и наблюдают некоторый прирост качества, который объясняют тем, что в таких задачах полезно смотреть слегка наперед.
Очевидный практический плюс от многотокенного предсказания - ускорение 🚤 инференса в 3 раза на BPE токенах и около 6 на байтах.
Вывод
Mutli-token prediction выглядит как естественная и рабочая история. Тем более что в нашумевшем DeepSeek-V3 (где использовалась модифицированная версия метода с трансфорнеыми блоками на каждый новый токен) данная стратегия тоже отлично завелась. Вероятно, она будет стандартной в будущих моделях. Ждем 🦙-4, Qwen-3?
🔥3
Не проплаченной рекламы пост (от @transformerslovedeatch).
Стартап в области безопасности ИИ ищет инженера LLM (Оптимизация и RL Alignment)
Чем предстоит заниматься.
⭐️ Дообучение и Оценка Sota llm, аттаки на blackbox модели
⭐️ Улучшение RL для атак на модели, настройки моделей (PPO, RLHF, стабильность обучения).
⭐️ Бенчмаркинг и оценка качества моделей (ELO-метрики, alignment).
⭐️ Оптимизация инференса (vLLM, SGLang, TRT).
Требования.
🪄 Опыт работы с LLM (архитектуры, RL, alignment).
🪄 Знание PyTorch/JAX.
🪄 Реальная практика с RL методами (DPO, RLHF — плюс).
🪄 Опыт с системами инференса (vLLM, kuber, docker).
🪄 Публикации в NeurIPS/ICML/ICLR и др. — сильный плюс.
Преимущество
Экспертиза в байесовской оптимизации, эволюционных алгоритмах, гиперпараметрическом поиске, автоматической оптимизации промптов.
Условия
⚡️Зарплата: 80K–130K usd + опционы.
⚡️Релокация в Париж🥐, полная занятость.
⚡️Работа с передовым стеком (AI research, model alignment).
Форма для отклика
https://forms.gle/z45WwdBTRHrd8inM9
Стартап в области безопасности ИИ ищет инженера LLM (Оптимизация и RL Alignment)
Чем предстоит заниматься.
⭐️ Дообучение и Оценка Sota llm, аттаки на blackbox модели
⭐️ Улучшение RL для атак на модели, настройки моделей (PPO, RLHF, стабильность обучения).
⭐️ Бенчмаркинг и оценка качества моделей (ELO-метрики, alignment).
⭐️ Оптимизация инференса (vLLM, SGLang, TRT).
Требования.
🪄 Опыт работы с LLM (архитектуры, RL, alignment).
🪄 Знание PyTorch/JAX.
🪄 Реальная практика с RL методами (DPO, RLHF — плюс).
🪄 Опыт с системами инференса (vLLM, kuber, docker).
🪄 Публикации в NeurIPS/ICML/ICLR и др. — сильный плюс.
Преимущество
Экспертиза в байесовской оптимизации, эволюционных алгоритмах, гиперпараметрическом поиске, автоматической оптимизации промптов.
Условия
⚡️Зарплата: 80K–130K usd + опционы.
⚡️Релокация в Париж🥐, полная занятость.
⚡️Работа с передовым стеком (AI research, model alignment).
Форма для отклика
https://forms.gle/z45WwdBTRHrd8inM9
👍7❤1
QuEST: Stable Training of LLMs with 1-Bit Weights and Activations
[Статья][Код]
Введение
Уважаемые коллеги из IST, в частности, @black_samorez_channel выпустили статью про стабильное обучение моделей с квантизованными весами и активациями.
Статей с той же аббревиатурой пруд пруди на архиве:
- Вот
- Вот
- Вот
- И вот
Но эта - особенная!
Ранее уже неоднократно поднимался (в том числе и на этом канале) вопрос о том, в какой точности оптимально учить модель (веса и активации), дабы получить наилучшее качество при заданном размере (через PTQ или QAT). Ранее утверждали, что 6-7 бит оптимально при квантизации весов и активаций в INTx/FPx. Но сама процедура была незамысловата, и нет гарантий, что нельзя пробить существенно Парето-фронт. Свежие результаты (смотри краткий обзор на gonzo-ml) показывают, что в fp4 тоже можно эффективно обучать.
В данной же статье авторам удается достичь Парето-оптимальности в W3A3/W4A4 и стабильного обучения в W1A1 😮 (уже не оптимального, но на одном уровне с fp16).
[Статья][Код]
Введение
Уважаемые коллеги из IST, в частности, @black_samorez_channel выпустили статью про стабильное обучение моделей с квантизованными весами и активациями.
Статей с той же аббревиатурой пруд пруди на архиве:
- Вот
- Вот
- Вот
- И вот
Но эта - особенная!
Ранее уже неоднократно поднимался (в том числе и на этом канале) вопрос о том, в какой точности оптимально учить модель (веса и активации), дабы получить наилучшее качество при заданном размере (через PTQ или QAT). Ранее утверждали, что 6-7 бит оптимально при квантизации весов и активаций в INTx/FPx. Но сама процедура была незамысловата, и нет гарантий, что нельзя пробить существенно Парето-фронт. Свежие результаты (смотри краткий обзор на gonzo-ml) показывают, что в fp4 тоже можно эффективно обучать.
В данной же статье авторам удается достичь Парето-оптимальности в W3A3/W4A4 и стабильного обучения в W1A1 😮 (уже не оптимального, но на одном уровне с fp16).
👍2
Метод
Основным затруднением при оптимизации весов и активаций в низкой точности является высокая степень шума. Напомню, что операция квантизации недифференцируема, и дабы все можно было оптимизировать градиентными методами применяют трюк имени Бенджио под названием STE (небось, тоже спиздил у Шмидхубера) , где градиент просто пробрасывается через недифференцируемую операцию (как будто вместо нее стоит функция y=x). Но при низких битностнях, такая оценка сильно расходится от истинного градиента и не сходится нормально.
Авторы формулируют задачу оптимизации STE, как минимизацию между оцененным псевдоградиентом и истинным. Предполагая гладкость функции потерь по весам, можно оценить ошибку градиента, как константа на ошибку квантизации весов.
Веса модели разделяют на 2️⃣ группы - с ошибкой квантизации ниже и выше некоторого порога. На шаге оптимизации учитывают только градиенты от весов с ошибкой ниже заданного порога, ибо вторые как раз и вносят шум и нестабильность в обучение.
Далее, дабы работать с более регулярным распределением весов/активаций, которое проще квантизовать, применяют пару трюков:
1️⃣ Чтобы привести распределение в более удобо квантизуемый вид применяют известный старым читателям канала трюк - вращения Адамаровыми матрицами как весов и активаций. В результате получают что-то близкое к гауссиане.
2️⃣ Дабы привести все приблизительно к
То есть в итоге алгоритм выглядит следующим образом:
🎯 На прямом проходе вращаем и нормализуем веса, сохраняя Адамаровы матрицы
🎯 На обратном проходе применяем обратное Адамарово преобразование и маскируем градиент
В Ablation показывают, что trust estimator (отбрасывание градиентов по шумным весам) в связке с Адамаровыми вращениями дает хорошую близость с истинным градиентом, в то время как vanilla STE и без Адамара корреляция низкая.
Основным затруднением при оптимизации весов и активаций в низкой точности является высокая степень шума. Напомню, что операция квантизации недифференцируема, и дабы все можно было оптимизировать градиентными методами применяют трюк имени Бенджио под названием STE
Авторы формулируют задачу оптимизации STE, как минимизацию между оцененным псевдоградиентом и истинным. Предполагая гладкость функции потерь по весам, можно оценить ошибку градиента, как константа на ошибку квантизации весов.
Веса модели разделяют на 2️⃣ группы - с ошибкой квантизации ниже и выше некоторого порога. На шаге оптимизации учитывают только градиенты от весов с ошибкой ниже заданного порога, ибо вторые как раз и вносят шум и нестабильность в обучение.
Далее, дабы работать с более регулярным распределением весов/активаций, которое проще квантизовать, применяют пару трюков:
1️⃣ Чтобы привести распределение в более удобо квантизуемый вид применяют известный старым читателям канала трюк - вращения Адамаровыми матрицами как весов и активаций. В результате получают что-то близкое к гауссиане.
2️⃣ Дабы привести все приблизительно к
N(0, 1)
применяют RMS нормализацию к результату шага 1. А для N(0, 1
) можно уже численно найти оптимальный скейлинг фактор для решетки квантизации и пользоваться им.То есть в итоге алгоритм выглядит следующим образом:
🎯 На прямом проходе вращаем и нормализуем веса, сохраняя Адамаровы матрицы
🎯 На обратном проходе применяем обратное Адамарово преобразование и маскируем градиент
В Ablation показывают, что trust estimator (отбрасывание градиентов по шумным весам) в связке с Адамаровыми вращениями дает хорошую близость с истинным градиентом, в то время как vanilla STE и без Адамара корреляция низкая.
👍4
Эксперименты
Обучают семейство моделей размером от 30 до 800М параметров архитектуры 🦙-2 на C4 с более-менее стандартным рецептом обучения. По умолчанию отношение количества данных к числу параметров
Как меру качества берут перплексию на отложенной выборке.
QuEST работает лучше, чем PACT и LSQ бейзлайны.
Далее фитируют scaling law, который отличается от оригинального из статьи про Шиншиллу фактором eff(P) - поправкой на битность параметра (eff(P) = 1 для fp16). Исходя из эмпирических графиков лосса для моделей разного размера и битности, получают Парето-оптимальность в 4-х битах. 4 битный параметр эффективно равен 0.7 fp16, но модель-то при этом в 4 раза меньше, отсюда выигрыш в 2.7 раз по эффективности.
Метод пробуют на FP4 и 2:4 sparsity + INT4, где все тоже неплохо заводится.
В ablation показывают, что Адамаровы вращения дают некоторый прирост качества на W1A1 и W2A2, при этом лишь немного замедляя инференс.
Вывод
Как мне кажется, довольно обнадеживающий экспериментальный результат. Все больше и больше подтверждений тому, что следует с самого начала учить в низкой точности дабы нищеброды потом уже не просили униженно GGUF, GPTQ или AWQ кванты. Интересно, можно ли пробить ниже еще порог Парето-оптимальности по битностям весов/активаций или мы упираемся уже в некий потолок? Ждем экспериментов на большем масшабе. Глядишь Meta, Qwen или DeepSeek порадуют.
Обучают семейство моделей размером от 30 до 800М параметров архитектуры 🦙-2 на C4 с более-менее стандартным рецептом обучения. По умолчанию отношение количества данных к числу параметров
D/N=100
.Как меру качества берут перплексию на отложенной выборке.
QuEST работает лучше, чем PACT и LSQ бейзлайны.
Далее фитируют scaling law, который отличается от оригинального из статьи про Шиншиллу фактором eff(P) - поправкой на битность параметра (eff(P) = 1 для fp16). Исходя из эмпирических графиков лосса для моделей разного размера и битности, получают Парето-оптимальность в 4-х битах. 4 битный параметр эффективно равен 0.7 fp16, но модель-то при этом в 4 раза меньше, отсюда выигрыш в 2.7 раз по эффективности.
Метод пробуют на FP4 и 2:4 sparsity + INT4, где все тоже неплохо заводится.
В ablation показывают, что Адамаровы вращения дают некоторый прирост качества на W1A1 и W2A2, при этом лишь немного замедляя инференс.
Вывод
Как мне кажется, довольно обнадеживающий экспериментальный результат. Все больше и больше подтверждений тому, что следует с самого начала учить в низкой точности дабы нищеброды потом уже не просили униженно GGUF, GPTQ или AWQ кванты. Интересно, можно ли пробить ниже еще порог Парето-оптимальности по битностям весов/активаций или мы упираемся уже в некий потолок? Ждем экспериментов на большем масшабе. Глядишь Meta, Qwen или DeepSeek порадуют.
❤7
Matryoshka Quantization
[Статья]
[Код есть, но мы вам его не покажем]
Введение
Большинство методов квантизации готовят модель в некоторой заданной битности, и, если хочется иметь квантизованные модели разной степени сжатия, приходится прогонять алгоритм несколько раз и хранить где—то всю полученную пачку.
Команда из Глубокого Разума 🧠 на днях выкатила статейку по квантизации с примечательным названием Matryoshka Quantization 🪆, которая за один присест готовит квантизованные модельки в 2,4 и 8 бит.
Примечательно, что один из авторов, Kusupati, ранее публиковал другую работу про матрешки — Matryoshka Representation Learning.
[Статья]
[Код есть, но мы вам его не покажем]
Введение
Большинство методов квантизации готовят модель в некоторой заданной битности, и, если хочется иметь квантизованные модели разной степени сжатия, приходится прогонять алгоритм несколько раз и хранить где—то всю полученную пачку.
Команда из Глубокого Разума 🧠 на днях выкатила статейку по квантизации с примечательным названием Matryoshka Quantization 🪆, которая за один присест готовит квантизованные модельки в 2,4 и 8 бит.
Примечательно, что один из авторов, Kusupati, ранее публиковал другую работу про матрешки — Matryoshka Representation Learning.
👍5🫡1🗿1
Метод
MatQuant по постановке ,поверх оптимизируемых методов квантизации, с обучаемыми непрерывными или дискретными параметрами.
Основная идея работы в том, что для целочисленных типов данных отстругивая младшие биты от представления с максимальной бытностью, возможно получать приближения разной точности, вложенные друг в друга, как матрешка.
Но если просто огрублять, скажем , int8 квантизацию, работает не очень, поэтому предлагается совместно оптимизировать разные битности одновременно в одном батче с разными весами.
MatQuant применяют поверх OmniQuant, в котором оптимизируются скейлы и biasы в квантизации через поблочную дистилляцию, и QAT, которая суть просто обучение (с кроссэнтропийным лоссом) с STE через недифференцируемую операцию квантизации.
Эксперименты
Метод валидируют преимущественно на Gemma 2 (2b и 9b) моделях и Мистрале 7b. Полагаю, что 🦙 и Квены не рассматривают из политических соображений (негоже поганых парнокопытных от Меты лапать, как и китайскую продукцию).
OmniQuant оптимизируют на 10, 20M токенах из C4, QAT на 100 M токенах. Причем в большинстве экспериментов квантизуют только FFN.
Качество оценивают по перплексии и 0—shots на lm-eval.
Наивное стругание из высокой битности работает сильно плохо на 2 битах, оптимизация под конкретную битность получше (когда храним много моделей), но все равно не очень, предложенный подход еще чуть получше.
Просадки довольно значительные — 13, 15% для 2b, 6-12% для 9b Gemma 2 модели. Если бы квантизовались все слои, 2 бита были бы Парето—оптимальными (ибо точность квантизованной 9b модели равна несжатой 2b), но, увы, нет.
Полагаю, что подобный результат можно выжать более дешевыми QuIP (без решетки) и 1—мерным HIGGS, как и EfficientQAT.
В ablation показывают, что совместная оптимизация в разными битностями накидывает немного в качестве. Веса лоссов при разных битностых перебирают по сетке.
При квантизации Attention слоев метод тоже лучше бейзлайнов, но просадки становятся еще значительнее с 74 до 47% (остальные методы работают чуть лучше рандома в 2 битах).
Выводы
Название работы красивое, и мотивация хорошая — но результаты все же не слишком впечатляют. Также утверждение, что они первые, кто об этом задумался, не соответствует действительности — была такая работа Any Precision LLM (Oral прошлого ICLR), где разные битности получали через SqueezeLLM. Кроме того, вложенные представления разной точности можно получать через Residual Quantization.
MatQuant по постановке ,поверх оптимизируемых методов квантизации, с обучаемыми непрерывными или дискретными параметрами.
Основная идея работы в том, что для целочисленных типов данных отстругивая младшие биты от представления с максимальной бытностью, возможно получать приближения разной точности, вложенные друг в друга, как матрешка.
Но если просто огрублять, скажем , int8 квантизацию, работает не очень, поэтому предлагается совместно оптимизировать разные битности одновременно в одном батче с разными весами.
MatQuant применяют поверх OmniQuant, в котором оптимизируются скейлы и biasы в квантизации через поблочную дистилляцию, и QAT, которая суть просто обучение (с кроссэнтропийным лоссом) с STE через недифференцируемую операцию квантизации.
Эксперименты
Метод валидируют преимущественно на Gemma 2 (2b и 9b) моделях и Мистрале 7b. Полагаю, что 🦙 и Квены не рассматривают из политических соображений (негоже поганых парнокопытных от Меты лапать, как и китайскую продукцию).
OmniQuant оптимизируют на 10, 20M токенах из C4, QAT на 100 M токенах. Причем в большинстве экспериментов квантизуют только FFN.
Качество оценивают по перплексии и 0—shots на lm-eval.
Наивное стругание из высокой битности работает сильно плохо на 2 битах, оптимизация под конкретную битность получше (когда храним много моделей), но все равно не очень, предложенный подход еще чуть получше.
Просадки довольно значительные — 13, 15% для 2b, 6-12% для 9b Gemma 2 модели. Если бы квантизовались все слои, 2 бита были бы Парето—оптимальными (ибо точность квантизованной 9b модели равна несжатой 2b), но, увы, нет.
Полагаю, что подобный результат можно выжать более дешевыми QuIP (без решетки) и 1—мерным HIGGS, как и EfficientQAT.
В ablation показывают, что совместная оптимизация в разными битностями накидывает немного в качестве. Веса лоссов при разных битностых перебирают по сетке.
При квантизации Attention слоев метод тоже лучше бейзлайнов, но просадки становятся еще значительнее с 74 до 47% (остальные методы работают чуть лучше рандома в 2 битах).
Выводы
Название работы красивое, и мотивация хорошая — но результаты все же не слишком впечатляют. Также утверждение, что они первые, кто об этом задумался, не соответствует действительности — была такая работа Any Precision LLM (Oral прошлого ICLR), где разные битности получали через SqueezeLLM. Кроме того, вложенные представления разной точности можно получать через Residual Quantization.
👍3👀1
Блог unsloth про квантизацию DeepSeek-R1
Вот как надо евалить модельки, а не все эти ваши никчемные MMLU, перплексия, lm-eval-harness.
Вот как надо евалить модельки, а не все эти ваши никчемные MMLU, перплексия, lm-eval-harness.
😁18🔥1
Large Language Diffusion Models
[Статья] [Страничка проекта] [Код и модели божатся выложить через 2 недели]
На текущий момент авторегрессионные модели занимают доминирующее положение среди языковых моделей, а диффузия блистает в других приложениях. Ранее уже предпринимались попытки создания языковых моделей на основе диффузионных процессов (https://arxiv.org/abs/2406.07524, https://arxiv.org/abs/2409.02908, https://arxiv.org/abs/2406.04329), но получить что-либо конкурентоспособное тем же флагманским открытым моделям - не удавалось.
В данной работе коллектив авторов из Поднебесной 🇨🇳 произвел не свет masked диффузионную модель, с качеством якобы на уровне Llama-2/3. И модель называют не абы как, а в честь легендарной автомобильной марки - LLaDA.
[Статья] [Страничка проекта] [Код и модели божатся выложить через 2 недели]
На текущий момент авторегрессионные модели занимают доминирующее положение среди языковых моделей, а диффузия блистает в других приложениях. Ранее уже предпринимались попытки создания языковых моделей на основе диффузионных процессов (https://arxiv.org/abs/2406.07524, https://arxiv.org/abs/2409.02908, https://arxiv.org/abs/2406.04329), но получить что-либо конкурентоспособное тем же флагманским открытым моделям - не удавалось.
В данной работе коллектив авторов из Поднебесной 🇨🇳 произвел не свет masked диффузионную модель, с качеством якобы на уровне Llama-2/3. И модель называют не абы как, а в честь легендарной автомобильной марки - LLaDA.
🫡18😁11
Метод
Предложенный процесс не является диффузией в привычном понимании, а маскированием с разной степенью зашумления
Задача языкового моделирования обычно оперирует в терминах дискретных токенов.
Имея некий исходный текст, предлагается “зашумить” некую долю (от 0 до 1) токенов, заменив их на
Обучение состоит из pretrain и SFT:
🌟На pretrain зашумляют токены на любых позициях.
🌟На SFT только в ответе. Промпт не трогают.
RL, как я понял, пока не осилили.
Инференс выглядит следующим образом - стартуя с большого количества
Чем больше шагов диффузии (маскирования/демаскирования) - тем ожидается, что лучше качесво.
Эксперименты
Обучают две модели размера 1B и 8B на некотором собственноручно собранном корпусе данных. Замеряют на стандартном наборе задач из lm-eval и HumanEval (кодинг бенче).
При прочих равных (архитектуре и размере модели, затраченном на обучение бюджете) диффузия на большинстве задач не хуже авторегрессионного бейзлайна (кроме PiQA).
Полученная 8B модель посильнее Llama 2 7B, но все же уступает Llama 3 8B и Qwen2.5 7B. Справедливости ради стоить заметить, что обучали всего на 2.7T токенах, что по нынешним меркам немного, всего лишь 0.13 миллионов H800 GPU часов.
Авторы утверждают, что в плане оценки правдоподобия диффузионки сильно менее эффективные по сравнению с авторегрессионными, но бенчмарки от этого не сильно страдают,
И напоследок показывают, что диффузионные модели гораздо лучше умеют предсказывать прошлое (прошлые строки на основе последующих в стихах), чем авторегрессионные LLM. Непонятно зачем, правда.
Вывод
Попытки уйти от стандартной парадигмы всегда выглядят интересно. Пока еще сильно далеко от SOTA LLM, да и протокол замеров не исчерпывающий, но тем не менее, кажется, что история сколь-либо жизнеспособная. Сильно не хватает замеров скорости, и экспериментов по trade-off между скоростью генерации и качеством результатов. Ждем выпуска моделей и кода, дабы самим заценить.
Предложенный процесс не является диффузией в привычном понимании, а маскированием с разной степенью зашумления
[MASK]
токенами.Задача языкового моделирования обычно оперирует в терминах дискретных токенов.
Имея некий исходный текст, предлагается “зашумить” некую долю (от 0 до 1) токенов, заменив их на
[MASK],
а задача модели - предсказать зашумленные токены. Прямо как старый добрый BERT, только доля зашумленных токенов переменная.Обучение состоит из pretrain и SFT:
🌟На pretrain зашумляют токены на любых позициях.
🌟На SFT только в ответе. Промпт не трогают.
RL, как я понял, пока не осилили.
Инференс выглядит следующим образом - стартуя с большого количества
[MASK]
токенов, предсказываем токены, которые стоят на этой позиции. Прогон за один раз работает не очень, потому делаем процедуру итеративно, снова зашумляя уже меньший процент [MASK]
токенов . Выбирать токены можно случайно, а можно брвть те, где модель наиболее уверена, а остальные снова зашумлять перед следующей итерацией.Чем больше шагов диффузии (маскирования/демаскирования) - тем ожидается, что лучше качесво.
Эксперименты
Обучают две модели размера 1B и 8B на некотором собственноручно собранном корпусе данных. Замеряют на стандартном наборе задач из lm-eval и HumanEval (кодинг бенче).
При прочих равных (архитектуре и размере модели, затраченном на обучение бюджете) диффузия на большинстве задач не хуже авторегрессионного бейзлайна (кроме PiQA).
Полученная 8B модель посильнее Llama 2 7B, но все же уступает Llama 3 8B и Qwen2.5 7B. Справедливости ради стоить заметить, что обучали всего на 2.7T токенах, что по нынешним меркам немного, всего лишь 0.13 миллионов H800 GPU часов.
Авторы утверждают, что в плане оценки правдоподобия диффузионки сильно менее эффективные по сравнению с авторегрессионными, но бенчмарки от этого не сильно страдают,
И напоследок показывают, что диффузионные модели гораздо лучше умеют предсказывать прошлое (прошлые строки на основе последующих в стихах), чем авторегрессионные LLM. Непонятно зачем, правда.
Вывод
Попытки уйти от стандартной парадигмы всегда выглядят интересно. Пока еще сильно далеко от SOTA LLM, да и протокол замеров не исчерпывающий, но тем не менее, кажется, что история сколь-либо жизнеспособная. Сильно не хватает замеров скорости, и экспериментов по trade-off между скоростью генерации и качеством результатов. Ждем выпуска моделей и кода, дабы самим заценить.
👍2
Сообщество сегодня обсуждает релиз от Grok3 от
Нас уже перевалило за 2к! 🎉
Изначально, когда создавал канал, я даже и не мог помыслить о такой аудитории) Думал, что буду как гаражный музыкант с парой десятков близких знакомых и энтузиастов.
Спасибо всем за то, что вы здесь, за комментарии и ссылки на релевантные статьи)
Желаю и далее в силу мер и возможности публиковать обзорчики, мемасики 😁 про сжатие и не только.
[MASK]
, но в этот прекрасный произошло еще одно - не менее важное и знаменательное событие.Нас уже перевалило за 2к! 🎉
Изначально, когда создавал канал, я даже и не мог помыслить о такой аудитории) Думал, что буду как гаражный музыкант с парой десятков близких знакомых и энтузиастов.
Спасибо всем за то, что вы здесь, за комментарии и ссылки на релевантные статьи)
Желаю и далее в силу мер и возможности публиковать обзорчики, мемасики 😁 про сжатие и не только.
❤27👍13🔥8🌚1💋1
[Блог]
Вот недавно мы обсуждали LLaDA и жизнеспособности диффузионной парадигмы, а тут Inception Labs обьявили о создании Diffusion LLM, которая якобы способна бодаться по качеству (в бенчах приводят только код) с вполне себе сильными closed-source LLM (без рызонинга).
При этом она якобы на порядок быстрее небольших авторегресионных LLM, давая космические более 1000 токенов в секунду на одной H100, а не специализированных чипах.
Утверждается, что оно могет еще и в RAG, tools use и агентность.
У них и чатик есть, можно потыкаться.
Вот недавно мы обсуждали LLaDA и жизнеспособности диффузионной парадигмы, а тут Inception Labs обьявили о создании Diffusion LLM, которая якобы способна бодаться по качеству (в бенчах приводят только код) с вполне себе сильными closed-source LLM (без рызонинга).
При этом она якобы на порядок быстрее небольших авторегресионных LLM, давая космические более 1000 токенов в секунду на одной H100, а не специализированных чипах.
Утверждается, что оно могет еще и в RAG, tools use и агентность.
У них и чатик есть, можно потыкаться.
🔥16👍2❤1
Judge Decoding: Faster Speculative Sampling Requires Going Beyond Model Alignment
[Статья][Кода нет]
Давно хотел коснуться темы ускорения инференса авторегрессионных моделей за счет спекулятивного декодинга, но все никак не доходили руки, и наконец дошли.
Команда исследователей из 00, среди которых небезызвестный автор канала @ai_newz, представила метод, ускоряющий спекулятивный декодинг за счет оценки важности текущего токена и принятия большего числа по сравнению с базовым подходом, при этом практически без просадки в качестве.
[Статья][Кода нет]
Давно хотел коснуться темы ускорения инференса авторегрессионных моделей за счет спекулятивного декодинга, но все никак не доходили руки, и наконец дошли.
Команда исследователей из 00, среди которых небезызвестный автор канала @ai_newz, представила метод, ускоряющий спекулятивный декодинг за счет оценки важности текущего токена и принятия большего числа по сравнению с базовым подходом, при этом практически без просадки в качестве.
👍6❤2🔥1
Введение
Есть большие LLM, а есть не очень большие. Большие обычно работают лучше при прочих равных, но требуют большей памяти, объема вычислений и времени на шаг инференса.
Инференс LLM обыкновенно memory bound - скорость упирается во время загрузки/сгрузки весов из GDDR/HBM памяти в кэши, а не сами вычисления. То есть за один трансфер памяти потенциально можно было бы делать больше арифметических операций без существенного замедления.
При этом в большинстве случаев разница между более слабой моделью (называемой draft, т,е ‘черновой”) и некой большей (таргет) моделью невелика.
Отсюда возникает идея - генерировать много токенов один за другим более слабой моделью (Llama-3.1-8B), а затем проверять более “жирной” (Llama-3.1-405-B) с тем же словарем, (последнее требование не обязательно, но упрощает постановку). За один шаг можно “проверить” несколько токенов малой модели, и если все предсказания совпали (то есть наиболее вероятные токены у большой модели такие же, как у меньшой), — принять все, иначе - до последнего принятого токена.
Таким образом можно добиться генерации, идентичной выдаваемой большой моделью, за меньшее время. Данную идею предложили еще достаточно давно в статье Fast Inference from Transformers via Speculative Decoding еще в далеком 2022.
Но, есть существенный недостаток. На практике предсказания драфт-модели и таргет-модели расходятся очень быстро, всего через несколько токенов, поэтому слишком большого ускорения достичь не удается - обычно в районе 1.5-2x.
При этом для получения правильного ответа совершенно необязательно, чтобы предсказания каждого токена у меньшей модели совпадали с большей. Она может сказать то же самое, но другими словами, используя синонимы, например.
Есть большие LLM, а есть не очень большие. Большие обычно работают лучше при прочих равных, но требуют большей памяти, объема вычислений и времени на шаг инференса.
Инференс LLM обыкновенно memory bound - скорость упирается во время загрузки/сгрузки весов из GDDR/HBM памяти в кэши, а не сами вычисления. То есть за один трансфер памяти потенциально можно было бы делать больше арифметических операций без существенного замедления.
При этом в большинстве случаев разница между более слабой моделью (называемой draft, т,е ‘черновой”) и некой большей (таргет) моделью невелика.
Отсюда возникает идея - генерировать много токенов один за другим более слабой моделью (Llama-3.1-8B), а затем проверять более “жирной” (Llama-3.1-405-B) с тем же словарем, (последнее требование не обязательно, но упрощает постановку). За один шаг можно “проверить” несколько токенов малой модели, и если все предсказания совпали (то есть наиболее вероятные токены у большой модели такие же, как у меньшой), — принять все, иначе - до последнего принятого токена.
Таким образом можно добиться генерации, идентичной выдаваемой большой моделью, за меньшее время. Данную идею предложили еще достаточно давно в статье Fast Inference from Transformers via Speculative Decoding еще в далеком 2022.
Но, есть существенный недостаток. На практике предсказания драфт-модели и таргет-модели расходятся очень быстро, всего через несколько токенов, поэтому слишком большого ускорения достичь не удается - обычно в районе 1.5-2x.
При этом для получения правильного ответа совершенно необязательно, чтобы предсказания каждого токена у меньшей модели совпадали с большей. Она может сказать то же самое, но другими словами, используя синонимы, например.