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

Авторы:
@zzmtsvv
@maxnygma (AI4Science посты)
Download Telegram
An Evolved Universal Transformer Memory

часто sakana.ai делает что-то интересное

недавно в transformer-squared они уже занимались махинациями с адаптацией на тест тайме, в этой же статье (которая хронологически вышла раньше) они явно размышляют над концепцией внешней памяти

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

короче говоря, статья не про мемори а про компрессию кв кэша

и реализуют они это через единую модельку всех слоев трансформера, которая выдает для каждого токена скор, оставлять ли токен в кеше или нет

- для этого они вычисляют спектрограмму (STFT) от аттеншн мап + делают EMA с гиперпараметром относительно оси времени (чтобы сжать ее). эта эвристика исходит не из какого-то profound факта, а просто потому что такая предобработка лучше всего у них заработала (по сравнению с сырым аттеншном и прочим) + еще добавляют поз эмбеды на основании “старости” каждого токена в кв кеше
- и затем эти фичи идут на вход модели, где работает Backward Attention Memory - аттеншн с не нижне-, а верхнетреугольной каузальной маской, таким образом эта внешняя легкая моделька настроена “в противоположном плане” фиттить свой аттеншн по сравнению с трансформером, что в совокупности должно давать прирост + есть резидуал коннекшны
- периодически эта модель выдает скоры, какие токены откидывать из кэша. сама же она обучалась при помощи эволюционного алгоса CMA-ES, который безградиентно обучает эту модель на селекцию токенов

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

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

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

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

👀LINK
5
Why do LLMs attend to the first token?

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

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

и если раньше интуитивно объясняли аттеншн синки как место, где скапливается “избыточная аттеншн энергия”, то здесь же Барберо говорит, что они решают 2 вида коллапса в трансформере

- representation collapse - эмбеддинги текущего и предыдущего токенов становятся все более неотличимы (особенно к концу последовательности)
- rank collapse: эмбеддинги токенов в последовательности становятся неотличимы от “среднего” эмбеддинга (становятся полностью гомогенными и неинформативными). терминология может намекать на ранги матриц, но это не связано

из ранк коллапс следует репрезентейшн коллапс, да и в принципе первый коллапс больше связан с длиной последовательности, в то время как второй говорит о размывании (или же так называемом over-mixing) информации с бОльшей глубиной модели

проверяли же они это с геммой 7б и лламами 3.1 (8б 70б 405б) по оценке синк метрики (которая по трешхолду замеряет насколько эмбеддинги активируются почти всегда), аттеншн мапам и нормам эмбеддингов

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

также подтвердили зачем-то многие тейки из предшествующих статей (видимо чтобы потом и их цитировали побольше в том числе помимо первопроходцев) - например, что первому токену необязательно быть <bos>, а решает только позиция, и все равно появится синк, или как они могут помогать выставлять что-то вроде if-else утверждений в модели на проверку промпта (если в тексте есть апостроф, то соответствующая голова в соответствующем слое отреагирует, иначе же все уйдет в синк)

👀LINK
🔥5👍2
When Attention Sink Emerges in Language Models: An Empirical View

снова про аттеншн синки

сингапурские авторы, где вот-вот закончился iclr, провели очень много экспериментов по влиянию разных компонент моделей на динамику якорей и сделали свое овервью

эту эмпирику провели по лламе2, лламe3, мистралю, гпт, pythia, opt, и в аппендиксе даже написали про гибридную джамбу. скейл по параметрам варировался от 10м до 13б

из оптимизации
- weight decay способствует появлению якорей (интуитивно потому что помогает со стабилизацией при обучении)
- меньше лр → медленнее появляются синки (+ аргумент к тому, что если добавлять SinkKV нативно, то может улучшиться перформанс при том же бюджете обучения)

по части данных
- если аттеншн исполняется со скользящим окном (Shifted Window Attention), то якори образуются как первые токены общей последовательности, а не каждого контекстного окна
- синки сдвигаются в зависимости от префикса: если они есть, то якорь появляется не только на первом токене
- у базовых и инструктированных моделей примерно одно и то же соотношение по синкам
- якори продолжают быть даже если на вход идут рандомная последовательность токенов вместо natural language (правда меня смущают в Table 1 меня очень смущают показатели в 99% синков по метрике), но если просто дублировать один токен, то все пропадает

