LayerSkip: Enabling Early Exit Inference and Self-Speculative Decoding
в томленьях грусти безнадежной, в тревогах шумной суеты по ускорению инференса ллмок авторы решили скипать некоторые слои модели. и как оказывается - это не рушит всю генерацию напрочь
в чем основная суть? как оказывается, в основном, финальные токены для генерации формируются не на последнем слое, а где-то внутри модели с дальнейшей возможностью дальше поменяться, но такое происходит не во всех случаях (в среднем токену для полного формирования надо 23.45 слоев из 32-ух слойной лламы).
назвали это early exit - вместо того, чтобы ждать последнего слоя эмбеддингов, мы просто на вход ЛМ голове подаем эмбеддинги из промежуточных слоев (или просто слоев пораньше)
но есть небольшой питфолл в том, что голова научена только декодить эмбеддинги с последнего слоя → возникает необходимость дотренивать голову уметь декодить эмбеддинги с любого слоя
наивно это сделать не получается, чтобы работало + мы хотели бы инферить на как можно мЕньшем количестве слоев ⇒ чтобы токены генерились не на последних слоях. из этого прикрутили layer dropout с гипером, который экспоненциально увеличивается с глубиной сетки
да еще и забустили кроссэнтропию с поправкой на стимуляцию к ealry exit, где циркулярно или постепенно брали эмбеды из ранних слоев и осуществляли early exit
окей, раньше из сетки выходить мы поняли как, но как убедиться в том, что аккураси по сравнению со всей моделью не падает (падает незначительно)? - их навороченный спекулятивный декодинг (уже писали тута и тута), который они назвали self-speculative decoding
в этом декодинге они прогоняют всю модель для предикта следующего токена для каждого драфт токена, и все это в один форвард пасс + на самом деле надо прогонять не всю модель, а только оставшиеся после early exit’a (так еще и кв кэш сохраняется с этих драфт токенов). по экспам наблюдается спидап в 1.86 раз по заверениям авторов
выглядит красиво (и вроде практично) с дополнительными затратами в доп претрейне/файнтюнинге и подборе гиперов под дропаут и новый лосс вместе с лернинг рейтом и тд
код есть, кроме трейна, в принципе как и многого другого
👀LINK
в томленьях грусти безнадежной, в тревогах шумной суеты по ускорению инференса ллмок авторы решили скипать некоторые слои модели. и как оказывается - это не рушит всю генерацию напрочь
в чем основная суть? как оказывается, в основном, финальные токены для генерации формируются не на последнем слое, а где-то внутри модели с дальнейшей возможностью дальше поменяться, но такое происходит не во всех случаях (в среднем токену для полного формирования надо 23.45 слоев из 32-ух слойной лламы).
назвали это early exit - вместо того, чтобы ждать последнего слоя эмбеддингов, мы просто на вход ЛМ голове подаем эмбеддинги из промежуточных слоев (или просто слоев пораньше)
но есть небольшой питфолл в том, что голова научена только декодить эмбеддинги с последнего слоя → возникает необходимость дотренивать голову уметь декодить эмбеддинги с любого слоя
наивно это сделать не получается, чтобы работало + мы хотели бы инферить на как можно мЕньшем количестве слоев ⇒ чтобы токены генерились не на последних слоях. из этого прикрутили layer dropout с гипером, который экспоненциально увеличивается с глубиной сетки
да еще и забустили кроссэнтропию с поправкой на стимуляцию к ealry exit, где циркулярно или постепенно брали эмбеды из ранних слоев и осуществляли early exit
окей, раньше из сетки выходить мы поняли как, но как убедиться в том, что аккураси по сравнению со всей моделью не падает (падает незначительно)? - их навороченный спекулятивный декодинг (уже писали тута и тута), который они назвали self-speculative decoding
в этом декодинге они прогоняют всю модель для предикта следующего токена для каждого драфт токена, и все это в один форвард пасс + на самом деле надо прогонять не всю модель, а только оставшиеся после early exit’a (так еще и кв кэш сохраняется с этих драфт токенов). по экспам наблюдается спидап в 1.86 раз по заверениям авторов
выглядит красиво (и вроде практично) с дополнительными затратами в доп претрейне/файнтюнинге и подборе гиперов под дропаут и новый лосс вместе с лернинг рейтом и тд
код есть, кроме трейна, в принципе как и многого другого
👀LINK
👍3
Universal Physics Transformers: A Framework For Efficiently Scaling Neural Operators
seems like сделали фаундейшн модель для вычислительной гидродинамики (computational fluid dynamics)
а задача стояла именно так: есть Neural Operator’ы - модельки, которые обучаются маппингу между разными функциональными пространствами. такое особенно четко нужно в физике, в частности для диффуров по времени, как гидродинамика, например
вроде понятно, но чем дальше в лес, тем интереснее: функциональные пространства в случае CFD представить можно двумя разными способами - по Эйлеру и по Лагранжу (в виде гридов или произвольного количества партиклов)
UPT же пытается объединить сразу две эти репрезентации и это благодаря трансформеру в латентном пространстве. есть энкодер/декодер (которые маппят из гридов/партиклов в латенты и обратно) и «аппроксиматор», каждый форвард которого проносит диффур систему на таймстеп вперед
также энкодер и декодер навешаны доп лоссами на реконструкцию по разным временным фазам диффура (до аппроксиматора и после), чтобы каждый из модулей пайплайна изолированно выполнял ту работу, которую пытались внедрить авторы. вроде получилось
оверолл - снижено количество по памяти (ибо все почти происходит в латентном пространстве и не приурочено ни к Эйлеру, ни к Лагранжу) + этот трансформер может выдавать нормальные аутпуты как при выборе мелкого горизонта времени, так и относительно большого
👀LINK
seems like сделали фаундейшн модель для вычислительной гидродинамики (computational fluid dynamics)
а задача стояла именно так: есть Neural Operator’ы - модельки, которые обучаются маппингу между разными функциональными пространствами. такое особенно четко нужно в физике, в частности для диффуров по времени, как гидродинамика, например
вроде понятно, но чем дальше в лес, тем интереснее: функциональные пространства в случае CFD представить можно двумя разными способами - по Эйлеру и по Лагранжу (в виде гридов или произвольного количества партиклов)
UPT же пытается объединить сразу две эти репрезентации и это благодаря трансформеру в латентном пространстве. есть энкодер/декодер (которые маппят из гридов/партиклов в латенты и обратно) и «аппроксиматор», каждый форвард которого проносит диффур систему на таймстеп вперед
также энкодер и декодер навешаны доп лоссами на реконструкцию по разным временным фазам диффура (до аппроксиматора и после), чтобы каждый из модулей пайплайна изолированно выполнял ту работу, которую пытались внедрить авторы. вроде получилось
оверолл - снижено количество по памяти (ибо все почти происходит в латентном пространстве и не приурочено ни к Эйлеру, ни к Лагранжу) + этот трансформер может выдавать нормальные аутпуты как при выборе мелкого горизонта времени, так и относительно большого
👀LINK
❤1🔥1
Periodic Graph Transformers for Crystal Material Property Prediction
Окунемся дальше в репрезентации материалов. Сегодня у нас Matformer💎
Проблема со всеми основными граф сетками для материалов - они не учитывают конкретно повторяющиеся паттерны материала и обрабатывают просто фиксированную клетку. В реальной жизни решетки разного размера и ориентации могут относится к разным материалам, поэтому мы должны их различать (periodic invariance). Matformer умеет это делать + обладает E(3) инвариантностью
Стандартная формулировка multi-edge граф обладает periodic invariance, однако на практике работы опираются на N ближайших соседей. В таком случае, если в этом радиусе будет одинаковое количество разных типов атомов, то не существует оптимального варианта сохранить инвариантность. Что-то останется, а что-то нет
Также periodic invariance ломается способом репрезентации графов как в Graphormer в Open Catalyst. Суть такая, что при использовании фиксированного радиуса и каждого атома как отдельной вершины при сдвиге мы может перетащить какую-то часть атомов в следующую ячейку, а какие-то атомы могут остаться в предыдущий и отстать -> поменяется структура самой ячейки и последующий граф
Имеет свою архитектуру с аттеншеном без softmax, что интересно и более явно подчеркивает степень вершины. Очень круто что в экспах они нормально перетренивают модели в отличие от предыдущих работ
Показывают абляции, что с их periodic invariance и periodic encoding метод работает лучше всего. Также структурирование multi-edge графа через radius лучше, чем fully-connected. Также показывают, что angular информация не дает прироста, но сильно замедляет
👀 LINK
Окунемся дальше в репрезентации материалов. Сегодня у нас Matformer
Проблема со всеми основными граф сетками для материалов - они не учитывают конкретно повторяющиеся паттерны материала и обрабатывают просто фиксированную клетку. В реальной жизни решетки разного размера и ориентации могут относится к разным материалам, поэтому мы должны их различать (periodic invariance). Matformer умеет это делать + обладает E(3) инвариантностью
Стандартная формулировка multi-edge граф обладает periodic invariance, однако на практике работы опираются на N ближайших соседей. В таком случае, если в этом радиусе будет одинаковое количество разных типов атомов, то не существует оптимального варианта сохранить инвариантность. Что-то останется, а что-то нет
Также periodic invariance ломается способом репрезентации графов как в Graphormer в Open Catalyst. Суть такая, что при использовании фиксированного радиуса и каждого атома как отдельной вершины при сдвиге мы может перетащить какую-то часть атомов в следующую ячейку, а какие-то атомы могут остаться в предыдущий и отстать -> поменяется структура самой ячейки и последующий граф
Имеет свою архитектуру с аттеншеном без softmax, что интересно и более явно подчеркивает степень вершины. Очень круто что в экспах они нормально перетренивают модели в отличие от предыдущих работ
Показывают абляции, что с их periodic invariance и periodic encoding метод работает лучше всего. Также структурирование multi-edge графа через radius лучше, чем fully-connected. Также показывают, что angular информация не дает прироста, но сильно замедляет
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
👍3🔥3❤2
TokenFormer: Rethinking Transformer Scaling with Tokenized Model Parameters
yet another attempt на упрощение скейлинга трансформеров
для этого решили авторы заменить все линейные проекции на кросс аттеншн. по сути это значит, что они заменили все млп в модели на аттеншн-лайк механизм, где в качестве запросов выступает неспроецированный инпут X, и назвали это pattention
было и стало (f - нелинейность)
O = f(X W_1) W_2
→
O = f(X K^T) V
плюс перед нелинейностью GeLU добавили л2 нормализацию по строчкам
оттого, что keys & values являются обучаемыми параметрами, а не проекциями инпута, и можно скейлиться меньше по оверолл количеству параметров и токен-параметр интеракциям (по заверениям авторов, но опять-таки с точки зрения формулы это частный случай млп)
а скейлиться лучше в увеличении параметров вот так: было n x embedding_dim. хотим увеличить → делаем (n+m) x embedding_dim, где инитим новые параметры нулями или как-то еще
нлп и вижн трансформеры (в частности особенно pythia) обыгрывает при примерно том же наборе параметров, так еще и флопсов меньше требуется
идея довольно интересная но при этом немножко топорная. смущает разве что отсутствие аблаций по типу “давайте попробуем обычный гелу без какой-либо нормализации”.
👀LINK
yet another attempt на упрощение скейлинга трансформеров
для этого решили авторы заменить все линейные проекции на кросс аттеншн. по сути это значит, что они заменили все млп в модели на аттеншн-лайк механизм, где в качестве запросов выступает неспроецированный инпут X, и назвали это pattention
было и стало (f - нелинейность)
O = f(X W_1) W_2
→
O = f(X K^T) V
плюс перед нелинейностью GeLU добавили л2 нормализацию по строчкам
оттого, что keys & values являются обучаемыми параметрами, а не проекциями инпута, и можно скейлиться меньше по оверолл количеству параметров и токен-параметр интеракциям (по заверениям авторов, но опять-таки с точки зрения формулы это частный случай млп)
а скейлиться лучше в увеличении параметров вот так: было n x embedding_dim. хотим увеличить → делаем (n+m) x embedding_dim, где инитим новые параметры нулями или как-то еще
нлп и вижн трансформеры (в частности особенно pythia) обыгрывает при примерно том же наборе параметров, так еще и флопсов меньше требуется
идея довольно интересная но при этом немножко топорная. смущает разве что отсутствие аблаций по типу “давайте попробуем обычный гелу без какой-либо нормализации”.
👀LINK
Forwarded from Max Zhdanov Dropping Dimes
Нашу новую статью приняли на конференцию WACV 2025, которая будет проходить в Аризоне
Статья раскрывает задачу оценки неопределенности нейронных сетей. Для этого часто применяются байесовские методы, такие как аппроксимация Лапласа. В статье мы показали контринтуитивное наблюдение, что матрицу ковариаций - важнейшую часть аппроксимации Лапласа можно заменить на единичную матрицу и показать еще более точные метрики
Матрица ковариаций по классике аппроксимации Лапласа выводится из кривизны модели, оцененной в точки оптимальных параметров (maximum a posteriori). Кривизна в нейронках может быть оценена через обобщенную матрицу Гаусса-Ньютона, матрицу Фишера, а также декомпозиционные методы, такие как аппроксимация кривизны Кронекера или K-FAC. Это все очень дорого по сравнению с нашим вариантом
В итоге мы получаем метод, который обходит все другие варианты аппроксимации Лапласа и ряд методов OOD детекции, выигрывая и в точности и в скорости. Но это еще не все! Мы делаем анализ и показываем, что такой феномем связан с проблемами оценки матрицы ковариаций на датасетах с вариативной степенью разделимости классов, которую мы эксперементально проверяем
Мы, конечно же, выложили код. Поддержите звездочками
Теперь реальный челлендж - добраться до Аризоны
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥11
Were RNNs All We Needed?
попытка Йошуа Бенджио успеть за трендом в совершенствовании существующих sequence models и при этом попытаться усилить рнн (не очень успешно)
для рекапа - ссм (и ссд) получили преимущество над рнн и трансформерами в плане технической реализации тем, что на трейне их можно распараллелить, а на инференсе высчитывать в линию относительно длины последовательности
но вот авторы подумали-подумали, и решили убрать некоторые формулы из лстм и гру и ввести только линейную зависимость хидден стейта от предыдущего (ведь только тогда и работает параллельный скан - [1] [2] [3]) → можно параллелить обучение . при этом при увеличении слоев “горизонт обозревания” прошлого увеличивается (по аналогии с receptive field в свертках, ага)
и если посмотреть экспы то там вообще все сладко (якобы), но давайте разбираться
1. рл - решили протестить sequence models на задачи мдп (где необязательно хранить историю, а просто текущий таймстеп для оптимального решения задачи)
2. затраты по рантайму с увеличением длины последовательности константные (судя по графику хотя так не должно быть из-за масштаба лол) → намного быстрее рнн, сравнимо с мамбой
3. затраты по памяти при этом между мамбой и рннками
4. wow!!! еще и обучать надо в 2.5 раза меньше чем трансформер и меньше чем мамбу!!! только вот почему-то решили это сделать на шекспировском датасете (на котором карпатый проверяет что его код наногпт работает), при том это character-level language modelling task с очень маленьким скейлом моделек. в чем вообще релевантность такого экспа?
в общем экспериментальная база статьи оставляет желать лучшего
пов следующая статья - were arduino and resistors all we needed?
👀LINK
попытка Йошуа Бенджио успеть за трендом в совершенствовании существующих sequence models и при этом попытаться усилить рнн (не очень успешно)
для рекапа - ссм (и ссд) получили преимущество над рнн и трансформерами в плане технической реализации тем, что на трейне их можно распараллелить, а на инференсе высчитывать в линию относительно длины последовательности
но вот авторы подумали-подумали, и решили убрать некоторые формулы из лстм и гру и ввести только линейную зависимость хидден стейта от предыдущего (ведь только тогда и работает параллельный скан - [1] [2] [3]) → можно параллелить обучение . при этом при увеличении слоев “горизонт обозревания” прошлого увеличивается (по аналогии с receptive field в свертках, ага)
и если посмотреть экспы то там вообще все сладко (якобы), но давайте разбираться
1. рл - решили протестить sequence models на задачи мдп (где необязательно хранить историю, а просто текущий таймстеп для оптимального решения задачи)
2. затраты по рантайму с увеличением длины последовательности константные (судя по графику хотя так не должно быть из-за масштаба лол) → намного быстрее рнн, сравнимо с мамбой
3. затраты по памяти при этом между мамбой и рннками
4. wow!!! еще и обучать надо в 2.5 раза меньше чем трансформер и меньше чем мамбу!!! только вот почему-то решили это сделать на шекспировском датасете (на котором карпатый проверяет что его код наногпт работает), при том это character-level language modelling task с очень маленьким скейлом моделек. в чем вообще релевантность такого экспа?
в общем экспериментальная база статьи оставляет желать лучшего
пов следующая статья - were arduino and resistors all we needed?
👀LINK
Learning Local Equivariant Representations for Large-Scale Atomistic Dynamics
Что ж, сегодня Allegro от Гарварда. Наверное единственный метод, который классно скейлится между нодами GPU. Давайте разберемся как они смогли сделать симуляцию на 100 миллионов атомов🐹
Собственно побуждение было вызвано плохим скейлиногом GNN из-за роста receptive field с количеством слоев, с чем также связано огромное количество вычислений между нодами. Allegro использует тензорные умножения и сферические функции - базу для сохранения векторных симметрий и скалярных инвариантностей. В статье используется обмен информацией между парами атомов через сумму взвешанных тензорных умножений между репрезентациями и сферическими тензорами. Свойство билинейности позволяет нам делать расчет более эффективно, разделяя операцию на фичи пары атомов и фичи соседей
Но, что супер важно, так это локальность операции агрегации. Все парные индексы имеют один и тот же центральный атом для конкретного атома. Это отличает Allegro от обычных GNN с их плохим скейлингом
Касательно экспериментов все очень необычно. У нас есть база типо QM9 / MD-17, но что интересно так это большие системы. Для того, чтобы пофлексить скейлингом авторы симулируют несколько крупных белков, а также твердотельный литий-ионный электролит на 100 миллиона атомов и оболочку ВИЧа на 44 миллиона соответственно
Хотя, как ни странно, для небольших систем уже сейчас существуют методы, которые стабильно бьют Allegro по точности. Оно не удивительно, ведь внутри стандратные MLP. Поэтому юзать есть смысл, только если у вас огромные молекулы или кристаллы
👀 LINK 1, LINK 2
Что ж, сегодня Allegro от Гарварда. Наверное единственный метод, который классно скейлится между нодами GPU. Давайте разберемся как они смогли сделать симуляцию на 100 миллионов атомов
Собственно побуждение было вызвано плохим скейлиногом GNN из-за роста receptive field с количеством слоев, с чем также связано огромное количество вычислений между нодами. Allegro использует тензорные умножения и сферические функции - базу для сохранения векторных симметрий и скалярных инвариантностей. В статье используется обмен информацией между парами атомов через сумму взвешанных тензорных умножений между репрезентациями и сферическими тензорами. Свойство билинейности позволяет нам делать расчет более эффективно, разделяя операцию на фичи пары атомов и фичи соседей
Но, что супер важно, так это локальность операции агрегации. Все парные индексы имеют один и тот же центральный атом для конкретного атома. Это отличает Allegro от обычных GNN с их плохим скейлингом
Касательно экспериментов все очень необычно. У нас есть база типо QM9 / MD-17, но что интересно так это большие системы. Для того, чтобы пофлексить скейлингом авторы симулируют несколько крупных белков, а также твердотельный литий-ионный электролит на 100 миллиона атомов и оболочку ВИЧа на 44 миллиона соответственно
Хотя, как ни странно, для небольших систем уже сейчас существуют методы, которые стабильно бьют Allegro по точности. Оно не удивительно, ведь внутри стандратные MLP. Поэтому юзать есть смысл, только если у вас огромные молекулы или кристаллы
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM