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

Блог про сжатие сетей и не только.
От древнейших времен по настоящее время.
Download Telegram
скейлинг-кривые для reward моделей
Демонстрация пользы от GAtt в multi-turn диалоге
скейлинг по safety от количества safety данных
time awareness у LLaMA-2 при подаче инструкции, где чатбот должен ответить, использую актуальные на то время знания человечества о мире
👍1
No Train No Gain: Revisiting Efficient Training
Algorithms For Transformer-based Language Models

[Статья][Код]

С течением времени запрос на обучение языковых моделях, основанных на Трансформерах, растет быстрее, чем имеющиеся в распоряжении вычислительные ресурсы. Потому и возникает запрос на эффективное обучение моделей.

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

Каждая статья заявляет в той или иной форме, что предложенный метод эффективнее базового решения. Но что означает эффективнее? Ответ на этот вопрос не столь тривиален.

Сравнение эффективности алгоритмов

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

Время работы зависит от используемой конфигурации вычислительных ресурсов.

Число операций с плавающей точкой зачастую не отражает специфику реализации математических операций на железе, время доступа к памяти, накладные расходы на коммуникацию….

Потому авторы предлагают использовать относительное время работы, привязанное к конкретному железу. Для некоторой конфигурации (видеокарты, CPU, ОЗУ) фиксируется вычислительный бюджет, и при запуске на другом сервере надо замерить отношение работы алгоритма к исходной конфигурации и с поправкой на этот фактор проводить все замеры. Т.е если новый сервер в 2 раза быстрее - то эксперимент должен быть в два раза короче.
Архитектурные модификации

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

Layer dropping
В архитектурах с residual connections в целях регуляризации иногда пропускают вычисления части слоев (например MHA или FeedForward block). Кроме того, сия процедура дает некоторую экономию в количестве вычислений. Обыкновенно в начале обучения
вероятность пропуска слоя равна нулю и с течением времени растет до некоторого максимального значения. Кроме того, вероятность растет от входа модели, к ее выходу (согласно народной мудрости в начале обучаются универсальные и общие представления, а ближе к выходу более специфичные).

Отбор данных

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

RHO Loss
Предложенная в работе метод уменьшает вес примеров с большими значениями train лосса, так как они скорее всего соотвествуют шумным или некорректно размеченным данным.

Оптимизаторы

Lion
В качестве альтернативы общеупотребимому Adam-у в начале этого года был предложен отпимизатор Lion, найденный с помощью reinforcement learning. Теоретических гарантий на его превосходство нет, но в ряде работ утверждается, что он немного накидывает по сравнению с Adam. При этом сам алгоритм достаточно прост.

Sophia
Все новое - это хорошо забытое старое, как известно. Sophia - по существу тот же Adam, но использующий другой способ оценки кривизны для preconditioning. В исходной работе использовались две формулировки - через Hutchinson estimator и Gauss-Newton-Bartlett. В экспериментах здесь используется вторая, так как ее реализация была опубликована (и работала немного лучше в cтатье по Sophia).
🔥2
Эксперименты

Для сравнения различных методик эффективного обучения авторы берут BERT и T5 модели, обучают на задачи MLM и span-corrupting MLM, соответственно. Для предобучения используется C4. Для каждого метода параметры подстраиваются на основе некоторой сетки.

Алгоритмы сравниваются на вычислительных бюджетах в 6,12,24 часов на одной RTX 3090 (A100 для Т5).

Для оценки качества модели BERT валидируют результат файтьюнинга BERT на задачах из GLUE/SuperGLUE бенчмарков. Кроме того, оценивается качество работы MLM на валидации для BERT и T5. И для T5 модель проверяют на Super Natural Instructions.

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

На коротких отрезках - 6-12 часов некоторый профит имеет место от Layer stacking, практически исчезающий при более длительном обучении. Остальные алгоритмы из рассмотренных не дают выигрыша против бейзлайна ни при каких бюджетах обучения. Методы отбора данных при заданном ограничении на время работают хуже и на MLM и на GLUE.

Новомодные отпимизаторы (Lion и T5) сходятся хуже по времени со сравнению с baseline.

Итоги