архитектура
- во многом (формульно и по результатам экспов) синки напоминают концепцию Key & Value Biases, где добавляются в соответсвующие места обучаемые или необучаемые параметры. и видимо поэтому синки иногда могут быть связаны с оверфитом: переобучаются под трейн как биасы (на маленьком скейле)
- аттн синки появляются при всех позиционных кодированиях, и даже если оного нет
- если заменить софтмакс на другие кернелы а-ля линеаризовать аттн → синки останутся но их станет существенно меньше (только если не играть ?зачем-то? с сигмоидой, то тогда станет больше якорей)
- ни пре-норма, ни пост-норма не убирают полностью аттеншн синки

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

👀 link, code
6👍5
Lattice: Learning to Efficiently Compress the Memory

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

в этот же раз Mirrokni сделал такую вставку под recurrent-like модель, где мы не совмещаем модель с аттеншном, а с практической точки зрения они в мамба2 блок вставили тест-тайм лернинг

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

насколько это валидно можно судить только эмпирически - в принципе, желание что-то сделать ортогональным всегда присутствовало в индустрии (из недавнего относительно рабочего это, например, muon)

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

из примечательного
- опять pizdec как тяжело читать, тем более если углубляться в значимые цитирования Шмидхубера или работ тридцатилетней давности, которые так же сильно любит цитировать Юрген
- выводят 2 способа эффективного вычисления lattice через jacobian-vector product & рекуррентный вид, при том когда формализуют второй вид, то говорят о ненадобности первого: лично мне это совсем непонятно, ибо оба вида могут быть полезны для трейна и теста соответственно (как бы там ни обучали эту память в мета-лернинг inner loop стиле)
- титаны разбивали на чанки последовательности для обучения той самой Neural Memory, здесь же такого нет как и в принципе описания хоть какого-либо как такой модуль в принципе претрейнить стоит до инференса
- леернорму над стейтом (в понятии рнн и ссм) обосновывают не только формульно, чтобы нормы векторов не раздувались и портили обучение, а еще интерпретируют через related work & риманов манифолд (привет nGPT)

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

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

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

👀LINK
7🔥1
π0.5: a VLA with Open-World Generalization

so, физикал интеллиженс сделал следующую версию своей general-purpose роботик модели

в качестве модификаций над первой версией авторы объединили свои идеи в плане токенизации пространства действий и добавления иерархичности над текстовыми описаниями комманд и действий (задача “приготовить омлет” разбивается на более мелкие задачи по типу “взять прибор”, “включить плиту” и тд)

для данных они взяли еще больше материала для претрена - чтобы расшириться до адекватного перформанса в неизвестных ситуациях (новых кухнях или спальнях) - включая предикшн подтасок на основе более общей задачи, детекцию и задачи с интернета как QA & img captioning . по размеру тяжело судить, ибо авторы не раскрывают ни датасета, ни хотя бы примерные числа в некоторых местах. разве что прибавляют к открытым датасетам и свои данные (которых больше 400 часов), как это может соотноситься со скейлом от, например, нвидиа или стэнфорда - неизвестно (либо просто я невнимательный)

важный момент еще есть в комбинации обучения между действиями на уровне токенов (1) и через флоу матчинг (2) - фаст (1) позволяет модели сойтись заметно быстрее и в принципе легче тренируется, в то время как (2) на инференсе в данном сетапе авторов будет быстрее. решили это довольно прямолинейно - через гиперпараметр, который контролирует значимость флоу матчинг лосса во время обучения. начинается с 0, и затем постепенно увеличивается → мульти-модальный трансформер в начале обучения фиттится на маппинг из токена в токены, а затем и постепенно вливается консерн на непосредственное предсказание непрерывных действий. может выглядеть довольно топорно, but it works for them though

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

пока авторы назвали это версией 0.5 → можно предположить судя по размышлениям авторов, что версия 1.0 будет решать задачи о помощи во время выполнения задачи (хотя что-то такое уже было решено в Hi Robot но видимо не до конца) или большей агентности в плане меньшего количества супервайзд данных, as an example

или это будет версия 0.7 если им нравятся нейминги от антропиков

👀 link, demo, код отсутствует
3