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
снова про аттеншн синки
сингапурские авторы, где вот-вот закончился 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
мы уже писали обзор о титанах как только они вышли, где обучаемую память совмещали с аттеншном.
в этот же раз 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, код отсутствует
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
Practical Efficiency of Muon for Pretraining
мы уже очень вскользь упоминали относительно нашумевший оптимизатор muon, который появился в принципе из соревнования кто быстрее обучит гпт (а еще и получит норм лосс на цифар-10)
теперь же essential.ai (где сейчас есть и vaswani) решили провести евал на более значимом скейле моделек и датасете, чтобы посмотреть, есть ли действительно эмпирическое преимущество муона (в данном случае, над AdamW)
и они провели такие экспы для гемма 2 & 3 на датасетах под обычный текст и код (чтобы учесть момент гетерогенности распределения данных) на скейле по моделям от 100М до 3.7B параметрам и по датасету от 10B до 160B токенам, при том начиная от 1B до ~2B модели тренились на 50B, а самая большая модель на самом большом скейлее соответственно (хотя в некоторых местах статьи написано что и 3.7B была натренирована на 50B)
при том в качестве имплементации оптимизатора авторы использовали джаксовую (optax) версию от дипмаинда, где не применяется ортогонализация к весам эмбеддингов и нормализации (вместо этого адам)
из огромного количества ранов с девайсами от 8 до 128 (TPUv5, some google legacy stuff) muon всегда сходился на 10-15% быстрее чем adamw. для моделей от 1B это составляло экономию в примерно 2B токенов (кода, однако, нет, кроме реализации муона на джаксе в аппендиксе)
более того, с ним и сохраняются power laws (хотя и если считать по ним, то бюджет по шиншилле превышает бюджет в 2.2, тут не оч понял) + авторы представляют свой момент трансфера гиперпараметров на увеличение скейла, основываясь на mup, где делают геометрические шаги по увеличению скейла модели и сжиманию сетки свипов по гиперпараметрам (псевдокод прилагаем)
говорят про какие-то сохранения компьюта на >50%, но кода все-таки нет
👀 link
касаемо имплементации muon для торча
original code
cuda/triton code
мы уже очень вскользь упоминали относительно нашумевший оптимизатор muon, который появился в принципе из соревнования кто быстрее обучит гпт (а еще и получит норм лосс на цифар-10)
теперь же essential.ai (где сейчас есть и vaswani) решили провести евал на более значимом скейле моделек и датасете, чтобы посмотреть, есть ли действительно эмпирическое преимущество муона (в данном случае, над AdamW)
и они провели такие экспы для гемма 2 & 3 на датасетах под обычный текст и код (чтобы учесть момент гетерогенности распределения данных) на скейле по моделям от 100М до 3.7B параметрам и по датасету от 10B до 160B токенам, при том начиная от 1B до ~2B модели тренились на 50B, а самая большая модель на самом большом скейлее соответственно (хотя в некоторых местах статьи написано что и 3.7B была натренирована на 50B)
при том в качестве имплементации оптимизатора авторы использовали джаксовую (optax) версию от дипмаинда, где не применяется ортогонализация к весам эмбеддингов и нормализации (вместо этого адам)
из огромного количества ранов с девайсами от 8 до 128 (TPUv5, some google legacy stuff) muon всегда сходился на 10-15% быстрее чем adamw. для моделей от 1B это составляло экономию в примерно 2B токенов (кода, однако, нет, кроме реализации муона на джаксе в аппендиксе)
более того, с ним и сохраняются power laws (хотя и если считать по ним, то бюджет по шиншилле превышает бюджет в 2.2, тут не оч понял) + авторы представляют свой момент трансфера гиперпараметров на увеличение скейла, основываясь на mup, где делают геометрические шаги по увеличению скейла модели и сжиманию сетки свипов по гиперпараметрам (псевдокод прилагаем)
говорят про какие-то сохранения компьюта на >50%, но кода все-таки нет
👀 link
касаемо имплементации muon для торча
original code
cuda/triton code
❤8👍3