Autoregressive Distillation of Diffusion Transformers
[Статья][Код]
Введение
Как известно всем еще с материнской утробы, основной проблемой диффузионных моделей в разных ипостасях является долгая итеративная генерация. Было придумано множество способов ускорения генерации за счет дистилляции, но при стремлении количества шагов к единице качество неизбежно уступает учительской модели.
В существующих подходах ускорения генерации модель принимает на вход только текущий зашумленный сэмпл и потому подвержена накоплению ошибки при более ранних шагах, что может приводить к
И команда из Meta, среди которой можно заметить небезывестного Артема, автора канала @ai_newz и просто хорошего человека предложила подход, направленный на решение вышеописанной проблемы.
[Статья][Код]
Введение
Как известно всем еще с материнской утробы, основной проблемой диффузионных моделей в разных ипостасях является долгая итеративная генерация. Было придумано множество способов ускорения генерации за счет дистилляции, но при стремлении количества шагов к единице качество неизбежно уступает учительской модели.
В существующих подходах ускорения генерации модель принимает на вход только текущий зашумленный сэмпл и потому подвержена накоплению ошибки при более ранних шагах, что может приводить к
exposure bias
(для желающих лучше разобраться в теме рекомендую посты на Concise Research @c_research).И команда из Meta, среди которой можно заметить небезывестного Артема, автора канала @ai_newz и просто хорошего человека предложила подход, направленный на решение вышеописанной проблемы.
Метод
Знание всей прошлой траектории сэмплирования при малошаговом сэмплировании потенциально дает более богатую информацию модели и позволяет скорректировать ошибку. Формально существует однозначное отображение (при детерминированном сэмплере) между шумом и конечной генерацией и хотелось бы быть как можно ближе к этой траектории.
Однако, возникает вопрос - каким образом можно подать прошлые шаги в модель?
И авторы предлагают интересное решение:
🎯 Модель на текущем шаге генерации делает Self Attention на текущий и прошлые шаги сэмплирования с причинной маской (прошлые шаги не аттендятся на будущие).
🎯 В модель добавляется дополнительный эмбеддинг на шаг зашумления. Разные шаги зашумления при генерации получают разные временные эмбеддинги. Пространственные при этом одинаковы.
🎯 Обусловливание на прошлые шаги проводится только в первых N трансформерных блоках. C одной стороны, Attention на прошлые шаги довольно шумный в поздних слоях и даже слегка просаживает качество. В то же время, Self Attention только в первых блоках удешевляет forward pass.
🎯 Выходы KV-кэшей с прошлых шагов можно закэшировать, как в авторегрессионных моделях. Дополнительные вычисления возникают только при вычислении непосресдственно Self Attention.
В качестве базового метода дистилляции используют простой Step Distillation (без Progressive), где модель-ученик пытается воспроизвести траекторию учителя. Для улучшения качества можно дополнительно накинуть адверсариальный лосс на x0.
Также предлагаются два альтернативных подхода маскирования:
1️⃣ Скользящее окно attention (обусловливание на несколько последних шагов)
2️⃣ Attention на текущий сэмпл и начальный шум.
Эксперименты
Метод валидируют на DiT-XL/2 для class-conditional генерации на ImageNet (256x256) и на проприетарной EMU модели для text-2-image. Про последнюю известно, что это трансформер на 1.7B параметров, обученный на некотором проприетарном датасете.
Для дистилляции DiT-XL/2 учителем сэмплируют ~2.5M траекторий при 25 шагах сэмплирования при этом стремясь добиться качественной 4-шаговой генерации. Качество оценивают по FID (на каком количестве сэмплов?), IS, Precision и Recall.
Обусловливание на траекторию значительно улучшает качество по сравнению с ванильной Step Distiilation. Альтернативные варианты масок будто бы чуть хуже по метрикам, но возможно, не статзначимо. GAN-лосс сильно улучшает качество и конечная модель имеет даже меньший FID, чем учитель.
В конечном варианте модель учитывает явно прошлые шаги в первых 6 блоках из 28-ми, а далее работает как исходный DiT.
При генерации 256x256 дополнительный condition на прошлые шаги (несмотря на увеличение количества токенов в Self-Attention на последнем шаге генерации почти в 4 раза) почти не замедляет генерацию. End-to-end время генерации возрастает только на 2% по сравнению с инференсом, использующим только текущий сэмпл. Однако, здесь стоит заметить, что для 256x256 последовательность токенов довольно короткая - (
На text-2-image генерации качество оценивают на CompBench - бенчмарке, оценивающем релеватность и сравнивают с другими публичными и непубличными дистилированными моделями - SDXL-Lightning, DMD2, ADD, LCM-LoRA, и ImagineFlash и по FID на MSCOCO.
Предложенный подход ARD достигает самого хорошего качества при 3-шаговой генерации слегка опережая 4-шаговую DMD2 по метрикам.
Знание всей прошлой траектории сэмплирования при малошаговом сэмплировании потенциально дает более богатую информацию модели и позволяет скорректировать ошибку. Формально существует однозначное отображение (при детерминированном сэмплере) между шумом и конечной генерацией и хотелось бы быть как можно ближе к этой траектории.
Однако, возникает вопрос - каким образом можно подать прошлые шаги в модель?
И авторы предлагают интересное решение:
🎯 Модель на текущем шаге генерации делает Self Attention на текущий и прошлые шаги сэмплирования с причинной маской (прошлые шаги не аттендятся на будущие).
🎯 В модель добавляется дополнительный эмбеддинг на шаг зашумления. Разные шаги зашумления при генерации получают разные временные эмбеддинги. Пространственные при этом одинаковы.
🎯 Обусловливание на прошлые шаги проводится только в первых N трансформерных блоках. C одной стороны, Attention на прошлые шаги довольно шумный в поздних слоях и даже слегка просаживает качество. В то же время, Self Attention только в первых блоках удешевляет forward pass.
🎯 Выходы KV-кэшей с прошлых шагов можно закэшировать, как в авторегрессионных моделях. Дополнительные вычисления возникают только при вычислении непосресдственно Self Attention.
В качестве базового метода дистилляции используют простой Step Distillation (без Progressive), где модель-ученик пытается воспроизвести траекторию учителя. Для улучшения качества можно дополнительно накинуть адверсариальный лосс на x0.
Также предлагаются два альтернативных подхода маскирования:
1️⃣ Скользящее окно attention (обусловливание на несколько последних шагов)
2️⃣ Attention на текущий сэмпл и начальный шум.
Эксперименты
Метод валидируют на DiT-XL/2 для class-conditional генерации на ImageNet (256x256) и на проприетарной EMU модели для text-2-image. Про последнюю известно, что это трансформер на 1.7B параметров, обученный на некотором проприетарном датасете.
Для дистилляции DiT-XL/2 учителем сэмплируют ~2.5M траекторий при 25 шагах сэмплирования при этом стремясь добиться качественной 4-шаговой генерации. Качество оценивают по FID (на каком количестве сэмплов?), IS, Precision и Recall.
Обусловливание на траекторию значительно улучшает качество по сравнению с ванильной Step Distiilation. Альтернативные варианты масок будто бы чуть хуже по метрикам, но возможно, не статзначимо. GAN-лосс сильно улучшает качество и конечная модель имеет даже меньший FID, чем учитель.
В конечном варианте модель учитывает явно прошлые шаги в первых 6 блоках из 28-ми, а далее работает как исходный DiT.
При генерации 256x256 дополнительный condition на прошлые шаги (несмотря на увеличение количества токенов в Self-Attention на последнем шаге генерации почти в 4 раза) почти не замедляет генерацию. End-to-end время генерации возрастает только на 2% по сравнению с инференсом, использующим только текущий сэмпл. Однако, здесь стоит заметить, что для 256x256 последовательность токенов довольно короткая - (
256 = (256/8/2)^2
токенов на одно изображение, т.е 1024 на последнем шаге). Потому вычисление Attention сравнительно недорогое и дополнительный оверхед (благодаря kv-кэшам и включению прошлых шагов только в первых блоках трансформера) должен быть действительно невелик.На text-2-image генерации качество оценивают на CompBench - бенчмарке, оценивающем релеватность и сравнивают с другими публичными и непубличными дистилированными моделями - SDXL-Lightning, DMD2, ADD, LCM-LoRA, и ImagineFlash и по FID на MSCOCO.
Предложенный подход ARD достигает самого хорошего качества при 3-шаговой генерации слегка опережая 4-шаговую DMD2 по метрикам.
Однако данное сравнение вызывает ряд вопросов:
1️⃣ Разные подходы используют разные модели. Поэтому невозможно достоверно определить, вызвана ли разница превосходством ARD метода или тем, что базовая EMU модель просто лучше бейзлайнов.
2️⃣ FID считается на 5к сэмплах, что может быть недостаточно (учитывая шумность FID). Полагаю, что Meta не испытывает такую нехватку в ресурсах, что им неподьемно посчитать метрики в стандартном протоколе на 30к промптов.
3️⃣ Авторы замечают, что на больших моделях просадки метрик меньше - и так EMU модель меньше SDXL, и просадка меньше, то якобы подход меньше сажает качество по сравнению с альтернативными дистилляционными подходами. Данный аргумент не убедителен, так как сложность дистилляции определяется рядом факторов - таких как обучающие данные, архитектура модели (UNet или DiT), специфика SFT и RL (если он был). Кроме того данная EMU модель, скорее всего. обучалась на Flow Matching.
4️⃣ Нет чисел по скорости 🏃 инференса для EMU моделей. Для генерации в 1k, где картиночных токенов становится достаточно много, Self Attention на расширенную последовательность перестанет быть настолько безобидным (даже при учете того, что он возникает только в первых блоках).
Выводы
Сама идея и реализация выглядит довольно интересной с нетривиальным архитектурными решениями. Однако, протокол сравнения в text-2-image вызывает смутные сомнения. Как мне кажется, валидация всякого метода должна проводиться в контролируемых условиях - когда предложенный метод и альтернативы находятся в равных условиях. В данном случае более, чем уместно было бы провести эксперименты на публичных моделях (SDXL, SD-3.5) при сравнении с DMD2 и прочими дистилляциями на тех же самых данных, либо уж все на EMU. А также привести время инференса для дистилированной EMU модели и какой-то user preference study 🧍♂.
1️⃣ Разные подходы используют разные модели. Поэтому невозможно достоверно определить, вызвана ли разница превосходством ARD метода или тем, что базовая EMU модель просто лучше бейзлайнов.
2️⃣ FID считается на 5к сэмплах, что может быть недостаточно (учитывая шумность FID). Полагаю, что Meta не испытывает такую нехватку в ресурсах, что им неподьемно посчитать метрики в стандартном протоколе на 30к промптов.
3️⃣ Авторы замечают, что на больших моделях просадки метрик меньше - и так EMU модель меньше SDXL, и просадка меньше, то якобы подход меньше сажает качество по сравнению с альтернативными дистилляционными подходами. Данный аргумент не убедителен, так как сложность дистилляции определяется рядом факторов - таких как обучающие данные, архитектура модели (UNet или DiT), специфика SFT и RL (если он был). Кроме того данная EMU модель, скорее всего. обучалась на Flow Matching.
4️⃣ Нет чисел по скорости 🏃 инференса для EMU моделей. Для генерации в 1k, где картиночных токенов становится достаточно много, Self Attention на расширенную последовательность перестанет быть настолько безобидным (даже при учете того, что он возникает только в первых блоках).
Выводы
Сама идея и реализация выглядит довольно интересной с нетривиальным архитектурными решениями. Однако, протокол сравнения в text-2-image вызывает смутные сомнения. Как мне кажется, валидация всякого метода должна проводиться в контролируемых условиях - когда предложенный метод и альтернативы находятся в равных условиях. В данном случае более, чем уместно было бы провести эксперименты на публичных моделях (SDXL, SD-3.5) при сравнении с DMD2 и прочими дистилляциями на тех же самых данных, либо уж все на EMU. А также привести время инференса для дистилированной EMU модели и какой-то user preference study 🧍♂.
Некоторое время назад. еще до ICLR, мы с ребятами из Т-банк Research обсудили структуру и организацию исследований в компаниях, а также настоящее и будущее мира больших языковых моделей.
Спасибо коллегам за содержательную и интересную дискуссию!
[Запись беседы]
Спасибо коллегам за содержательную и интересную дискуссию!
[Запись беседы]
Forwarded from Love. Death. Transformers.
AI модерацию очень сложно мерить — нужно учитывать разные виды контента, быстро отвечать, не false positiвить. Челы из https://whitecircle.ai озаботились и сделали первый бенчмарк для гардрейлов, а еще измерили на нем все самые популярные LLM, в том числе давая моделям поррасуждать над ответом.
Твиттер
Полистать подробнее в блоге
Твиттер
Полистать подробнее в блоге
[Статус работ]
Кажется, Юдковский решил, что слишком много сабмитов в этом году на NeurIPS, и положил overleaf дабы тормознуть AGI.
Кажется, Юдковский решил, что слишком много сабмитов в этом году на NeurIPS, и положил overleaf дабы тормознуть AGI.
Сильно запоздалый пост из-за праздников и NeurIPS дедлайна, но все же дошли 🚶♀️ в итоге руки ✋.
Ниже подборка статей с 1️⃣ постерной сессии на ICLR, которые так или иначе были связаны с EfficientDL:
MambaQuant: Quantizing the Mamba Family with Variance Aligned Rotation Methods
В данной статье акцентируют внимание на квантизации Mamba 🐍- архитектур в разных задачах. Наивная адаптация методов квантизации для трансформерных LLM просаживает сильно качество на S6 моделях. Авторы анализируют проблемные места в квантизации мамб, где накапливается большая ошибка и предлагают свое решение:
🎯 Whitening преобразование вместо Адамара в offline rotations.
🎯 Добавление scaling факторов в модель в стиле SmoothQuant, учитывающих специфику Mamba, для упрощения задачи квантизации.
Метод валидируется на ряде NLP/Vision задач, где показывает заметное улучшение по сравнению с бейзлайнами при квантизации весов и активаций.
FlashRNN: I/O-Aware Optimization of Traditional RNNs on modern hardware
Трансформеры нынче SOTA во многих приложениях, однако в некоторых задачах (типа определении четности), показывают себе плохо, а RNN - хорошо. Однако RNN плохо параллелизуются и вообще неэффективно используют ресурсы GPU. Ребята написали кастомные fused CUDA/Triton кернелы, эффективно использующие иерархию памяти, для forward и backward и смогли добиться ускорения до 50 раз по сравнению с ванильной торчовой реализацией.
OSTQuant: Refining Large Language Model Quantization with Orthogonal and Scaling Transformations for Better Distribution Fitting
В данной статье предлагают оценивать эффективность квантизации по тому, насколько плотно покрывает сетка квантизации целевое распределение. При наивном round-to-nearest подходе из-за выбросов, большая часть объема не используется. Добавление обучаемых вращений из SpinQuant и scaling факторов а-ля SmoothQuant позволяет более равномерно распределять распределение весов по решетке и тем самым улучшает качество квантования. К сожалению, на постере не было ни одного из авторов, а какой-то левый чувак, который не особо был в теме, потому содержательного разговора не получилось.
Approaching Rate-Distortion Limits in Neural Compression with Lattice Transform Coding
В данной работе авторы ставят своей задачу добиться сжатия сигналов любой природы как можно ближе к теоретико-информационному пределу. Для этого обучают автокодировщик (маленькую MLP), чтобы преобразовывать входные данные (с возможными выбросами и широким диапазоном значение), в некоторое более регулярное множество, и затем проектируют на оптимальную сетку (E8 для 8-мерной векторной квантизации, Λ24 для 24-мерной квантизации). Валидируют преимущественно на синтетике. Когда я спросил авторов про trellis-based квантизацию из QTIP, который потенциально может быть еще ближе к rate-distortion limit, авторы ответили, что не знают, что это такое.
Streamlining Redundant Layers to Compress Large Language Models
Идея простая - находим последовательность наименее важных блоков в трансформере по косинусной близости (по аналогии с The Unreasonable Ineffectiveness of the Deeper Layers), пруним, вставляем один трансформерный блок / FFN и дообучаем немного. Работает несколько лучше, чем просто прунинг блоков (кто бы сомневался).
DuoAttention: Efficient Long-Context LLM Inference with Retrieval and Streaming Heads
Головы Attention делятся на 2 типа - Retrieval heads, которые могут аттендиться на любой токен в последовательности, и Streaming heads, которые смотрят только на последние токены и attention sinks в начале последовательности. Для вторых можно сэкономить на вычислениях и памяти, храня только кэш для самого начала и некоторого фиксированного количества последних токенов. Для определения streaming голов маску в каждом attention параметризуют как взвешенную сумму полного causal attention и streaming attention. И те головы, где коэффициент streaming attention наибольший далее обрабатываются как streaming heads. Предложенная техника позволяет уменьшить кэш почти вдвое без просадки на LongBench задачах.
Ниже подборка статей с 1️⃣ постерной сессии на ICLR, которые так или иначе были связаны с EfficientDL:
MambaQuant: Quantizing the Mamba Family with Variance Aligned Rotation Methods
В данной статье акцентируют внимание на квантизации Mamba 🐍- архитектур в разных задачах. Наивная адаптация методов квантизации для трансформерных LLM просаживает сильно качество на S6 моделях. Авторы анализируют проблемные места в квантизации мамб, где накапливается большая ошибка и предлагают свое решение:
🎯 Whitening преобразование вместо Адамара в offline rotations.
🎯 Добавление scaling факторов в модель в стиле SmoothQuant, учитывающих специфику Mamba, для упрощения задачи квантизации.
Метод валидируется на ряде NLP/Vision задач, где показывает заметное улучшение по сравнению с бейзлайнами при квантизации весов и активаций.
FlashRNN: I/O-Aware Optimization of Traditional RNNs on modern hardware
Трансформеры нынче SOTA во многих приложениях, однако в некоторых задачах (типа определении четности), показывают себе плохо, а RNN - хорошо. Однако RNN плохо параллелизуются и вообще неэффективно используют ресурсы GPU. Ребята написали кастомные fused CUDA/Triton кернелы, эффективно использующие иерархию памяти, для forward и backward и смогли добиться ускорения до 50 раз по сравнению с ванильной торчовой реализацией.
OSTQuant: Refining Large Language Model Quantization with Orthogonal and Scaling Transformations for Better Distribution Fitting
В данной статье предлагают оценивать эффективность квантизации по тому, насколько плотно покрывает сетка квантизации целевое распределение. При наивном round-to-nearest подходе из-за выбросов, большая часть объема не используется. Добавление обучаемых вращений из SpinQuant и scaling факторов а-ля SmoothQuant позволяет более равномерно распределять распределение весов по решетке и тем самым улучшает качество квантования. К сожалению, на постере не было ни одного из авторов, а какой-то левый чувак, который не особо был в теме, потому содержательного разговора не получилось.
Approaching Rate-Distortion Limits in Neural Compression with Lattice Transform Coding
В данной работе авторы ставят своей задачу добиться сжатия сигналов любой природы как можно ближе к теоретико-информационному пределу. Для этого обучают автокодировщик (маленькую MLP), чтобы преобразовывать входные данные (с возможными выбросами и широким диапазоном значение), в некоторое более регулярное множество, и затем проектируют на оптимальную сетку (E8 для 8-мерной векторной квантизации, Λ24 для 24-мерной квантизации). Валидируют преимущественно на синтетике. Когда я спросил авторов про trellis-based квантизацию из QTIP, который потенциально может быть еще ближе к rate-distortion limit, авторы ответили, что не знают, что это такое.
Streamlining Redundant Layers to Compress Large Language Models
Идея простая - находим последовательность наименее важных блоков в трансформере по косинусной близости (по аналогии с The Unreasonable Ineffectiveness of the Deeper Layers), пруним, вставляем один трансформерный блок / FFN и дообучаем немного. Работает несколько лучше, чем просто прунинг блоков (кто бы сомневался).
DuoAttention: Efficient Long-Context LLM Inference with Retrieval and Streaming Heads
Головы Attention делятся на 2 типа - Retrieval heads, которые могут аттендиться на любой токен в последовательности, и Streaming heads, которые смотрят только на последние токены и attention sinks в начале последовательности. Для вторых можно сэкономить на вычислениях и памяти, храня только кэш для самого начала и некоторого фиксированного количества последних токенов. Для определения streaming голов маску в каждом attention параметризуют как взвешенную сумму полного causal attention и streaming attention. И те головы, где коэффициент streaming attention наибольший далее обрабатываются как streaming heads. Предложенная техника позволяет уменьшить кэш почти вдвое без просадки на LongBench задачах.
Beware of Calibration Data for Pruning Large Language Models
Авторы замечают, что для прунинга SparseGPT/Wanda выбор данных имеет значение. Данные из обучающей выборки предпочтительны (часть экспериментов делают на своей модели DCLM-7B), но если их нет, можно сгенерировать самой сжимаемой LLMкой взяв некоторый префикс. При генерации выкидывают последовательности с самой большой перплексией. Далее авторы обнаруживают, что сгенерированные данные ближе к обучающей выборке чем варианты калибровочных данных c4/wikitext2/red pajama. Бешеного прироста качества нет, но улучшение на 0.5-1% при 50% / 2:4 sparsity консистентно для разных моделей.
Продолжение следует... (надеюсь 😅)
Авторы замечают, что для прунинга SparseGPT/Wanda выбор данных имеет значение. Данные из обучающей выборки предпочтительны (часть экспериментов делают на своей модели DCLM-7B), но если их нет, можно сгенерировать самой сжимаемой LLMкой взяв некоторый префикс. При генерации выкидывают последовательности с самой большой перплексией. Далее авторы обнаруживают, что сгенерированные данные ближе к обучающей выборке чем варианты калибровочных данных c4/wikitext2/red pajama. Бешеного прироста качества нет, но улучшение на 0.5-1% при 50% / 2:4 sparsity консистентно для разных моделей.
Продолжение следует... (надеюсь 😅)
Microscaling Data Formats for Deep Learning (+NVFP)
[Статья][Код]
Введение
С ростом размера LLM, затрат на обучение и инференс все более актуальным становится вопрос эффективных вычислений. Опыт показывает (BitNet, QuEST), что вполне реально гонять обучение с низкобитными весами и активациями, и при хорошей реализации даже оптимально по флопсам. Однако, вычисления в низкой битности требуют аппаратной поддержки.
В поколении Blackwell зеленые 💚 завезли аппаратную поддержку новых малобитных типов чисел с плавающей точкой с плавающей точкой -
[Статья][Код]
Введение
С ростом размера LLM, затрат на обучение и инференс все более актуальным становится вопрос эффективных вычислений. Опыт показывает (BitNet, QuEST), что вполне реально гонять обучение с низкобитными весами и активациями, и при хорошей реализации даже оптимально по флопсам. Однако, вычисления в низкой битности требуют аппаратной поддержки.
В поколении Blackwell зеленые 💚 завезли аппаратную поддержку новых малобитных типов чисел с плавающей точкой с плавающей точкой -
NVFP4/MXFP{4,6,8}
.Метод
Основная фича, которая обеспечивает стабильность и эффективность низкобитных операций, — это аппаратная поддержка операций с квантизованными тензорами с малыми группами. Чем меньше количество весов, для которых берется общий масштаб (скейл), тем точнее их можно аппроксимировать, но тем и больше накладные расходы на хранение и операции с ними.
Дабы уменьшить расходы по памяти скейлы хранятся в меньшей точности. А операции с ними имеют эффективную кернельную реализацию, что обеспечивает малое замедление по сравнению с
1️⃣ NVFP4 - это FP4 (E2M1) с group_size 16, где скейл квантизуется в FP8 (E4M3). Итого 4.5 бит на параметр.
2️⃣ Семейство MXFP форматов включает в себя 4/6/8-бита. Скейл квантизуется в экзотический E8M0 формат - т.е в логарифмическую шкалу, благодаря чему операции со скейлами можно свести к очень дешевым битовым сдвигам. Размер группы 32 - т.е имеем 4.25 бит на параметр.
Эксперименты
В Whitepaper MXFP формата прогнали эксперименты на PTQ и QAT Vision/Audio/Text модельках (BERT и Encoder-Decoder для перевода с языка на язык). Наивный PTQ каст в MXFP8 работает ожидаемо без просадок, в MXFP6/MXFP4 имеет место заметное ухудшение, но небольшой QAT позволяет почти восстановить качество в большинстве случаев до уровня half precision.
Затем авторы гоняют обучение с весами/активациями/градиентами квантованными в MXFP6 на GPTшкам от 20M до 1.5B и кривая обучения почти совпадает c half-precision (за исключение спайков).
Последующие статьи, заслуживающие отдельного разбора
💥 Training LLMs with MXFP4
💥 И совсем свежая Quartet от коллег из IST (и в частности @black_samorez_channel)
Показали эффективность обучения в MXFP4 на более серьезных масштабах.
В первой статье смогли добиться ускорения 1.7x против bf16, и 1.3x против fp8, а в Quartet 2.3x против bf16 и 1.6x против fp8.
В качестве удачного внедрения NVFP4 можно вспомнить (тоже заслуживающую разбора) SVD-Quant https://hanlab.mit.edu/blog/svdquant-nvfp4, где на RTX 5090 смогли добиться 3-х кратного ускорения инференса FLUX.
Выводы
Переход к FP4 в качестве стандартного типа для обучения кажется делом времени (широкого распространения Blackwell чипов в датацентрах). Интрига в том, в какой момент придется остановиться. Дойдем ли до полностью тернарных сетей в будущем, или они окажутся Парето-неоптимальными? Время ⏳ покажет…
Основная фича, которая обеспечивает стабильность и эффективность низкобитных операций, — это аппаратная поддержка операций с квантизованными тензорами с малыми группами. Чем меньше количество весов, для которых берется общий масштаб (скейл), тем точнее их можно аппроксимировать, но тем и больше накладные расходы на хранение и операции с ними.
Дабы уменьшить расходы по памяти скейлы хранятся в меньшей точности. А операции с ними имеют эффективную кернельную реализацию, что обеспечивает малое замедление по сравнению с
per-tensor/per-channel
кватнизацией.1️⃣ NVFP4 - это FP4 (E2M1) с group_size 16, где скейл квантизуется в FP8 (E4M3). Итого 4.5 бит на параметр.
2️⃣ Семейство MXFP форматов включает в себя 4/6/8-бита. Скейл квантизуется в экзотический E8M0 формат - т.е в логарифмическую шкалу, благодаря чему операции со скейлами можно свести к очень дешевым битовым сдвигам. Размер группы 32 - т.е имеем 4.25 бит на параметр.
Эксперименты
В Whitepaper MXFP формата прогнали эксперименты на PTQ и QAT Vision/Audio/Text модельках (BERT и Encoder-Decoder для перевода с языка на язык). Наивный PTQ каст в MXFP8 работает ожидаемо без просадок, в MXFP6/MXFP4 имеет место заметное ухудшение, но небольшой QAT позволяет почти восстановить качество в большинстве случаев до уровня half precision.
Затем авторы гоняют обучение с весами/активациями/градиентами квантованными в MXFP6 на GPTшкам от 20M до 1.5B и кривая обучения почти совпадает c half-precision (за исключение спайков).
Последующие статьи, заслуживающие отдельного разбора
💥 Training LLMs with MXFP4
💥 И совсем свежая Quartet от коллег из IST (и в частности @black_samorez_channel)
Показали эффективность обучения в MXFP4 на более серьезных масштабах.
В первой статье смогли добиться ускорения 1.7x против bf16, и 1.3x против fp8, а в Quartet 2.3x против bf16 и 1.6x против fp8.
В качестве удачного внедрения NVFP4 можно вспомнить (тоже заслуживающую разбора) SVD-Quant https://hanlab.mit.edu/blog/svdquant-nvfp4, где на RTX 5090 смогли добиться 3-х кратного ускорения инференса FLUX.
Выводы
Переход к FP4 в качестве стандартного типа для обучения кажется делом времени (широкого распространения Blackwell чипов в датацентрах). Интрига в том, в какой момент придется остановиться. Дойдем ли до полностью тернарных сетей в будущем, или они окажутся Парето-неоптимальными? Время ⏳ покажет…
[Папир][Датасет на лицехватс][Пост на CV Time]
Коллеги из Yandex Research выкатили публичный датасет, под названием Alchemist 🧪, из 3 c небольшим тысяч картинок, собранных из интернета, для дообучения диффузионок.
Данный датасет, отобранный с помощью довольно занятного пайплайна, дает заметный прирост качества на разных моделях (в отличие от LAION-Aesthetics и просто фоток анимешных тяночек).
Так что, ежели кому нужно заалайнить модельку на качественных данных, далеко ходить теперь не надо.
Коллеги из Yandex Research выкатили публичный датасет, под названием Alchemist 🧪, из 3 c небольшим тысяч картинок, собранных из интернета, для дообучения диффузионок.
Данный датасет, отобранный с помощью довольно занятного пайплайна, дает заметный прирост качества на разных моделях (в отличие от LAION-Aesthetics и просто фоток анимешных тяночек).
Так что, ежели кому нужно заалайнить модельку на качественных данных, далеко ходить теперь не надо.
Look Ma, No Bubbles! Designing a Low-Latency Megakernel for Llama-1B
[Блогпост]
Прямой (да и обратный) проход через современную LLM, подразумевает запуск нескольких сотен кернелов (attention, mlp, нормализаций).
Команда из Стэнфорда обнаруживает, что скорость инференса маленьких LLM (1-3B параметров) упирается не в вычисления/память, а во время запуска кернелов. Эффективные движки для инференса (vLLM/SGLang) позволяют только на 50% использовать пропускную способность новых видеокарт (H100/GB200). Там некоторые операции уже слиты в один вызов кернела, но самих вызовов все еще остается много.
И авторы предлагают реализовать весь forward pass в виде одного Megakernel 😱!
Из нюансов реализации стоит выделить следующее:
1️⃣ Управление памятью. Так как за shared memory борются сразу несколько процессов, надо эффективно распределить ее и раздавать по запросу. Для это используется некий вариант paging.
2️⃣ Синхронизация. Теперь у нас много операций работающих асинхронно и требуется внутри кернела регулировать то, чтобы процесс не начал работать, пока не будут готовы все необходимые входы (т.е attention не запустился, пока не готовы Q, K, V).
В результате удается добиться ускорения на Llama-1B при инференсе с батчом 1:
🏃♂️ 2.5x против vLLM, 1.5x против SGLang на H100
🏃♂️ 3.5x против vLLM, 2.5x против SGLang на GB200
Утилизация ширины памяти для H100 достигает 78%.
[Блогпост]
Прямой (да и обратный) проход через современную LLM, подразумевает запуск нескольких сотен кернелов (attention, mlp, нормализаций).
Команда из Стэнфорда обнаруживает, что скорость инференса маленьких LLM (1-3B параметров) упирается не в вычисления/память, а во время запуска кернелов. Эффективные движки для инференса (vLLM/SGLang) позволяют только на 50% использовать пропускную способность новых видеокарт (H100/GB200). Там некоторые операции уже слиты в один вызов кернела, но самих вызовов все еще остается много.
И авторы предлагают реализовать весь forward pass в виде одного Megakernel 😱!
Из нюансов реализации стоит выделить следующее:
1️⃣ Управление памятью. Так как за shared memory борются сразу несколько процессов, надо эффективно распределить ее и раздавать по запросу. Для это используется некий вариант paging.
2️⃣ Синхронизация. Теперь у нас много операций работающих асинхронно и требуется внутри кернела регулировать то, чтобы процесс не начал работать, пока не будут готовы все необходимые входы (т.е attention не запустился, пока не готовы Q, K, V).
В результате удается добиться ускорения на Llama-1B при инференсе с батчом 1:
🏃♂️ 2.5x против vLLM, 1.5x против SGLang на H100
🏃♂️ 3.5x против vLLM, 2.5x против SGLang на GB200
Утилизация ширины памяти для H100 достигает 78%.
На Data Fest 2025 30 мая Влад Голощапов (автор канала @GradientWitnesses) представил весьма занимательный доклад про геометрию лосс функции в нейронных сетях.
Данный вопрос неоднократно поднимался в разных работах, и был довольно популярной темой для исследования между 2017-2019, но несмотря на это тема не то что все еще содержит нерешенные вопросы, а является непаханым полем. И истинная геометрия лосс-поверхности (во всяком случае в рассмотренных задачах) очень далека от типичных предположений.
Доклад будет интересен как теоретикам, так и всем, увлекающимся ML и оптимизацией чего-либо.
[Запись доклада] (доклад в интервале 3:49-4:19)
[Презентация]
Данный вопрос неоднократно поднимался в разных работах, и был довольно популярной темой для исследования между 2017-2019, но несмотря на это тема не то что все еще содержит нерешенные вопросы, а является непаханым полем. И истинная геометрия лосс-поверхности (во всяком случае в рассмотренных задачах) очень далека от типичных предположений.
Доклад будет интересен как теоретикам, так и всем, увлекающимся ML и оптимизацией чего-либо.
[Запись доклада] (доклад в интервале 3:49-4:19)
[Презентация]
Выложили квантизованную в 4️⃣ бита модель DeepSeek-R1-0528!
✅ Качество при ризонинге сохраняется на 99,82% (среднее по AIME/GPTQ/MATH500).
🔊 DeepSeek-R1-0528 стал ещё более "болтливым" 🗣, поэтому для лучших результатов (как исходной, так и квантизованной модели) рекомендуется увеличить контекст до 65К токенов.
Модель на 🤗:
- ISTA-DASLab/DeepSeek-R1-0528-GPTQ-4b-128g-experts
✅ Качество при ризонинге сохраняется на 99,82% (среднее по AIME/GPTQ/MATH500).
🔊 DeepSeek-R1-0528 стал ещё более "болтливым" 🗣, поэтому для лучших результатов (как исходной, так и квантизованной модели) рекомендуется увеличить контекст до 65К токенов.
Модель на 🤗:
- ISTA-DASLab/DeepSeek-R1-0528-GPTQ-4b-128g-experts
Log-Linear Attention
[Статья][Код]
Введение
Вообще, давно пора было бы смириться с тем фактом, что лучше Attention ничего нет на свете, но человек в своем упрямстве продолжает искать альтернативы более быстрые и не уступающие по качеству.
И коллектив авторов (звезд Голливуда в мире AI) выкатил статью про очередного "убийцу" ☠️ Attention -
[Статья][Код]
Введение
Вообще, давно пора было бы смириться с тем фактом, что лучше Attention ничего нет на свете, но человек в своем упрямстве продолжает искать альтернативы более быстрые и не уступающие по качеству.
И коллектив авторов (звезд Голливуда в мире AI) выкатил статью про очередного "убийцу" ☠️ Attention -
Log-Linear Attention
.Метод
Почти с момента выхода Attention было предложено много альтернатив с субквадратичной сложностью. Если убрать softmax в Attention - операцию можно посчитать за линейное по длине последовательности число операций. Аналогично, SSM (S4, Mamba-1/2), DeltaNet линейно масштабируются с ростом числа токенов. Тем не менее, несмотря на успехи на отдельных задачах - вытеснить трансформер с пьедестала никому не удалось.
Попытка запихнуть весь контекст в скрытое состояние фиксированного размера, по всей видимости, фундаментально ограничивает модель в возможности знать все в длинном контексте.
Потому предлагается промежуточный вариант - логарифмическая по памяти и времени операция, являющаяся надстройкой над одним из линейных механизмов attention. Токены разбиваются на корзинки с экспоненциально растущим числом токенов. Самые свежие токены обычно важнее для предсказания следующего, потому в одной корзине меньше токенов, и, соответственно, их вес больше, а с отдалением от текущей позиции размер корзинок растет, а вклад индивидуальных токенов убывает. Log-Linear attention сначала вычисляет линейный attention по корзинкам, а затем суммирует с некоторыми обучаемыми коэффициентами результат каждой корзинки (коэффициенты предсказывает отдельная MLP). Число корзинок растет логарифмически с длиной - потому и имеем
Log-Linear Attention можно представить в виде структурированной матрицы HODLR (Hierarchically Off-Diagonal Low-Rank), где диагональные блоки нижнетреугольные, а внедиагональная часть состоит из блоков ранга-1, где размер блока растет с удалением от диагонали.
Log-Linear Attention можно применить как поверх Linear Attention, так и Mamba-2 и DeltaNet. И для всего написаны соответствующие кернелы.
Эксперименты
Для валидации метода авторы обучают модельки на синтетических и реальных задачах.
На синтетике Log-Linear модификация значительно улучшает качество DeltaNet на MQAR (достать несколько элементов из контекста).
Далее авторы обучают в сопоставимых условиях (700-800M параметров, 50B токенов из Long-Data-Collections с длиной последовательности 16k) Transformer, DeltaNet и Mamba-2 (без и с Log-Linear надстройки). Log-Linear дает небольшой прирост поверх DeltaNet и Mamba-2.
По скорости инференса на длинных контекстах Log-Linear Mamba-2 медленнее Mamba-2 (в ~2 раза на 64k/128k токенах), но быстрее Attention.
На Needle-in-Haystack в бенче, где нужно достать один токен Log-Linear хорош, в multi-key/multi-value задачах Log-Linear лучше линейных бейзлайнов, но хуже Attention.
На LongBench где-то дает прирост, а где-то не дает.
За что уважение авторам - они не утверждают, что предложенная модификация бьет все и всея, а стараются более менее честно все замерить.
Выводы
С точки зрения математики все красиво - вообще вопросов нет, и уважение 🤠 мастерам написания ядер на CUDA. В целом выглядит как неплохой промежуточный вариант между Attention и линейными по длине альтернативами, но как будто требует валидации бюджетах и размерах моделей ближе к production-grade.
Почти с момента выхода Attention было предложено много альтернатив с субквадратичной сложностью. Если убрать softmax в Attention - операцию можно посчитать за линейное по длине последовательности число операций. Аналогично, SSM (S4, Mamba-1/2), DeltaNet линейно масштабируются с ростом числа токенов. Тем не менее, несмотря на успехи на отдельных задачах - вытеснить трансформер с пьедестала никому не удалось.
Попытка запихнуть весь контекст в скрытое состояние фиксированного размера, по всей видимости, фундаментально ограничивает модель в возможности знать все в длинном контексте.
Потому предлагается промежуточный вариант - логарифмическая по памяти и времени операция, являющаяся надстройкой над одним из линейных механизмов attention. Токены разбиваются на корзинки с экспоненциально растущим числом токенов. Самые свежие токены обычно важнее для предсказания следующего, потому в одной корзине меньше токенов, и, соответственно, их вес больше, а с отдалением от текущей позиции размер корзинок растет, а вклад индивидуальных токенов убывает. Log-Linear attention сначала вычисляет линейный attention по корзинкам, а затем суммирует с некоторыми обучаемыми коэффициентами результат каждой корзинки (коэффициенты предсказывает отдельная MLP). Число корзинок растет логарифмически с длиной - потому и имеем
O(L log L)
как итоговую сложность операции. Для эффективной реализации используют деревья Фенвика.Log-Linear Attention можно представить в виде структурированной матрицы HODLR (Hierarchically Off-Diagonal Low-Rank), где диагональные блоки нижнетреугольные, а внедиагональная часть состоит из блоков ранга-1, где размер блока растет с удалением от диагонали.
Log-Linear Attention можно применить как поверх Linear Attention, так и Mamba-2 и DeltaNet. И для всего написаны соответствующие кернелы.
Эксперименты
Для валидации метода авторы обучают модельки на синтетических и реальных задачах.
На синтетике Log-Linear модификация значительно улучшает качество DeltaNet на MQAR (достать несколько элементов из контекста).
Далее авторы обучают в сопоставимых условиях (700-800M параметров, 50B токенов из Long-Data-Collections с длиной последовательности 16k) Transformer, DeltaNet и Mamba-2 (без и с Log-Linear надстройки). Log-Linear дает небольшой прирост поверх DeltaNet и Mamba-2.
По скорости инференса на длинных контекстах Log-Linear Mamba-2 медленнее Mamba-2 (в ~2 раза на 64k/128k токенах), но быстрее Attention.
На Needle-in-Haystack в бенче, где нужно достать один токен Log-Linear хорош, в multi-key/multi-value задачах Log-Linear лучше линейных бейзлайнов, но хуже Attention.
На LongBench где-то дает прирост, а где-то не дает.
За что уважение авторам - они не утверждают, что предложенная модификация бьет все и всея, а стараются более менее честно все замерить.
Выводы
С точки зрения математики все красиво - вообще вопросов нет, и уважение 🤠 мастерам написания ядер на CUDA. В целом выглядит как неплохой промежуточный вариант между Attention и линейными по длине альтернативами, но как будто требует валидации бюджетах и размерах моделей ближе к production-grade.