Результат данной статьи в очередной раз подтверждает важность аккуратного и честного сравнения методов друг с другом. Статьи по Deep Learning выходят все чаще и чаще, потому спрос на ‘санитаров’ леса будет только расти с течением времени.
Наука на то и наука, что фальсифицируема.
Retentive Network: A Successor to Transformer for Large Language Models
[Статья][Код]

Каждый исследователь или практик алкает следующих качеств от архитектуры нейронной сети:
1️⃣ Эффективное обучение
2️⃣ Хорошее качество
3️⃣ Дешевый инференс

Архитектура Трансформер, доминирующая во многих областях и приложениях Deep Learning, удовлетворяет первым двух из требований, но, к сожалению, довольно тяжеловесна и прожорлива до вычислений.

Множество работ предлагали различные альтернативы и приближения attention, но ни один из них не стал общеупотребимым на практике. Аналогично, варианты с внедрением рекуррентных механизмов и state-space моделей (S4, H3, Hyena) хоть и получили признание, но не составили полноценной конкуренции attention.

И в этой статье авторы делают довольно громкое заявление о том, что они смогли воплотить невозможный треугольник в реальность, создав архитектуру, обладающую всеми желаемыми аттрибутами - Retentive Network (RetNet). Все прошлые архитектуры можно теперь со спокойной душой отправить на свалку истории.
👍4
Метод

Предложенный механизм рассматривается в качестве альтернативы стандартному Attention в трансформер блоках, то есть чередуется с feedforward слоями и применяется на последовательностях токенов.

Retention является по существу версией RNN, c обновляемым вектором состояния, где каждое последующее состояние получается как взвешенная (матрично) сумма прошлого состояния и текущего элемента последовательности, и с выходной проекцией, превращающей скрытое состояние в выход слоя. Все проекции - взвешивающая скрытое состояние, текущий элемент последовательности и выход, получаются линейным преобразованием входа - полный аналог query, key, value проекций в Attention. В частном случае необучаемых проекций архит

Далее авторы диагонализуют матрицу, преобразующую скрытое состояние, перепараметризуют веса и приходят в итоге к форме, удобной для вычисления. Полученная операция включает в себе attention без softmax, causal masking, и экспоненциальное затухание по длине последовательности.

Замечательным свойством retention является возможность представить его в 3 ипостасях:
1️⃣ Параллельная версия (оптимальная для обучения на GPU)
2️⃣ Последовательная версия (бюджетная на инференсе)
3️⃣ Чанковая реализация (trade-off между двумя первыми)

В первой версии одновременно обрабатывается вся последовательность, во второй один элемент, в третьей - блок некоторого размера.

Далее, как и в оригинальном attention, предлагается многоголовая версия Retention. Однако, если обучаемыми разными головами паттерны в MultiHeadAttention имеют случайное поведение, то здесь разные головы отвечают разным масштабам. Коэффициент затухания γ определяет характерный масштаб (длину контекста), с которой работает данная голова. На выход MultiHeadRetention довешивается GroupNorm.

Для повышения выразительности операции выход MultiHeadRetention умножается на
swish(XW_G) - gating механизм, и пропускается через выходную проекцию W_O.
Эксперименты

Предложенную архитектуру RetNet обучают на задаче CausalLM на смеси из The Pile, C4, The Stack. В качестве бейзлайна берут стандартный трансформер.

Для оценки качества модели используют 0-shot и few-shot бенчмарки из LM Evaluation Harness.

Retention Network достигает меньшей перплексии на валидации по сравнению с Transformer на размерах 2.7B, 6.7B, и по форме кривой авторы утверждают, что Retention Network масштабируется лучше трансформера (сильноватое заявление на основе графика из 3-х точек). Аналогично, Retention Network превосходит Transformer на 0-shot и few-shot.

Далее следуют замеры расхода памяти и скорости инференса, и RetNet оказывается быстрее и экономичнее по расходу GPU RAM даже оптимизированной версии Flash Attention на тритоне.

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

При сравнении на ряде бенчмарков по Language modelling RetNet превосходит другие альтернативы трансформера - State-Space модели, RWKV, линейный трансформер.

Удивительно, что нет сравнения на Long Range Arena, которое является признанным мерилом способности сети работать с длинным контекстом, каким бы данный бенчмарк ограниченным не несовершенным ни был.

