Inference-Time Scaling for Diffusion Models beyond Scaling Denoising Steps
[Статья][DeepMind не часто публикует код]
Введение
Данная статья уже появлялась на Love. Death. Transformers и была разобрана у Сиолошной . Тем не менее, выскажу свое скромное мнение 😉.
Inference-time scaling уже продемонстрировал впечатляющие результаты в контексте языковых моделей, где длинные цепочки рассуждений позволяют значительно улучшать качество на сложных задачах.
У диффузионных моделей механизм улучшения качества генераций за счет большего объема вычислений есть “из 📦” - выбор количества шагов сэмплирования. С ростом количества шагов расшумления качество полученных генераций и их соответствие запросу 🔼, но начиная с какого-то момента происходит насыщение, и дальнейшее повышение не приводит к значимым улучшениям, а иногда даже наоборот.
Поэтому в данной статье предлагают улучшать генерации за счет сэмплирования разных случайных шумов, начальных точек в процессе генерации, и выборе лучшего случайного зерна 🌱.
[Статья][DeepMind не часто публикует код]
Введение
Данная статья уже появлялась на Love. Death. Transformers и была разобрана у Сиолошной . Тем не менее, выскажу свое скромное мнение 😉.
Inference-time scaling уже продемонстрировал впечатляющие результаты в контексте языковых моделей, где длинные цепочки рассуждений позволяют значительно улучшать качество на сложных задачах.
У диффузионных моделей механизм улучшения качества генераций за счет большего объема вычислений есть “из 📦” - выбор количества шагов сэмплирования. С ростом количества шагов расшумления качество полученных генераций и их соответствие запросу 🔼, но начиная с какого-то момента происходит насыщение, и дальнейшее повышение не приводит к значимым улучшениям, а иногда даже наоборот.
Поэтому в данной статье предлагают улучшать генерации за счет сэмплирования разных случайных шумов, начальных точек в процессе генерации, и выборе лучшего случайного зерна 🌱.
👍7
Метод
В статье рассматривают две постановки:
1️⃣ Class-conditional генерация SiT-B/L/XL (какой-то трансформер с приблудами)
2️⃣ 📝-2-🖥 генерация c FLUX
В данной статье исследуют разные стратегии отбора лучших сэмплов и модели для оценки качества.
Стратегии отбора
1️⃣ Random Search. Просто сэмплируем независимо N кандидатов и берем лучшего (с точки зрения модели-оценщика).
2️⃣ Zero-Order Search. Стартуя со случайного шума, сэмплируем несколько шумов в его окрестности. Оцениваем их, находим лучший, и используем в качестве начальной точки на новой итерации. (Градиентная оптимизация требует проброса градиентов через всю цепочку сэмплирования, потому очень дорогая, и не очень хорошо работает, как показано в приложении)
3️⃣ Search over Paths. Сэмплируем несколько начальных шумов (траекторий), и с некоторого уровня шума генерируем несколько конечных сэмплов. Отбираем лучшие для каждой траектории, зашумляем до меньшего уровня шума и запускаем генерацию уже оттуда.
В качестве верификаторов для оценки качества class-conditional генерации используют:
1️⃣ Inception Score напрямую
2️⃣ CLIP (где эмбеддят класс в промпт вида “a photo of <class>” )
3️⃣ Линейный классификатор поверх DINOv2
При фиксированном (достаточно большом числе шагов) увеличивают количество случайных шумов. Метрика Inception Score (оценивающая точность распознавания сгенерированного изображения Inception-V3) монотонно растет с увеличением количества сэмплов (для supervised классификаторов ожидаемо сильнее). Однако, FID (тоже хреновая метрика, к слову), начиная с какого-то момента начинает расти (т.е ухудшаться). По всей видимости, это связано с тем, что строгий отбор снижает разнообразие генераций и имеет место переобучение под верификаторы.
В качестве альтернативы авторы предлагают self-supervised верификаторы - косинусную близость между логитами классификаторов x0-предсказания на малом уровне шума, и конечного сэмпла. И показывают, что она неплохо коррелирует с исходными классификаторами. Метрика не самая интуитивная. Предположительно, идея в том, что если сэмпл хороший получается, то на последнем участке генерации x0-предсказание слабо меняется.
Далее пробуют разные стратегии отбора, увеличивая число кандидатов. Метрики монотонно растут, но будто бы результаты мало зависят от гиперпараметров каждого из вариантов - размера окрестности в случае Zero-Order Search и числа траекторий для Search over Paths.
В статье рассматривают две постановки:
1️⃣ Class-conditional генерация SiT-B/L/XL (какой-то трансформер с приблудами)
2️⃣ 📝-2-🖥 генерация c FLUX
В данной статье исследуют разные стратегии отбора лучших сэмплов и модели для оценки качества.
Стратегии отбора
1️⃣ Random Search. Просто сэмплируем независимо N кандидатов и берем лучшего (с точки зрения модели-оценщика).
2️⃣ Zero-Order Search. Стартуя со случайного шума, сэмплируем несколько шумов в его окрестности. Оцениваем их, находим лучший, и используем в качестве начальной точки на новой итерации. (Градиентная оптимизация требует проброса градиентов через всю цепочку сэмплирования, потому очень дорогая, и не очень хорошо работает, как показано в приложении)
3️⃣ Search over Paths. Сэмплируем несколько начальных шумов (траекторий), и с некоторого уровня шума генерируем несколько конечных сэмплов. Отбираем лучшие для каждой траектории, зашумляем до меньшего уровня шума и запускаем генерацию уже оттуда.
В качестве верификаторов для оценки качества class-conditional генерации используют:
1️⃣ Inception Score напрямую
2️⃣ CLIP (где эмбеддят класс в промпт вида “a photo of <class>” )
3️⃣ Линейный классификатор поверх DINOv2
При фиксированном (достаточно большом числе шагов) увеличивают количество случайных шумов. Метрика Inception Score (оценивающая точность распознавания сгенерированного изображения Inception-V3) монотонно растет с увеличением количества сэмплов (для supervised классификаторов ожидаемо сильнее). Однако, FID (тоже хреновая метрика, к слову), начиная с какого-то момента начинает расти (т.е ухудшаться). По всей видимости, это связано с тем, что строгий отбор снижает разнообразие генераций и имеет место переобучение под верификаторы.
В качестве альтернативы авторы предлагают self-supervised верификаторы - косинусную близость между логитами классификаторов x0-предсказания на малом уровне шума, и конечного сэмпла. И показывают, что она неплохо коррелирует с исходными классификаторами. Метрика не самая интуитивная. Предположительно, идея в том, что если сэмпл хороший получается, то на последнем участке генерации x0-предсказание слабо меняется.
Далее пробуют разные стратегии отбора, увеличивая число кандидатов. Метрики монотонно растут, но будто бы результаты мало зависят от гиперпараметров каждого из вариантов - размера окрестности в случае Zero-Order Search и числа траекторий для Search over Paths.
Эксперименты
Для Text-2-Image генерации с FLUX в качестве верификаторов используют:
1️⃣ Классификатор эстетичности 💃 поверх OpenCLIP
2️⃣ CLIP Score
3️⃣ ImageReward
4️⃣ Ансамбль всех трех (с одинаковыми весами)
FLUXом гененируют по умолчанию в 30 шагов сэмплирования, SiT в 250.
Для оценки качества (не доверяя субъективного мнению кожаных мешков) используют Gemini-1.5-Flash, которая оценивает качество по 5 аспектам:
⚡️Accuracy to Prompt (соответствие запросу)
⚡️Originality (оригинальность)
⚡️Visual Quality (визуальное качество)
⚡️Internal Consistency (внутренняя консистентность)
⚡️Emotional Resonance (в душе не ебу, что это, возможно, степень шатания смотрящего от эмоций при взгляде на картинку )
Для валидации используют DrawBench и T2I-CompBench.
Сначала исследуют взаимные корреляции между разными верификаторами на DrawBench.
Эстетичность коррелирует с ImageReward, но слегка понижает CLIP Score. Общее качество (по мнению Gemini) немного растет.
CLIP Score повышает ImageReward, но слегка понижает эстетичность. Общее качество слегка улучшается.
ImageReward повышает CLIP Score и оценку Gemini более существенно, эстетичность почти не меняется.
Ансамбль всех трех метрик улучшает все три метрики.
При увеличении количества сэмплов в ансамбле все метрики растут, но ImageReward значительнее всего (вероятно, из-за шкалы).
На максимуме ставят суммарное число прогонов через модель (2880 = 96 сэмплов х 30 шагов). Весьма забавно, что лучше всего себя показывает наивная стратегия независимой генерации случайных шумов, а остальные две, более заумные стратегии, не приносят пользы.
На T2I-CompBench, где оценивается соответствие промпту - взаимоотношения между объектами, формы, их положение, а не эстетичность, классификатор эстетичности слегка просаживает метрики, а CLIP Score и ImageReward улучшает. Причем ImageReward лучше ансамбля, по всей видимости, из-за наличия Aesthetic Score.
Предложенный метод работает и поверх DPO дообученной SDXL.
При фиксированном бюджете (если он мал) для SiT-XL выгоднее нагенерить несколько траекторий с меньшим количеством шагов, чем одну “дорогую”. Но с ростом доступного бюджета становится полезным повышать число шагов сэмплера.
Кроме того, на малых бюджетах меньшие версии SiT-B/L, генерирующее нескольких кандидатов, лучше чем один прогон через большую SiT-XL.
Выводы
С идейной точки зрения - направление исследований довольно интересное, однако польза пока еще не столь очевидна, как для LLM, где сложный reasoning процесс позволяет решать сложные задачи (недоступные без него), а здесь же приводит к некоторому улучшению метрик. На текущий момент процесс слишком дорогой для большинства практических приложений (ибо ждать несколько минут вместо нескольких секунд для создания немного более хорошей картинки не каждый готов, да и стоить сие будет у провайдеров недешево). Тем не менее, подход может быть использован для генерации высококачественной синтетики.
Для Text-2-Image генерации с FLUX в качестве верификаторов используют:
1️⃣ Классификатор эстетичности 💃 поверх OpenCLIP
2️⃣ CLIP Score
3️⃣ ImageReward
4️⃣ Ансамбль всех трех (с одинаковыми весами)
FLUXом гененируют по умолчанию в 30 шагов сэмплирования, SiT в 250.
Для оценки качества (не доверяя субъективного мнению кожаных мешков) используют Gemini-1.5-Flash, которая оценивает качество по 5 аспектам:
⚡️Accuracy to Prompt (соответствие запросу)
⚡️Originality (оригинальность)
⚡️Visual Quality (визуальное качество)
⚡️Internal Consistency (внутренняя консистентность)
⚡️Emotional Resonance (
Для валидации используют DrawBench и T2I-CompBench.
Сначала исследуют взаимные корреляции между разными верификаторами на DrawBench.
Эстетичность коррелирует с ImageReward, но слегка понижает CLIP Score. Общее качество (по мнению Gemini) немного растет.
CLIP Score повышает ImageReward, но слегка понижает эстетичность. Общее качество слегка улучшается.
ImageReward повышает CLIP Score и оценку Gemini более существенно, эстетичность почти не меняется.
Ансамбль всех трех метрик улучшает все три метрики.
При увеличении количества сэмплов в ансамбле все метрики растут, но ImageReward значительнее всего (вероятно, из-за шкалы).
На максимуме ставят суммарное число прогонов через модель (2880 = 96 сэмплов х 30 шагов). Весьма забавно, что лучше всего себя показывает наивная стратегия независимой генерации случайных шумов, а остальные две, более заумные стратегии, не приносят пользы.
На T2I-CompBench, где оценивается соответствие промпту - взаимоотношения между объектами, формы, их положение, а не эстетичность, классификатор эстетичности слегка просаживает метрики, а CLIP Score и ImageReward улучшает. Причем ImageReward лучше ансамбля, по всей видимости, из-за наличия Aesthetic Score.
Предложенный метод работает и поверх DPO дообученной SDXL.
При фиксированном бюджете (если он мал) для SiT-XL выгоднее нагенерить несколько траекторий с меньшим количеством шагов, чем одну “дорогую”. Но с ростом доступного бюджета становится полезным повышать число шагов сэмплера.
Кроме того, на малых бюджетах меньшие версии SiT-B/L, генерирующее нескольких кандидатов, лучше чем один прогон через большую SiT-XL.
Выводы
С идейной точки зрения - направление исследований довольно интересное, однако польза пока еще не столь очевидна, как для LLM, где сложный reasoning процесс позволяет решать сложные задачи (недоступные без него), а здесь же приводит к некоторому улучшению метрик. На текущий момент процесс слишком дорогой для большинства практических приложений (ибо ждать несколько минут вместо нескольких секунд для создания немного более хорошей картинки не каждый готов, да и стоить сие будет у провайдеров недешево). Тем не менее, подход может быть использован для генерации высококачественной синтетики.
arXiv.org
ImageReward: Learning and Evaluating Human Preferences for...
We present a comprehensive solution to learn and improve text-to-image models from human preference feedback. To begin with, we build ImageReward -- the first general-purpose text-to-image human...
❤9👍1
Visual Autoregressive Modeling for Image Super-Resolution
[Статья][Рыдми]
Введение
VAR и его производные в прошлом году произвели некоторый ажиотаж, показав вполне достойные результаты в задачах class-conditional и text-to-image генерации.
Ранее было показано, что дообучение text-2-image диффузионных моделей (так называемый SR c generative prior) на задачу Blind Super Resolution (с произвольными деградациями входных изображений) неплохо себя показывает в случае сильно шакальных картинок.
В этой же статье предложили по существу перенести данную идею на VARы - а именно, дообучить class-conditional VAR на задачу Super Resolution. И не особо заморачиваясь с оригинальностью и звучностью назвали свое детище VARSR 🥱.
[Статья][Рыдми]
Введение
VAR и его производные в прошлом году произвели некоторый ажиотаж, показав вполне достойные результаты в задачах class-conditional и text-to-image генерации.
Ранее было показано, что дообучение text-2-image диффузионных моделей (так называемый SR c generative prior) на задачу Blind Super Resolution (с произвольными деградациями входных изображений) неплохо себя показывает в случае сильно шакальных картинок.
В этой же статье предложили по существу перенести данную идею на VARы - а именно, дообучить class-conditional VAR на задачу Super Resolution. И не особо заморачиваясь с оригинальностью и звучностью назвали свое детище VARSR 🥱.
❤4🔥2
Метод
Напомню, что в задаче Blind Super Resolution мы хотим, с одной стороны, повысить разрешение, а с другой убрать шумы/размытости и иные возможные дефекты. Потому по самой постановке задачи, надо каким-то образом сохранить семантику входного изображения и при этом получить качественную картинку, с резкими деталями, сочными цветами и без дефектов.
И дабы достичь поставленной цели авторы предлагают следующее:
1️⃣ Обусловливание на изображение низкого разрешения путем добавления ее эмбеддингов (для чего обучают небольший энкодер) в префикс последовательности.
2️⃣ Чтобы лучше учитывать пространственные зависимости предлагают Scale-align
rotary positional encoding (SA-RoPE), адаптивный под каждый масштаб.
3️⃣ Квантованные VAE заметно уступают в качестве реконструкций непрерывным аналогам. Следуя MAR https://arxiv.org/abs/2406.11838, обучают небольшую модель (Diffusion Refiner) из 6-ти трансформерных блоков, обусловленную на дискретные токены, для получения конечного изображения.
4️⃣ Дабы улучшить качество генераций применяют classifier-free guidance c негативными примерами. Для этого отбирают из публичных датасетов сэмплы с низкими оценками и на каждом шаге прогоняют с исходным условием, “плохим условием” и считают взвешенную сумму, как в стандартном CFG. Причем CFG повышают постепенно с увеличением разрешения (в диффузионных моделях его можно отключить в конце без ущерба для качества).
Имеющиеся в публичном доступе SR-датасеты невелики (1к-10к примеров), потому авторы собирают свой датасет из LAION и прочих источников, выфильтровывают его до 4 миллионов картинок, которые классифицируют по 3к категориям (пояснение будет чуть ниже).
Напомню, что в задаче Blind Super Resolution мы хотим, с одной стороны, повысить разрешение, а с другой убрать шумы/размытости и иные возможные дефекты. Потому по самой постановке задачи, надо каким-то образом сохранить семантику входного изображения и при этом получить качественную картинку, с резкими деталями, сочными цветами и без дефектов.
И дабы достичь поставленной цели авторы предлагают следующее:
1️⃣ Обусловливание на изображение низкого разрешения путем добавления ее эмбеддингов (для чего обучают небольший энкодер) в префикс последовательности.
2️⃣ Чтобы лучше учитывать пространственные зависимости предлагают Scale-align
rotary positional encoding (SA-RoPE), адаптивный под каждый масштаб.
3️⃣ Квантованные VAE заметно уступают в качестве реконструкций непрерывным аналогам. Следуя MAR https://arxiv.org/abs/2406.11838, обучают небольшую модель (Diffusion Refiner) из 6-ти трансформерных блоков, обусловленную на дискретные токены, для получения конечного изображения.
4️⃣ Дабы улучшить качество генераций применяют classifier-free guidance c негативными примерами. Для этого отбирают из публичных датасетов сэмплы с низкими оценками и на каждом шаге прогоняют с исходным условием, “плохим условием” и считают взвешенную сумму, как в стандартном CFG. Причем CFG повышают постепенно с увеличением разрешения (в диффузионных моделях его можно отключить в конце без ущерба для качества).
Имеющиеся в публичном доступе SR-датасеты невелики (1к-10к примеров), потому авторы собирают свой датасет из LAION и прочих источников, выфильтровывают его до 4 миллионов картинок, которые классифицируют по 3к категориям (пояснение будет чуть ниже).
Эксперименты
Процедура обучения выглядит следующим образом:
1️⃣ Сначала дообучают RQ-VAE на собранных данных, чтобы улучшить качество реконструкций. Обучается только квантизатор, все остальное заморожено.
2️⃣ В качестве основы для VARSR берут предобученный на ImageNet class-conditional VAR из оригинальной статьи и дообучают на class-2-image генерацию на 3 классов на своем датасете.
3️⃣ После этого дообучают полученную модель на целевую Image Super Resolution задачу.
4️⃣ При обучении на ISR в качестве лосса используется взвешенная сумма кросс-энтропии по токенам и диффузионного лосса в рефайнере.
Полученную модель сравнивают с GAN-based и диффузионными подходами на стандартных SR-бенчмарках (DIV2K-Val, RealSR, DRealSR). VARSR и диффузия уступает GAN моделям по классическим метрикам - PSNR, SSIM, но лучше по более свежим MANIQA, СLIP-IQA, MUSIQ.
В качественных визуализациях VARSR более-менее реалистично восстанавливает изображения при жестких деградациях, в то время как альтернативные подходы заметно шакалят.
В Ablation Study показывают, что все компоненты важны и накидывают качество:
🌟 Обусловливание на LR изображение через Prefix работает лучше, чем ControlNet.
🌟 SA-RoPE полезен.
🌟 Diffusion Refiner улучшает метрики, хоть и не так сильно.
🌟 Image-Based CFG понижает SSIM, PSNR, но заметно накидывает в современных нейросетевых метриках.
По user-preference study VARSR лучше GANов и диффузий с Image Prior.
Существенным достоинством VAR является скорость работы, за счет того, что выход формируется за один проход через все масштабы, большинство из которых “почти бесплатные”. Стоит, однако, заметить, что шельмы не сравниваются с GANами и адверсариальными дистилляциями (AddSR) диффузионных моделей, которые будут по факту быстрее.
Вывод
Вполне успешная адаптация VAR к задаче Image SR c рядом нетривиальных архитектурных решений. Однако, процедура обучения содержит слишком много компонент и промежуточных этапов. Да и сравнение с дистиллами диффузионок для SR тактично опущено.
Процедура обучения выглядит следующим образом:
1️⃣ Сначала дообучают RQ-VAE на собранных данных, чтобы улучшить качество реконструкций. Обучается только квантизатор, все остальное заморожено.
2️⃣ В качестве основы для VARSR берут предобученный на ImageNet class-conditional VAR из оригинальной статьи и дообучают на class-2-image генерацию на 3 классов на своем датасете.
3️⃣ После этого дообучают полученную модель на целевую Image Super Resolution задачу.
4️⃣ При обучении на ISR в качестве лосса используется взвешенная сумма кросс-энтропии по токенам и диффузионного лосса в рефайнере.
Полученную модель сравнивают с GAN-based и диффузионными подходами на стандартных SR-бенчмарках (DIV2K-Val, RealSR, DRealSR). VARSR и диффузия уступает GAN моделям по классическим метрикам - PSNR, SSIM, но лучше по более свежим MANIQA, СLIP-IQA, MUSIQ.
В качественных визуализациях VARSR более-менее реалистично восстанавливает изображения при жестких деградациях, в то время как альтернативные подходы заметно шакалят.
В Ablation Study показывают, что все компоненты важны и накидывают качество:
🌟 Обусловливание на LR изображение через Prefix работает лучше, чем ControlNet.
🌟 SA-RoPE полезен.
🌟 Diffusion Refiner улучшает метрики, хоть и не так сильно.
🌟 Image-Based CFG понижает SSIM, PSNR, но заметно накидывает в современных нейросетевых метриках.
По user-preference study VARSR лучше GANов и диффузий с Image Prior.
Существенным достоинством VAR является скорость работы, за счет того, что выход формируется за один проход через все масштабы, большинство из которых “почти бесплатные”. Стоит, однако, заметить, что шельмы не сравниваются с GANами и адверсариальными дистилляциями (AddSR) диффузионных моделей, которые будут по факту быстрее.
Вывод
Вполне успешная адаптация VAR к задаче Image SR c рядом нетривиальных архитектурных решений. Однако, процедура обучения содержит слишком много компонент и промежуточных этапов. Да и сравнение с дистиллами диффузионок для SR тактично опущено.
👍1
Гугол выпустил занятную книженцию 📕 про обучение, профилирование и хорошие практики обучения больших языковых моделей на TPU.
В частности, рассматриваются следующие вопросы:
🌟 Основы анализа вычислений и оценки сложности
🌟 Архитектура и особенности TPU
🌟 Реализация параллельного обучения
🌟 Обучение на TPU с JAX
Если вы любитель JAX и TPU, вперед и с песней 🎼!
UPD чуть раньше появилось еще у epsilon correct
В частности, рассматриваются следующие вопросы:
🌟 Основы анализа вычислений и оценки сложности
🌟 Архитектура и особенности TPU
🌟 Реализация параллельного обучения
🌟 Обучение на TPU с JAX
Если вы любитель JAX и TPU, вперед и с песней 🎼!
UPD чуть раньше появилось еще у epsilon correct
🔥11👍1
Подборка материалов про DeepSeek 🐳
Сие творение китайских 🇨🇳 Ку Ли Биных вызвало бурный ажиотаж, подняло высокое цунами 🌊 хайпа, не на шутку встревожило Саму, и про него не высказался только ленивый.
Но я ленивый, и все уже до меня все сказали, потому предлагаю ниже подборку материалов из англо- и русско- язычных источников
Статьи
📑 Техрепорт про DeepSeek V3
📑 Техрепорт про DeepSeek R1
Блогпосты
📝 The Illustrated DeepSeek-R1 от Jay Allamar, автора легендарного блогпоста The Illustrated Transformer
📝 Блогпост от Phil Schmid про DeepSeek-R1 своими руками
📝 Open-R1 - попытка воспроизвести результаты Deep Seek сообществом лицехватов. Так уже и первый апдейт подьехал.
📝 Отличный разбор от Антона Раззжигаева, автора канала @abstractDL
📝 Комментарии про DeepSeek на gonzo-обзоры ML статей
📝 Подробный технический разбор DeepSeek V3 на gonzo-обзоры ML статей
📝 Хитрый ход от DeepSeek
Код
💻 Репозиторий DeepSeek V3
💻 Репозиторий DeepSeek R1
💻 Репозиторий проекта Open-R1
Не преминули упомянуть DeepSeek и у Лекса в недавнем подкасте.
Сие творение китайских 🇨🇳 Ку Ли Биных вызвало бурный ажиотаж, подняло высокое цунами 🌊 хайпа, не на шутку встревожило Саму, и про него не высказался только ленивый.
Но я ленивый, и все уже до меня все сказали, потому предлагаю ниже подборку материалов из англо- и русско- язычных источников
Статьи
📑 Техрепорт про DeepSeek V3
📑 Техрепорт про DeepSeek R1
Блогпосты
📝 The Illustrated DeepSeek-R1 от Jay Allamar, автора легендарного блогпоста The Illustrated Transformer
📝 Блогпост от Phil Schmid про DeepSeek-R1 своими руками
📝 Open-R1 - попытка воспроизвести результаты Deep Seek сообществом лицехватов. Так уже и первый апдейт подьехал.
📝 Отличный разбор от Антона Раззжигаева, автора канала @abstractDL
📝 Комментарии про DeepSeek на gonzo-обзоры ML статей
📝 Подробный технический разбор DeepSeek V3 на gonzo-обзоры ML статей
📝 Хитрый ход от DeepSeek
Код
💻 Репозиторий DeepSeek V3
💻 Репозиторий DeepSeek R1
💻 Репозиторий проекта Open-R1
Не преминули упомянуть DeepSeek и у Лекса в недавнем подкасте.
👍15🔥4
ParetoQ: Scaling Laws in Extremely Low-bit LLM Quantization
[Папира] [No Code No Party]
Введение
Вопрос о том, какая битность весов при QAT (Quantization Aware Training), дает наилучшее качество, представляет несомненный интерес как с академической, так и практической точки зрения, и ранее был рассмотрен, в частности, в работе Scaling Laws for Precision, где утверждалось, что оптимальная битность в районе 6-7 бит на параметр.
Однако, подобные выводы сильно чувствительны к качеству процедуры QAT.
Успех серии работ по BitNet намекает, что вряд ли все так плохо в низкой битности.
И в данной работе большой коллектив авторов из Меты предлагает пару модификаций улучшения процедуры QAT.
[Папира] [No Code No Party]
Введение
Вопрос о том, какая битность весов при QAT (Quantization Aware Training), дает наилучшее качество, представляет несомненный интерес как с академической, так и практической точки зрения, и ранее был рассмотрен, в частности, в работе Scaling Laws for Precision, где утверждалось, что оптимальная битность в районе 6-7 бит на параметр.
Однако, подобные выводы сильно чувствительны к качеству процедуры QAT.
Успех серии работ по BitNet намекает, что вряд ли все так плохо в низкой битности.
И в данной работе большой коллектив авторов из Меты предлагает пару модификаций улучшения процедуры QAT.
👍6
Метод
Рассматривают обучение 1-, 1.58-, 2-, 3-, 4- битных моделей MobileLLM.
По существу в работе 2️⃣ основные идеи.
⭐️ Можно какую-то часть времени обучать модель в исходной точности, а затем врубить QAT. Оптимальнее всего оказывается 90% учить во float16, а последние 10%. Т.е большую часть обучения динамика совпадает с floating-point моделью, а оставшихся 10% хватает для восстановления качества после сжатия.
⭐️ Под каждую битность подбирают оптимальную сетку. При бинаризации весов оптимально (да больше ничего и не сделаешь) брать знак от весов, при 1.58 и 2-х битах брать определенную в данной работе Stretched Elastic Quant сетку (небольшую модификацию LSQ), и LSQ при 3-х и 4-х битах.
Причем важно скейлы квантизации держать как обучаемые параметры. min-max масштабирование работает совсем плохо на низких битностях, обрезка (непонятно каким образом) лучше, но все же заметно хуже learnable scales.
Для обучения всего хозяйства используют STE без каких-то наворотов.
Кроме того, еще пробуют QAT на MobileLLM не с нуля, а с готовых чекпоинтов, и это оказывается ожидаемо лучше.
Относительная норма разницы весов претерпевает скачок при переходе от ¾ битной квантизации к более низким битностям. Из этого авторы делают вывод, что при менее агрессивной квантизации модель при QAT пытается компенсировать ошибку квантизации, а при экстремально низких битностях ищет новую, более удачную конфигурацию весов.
Эксперименты
Сначала подход проверяют на семействе моделей MobileLLM (от 125M до 1.5B). Битности 1.58 и 2 оказываются Парето-оптимальными. Качество оценивают как средне по нескольким бенчам из lm-eval-harness.
Затем ParetoQ проверяют на Llama-3-8B, где предложенный подход заметно опережает LLM-QAT, EfficientQAT, и PTQ подходы (даже с AQLM и QuIP сравниваются). Учат модель на 30B токенах, что не так уж мало, но и не так уж много. C PV-Tuning и QTIP тактично не сравниваются, хитрецы. При всей дороговизне PV, он задействует все же меньше токенов).
На тернарной квантизации авторы показывают превосходство над прошлыми QAT подходами - Spectra, BitNet - при фиксированном бюджете обучения.
Кроме того, авторы написали CPU kernel, дающий хорошее ускорение при 2-битной квантизации, благодаря чему 2-битные модельки оказываются оптимальными с точки зрения баланса между скоростью инференса и качеством.
Вывод
Подход выглядит разумным и рабочим, без rocket 🚀 science. Для полного счастья не хватает квантизации активаций и замеров на более сложных задачах.
Рассматривают обучение 1-, 1.58-, 2-, 3-, 4- битных моделей MobileLLM.
По существу в работе 2️⃣ основные идеи.
⭐️ Можно какую-то часть времени обучать модель в исходной точности, а затем врубить QAT. Оптимальнее всего оказывается 90% учить во float16, а последние 10%. Т.е большую часть обучения динамика совпадает с floating-point моделью, а оставшихся 10% хватает для восстановления качества после сжатия.
⭐️ Под каждую битность подбирают оптимальную сетку. При бинаризации весов оптимально (да больше ничего и не сделаешь) брать знак от весов, при 1.58 и 2-х битах брать определенную в данной работе Stretched Elastic Quant сетку (небольшую модификацию LSQ), и LSQ при 3-х и 4-х битах.
Причем важно скейлы квантизации держать как обучаемые параметры. min-max масштабирование работает совсем плохо на низких битностях, обрезка (непонятно каким образом) лучше, но все же заметно хуже learnable scales.
Для обучения всего хозяйства используют STE без каких-то наворотов.
Кроме того, еще пробуют QAT на MobileLLM не с нуля, а с готовых чекпоинтов, и это оказывается ожидаемо лучше.
Относительная норма разницы весов претерпевает скачок при переходе от ¾ битной квантизации к более низким битностям. Из этого авторы делают вывод, что при менее агрессивной квантизации модель при QAT пытается компенсировать ошибку квантизации, а при экстремально низких битностях ищет новую, более удачную конфигурацию весов.
Эксперименты
Сначала подход проверяют на семействе моделей MobileLLM (от 125M до 1.5B). Битности 1.58 и 2 оказываются Парето-оптимальными. Качество оценивают как средне по нескольким бенчам из lm-eval-harness.
Затем ParetoQ проверяют на Llama-3-8B, где предложенный подход заметно опережает LLM-QAT, EfficientQAT, и PTQ подходы (даже с AQLM и QuIP сравниваются). Учат модель на 30B токенах, что не так уж мало, но и не так уж много. C PV-Tuning и QTIP тактично не сравниваются, хитрецы. При всей дороговизне PV, он задействует все же меньше токенов).
На тернарной квантизации авторы показывают превосходство над прошлыми QAT подходами - Spectra, BitNet - при фиксированном бюджете обучения.
Кроме того, авторы написали CPU kernel, дающий хорошее ускорение при 2-битной квантизации, благодаря чему 2-битные модельки оказываются оптимальными с точки зрения баланса между скоростью инференса и качеством.
Вывод
Подход выглядит разумным и рабочим, без rocket 🚀 science. Для полного счастья не хватает квантизации активаций и замеров на более сложных задачах.
❤8👍3
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.
😁19🔥1