Спрашивает народ - по какой-такой физике присвоили Нобелевскую премию Хинтону и Хопфилду?
Ну, смотрите, есть Физика языковых моделей. И вряд ли бы она появилась без трудов Хинтона и Хопфилда (Хинтона уж точно). А в самой премии не указано по какой конкретной физике надо её давать или не давать. Все формальности соблюдены.
Ну, смотрите, есть Физика языковых моделей. И вряд ли бы она появилась без трудов Хинтона и Хопфилда (Хинтона уж точно). А в самой премии не указано по какой конкретной физике надо её давать или не давать. Все формальности соблюдены.
😁26👎1😱1
Раз уж пошла такая гулянка - предлагаю дать Нобелевскую премию мира Суцкеверу за вклад в Ai Safety.
Или Юдковскому...
Или Юдковскому...
😁24💯7🔥3❤1🤨1
Isomorphic Pruning for Vision Models
[Статья] [Код]
Введение
Полагаю, что уже немного помнят, но когда-то выбить SOTA или создать мега эффективную по параметрам/флопсам на ImageNet-1k было модно и престижно.
В данной статье авторы предлагают метод структурированного прунинга, который достигает хорошего качества на ряде ViTов, СNN и их гибридов.
Метод
При структурированном прунинге отбрасываются целые каналы, слои или размерности в сети. Однако ранжировать конструкции разной топологии между собой непонятно как, потому предлагается ранжировать только среди структурных элементов одинаковой топологии.
Каждому нейрону сопоставляется некий граф зависимости из входящих и выходящих в него ребер, кои погибнут, если выдернем нейрон. Собираем все изоморфные графы в соответствующие кучки (например с одинаковым числом входных/выходных ребер для прунинга нейрона из MLP) считаем для них некоторый importance score, и для тех у кого он меньше - выбрасываем.
Для случая трансформера естественные структуры следующие:
1️⃣ Внутренние каналы в MLP
2️⃣ Головы трансформера
3️⃣ Размерности голов трансформера
4️⃣ Размерность признаков во всей сети
Пробегаемся по всем возможным структурам и везде выбрасываем одну и ту же долю самых маловажных.
То, что получилось потом дообучаем дабы восстановить качество.
Эксперименты
Валидируют метод на ConvNext, DeiT, ResNet-ах и MobileNet-v2. В плане критерия не шибко парятся, берут просто
Прунят довольно агрессивно, в 1.5 - 4 раза, восстанавливаться надо достаточно долго и основательно, потому обучают 300 эпох с дистилляцией на RegNetY.
В результате, удается добиться небольшой просадки на ResNet-ах по сравнению с базовой моделью. Правда, протокол сомнительный - берут модели обученные по старым рецептам без аугментаций на 90 эпох, а сами тратят гораздо больше вычислений с использованием современных методик выжимания качества на ImageNet.
На DeiT и ConvNext стартуя с DeiT-Base/ConvNext-Base удается получить запруненные сети с лучшим качеством, чем Small- и Tiny- модели с тем же количеством параметров и FLOPs (т.е достичь Парето-оптимальности).
По качеству на процент-два превосходят в среднем бейзлайны из литературы.
Вывод
Нравится идея с ранжированием структур с одинаковой топологией, но такое ощущение, что хороший результат обусловлен преимущественно дистилляцией с длительным обучением. На LLMки, к сожалению, масштабировать будет тяжко простым смертным. Но всякие там NVIDIA могут позволить для условного Minitron.
[Статья] [Код]
Введение
Полагаю, что уже немного помнят, но когда-то выбить SOTA или создать мега эффективную по параметрам/флопсам на ImageNet-1k было модно и престижно.
В данной статье авторы предлагают метод структурированного прунинга, который достигает хорошего качества на ряде ViTов, СNN и их гибридов.
Метод
При структурированном прунинге отбрасываются целые каналы, слои или размерности в сети. Однако ранжировать конструкции разной топологии между собой непонятно как, потому предлагается ранжировать только среди структурных элементов одинаковой топологии.
Каждому нейрону сопоставляется некий граф зависимости из входящих и выходящих в него ребер, кои погибнут, если выдернем нейрон. Собираем все изоморфные графы в соответствующие кучки (например с одинаковым числом входных/выходных ребер для прунинга нейрона из MLP) считаем для них некоторый importance score, и для тех у кого он меньше - выбрасываем.
Для случая трансформера естественные структуры следующие:
1️⃣ Внутренние каналы в MLP
2️⃣ Головы трансформера
3️⃣ Размерности голов трансформера
4️⃣ Размерность признаков во всей сети
Пробегаемся по всем возможным структурам и везде выбрасываем одну и ту же долю самых маловажных.
То, что получилось потом дообучаем дабы восстановить качество.
Эксперименты
Валидируют метод на ConvNext, DeiT, ResNet-ах и MobileNet-v2. В плане критерия не шибко парятся, берут просто
|w dw|
- модуль веса на градиент, посчитанный на 100 батчах из 64 сэмплов (не то, что я пол ImageNet-а пихал в свое время). Прунят довольно агрессивно, в 1.5 - 4 раза, восстанавливаться надо достаточно долго и основательно, потому обучают 300 эпох с дистилляцией на RegNetY.
В результате, удается добиться небольшой просадки на ResNet-ах по сравнению с базовой моделью. Правда, протокол сомнительный - берут модели обученные по старым рецептам без аугментаций на 90 эпох, а сами тратят гораздо больше вычислений с использованием современных методик выжимания качества на ImageNet.
На DeiT и ConvNext стартуя с DeiT-Base/ConvNext-Base удается получить запруненные сети с лучшим качеством, чем Small- и Tiny- модели с тем же количеством параметров и FLOPs (т.е достичь Парето-оптимальности).
По качеству на процент-два превосходят в среднем бейзлайны из литературы.
Вывод
Нравится идея с ранжированием структур с одинаковой топологией, но такое ощущение, что хороший результат обусловлен преимущественно дистилляцией с длительным обучением. На LLMки, к сожалению, масштабировать будет тяжко простым смертным. Но всякие там NVIDIA могут позволить для условного Minitron.
👍8
MaskLLM: Learnable Semi-Structured Sparsity for Large Language Models
[Статья] [Страница проекта] [Код][Пост на Machine Learning]
Введение
2:4 (она же semistructured sparsity) дает какое-никакое ускорение на GPU от Ampere и новее. Однако, просадка при прунинге обычно слишком велика для LLMок, дабы быть интересной на практике.
В этой статье предлагают метод обучения хороших 2:4 масок через Gumbel-Softmax.
Метод
Маска суть дискретная сущность потому ее просто так не отпизируешь градиентным спуском, и авторы предлагают моделировать распределение масок через Gumbel-Softmax с
Если какой-то вес зануляется или близок к нулю, то логиты маски почти не получают градиентов, потому авторы добавляют регуляризационный член как weight_decay, но со знаком ➖, чтобы расталкивать веса от нуля, тем самым поддерживая не нулевую норму у немаскированных весов.
Кроме того, маски полученные условным SparseGPT/Wanda являются хорошей инициализацией для масок и позволяют чуть улучшить результат.
Эксперименты
Метод валидируют на 🦙-2, Nemotron-4 15B и двух маленьких проприетарных GPT-3. Замеряют по классике перплексию на Wikitext и 0-шоты.
По метрикам опережают уверенно все бейзлайны (SparseGPT, Wanda, Magnitude). SparseGPT, правда, можно завести и получше. В отличие от алгоритмов one-shot прунинга, которые быстро насыщаются от количества данных, MaskLLM продолжает улучшаться при большем и большем количестве данных, что неудивительно ибо это есть по сути метод оптимизации с большим количеством обучаемых параметров.
Ablations:
1️⃣ Инициализация маской от one-shot прунера накидывает в конечном качестве.
2️⃣ Достаточная степень стохастичности сэмплирования важна для хорошего качества, дабы модель могла “попробовать” разные варианты масок.
3️⃣ Анти-weight decay не то чтобы сильно, но улучшает качество.
4️⃣ Кроме того, полученную маску можно оптимизировать на downstream и даже временамиоверфитнуться улучшить перплексию по сравнению с floating-point моделью.
Вывод
Вполне годная стратегия для обучения
[Статья] [Страница проекта] [Код][Пост на Machine Learning]
Введение
2:4 (она же semistructured sparsity) дает какое-никакое ускорение на GPU от Ampere и новее. Однако, просадка при прунинге обычно слишком велика для LLMок, дабы быть интересной на практике.
В этой статье предлагают метод обучения хороших 2:4 масок через Gumbel-Softmax.
Метод
Маска суть дискретная сущность потому ее просто так не отпизируешь градиентным спуском, и авторы предлагают моделировать распределение масок через Gumbel-Softmax с
6 = binom(2, 4)
вариантам. На обучении оптимизируются логиты вероятности сэмплирования одного из вариантов масок (т.е маска есть взвешенная сумма возможных вариантов), а на инференсе берется наиболее вероятный. Обучение суть просто оптимизация кросс-энтропии (как на pretrain). Веса при этом заморожены.Если какой-то вес зануляется или близок к нулю, то логиты маски почти не получают градиентов, потому авторы добавляют регуляризационный член как weight_decay, но со знаком ➖, чтобы расталкивать веса от нуля, тем самым поддерживая не нулевую норму у немаскированных весов.
Кроме того, маски полученные условным SparseGPT/Wanda являются хорошей инициализацией для масок и позволяют чуть улучшить результат.
Эксперименты
Метод валидируют на 🦙-2, Nemotron-4 15B и двух маленьких проприетарных GPT-3. Замеряют по классике перплексию на Wikitext и 0-шоты.
По метрикам опережают уверенно все бейзлайны (SparseGPT, Wanda, Magnitude). SparseGPT, правда, можно завести и получше. В отличие от алгоритмов one-shot прунинга, которые быстро насыщаются от количества данных, MaskLLM продолжает улучшаться при большем и большем количестве данных, что неудивительно ибо это есть по сути метод оптимизации с большим количеством обучаемых параметров.
Ablations:
1️⃣ Инициализация маской от one-shot прунера накидывает в конечном качестве.
2️⃣ Достаточная степень стохастичности сэмплирования важна для хорошего качества, дабы модель могла “попробовать” разные варианты масок.
3️⃣ Анти-weight decay не то чтобы сильно, но улучшает качество.
4️⃣ Кроме того, полученную маску можно оптимизировать на downstream и даже временами
Вывод
Вполне годная стратегия для обучения
2:4
, но требующая определенных вычислительных затрат (т.е прилично дороже чем прогнать SparseGPT). Результат достойный, но все же просадка остается довольно заметной - больше чем у SOTA методов 2-битной квантизации. Вероятно, если еще оптимизировать веса вместе с масками - можно выжать больше.👍6❤2
Ребята из unsloth выкатили блог про раздебаг gradient accumulation.
[Пост на Love. Death. Transformers. ]
TL;DR - наивное усреднение батчей при gradient accumulation приводит к тому, что результат отличается от того, чтобы прогнать за один шаг большой батч. Причем, как утверждают авторы, лосс всегда больше. В стандартном способе вычисления кросс-энтропии есть деление на длину последовательности, и если они разные в разных микробатчах - результат усреднения будет не такой, как лосс на суммарном батче. Потому предлагается избавлятьcя от усреднения.
Утверждение про то, что лосс при naive gradient accumulation больше, вообще говоря, неверно. В конце блога авторы доказывают, что лосс при наивном gradient accumulation больше и в доказательстве делают внезапный 😱 переход от лосса по микробатчам к среднему лоссу по батчу.
Можно подобрать контрпример. Пусть на первом батче лосс L_1 = 1, и в батче 4 токена, а на втором батче L_2=9 и 6 токенов.
Тогда усредненный лосс на всем батче:
А при наивном gradient_accumulation:
[Пост на Love. Death. Transformers. ]
TL;DR - наивное усреднение батчей при gradient accumulation приводит к тому, что результат отличается от того, чтобы прогнать за один шаг большой батч. Причем, как утверждают авторы, лосс всегда больше. В стандартном способе вычисления кросс-энтропии есть деление на длину последовательности, и если они разные в разных микробатчах - результат усреднения будет не такой, как лосс на суммарном батче. Потому предлагается избавлятьcя от усреднения.
Утверждение про то, что лосс при naive gradient accumulation больше, вообще говоря, неверно. В конце блога авторы доказывают, что лосс при наивном gradient accumulation больше и в доказательстве делают внезапный 😱 переход от лосса по микробатчам к среднему лоссу по батчу.
Можно подобрать контрпример. Пусть на первом батче лосс L_1 = 1, и в батче 4 токена, а на втором батче L_2=9 и 6 токенов.
Тогда усредненный лосс на всем батче:
(1 + 9) / (4 + 6) = 1
А при наивном gradient_accumulation:
1/2(1/4 + 9/6) = 0.875
(то есть меньше)👍17
AlphaPruning: Using Heavy-Tailed Self Regularization Theory for Improved Layer-wise Pruning of Large Language Models
[Статья][Ридми, но код все равно нахрен не нужен]
Обсуждать по существу тут нечего, чисто поугарать.
Метод
Хотим мы прунить LLMки. Текущие методы сжимают слои равномерно.
Однако, одни слои могут быть чувствительнее других. Как эффективно распределить степени прореживания между разными слоями для максимизации качества?Вообще говоря, Хинтон его знает, но одна занятная тема выползет скоро на архив 😆. Часть авторов сего опуса годом ранее предложила OWL - Outlier Weighted Sparsity, где чувствительность слоев определялась на основе доли выбросов (процента весов, с активациями существенно отклоняющимися от среднего значения).
В этой же статье предлагают использовать коэффициент в законе убывания сингулярных значений матриц весов W. Логика такая - у случайных матриц закон (при иниализации весов элементами из i.i.d нормального распределения) убывания собственных значений есть Марченко-Пастур c ограниченным спектром, а степенная зависимость типа отвечает сигналу. Чем медленее убывание - тем типа больше сигнала. Потому матрицы с меньшей степенью предлагается сжимать слабее.
Задают некий порог минимальной и максимальной степени сжатия и распределяют степень сжатия между слоями в зависимости от того, насколько велик/мал коэффициент по сравнению с минимальным/максимальным по всем слоям модели.
Эксперименты
Стоял на дворе 2024 год, а ребята основную часть экспериментов делают на Llama-1 и Vicuna. Валидируют по сложившейся традиции на перплексии и 0-shots.
Отдельного внимания заслуживает утверждение:
При том что перплексия переваливает за 200 в лучшем случае, что на практике означает, что модель галлюцинирует чуть менее чем полностью на любой запрос.
Предложенный метод по качеству по перплексии несколько лучше Uniform, критериев, основанных на спектральной норме и норме Фробениуса, предложенного ранее OWL, но тем не менее просадки остаются весьма значительными (на уровне 1+eps битных квантизаций) при сжатии на 70%.
Есть результаты и на 🦙-3, которая почему-то называется LLaMA-V3-7B. Там просадки значительнее.
Еще и на ConvNext прогнали для разнообразия.
Найденные профили для LLM обычно следующие - пруним меньше первые блоки, сильнее - последние (за исключением самого последнего).
Вывод
Выглядит как использование некой взятой из воздуха характеристики матриц весов для оценки важности, без внятной мотивации. Тем не менее, в упорстве и умении себя хорошо подать авторам не занимать, потому их и взяли на NeurIPS. А вообще, прунить LLMки тяжело дается как-то по сравнению с квантизацией. В 4 бита просадка на простых бенчах почти и не видна, а 50% sparsity (сжатие в 2 раза) уже существенно ломает модель.
[Статья][Ридми, но код все равно нахрен не нужен]
Обсуждать по существу тут нечего, чисто поугарать.
Метод
Хотим мы прунить LLMки. Текущие методы сжимают слои равномерно.
Однако, одни слои могут быть чувствительнее других. Как эффективно распределить степени прореживания между разными слоями для максимизации качества?
В этой же статье предлагают использовать коэффициент в законе убывания сингулярных значений матриц весов W. Логика такая - у случайных матриц закон (при иниализации весов элементами из i.i.d нормального распределения) убывания собственных значений есть Марченко-Пастур c ограниченным спектром, а степенная зависимость типа отвечает сигналу. Чем медленее убывание - тем типа больше сигнала. Потому матрицы с меньшей степенью предлагается сжимать слабее.
Задают некий порог минимальной и максимальной степени сжатия и распределяют степень сжатия между слоями в зависимости от того, насколько велик/мал коэффициент по сравнению с минимальным/максимальным по всем слоям модели.
Эксперименты
Стоял на дворе 2024 год, а ребята основную часть экспериментов делают на Llama-1 и Vicuna. Валидируют по сложившейся традиции на перплексии и 0-shots.
Отдельного внимания заслуживает утверждение:
Our empirical results show that AlphaPruning prunes LLaMA-7B to 80% sparsity
while maintaining reasonable perplexity, marking a first in the literature on LLMs.
При том что перплексия переваливает за 200 в лучшем случае, что на практике означает, что модель галлюцинирует чуть менее чем полностью на любой запрос.
Предложенный метод по качеству по перплексии несколько лучше Uniform, критериев, основанных на спектральной норме и норме Фробениуса, предложенного ранее OWL, но тем не менее просадки остаются весьма значительными (на уровне 1+eps битных квантизаций) при сжатии на 70%.
Есть результаты и на 🦙-3, которая почему-то называется LLaMA-V3-7B. Там просадки значительнее.
Еще и на ConvNext прогнали для разнообразия.
Найденные профили для LLM обычно следующие - пруним меньше первые блоки, сильнее - последние (за исключением самого последнего).
Вывод
Выглядит как использование некой взятой из воздуха характеристики матриц весов для оценки важности, без внятной мотивации. Тем не менее, в упорстве и умении себя хорошо подать авторам не занимать, потому их и взяли на NeurIPS. А вообще, прунить LLMки тяжело дается как-то по сравнению с квантизацией. В 4 бита просадка на простых бенчах почти и не видна, а 50% sparsity (сжатие в 2 раза) уже существенно ломает модель.
🤔3🤷♂1🤮1
- У нас в компании оплата по количеству строчек написанного кода.
- Отлично, по рукам.
matmul_had.py в
- Отлично, по рукам.
matmul_had.py в
quip-sharp/lib/utils
😁23🤣1
Deep Compression Autoencoder for Efficient High-Resolution Diffusion Models
[Статья][Код]
Введение
Сжимать можно не только матрицы весов LLMов, но много еще что-то другое не без пользы для человечества.
Более-менее все современные SOTA или около того диффузионные модели работают в латентном пространстве, с меньшим пространственным разрешением.
От автокодировщика (тандема 🚲 из сети, кодирующей из исходного пространства данных в латентное, называемой энкодером, и декодирующей обратно - декодера) хочется одновременно высокой степени сжатия и качественной реконструкции одновременно.
Наиболее популярный пространственный фактор сжатия - 8x (Stable Diffusion, FLUX, DALLE-3 (по всей видимости)). При таком сжатии (особенно если еще и поднять число каналов в латентном пространстве до 16, скажем) реконструкции почти не отличаются от оригинала. Однако карты признаков остаются все еще достаточно большими при подаче картинок высокого разрешения, и требуется немало вычислений.
Отсюда возникает желание двигаться в сторону больших факторов сжатия при сохранении качества. И авторы данной статьи предлагают несколько интересных архитектурных решений.
Метод
По сути в предложенной статье две ключевых идеи:
1️⃣ Skip-connection (Residual Autoencoding):
- При downsample патчи 2x2 сворачиваются в 4 канала, а зачем группы по 2 канала усредняются (ребята изобрели average pooling?)
- При upsample 4 подряд идущих канала разворачиваются в 2x2, каждый канал дублируется
2️⃣ Процедура обучения
- Предобучение на низком разрешении только на реконструкцию (без адверсариального лосса)
- Дообучение на низком разрешении верхних слоев декодера с GAN лоссом (для получения резких 🔪 деталей)
- Дообучение глубоких слоев энкодера и декодера на реконструкцию на высокое разрешение (дабы адаптировать латенты под high-resolution c другим распределением частот / плотностью обьектов)
[Статья][Код]
Введение
Сжимать можно не только матрицы весов LLMов, но много еще что-то другое не без пользы для человечества.
Более-менее все современные SOTA или около того диффузионные модели работают в латентном пространстве, с меньшим пространственным разрешением.
От автокодировщика (тандема 🚲 из сети, кодирующей из исходного пространства данных в латентное, называемой энкодером, и декодирующей обратно - декодера) хочется одновременно высокой степени сжатия и качественной реконструкции одновременно.
Наиболее популярный пространственный фактор сжатия - 8x (Stable Diffusion, FLUX, DALLE-3 (по всей видимости)). При таком сжатии (особенно если еще и поднять число каналов в латентном пространстве до 16, скажем) реконструкции почти не отличаются от оригинала. Однако карты признаков остаются все еще достаточно большими при подаче картинок высокого разрешения, и требуется немало вычислений.
Отсюда возникает желание двигаться в сторону больших факторов сжатия при сохранении качества. И авторы данной статьи предлагают несколько интересных архитектурных решений.
Метод
По сути в предложенной статье две ключевых идеи:
1️⃣ Skip-connection (Residual Autoencoding):
- При downsample патчи 2x2 сворачиваются в 4 канала, а зачем группы по 2 канала усредняются (ребята изобрели average pooling?)
- При upsample 4 подряд идущих канала разворачиваются в 2x2, каждый канал дублируется
2️⃣ Процедура обучения
- Предобучение на низком разрешении только на реконструкцию (без адверсариального лосса)
- Дообучение на низком разрешении верхних слоев декодера с GAN лоссом (для получения резких 🔪 деталей)
- Дообучение глубоких слоев энкодера и декодера на реконструкцию на высокое разрешение (дабы адаптировать латенты под high-resolution c другим распределением частот / плотностью обьектов)
🔥4
Результаты
Авторы тестируют VAE на непосредственно задаче реконструкции и применительно к латентной диффузии (DiT/UViT) на ImageNet/FFHQ, Mapillary Vistas (я тоже впервые слышу про такой). Рассматривают сжатие в 32/64/128 раз по пространству с количеством латентных каналов 32/64/128.
Для повышения эффективности vanilla transformer блоки заменяют на EfficientViT.
Residual autoencoding критичен при высоких факторах сжатия - сеть сама не может выучить этот skip connection. SD-like VAE оказывается беспомощен (жесткие дефекты и размытие на экстремальных факторах), а им удается иметь метрики более-менее на одном уровне с ростом downsampling.
При фиксированном количестве патчей в DIT/UViT качество выше при более сильном сжатии за счет автоэнкодера и меньших патчах из латента (размера 1) против меньшего сжатия и бОльших патчей. Утверждается, что с DC-VAE можно получить качество не хуже, а то и лучше, чем в сетапе, как в оригинальной статье, при этом имея 4-кратное ускорение инференса.
Предложенная процедура дообучения на высокое разрешение (Decoupled High-Resolution Adaptation) критична для адекватного качества на высоком разрешении.
Кроме того, DC-VAE проверют на коротком (100к итераций) 📝-2-image сетапе.
Вывод
Результаты выглядят весьма достойно. Прокачка энкодера - это комплиментарное направление повышения эффективности диффузионных моделей вкупе с архитектурной оптимизацией и дистилляцией по шагам. Похожую идею, во всей видимости реализовали в свежей SANA.
Авторы тестируют VAE на непосредственно задаче реконструкции и применительно к латентной диффузии (DiT/UViT) на ImageNet/FFHQ, Mapillary Vistas (я тоже впервые слышу про такой). Рассматривают сжатие в 32/64/128 раз по пространству с количеством латентных каналов 32/64/128.
Для повышения эффективности vanilla transformer блоки заменяют на EfficientViT.
Residual autoencoding критичен при высоких факторах сжатия - сеть сама не может выучить этот skip connection. SD-like VAE оказывается беспомощен (жесткие дефекты и размытие на экстремальных факторах), а им удается иметь метрики более-менее на одном уровне с ростом downsampling.
При фиксированном количестве патчей в DIT/UViT качество выше при более сильном сжатии за счет автоэнкодера и меньших патчах из латента (размера 1) против меньшего сжатия и бОльших патчей. Утверждается, что с DC-VAE можно получить качество не хуже, а то и лучше, чем в сетапе, как в оригинальной статье, при этом имея 4-кратное ускорение инференса.
Предложенная процедура дообучения на высокое разрешение (Decoupled High-Resolution Adaptation) критична для адекватного качества на высоком разрешении.
Кроме того, DC-VAE проверют на коротком (100к итераций) 📝-2-image сетапе.
Вывод
Результаты выглядят весьма достойно. Прокачка энкодера - это комплиментарное направление повышения эффективности диффузионных моделей вкупе с архитектурной оптимизацией и дистилляцией по шагам. Похожую идею, во всей видимости реализовали в свежей SANA.
🔥4
Выбираете темную сторону силы?
Статьи на ArXiv, оказывается, можно читать в инвертированной цветовой схеме (черный фон / белый текст).
Для этого надо просто в pdf заменить arxiv -> arxiv.black:
Не знаю зачем, но прикольно.
Статьи на ArXiv, оказывается, можно читать в инвертированной цветовой схеме (черный фон / белый текст).
Для этого надо просто в pdf заменить arxiv -> arxiv.black:
https://arxiv.black/pdf/{arxiv-id}
.Не знаю зачем, но прикольно.
👍10🔥5🤔4🤮2
Решил я запустить генерацию с meta-llama/Meta-Llama-3.1-8B-Instruct с
Ответ оказался немного неожиданным)
慢性胰腺炎(CI)是一种慢性胰腺炎,其特点是胰腺炎症的持续存在和慢性损伤。胰腺炎是肾上腺皮质激素(CORT)过量释放的副作用之一。与CI相比,其作用更持久。
Если вбить в переводчик, выдает следующее:
<bos_token>
(то есть без всякого контекста) с температурой 1, и было любопытно, что первое взбредет сеточке в голову.Ответ оказался немного неожиданным)
慢性胰腺炎(CI)是一种慢性胰腺炎,其特点是胰腺炎症的持续存在和慢性损伤。胰腺炎是肾上腺皮质激素(CORT)过量释放的副作用之一。与CI相比,其作用更持久。
Если вбить в переводчик, выдает следующее:
Chronic pancreatitis (CI) is a kind of chronic pancreatitis, which is characterized by the persistence of pancreatitis and chronic damage.Pancreatitis is one of the side effects of excessive release of adrenal corticosteroids (CORT).Compared with CI, its effect is more lasting.
😁17👀8
Self-calibration for Language Model Quantization and Pruning
[Статья] [Кода нет]
Многие современные методы сжатия моделей используют некоторую выборку калибровочных данных для приближения эмпирического распределения данных. Чем ближе эта выборка к целевому набору задач - тем интуитивно лучше качество, но хороших предписаний по отбору последовательностей до сих пор не существует.
Ранее эти же авторы перебрали несколько вариантов (пост на КПД), и обнаружили, что некоторое, хоть и не столько значительное, различие в качестве есть в зависимости от источника данных.
В этой же статье авторы предлагают сжимаемой модели самой сгенерировать 🪄 данные для калибровки.
Метод
Калибровочные последовательности генерируют начиная с
Дабы повысить качество данных предлагается динамически менять температуру - сначала больше, чтобы было разнообразие, а затем снижать по мере увеличения количества сгенерированных токенов.
Эксперименты
Рассматривают несколько небольших LLM:
⭐️ Gemma 2B
⭐️ Phi-2
⭐️ OPT 6.7B 👨🦳
⭐️ Mistral 7B
⭐️ Llama-3.1-8B
Которые сжимают при помощи AWQ, GPTQ (4-битная квантизация) и SparseGPT, Wanda (2:4 прунинг).
В качестве бейзлайнов берут Wikitext-2, C4, рандомные токены, Сosmopedia.
Качество замеряют на стандартных бенчах из lm-eval-harness.
⚡️ Синтетические данные, сгенерированные моделью, почти всегда лучше выборок из датасетов. Различие заметнее на прунинге, где просадки больше.
⚡️ Сгенерированный текст обыкновенно довольно связный, грамматически корректный, по статистикам довольно близок к реальному, но менее разнообразный.
⚡️ Снижение температуры 🌡️ генерации от 2 до 1 по ходу генерации дает самые лучшие результаты, хоть и без значительного отрыва от фиксированной температуры - 1.
Вывод
Идея прикольная, и для используемого количества данных (128 последовательной длины 2048) достаточно дешева в проверке. Эффективность метода во многом зависит от качества базовой модели, что, впрочем, для современных LLM, интересных сообществу верно. Интересно 🤔, справедливы ли полученные выводы для более сложных задач?
[Статья] [Кода нет]
Многие современные методы сжатия моделей используют некоторую выборку калибровочных данных для приближения эмпирического распределения данных. Чем ближе эта выборка к целевому набору задач - тем интуитивно лучше качество, но хороших предписаний по отбору последовательностей до сих пор не существует.
Ранее эти же авторы перебрали несколько вариантов (пост на КПД), и обнаружили, что некоторое, хоть и не столько значительное, различие в качестве есть в зависимости от источника данных.
В этой же статье авторы предлагают сжимаемой модели самой сгенерировать 🪄 данные для калибровки.
Метод
Калибровочные последовательности генерируют начиная с
<bos>
токена. Дабы повысить качество данных предлагается динамически менять температуру - сначала больше, чтобы было разнообразие, а затем снижать по мере увеличения количества сгенерированных токенов.
Эксперименты
Рассматривают несколько небольших LLM:
⭐️ Gemma 2B
⭐️ Phi-2
⭐️ OPT 6.7B 👨🦳
⭐️ Mistral 7B
⭐️ Llama-3.1-8B
Которые сжимают при помощи AWQ, GPTQ (4-битная квантизация) и SparseGPT, Wanda (2:4 прунинг).
В качестве бейзлайнов берут Wikitext-2, C4, рандомные токены, Сosmopedia.
Качество замеряют на стандартных бенчах из lm-eval-harness.
⚡️ Синтетические данные, сгенерированные моделью, почти всегда лучше выборок из датасетов. Различие заметнее на прунинге, где просадки больше.
⚡️ Сгенерированный текст обыкновенно довольно связный, грамматически корректный, по статистикам довольно близок к реальному, но менее разнообразный.
⚡️ Снижение температуры 🌡️ генерации от 2 до 1 по ходу генерации дает самые лучшие результаты, хоть и без значительного отрыва от фиксированной температуры - 1.
Вывод
Идея прикольная, и для используемого количества данных (128 последовательной длины 2048) достаточно дешева в проверке. Эффективность метода во многом зависит от качества базовой модели, что, впрочем, для современных LLM, интересных сообществу верно. Интересно 🤔, справедливы ли полученные выводы для более сложных задач?
❤7👍5
Соавтор и коллега по Yandex Research @galqiwi выкатил демку AQLM на ржавчине.
Можно просто взять и запустить Llama 3.1-8b, квантованную в 2 бита AQLM+PV в браузере на CPU, со скоростью 1.4 токена в секунду на M1.
LM head квантизуется в int8.
Отличная работа, Вова!
[Демка][Пост на galqiwi boredom][Репост на Love. Death. Transformers][Репозиторий]
Можно просто взять и запустить Llama 3.1-8b, квантованную в 2 бита AQLM+PV в браузере на CPU, со скоростью 1.4 токена в секунду на M1.
LM head квантизуется в int8.
Отличная работа, Вова!
[Демка][Пост на galqiwi boredom][Репост на Love. Death. Transformers][Репозиторий]
🔥36❤6
Если вам приспичит инферить LLMку на микроволновке. пока разогревается еда 🍣, мы как раз подогнали 2-битные меньшие версии Llama-3.2:
👶 Llama-3.2-1B-AQLM-PV-2Bit-2x8
👶 Llama-3.2-1B-Instruct-AQLM-PV-2Bit-2x8
👶 Llama-3.2-3B-AQLM-PV-2Bit-2x8
👶 Llama-3.2-3B-Instruct-AQLM-PV-2Bit-2x8
Основное место занимают уже эмбеды (которые хоть shared, но с FSDP немного покорячиться пришлось).
Ждем выкатки квантизации эмбедов в
👶 Llama-3.2-1B-AQLM-PV-2Bit-2x8
👶 Llama-3.2-1B-Instruct-AQLM-PV-2Bit-2x8
👶 Llama-3.2-3B-AQLM-PV-2Bit-2x8
👶 Llama-3.2-3B-Instruct-AQLM-PV-2Bit-2x8
Основное место занимают уже эмбеды (которые хоть shared, но с FSDP немного покорячиться пришлось).
Ждем выкатки квантизации эмбедов в
transformers
.🔥17❤4🤯4