Авторы проводят ablation компонент архитектуры и все компоненты - GroupNorm, multi-head, экспоненциальный спад γ с разным коэффициентом в разных головах оказывается важен. Хоть разница, не сказать, чтобы кардинальная для каждой из компонент.
Итог
Интересная идея с понятным value proposition. Однако, валидация выглядит на текущий момент слишком ограниченной и специфичной, чтобы утверждать про рождение преемника трансформера. Наличие экспоненциального затухания, пусть и на разных масштабах, ограничивает длину обрабатываемого контекста. Устремление же γ->1, по всей видимости, приводит к нестабильности в обучении. Код модели недавно появился в открытом доступе, так что ждем независимых проверок, а можем и сами убедиться в чудесных свойствах предложенной архитектуры.

Но за подачу материала, тем не менее следует отдать комплимент авторам. Красивая реклама - важная составляющая не только в коммерции, но и в науке.
FasterViT: Fast Vision Transformers with Hierarchical Attention

Очередной гипер-мега-ультра эффективный гибрид трансформера и сверточной архитектуры - FasterViT от Nvidia.

Согласно кривой Парето throughput vs top-1 ImageNet accuracy, представленной в работе, FasterViT заметно опережает всех предшественников при замерах на A100.

В чем же секрет такого чудесного быстродействия?

Архитектура

Работа по ускорению и оптимизации vision (и не только) трансформеров активно ведется примерно со времени их младенчества. Исходный трансформер очень гибок и универсален, и в то же обладая меньшим набором inductive biases, менее заточен под задачи компьютерного зрения, поэтому не столь эффективен.

С 2021 года появилось множество работ, совмещающих архитектурные элементы из трансформера и более привычных сверточных архитектур - Swin, ConvNext, PoolFormer, CrossViT, CoAT, MobileViT, EfficientFormer, NextViT, и многие другие.

Серьёзным недостатком трансформера с точки зрения вычислительной сложности является квадратичная сложность по длине последовательности. Потому приходится либо ограничиваться Attention на низких разрешениях, либо нарезать на крупные патчи. В литературе был предложен ряд способов удешевить attention за счет его локализации в окне (Swin), факторизации на локальный и глобальный attention (Twins).

В этой работе предложили по сути новую версию факторизации Attention. Заводят на каждое окно (аналогичное таковому в Swin) некоторое количество carrier токенов (которых гораздо меньше, чем патчей в окне). И в каждом HAT (Hierarchical ATtention) происходит обмен информацией между carrier токенами из разных окон, а затем carrier токены обмениваются информацией с патчами в окнах. После одного или несколько раундов HAT carrier токены сливаются с исходными патчами для передачи глобальной информации.

Кроме того, популярные в мобильных архитектурах depthwise свертки не эффективны по скорости, из-за memory-bound природы верхних слоев, поэтому используются обычные 3x3 свертки без факторизации.

Дизайн архитектуры довольно стандартный для эффективных гибридных архитектур на первых двух стадиях (высоком разрешении) сверточные блоки. На меньшем разрешении работают HAT блоки.
🔥3👀2
Результаты

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

Далее в статье есть ablation компонент, подтверждающий необходимость того или иного решения. Эффект от каждой из них по отдельности, честного говоря, небольшой.

Выводы

Если верить представленным результатам, то вышло довольно эффективное решение, с относительно простой структурой. Вопрос в том, насколько ускорение на GPU будет переноситься на мобильные архитектуры, кои скорее всего и будут являться целевой аудиторией. Комбинация локальной и глобальной агрегации признаков - выглядит универсальным подходом в разработке современных архитектур, и дальнейший прогресс носит скорее инкрементальный характер. Кроме того, процедура обучения, если присмотреться, включает некоторый тюнинг гиперпараметров (learning rate, dropout, drop path), по сравнению со стандарнтыми рецептами, и неизвестно насколько выигрыш обусловлен самой архитектурой, а насколько удачным оптимизационным рецептом.

Отдельный вопрос, насколько наработки в области эффективных архитектур переносятся на CLIP-модели и self-supervised претрейны. Есть ли какая-то польза от специфичных архитектур, или базовый трансформер всех победит?
On Architectural Compression of Text-to-Image Diffusion Models
[Статья][Код]

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

1️⃣ Уменьшение количества шагов сэмплирования
2️⃣ Удешевление одного шага сэмплирования

Сегодняшний сюжет будет относиться ко второму направлению.

Постановка эксперимента

За основу берется Stable Diffusion v1.4. Как известно, данная модель состоит из UNet модели, генерирующей в латентном пространстве, текстового энкодера, и вариационного кодировщика, погружающего в скрытое пространство и из него. Но так как почти все вычисления приходятся на UNet целесообразно сжимать в первую очередь его.

UNet Stable Diffusion состоит из сверточных ResNet блоков и Transformer блоков.

Первое наблюдение, которое делают авторы, — оказывается, что из UNet Stable Diffusion можно вытащить среднюю часть (с наименьшим разрешением карт активаций) с довольно небольшой просадкой по качеству и метрикам без какого либо дообучения, что любопытно. Выходит, что данный участок сети не выполняет серьезной работы, либо сеть, как человеческая печень, продолжает функционировать в штатном режиме при удалении части от нее.

Далее авторы предлагают три варианта уменьшенной Stable Diffusion:
1️⃣ Base. Меньше блоков в верхних слоях.
2️⃣ Small. Без блоков в середине модели.
3️⃣ Tiny. Укорачивание на промежуточных разрешениях.

Обучать с нуля это хозяйство (оригинальная Stable Diffusion обучалась 150к GPU часов на A100) - удел богатых. И авторы прибегают к дистилляции.

Лосс состоит из трех компонент:
1️⃣ исходного denoising loss
2️⃣ mse с учителем
3️⃣ mse между активациями на выходах каждой стадии (перед понижением/повышением разрешения).

Существенная деталь, от которого зависит итоговое качество всей процедуры, — на каких данных следует дистиллировать в условиях ограниченного бюджета? Авторы используют подвыборку из 220k примеров из LAION-Aesthetics с наибольшими оценками по эстетике.
🔥2
Эксперименты

Процедура дистилляции выходит относительно бюджетной по нынешним меркам: обучение самой большой модели BK-SDM Base занимает 300 часов на одной A100.

Для оценки качества генераций модели используется стандартный бенчмарк MS-COCO на реалистичность изображений и соответствие описанию картинки. Дистиллированые BK-SDM несколько просаживаются по метрикам по сравнению с материнской моделью, тем не менее, обладают все еще неплохим качеством генераций. Что интересно, оптимальное качество (по FID) достигается еще до последней итерации.

Авторы демонстрируют, что BK-SDM генерирует лучше GANов, хотя осмысленность подобного сравнения без сопоставления времени генераций выглядит сомнительной.

Полученные модели позволяют генерировать картинку на 30-40% (в зависимости от размера), быстрее чем исходная SD v1.4.

Далее авторы проводят ablation. Инициализация модели-ученика весами Stable Diffusion работает на порядок лучше, чем с нуля, что ожидаемо, учитывая короткое время обучения. Оба лосса в дистилляции - на выходе модели и на уровне промежуточных активаций полезны, и улучшают качество. Больший размер батча немного лучше, чем меньший в среднем по метрикам.

На специализированной генерации с DreamBooth дистиллированные модели почти не уступают базовой Stable Diffusion.

Заключение

Данная статья достигает довольно неплохих результатов по сжатию моделей в условиях ограниченных ресурсов, используя стандартные методы из дистилляции трансформеров. Совсем просадки по качеству избежать не удалось, и, сжатые модели, по всей видимости, более специализированы под генерацию в стиле LAION Aestethics, и, скорее всего, проседают более заметно на промптах из другого распределения. Однако, сама возможность восстановить качество, близкое к исходному, за счет отбрасывания некоторых блоков, говорит о том, что есть некоторая свобода и простор в направлении оптимизации архитектур для диффузионных моделей. Классификаторы ImageNet-1k и бэкбоуны для детекции/сегментации на MSCOCO несколько приелись.
Dataset Quantization
[Статья][Код]

Вопреки обыкновению, данная статья не про квантование нейронных сетей, и даже не про квантование векторов, а про квантование датасетов.

Как известно, чем больше данных, тем лучше итоговая модель.
Однако, обучение на большом датасете требует значительных затрат по времени. Да и данные надо где-то хранить.

