rizzearch
1.01K subscribers
988 photos
11 videos
320 links
Кайфули на каждый день

Авторы:
@zzmtsvv
@maxnygma (AI4Science посты)
Download Telegram
Transformers for Supervised Online Continual Learning

мы уже когда-то давно писали про continual (reinforcement) learning - здесь, здесь, здесь, и здесь. но есть и супервайзд формулировка этой же задачи - меняется не ревард с течением времени или другие факторы среды, а онлайн поток лейблов (уметь классифицировать новый класс без забывания предыдущих)

в этой статье дипмаинды попытались подогнать трансформер под такой сетап на примере континуал емнист и цифар10. нету привычного батчированного предобучения (разве что используются предобученные картиночные feature extractors), а есть кое-что другое

что же все-таки смогли учудить авторы?

- обновляют модель в онлайн формате, чтобы соответствовать ограничениям задачи
- при этом сохраняют в КВ кэше предыдущие вычисления в sliding window стиле. да и кв кэш не один, а их несколько таких буферов (которые, видимо, рандомно сменяют друг друга, здесь авторы не совсем ясно расписали)
- таким образом и аттеншн утилизируется более стандартным способом, как мы привыкли, так еще и имитирует момент обучения по эпохам ввиду попеременной смены кв кэшей при градиентном обновлении. еще конечно интересно, как они реализовали online gradient шаг в комбинации с кв кэшами, поскольку к этому надо подойти аккуратно (и еще аккуратнее, чтобы достичь минимального оверхеда по обновлению состояний), но этого мы видимо не узнаем
- так же они попробовали 2 подхода по вставке лейблов - просто в контекст (и при next-token prediction задаче моделировать надо только их) или как доп проекция для kv, которые показывают себя примерно одинаково на существующих бенчмарках

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

имхо, сухой остаток из этой статьи помимо домена континуал лернинга можно вынести в интересном сочетании in-weights & in-context лернинга, которые дополняют друг друга для такой онлайн задачи. в виде трансформера такое решение выглядит покрасивее, чем надстройка внешней памяти над каким-то нативным классификатором, потому что в архитектуре уже это заложено в тандеме (и другие ресерчеры ни раз уже упоминали об аналогиях между кв кэшем и памятью, в том числе и с линейным аттеншном)

так что да, очередная статья про интересные свойства трансформера

👀LINK
6👍2
Hardware-Efficient Attention for Fast Decoding

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


короче да, Три Дао пошел в оптимизацию латентного аттеншна (который мы упоминали вот здесь)

и начинают авторы, отталкиваясь от анализа arithmetic intensity, которая показывает отношение арифметических операций к каждому байту доступной памяти (что пропорционально group size - отношению q голов к головам kv в аттеншне), и это может подтолкнуть к моменту группировки

хоть кернел от дипсик реализован в манере флеш аттеншна и cutlass, но есть нюанс(ы)

- может происходить репликация кв кэша при тензор параллелизме (up-проекции параллелятся по колонкам и, когда пасьянс по размерностям не сходится, то происходит неприятное)
- из-за чего выигрыш (по задумке) должен быть, а его нет
- → надо грамотно отшардировать латентные головы по девайсам
- что может быть как раз достигнуто при обобщении на понятие GQA (оригинальный латент аттеншн больше похож на multi-query attention, где все q вливаются в одну голову kv, а не по группам)
- при том еще и сохранить то же количество параметров: добавляется понятие kv групп, а латентная размерность урезается вдвое. в остальном повторяется идея MLA

и получился Grouped Latent Attention (GLA)

но на GLA авторы не остановились, а еще и предложили свой Grouped-Tied Attention (GTA)

- подметили, что роуп далеко не всегда стоит применять (и качество может быть даже лучше). в принципе из-за этого в МЛА и по половине размерности применяется только это позиционное кодирование (и здесь будет так же)
- так еще и в k присутствует низкоранговая природа: амплитуда сингулярных значений жестко летит вниз почти в самом начале, и тем самым вариативность заключается в нескольких первых компонентах
- отчего и вышла сюрреалистическая идея: пусть не будет отдельных проекций под K & V, а будет единая KV, где значения полностью равны этой проекции,
- а первая половина берется для ключей. вторая же часть покрывается другой проекцией, которая одинакова для всех голов и к ней применяется роуп
- звучит супер нетривиально, но видимо работает😱

