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
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
хоть недавно и вышла альтернатива трансформеру от саканы, она все равно использует аттеншн как основной механизм и не выглядит как вывод из 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
появился более сильный титан в виде атласа от авторов, которые еще и решеткой занимались
что изменилось?
- в онлайн обновлении весов теперь присутствует ньютон-шульц, который стал известен через muon
- дополнительный weight decay
- feature mapping (полиномиальный) для ключей в соответствующем слое для бОльшей экспрессивности
и смешным образом называется DeepTransformer
по скейлу максимум в 1.3B, превосходит титанов и линейные рнн + скейлится на контекст в 10млн, но имхо все еще не трансформер 2.0
👀 paper
🔥7👍2
VLAs that Train Fast, Run Fast, and Generalize Better
yet another work from физикал интеллиженс
на этот раз авторы побольше углубились в вопрос ускорения обучения модели с улучшением генерализации не столь больших VLM (3B) → VLA: влмки не нацелены напрямую на решение задач принятия решений, но если в лоб тюнить их под такое, то могут происходить
- дестабилизация обучения при сочленении модуля на предикт действий с влм
- проблемы с knowledge transfer при тюне бекбона на роботику
- при том еще и хотелось бы получать быстрый инференс, а не как обычно вот это все. в данном случае речь идет про предикт действий с помощью флоу матчинга, а не привычного для трансформера token-level prediction (π0-FAST может предиктить акшн чанк в секунду примерно за 750 мс на RTX4090, что может сильно замедлять траекторию движения)
→ можно ли более удобным способом объединить две концепции - привычного для трансформера обучения предикта токенов и быстрого (10 Гц vs 1.3 Гц) инференса непрерывных действий при помощи флоу матчинга - более удобным образом, чем это делали в pi0.5? а там делали так, что в процессе обучения повышали значимость ФМ лосса при одновременном обучении на уровне токенов и непрерывных векторов
сейчас же авторы ответили на этот вопрос разделением флоу градиентов - раз трансформер хорошо учится на предикт токенов, ok, let it be, но давайте обучать тоже ФМ модуль и просто не вливать ее градиенты в бекбон VLM, которую мы будем заставлять сходиться на предикт языковых комманд и tokenized actions
профит? судя по всему, да, если смочь такое аккуратно реализовать через стоп-градиент операции и грамотно делать аттеншн маску (а она в таких мультимодальных робо делах не просто каузальная), где дискретные FAST действия и непрерывные не могут аттендиться друг на друга, чтобы не происходил лик, который не будет присутствовать непосредственно при инференсе
метрики выросли, латенси упала, по демкам (тем, которые предоставляют авторы для сравнения с предыдущими методами) выглядит получше, разве что они ничего не выложили в их репозиторий по этой работе, где по сути больше влияет инженерная имплементация под такую не breakthrough, но содержательную мысль
👀 paper, blog
yet another work from физикал интеллиженс
на этот раз авторы побольше углубились в вопрос ускорения обучения модели с улучшением генерализации не столь больших VLM (3B) → VLA: влмки не нацелены напрямую на решение задач принятия решений, но если в лоб тюнить их под такое, то могут происходить
- дестабилизация обучения при сочленении модуля на предикт действий с влм
- проблемы с knowledge transfer при тюне бекбона на роботику
- при том еще и хотелось бы получать быстрый инференс, а не как обычно вот это все. в данном случае речь идет про предикт действий с помощью флоу матчинга, а не привычного для трансформера token-level prediction (π0-FAST может предиктить акшн чанк в секунду примерно за 750 мс на RTX4090, что может сильно замедлять траекторию движения)
→ можно ли более удобным способом объединить две концепции - привычного для трансформера обучения предикта токенов и быстрого (10 Гц vs 1.3 Гц) инференса непрерывных действий при помощи флоу матчинга - более удобным образом, чем это делали в pi0.5? а там делали так, что в процессе обучения повышали значимость ФМ лосса при одновременном обучении на уровне токенов и непрерывных векторов
сейчас же авторы ответили на этот вопрос разделением флоу градиентов - раз трансформер хорошо учится на предикт токенов, ok, let it be, но давайте обучать тоже ФМ модуль и просто не вливать ее градиенты в бекбон VLM, которую мы будем заставлять сходиться на предикт языковых комманд и tokenized actions
профит? судя по всему, да, если смочь такое аккуратно реализовать через стоп-градиент операции и грамотно делать аттеншн маску (а она в таких мультимодальных робо делах не просто каузальная), где дискретные FAST действия и непрерывные не могут аттендиться друг на друга, чтобы не происходил лик, который не будет присутствовать непосредственно при инференсе
метрики выросли, латенси упала, по демкам (тем, которые предоставляют авторы для сравнения с предыдущими методами) выглядит получше, разве что они ничего не выложили в их репозиторий по этой работе, где по сути больше влияет инженерная имплементация под такую не breakthrough, но содержательную мысль
👀 paper, blog
👍4
Real-Time Execution of Action Chunking Flow Policies
снова pi
на этот раз авторы подметили, что action chunking, который так часто используют в роботике для оптимизации предикта на инференсе, но в риал тайме это вызывает паузы на стыке между чанками → замедляется работа модельки и, более того, меняется распределение при евале из-за таких дерганий и замедлений
авторы же призадумались
- было бы неплохо в асинхронной манере исполнять действия и при том постепенно подгатавливать следующие хоть как-то
- еще и желательно в training-free манере для моделек, многие из которых на флоу матчинге или диффузии построены
→ интуицию диффузионного инпейтинга (аутпейнтинга) можно попробовать переместить на этот домен, если аккуратно совместить с операциями роботик контроллера
- pi фиксируют model_prediction_time // controller_sampling_period действий, от которых вместе со следующими инпутами генерируются следующие действия
- еще и применяется софт маскинг (который много где применяют в задачах инпейнтинга) через экспоненциальное затухание значений. делают это опять-таки для непрерывности генераций и smooth траекторий движений робота
- + для этого затухания добавляют еще гиперпараметр (потому что без него подогнанного не так стабильно работает как идейно хотелось бы)
помимо реальных примеров со складыванием вещей, посуды и проводами так же авторы много экспериментов сделали на кинетиксе, где сделали 12 бенчмарков (10 сред от оксфордских авторов и 2 свои, на которых данные собрали при помощи RPO для имитации робо траекторий)
по результатам обыгрывает методы, которые стараются так же в асинхронный инференс (посредством наивноого разделения генерации либо усреднения), то есть результат ухудшается медленее при увеличении гэпа между выполнением и подготовкой
сидел с открытым ртом от того, как мастерски эти клешни зажгли спичку, а потом и свечку
👀 paper, code for kinetix, demo
снова pi
на этот раз авторы подметили, что action chunking, который так часто используют в роботике для оптимизации предикта на инференсе, но в риал тайме это вызывает паузы на стыке между чанками → замедляется работа модельки и, более того, меняется распределение при евале из-за таких дерганий и замедлений
авторы же призадумались
- было бы неплохо в асинхронной манере исполнять действия и при том постепенно подгатавливать следующие хоть как-то
- еще и желательно в training-free манере для моделек, многие из которых на флоу матчинге или диффузии построены
→ интуицию диффузионного инпейтинга (аутпейнтинга) можно попробовать переместить на этот домен, если аккуратно совместить с операциями роботик контроллера
- pi фиксируют model_prediction_time // controller_sampling_period действий, от которых вместе со следующими инпутами генерируются следующие действия
- еще и применяется софт маскинг (который много где применяют в задачах инпейнтинга) через экспоненциальное затухание значений. делают это опять-таки для непрерывности генераций и smooth траекторий движений робота
- + для этого затухания добавляют еще гиперпараметр (потому что без него подогнанного не так стабильно работает как идейно хотелось бы)
помимо реальных примеров со складыванием вещей, посуды и проводами так же авторы много экспериментов сделали на кинетиксе, где сделали 12 бенчмарков (10 сред от оксфордских авторов и 2 свои, на которых данные собрали при помощи RPO для имитации робо траекторий)
по результатам обыгрывает методы, которые стараются так же в асинхронный инференс (посредством наивноого разделения генерации либо усреднения), то есть результат ухудшается медленее при увеличении гэпа между выполнением и подготовкой
сидел с открытым ртом от того, как мастерски эти клешни зажгли спичку, а потом и свечку
👀 paper, code for kinetix, demo
👍4