Потому возникает естественный вопрос - можно ли как-то уменьшить количество данных, не потеряв при этом существенно в качестве?

Существующие методы отбирают примеры либо на основе градиентов по примерам для фиксированной архитектуры, либо model-agnostic способами на основе некоторых эвристик.

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

И в данной работе предлагают метод, который, с одной стороны, не привязан к конкретной модели, и с хорошим качеством.

Метод

Хочется, чтобы полученный набор данных был как можно более разнообразным.
За основу берут метод GraphCut, который стартует с произвольно выбранного примера, и каждый следующий пример подбирают так, чтобы он был как можно дальше от выбранных ранее, и ближе к еще не выбранным.

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

Авторы предлагают пройтись по примерам в порядке, определенном GraphCut, и добавлять разбить примеры на несколько корзин. И затем равномерно выбирать примеры из каждой полученной корзины. Утверждается, что образованный таким образом датасет будет обладать достаточным разнообразием и репрезентативностью.

Для дальнейшего сжатия, авторы оценивают информативность патчей с помощью модифицированной версии GradCam и заменяют на черные квадраты наименее информативные.
🔥1
Эксперименты

Качество работы метода проверяется на CIFAR-10, ImageNet-1k, ADE20k, MS COCO и инструкциях из Alpaca.

Предложенный метод заметно превосходит альтернативы и при этом оказывается обобщаемым на другие архитектуры.

Оптимальная доля маскируемых патчей изображения - 25%, отбор с помощью GradCam лучше случайного выбора. Здесь однако, возникает вопрос, насколько полезно такое сжатие - так как количество операций при прогонке что исходной, что маскированной картинки для большинства архитектур - одна и та же. Кроме того, за счет уменьшения количества цветов, прочих алгоритмов сжатия, можно добиться более сильного сжатия.

Оптимальное число корзин в районе 10.

Для задач из компьютерного зрения без просадки в качестве удается сжать датасет на 20%, 40%. It aint much but it’s honest work.

Датасет с инструкциями же удается сжать куда лучше (80-98%). Вероятно, потому, что рассмотренные задачи для компьютерного зрения требуют существенной перестройки модели, а instruction tuning - небольшая корректировка весов модели под желаемый паттерн поведения. Кроме того, ранее было показано, что удачно выбранное подмножество из ALPACA-set лучше всего ALPACA.

Кроме того, метод работает за разумное время, от силы час (но непонятно, для какого датасета).

Итог

Задача полезная и востребованная. Однако сам метод не имеет каких-то строгих теоретических гарантий и имеет ограниченные возможности по сжатию датасетов, хоть и превосходит альтернативы. Было бы интересно прогнать на FlanV2, там как раз больше миллиона инструкций. И для генеративных моделей.
Falcon-180B
[Статьи нет, но обещают][Блог-пост на HF]

Свершилось!
Тысячелетний сокол расправил крылья и явился широкой публике во всей красе!
Самая большая модель в публичном доступе, побеждающая все открытые модели на бенчмарках и кое-где даже проприентарные!

Охладим бурю эмоций и перейдем к сути дела.
Модель и правда самая большая - 180 лярдов параметров, чуть больше Bloom и OPT-175B. Обучалась эта здоровенная птица на 3.5Т токенов (против у различных версий Llama-2) из RefinedWeb и других источников - диалогов, статей, кода. Датасет настолько велик, что даже это немалое число меньше, чем одна эпоха. Длину контекста (2k токенов) не меняли.

Возникает вопрос о compute-оптимальности модели, ибо масштабирование по размеру модели больше, чем по количеству данных, а Chincilla law предписывает масштабировать модель и данные примерно одинаково.

На стандартных бенчмарках Falcon-180B опережает все иные модели из находящихся в публичном доступе (без instruction-finetuning). Хотя памятуя о том, что ранее была выявлена лажа с валидацией меньшей версии модели [1], требуется независимая экспертиза научного сообщества для проверки справедливости заявлений.

Архитетурно большой сокол не отличается существенно от меньших соколиков, за исключением multi-query attention, по аналогии с Llama-2.