все это так же реализовано в io aware манере, от которой и старается не отставать ветка с линейным аттеншном + есть совместимость с paged attention за счет асинхронного копирования и расчета адрессов по потокам в одном варпе, что вообще на мой взгляд супер мега круто выглядит

по скейлам моделек от ~180М до ~1.5B параметрах, от 25 до 50 миллиардов токенов в соответствии в размером гпт3 и ллама3. по метрикам стандарт - от перплексии до ММЛУ. репортят ожидаемые результаты о сохранении (иногда и улучшении на таком скейле) перформанса при более эффективном сжигании карточек + еще в DeepSeek Coder V2 Base заменили MLA → GLA в фп8 и посчитали пропускную способность (вкусно)

не забывают упоминать про момент спекулятивного декодинга для q_len > 1 на инференсе, где эти методы тоже побольше выигрывают (и чем тоже занимается три дао). в целом, если смотреть по числам (которые еще во многом могут поменяться), то по памяти могут идти сохранения и в половину от МЛА + авторы немного упомянули про мамбу, что в ней можно попробовать сделать что-то подобное

👀 paper, code с пылу с жару
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
4🔥3
Memory Mosaics

хоть недавно и вышла альтернатива трансформеру от саканы, она все равно использует аттеншн как основной механизм и не выглядит как вывод из bitter lesson

здесь же хочется написать про айклировские 2025 мозаики памяти, которые базируются на ассоциативной памяти (да, она мне нравится и я про нее уже писал здесь и здесь + китай тоже что-то пытается с ней делать, разбавляя текст цитатами из goodreads)

вместо селф аттеншна идет же база на основе Надарая-Ватсона [1], [2]
- где моделируют необходимые ключи k и значения v для ассоциаций
- при том ключи вычисляются по токенам вплоть до данного таймстепа, а значения же на один шаг вперед (хотя можно в теории сделать и на большее количество шагов + нам еще так не придется вставлять позиционное кодирование), а на инференсе получается путем интерполяции
- и итоговый аутпут вычисляется через Надарая-Ватсона (который в теории должен сходиться к истинному какому-то там условному мат ожиданию значений v от ключей k)
- и поскольку теоретически один такой модуль сходится, то и интерпретация его (по словам авторов) лучше, чем один модуль селф аттеншна, да и даже эффективнее. так они эмпирически показывают, что inductive bias может появиться уже с одним таким блоком памяти, в то время как аттеншну нужно минимум 2 слоя
- для того, чтобы хендлить длинные последовательности и больше укрепить вопрос о позиционности токенов в архитектуре, авторы добавили нормализацию и leaky average, которую можно реализовать через свертку
- если же наслаивать эти модули друг на друга, каждый в отдельности будет отвечать за свой кусок меморизации, нужный для цельной картины - отсюда и название мозаик памяти (а и еще это наводит на мысли о связи мета-лернинга и градиентного обучения, про которое мы и тут упоминали)

что по экспам?
- супер-пупер маленький скейл (сравнивают с маленькой гпт2)
- игрушечные датасеты (3 луны) + языковое моделирование как BabiStories + in-context learning on RegBench
- обгоняет по перплексии, обгоняет в ин-контекст лернинг сетапе + нужно меньше слоев (в том числе в сравнении и с рнн и ссм)
- добавляют еще аналог FFN в виде Persistent Associative Memory (где количество kv фиксировано и они побольше подходят с теории кернел регрессии)
- но масштабируемо ли?

seems like not. иначе их predictive disentanglement (свойство мозаики) сравнивался с бОльшим скейлом моделек + были бы аблации на чувствительность к гиперам

но материал хорош для повторения всей этой теории и нового взгляда на аттеншн

👀 paper, code
🔥3👍1
ATLAS: Learning to Optimally Memorize the Context at Test Time

появился более сильный титан в виде атласа от авторов, которые еще и решеткой занимались

что изменилось?

- в онлайн обновлении весов теперь присутствует ньютон-шульц, который стал известен через muon
- дополнительный weight decay
- feature mapping (полиномиальный) для ключей в соответствующем слое для бОльшей экспрессивности

и смешным образом называется DeepTransformer

по скейлу максимум в 1.3B, превосходит титанов и линейные рнн + скейлится на контекст в 10млн, но имхо все еще не трансформер 2.0

👀 paper
🔥7👍2