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
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
мы уже когда-то давно писали про 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 с пылу с жару
- Не оскорбляйте меня, – кротко заметил Бендер. – Я сын турецко-подданного и, следовательно, потомок янычаров. Я вас не пощажу, если вы будете меня обижать. Янычары не знают жалости ни к женщинам, ни к детям, ни к неэффективным латентным аттеншнам.
короче да, Три Дао пошел в оптимизацию латентного аттеншна (который мы упоминали вот здесь)
и начинают авторы, отталкиваясь от анализа 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