Учитывая, колосалльный размер модели, ее инференс и файнтьюнинг представляет определенные сложности. Если самую большую Llama/Llama-2 можно без проблем засунуть на одну A100 (80Gb), а в 4-бита через bitsnandbytes / gptq интеграцию и на A100 (40Gb) / RTX A6000, то Falcon 80Gb не влезает целиком ни на одну GPU стандартными методами, без квантизации в менее чем в 4 бита.

Блог содержит информацию о требуемых ресурсах для запуска модели. Однако, есть вопросы к приведенным в таблице цифрам, ибо QLoRA вряд ли требует меньше памяти, чем инференс с GPTQ с той же битностью. С 4 битной квантизацией, на батче размера 1 и последовательностью длины порядка ~1k должно выходить ~90 Gb. Без информации о длине последовательности непонятен расход память на kv-кэши.

Некоторые утверждают [2], что Falcon-180B лучше справляется со сложными промптами, чем GPT-3.5 и LLama-2.

Возможно, статья приоткроет интересные подробности об обучении модели, хотя скорее всего размер модели и данных играют определяющую роль. Статья про Llama-2 примечательна в первую очередь дообучением модели под чатбота и заточкой ее под полезность и безопасность. Предполагаю, что нечто подобное будет предьявлено и для Falcon-180B.

[1] https://twitter.com/Francis_YAO_/status/1666833311279517696
[2] Обсуждение на reddit
🔥3
Memory-Efficient Selective Fine-Tuning
[Статья][Кода нет]

Введение

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

На GPU надо как-то разместить модель + состояния оптимизатора, и промежуточные активации, необходимые для большинства операций на обратном проходе. Для экономии памяти на состояниях оптимизатора существуют различные методы PEFT. Но память, расходуемая на хранение активаций, тоже бывает весьма существенной, особенно при обучении на больших батчах и длинных последовательностей. Есть давно известный способ - gradient checkpointing - позволяющий экономить расход по памяти за счет дополнильных вычислений, но в идеале хотелось бы обойтись без этого.

Метод

В рассматриваемой статье предлагается делать backprogation только через часть выбранных случайным образом токенов (одинаковых для всех блоков трансформера), а для остальных можно высвобождать активации после выполнения операции. При длине последовательности L и количестве выбранных токенов k экономия по памяти L/k раз.

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

Результаты

Авторы проверяют свой метод на бенчмарках из GLUE, используя маленькую по современным меркам BERT-Large модель. При одинаковых гиперпараметрах процедуры обучения (за исключением подбираемого индивидуально под каждый метод learning rate) Selective finetuning c k=16 не сильно уступает full-finetuning и слегка опережает LoRA.

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

Потом приводится ablation качества с количеством выбранных токенов. Первоначально качество модели сильно улучшается с ростом k, но затем выходит почти на плато.

Вывод

Идея проста в реализации и довольно интуитивна. Интересно, насколько хорошо полученные в статье результаты будут обобщаться на другие задачи, например, пресловутый instructing finetuning. Да и GLUE содержит преимущественно последовальности длиной в несколько десятков токенов. Идея об экономии памяти за счет использования части токенов не нова, например, работы по token pruning и merging (DynamicViT, Differentiable Patch Selection, ToMe и др) предлагают оставлять только часть или объединять в один несколько токенов по ходу прогонки последовательности через трансформер. Здесь же длина последовательности фиксирована и экономия достигается за счет backward pass.
Для полноты картины нехватает сравнения с gradient checkpointing по скорости шага обучения и расходу памяти.
InstaFlow: One Step is Enough for High-Quality Diffusion-Based Text-to-Image Generation
[Статья][Кода нет]

Введение

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

Для уменьшения количества шагов генерации были разработаны продвинутые солверы, способы дистилляции учителя в ученика с меньшим количеством шагов сэмплирования. Но при стремлении количества шагов к единице, у всех методов неизбежно проседает качество генераций. В режиме одношаговой генерации новые архитектуры GANов, которые, как известно, не обучаются без жертвоприношений богам Хаоса и Разрушения, все еще остаются лучшими по качеству. Была еще работа по Consistency Models, но ее не проверяли в практически интересном сценарии.

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

В рассматриваемой предлагается способ одношагового сэмплирования, который, как утверждается, дает одновременно хорошее качество генераций и работает всего за один шаг.
🔥4