Tensorized NeuroEvolution of Augmenting Topologies for GPU Acceleration
Уверен, вы все перед сном задавались вопросом - а что происходит сегодня с эволюционными алгоритмами ?🥴
Так вот, они не стояли на месте, и смогли придумать такие штучки, которые эволюционным путем подбирают архитектуру сети (ее топологию - между какими вершинами должна присутствовать связь в случае млп, которые из себя представляют) и соответствующие веса для нейронки
Зачем это надо? поскольку топология сети в данном случае тоже не зафиксирована, то такие алгоритмы предоставляют нам более богатый класс моделей-аппроксиматоров, в отличие от классического дип лернинга. Все это, в общем и целом, называется NeuroEvolution of Augmenting Topologies (NEAT)
Но! Это все происходит очень медленно - выстраивание или разрушение одной связи между произвольными вершинами влияет в целом на всю архитектуру сети, а потому и подбор происходит последовательно, что очень жестко отталкивает - легче 100500 раз прогнать обычные нейронки за это время на гпу и решить задачу
Но Авторы решили преодолеть данный питфолл, перебросив NEAT на гпу - для этого им пришлось выразить изменение топологии (блин так умно звучит) в тензоры и операции над ними. Получив это, можно уже пользоваться имеющимися модулями, которые позволяют параллелить тензоры.
И у них это получилось! Теперь есть жесткая либа, она позволяет выстраивать “млпшки” с произвольной архитектурой. Не факт, что это сильно пойдет в народ и вообще побьет дефолт сетап, но мы можем такое сделать! пути ресерча неисповедимы
И да, написать они смогли такое на джаксе, чьи преимущества мы уже ни раз упоминали ( здесь и здесь )
👀LINK
Уверен, вы все перед сном задавались вопросом - а что происходит сегодня с эволюционными алгоритмами ?
Так вот, они не стояли на месте, и смогли придумать такие штучки, которые эволюционным путем подбирают архитектуру сети (ее топологию - между какими вершинами должна присутствовать связь в случае млп, которые из себя представляют) и соответствующие веса для нейронки
Зачем это надо? поскольку топология сети в данном случае тоже не зафиксирована, то такие алгоритмы предоставляют нам более богатый класс моделей-аппроксиматоров, в отличие от классического дип лернинга. Все это, в общем и целом, называется NeuroEvolution of Augmenting Topologies (NEAT)
Но! Это все происходит очень медленно - выстраивание или разрушение одной связи между произвольными вершинами влияет в целом на всю архитектуру сети, а потому и подбор происходит последовательно, что очень жестко отталкивает - легче 100500 раз прогнать обычные нейронки за это время на гпу и решить задачу
Но Авторы решили преодолеть данный питфолл, перебросив NEAT на гпу - для этого им пришлось выразить изменение топологии (блин так умно звучит) в тензоры и операции над ними. Получив это, можно уже пользоваться имеющимися модулями, которые позволяют параллелить тензоры.
И у них это получилось! Теперь есть жесткая либа, она позволяет выстраивать “млпшки” с произвольной архитектурой. Не факт, что это сильно пойдет в народ и вообще побьет дефолт сетап, но мы можем такое сделать! пути ресерча неисповедимы
👀LINK
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥2🥱1
The Hedgehog & the Porcupine: Expressive Linear Attentions with Softmax Mimicry
жиза при работе с трансформерами - не влезли по длине последовательности, ограничиваем видимость модели (и в частности аттеншна)😟
есть относительно давняя альтернатива - линейный аттеншн. ведь в классическом варианте у нас квадратичная сложность по вычислениям относительно длины последовательности, а эта идейка позволяет получить в линию по длине последовательности
а как? та давайте просто заменим софтмакс на dot product между какими-то фичами от query & key. опа - и все так просто. а в чем тогда подвох?
а что же это собственно за фичи? непонятно как получить такие, которые не будут уступать по результату софтмаксу
авторы супер просто и красиво решили эту идею - они заметили, что у прошлых вариаций
- в картах линейного аттеншна отсутствуют места с низкой энтропией - нету конкретных голов, которые определяют релевантные токены чисто для себя, а остальные игнорируют. везде получается непонятность и нечеткая картина
- дот продакт между q, k преобразованиями необязательно монотонен с весами аттеншнов, хотя должно быть полное соответствие в этом плане (что контринтуитивно, поскольку аттеншн веса и выстраиваются исходя из соответствий между ключами и значениями)
йо, и решается это не так сложно - зачем запариваться над тем, какими должны быть эти фичи над q & v, когда мы их можем представить в виде млпшек, а обучать будем так, чтобы аутпуты линейного аттна соответствовали классическому аттеншну
напоминает knowledge distillation, isn’t it? это оно и есть
👀LINK
RuntimeError: CUDA error: out of memory. God please noжиза при работе с трансформерами - не влезли по длине последовательности, ограничиваем видимость модели (и в частности аттеншна)
есть относительно давняя альтернатива - линейный аттеншн. ведь в классическом варианте у нас квадратичная сложность по вычислениям относительно длины последовательности, а эта идейка позволяет получить в линию по длине последовательности
а как? та давайте просто заменим софтмакс на dot product между какими-то фичами от query & key. опа - и все так просто. а в чем тогда подвох?
а что же это собственно за фичи? непонятно как получить такие, которые не будут уступать по результату софтмаксу
авторы супер просто и красиво решили эту идею - они заметили, что у прошлых вариаций
- в картах линейного аттеншна отсутствуют места с низкой энтропией - нету конкретных голов, которые определяют релевантные токены чисто для себя, а остальные игнорируют. везде получается непонятность и нечеткая картина
- дот продакт между q, k преобразованиями необязательно монотонен с весами аттеншнов, хотя должно быть полное соответствие в этом плане (что контринтуитивно, поскольку аттеншн веса и выстраиваются исходя из соответствий между ключами и значениями)
йо, и решается это не так сложно - зачем запариваться над тем, какими должны быть эти фичи над q & v, когда мы их можем представить в виде млпшек, а обучать будем так, чтобы аутпуты линейного аттна соответствовали классическому аттеншну
напоминает knowledge distillation, isn’t it? это оно и есть
👀LINK
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
❤2👀1
Unleashing the Power of Pre-trained Language Models for Offline Reinforcement Learning
мы уже упоминали о супер возможностях ЛЛМок в домене рля (здесь и здесь)
авторы не оставили это дело и решили добить такой сетап, заставить его перебть существующие классические рл алгоритмы - и на некоторых тасках такое получилось, да и к тому же намного меньше данных надо (уфф а для рл это супер круто)
и получилось у них это при сочетании следующего
- в качестве претрена взяли трансформер который авторегрессионно моделировал английскую википедию
- поменяли начальные и конечные модули, которые энкодят и декодят токены слов, на млпшки, работающие с состояниями-ревардами-действиями
- обучали как DT при помощи ЛоРЫ
- оставили доп лосс на языковую составляющую
последний пункт особенно интересен - ведь без него результаты хуже. и почему так? более плавная смена подпространства в пространстве параметров? или наблюдается связь между языком и рл данными? или сохраняется индуктивный биас?
или отвечает за это все нечто подобное длани Господней, парящей над миром? 😭
👀LINK
мы уже упоминали о супер возможностях ЛЛМок в домене рля (здесь и здесь)
авторы не оставили это дело и решили добить такой сетап, заставить его перебть существующие классические рл алгоритмы - и на некоторых тасках такое получилось, да и к тому же намного меньше данных надо (уфф а для рл это супер круто)
и получилось у них это при сочетании следующего
- в качестве претрена взяли трансформер который авторегрессионно моделировал английскую википедию
- поменяли начальные и конечные модули, которые энкодят и декодят токены слов, на млпшки, работающие с состояниями-ревардами-действиями
- обучали как DT при помощи ЛоРЫ
- оставили доп лосс на языковую составляющую
последний пункт особенно интересен - ведь без него результаты хуже. и почему так? более плавная смена подпространства в пространстве параметров? или наблюдается связь между языком и рл данными? или сохраняется индуктивный биас?
👀LINK
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
😁3👀1
Transformers learn to implement preconditioned gradient descent for in-context learning
Все знают про чудеса ин-контекст лернинга трансформеров. Более общим образом, если вы зададите в промпте последовательность, из которой можно вычленить какую-либо тенденцию, то моделька скорее всего сможет ее найти и реализовать на новом примере
В теории изучения ин-контекста часто проводят анализ на уровне линейной регрессии и семплов из нее. так вот, если вы в промпт зададите последовательность итераций градиентного спуска, то трансформер сможет ее повторить и спуститься в итоге к оптимуму
Но что если просто подавать тренировочные семплы, как любому супервайзд алгоритму? сможет ли трансформер на инференсе спуститься к оптимуму на произвольных данных, зная, что примеры определяются благодаря линейной функции?
Как оказывается - да. если обучать модель просто на задачу регрессии, то окажется, что внутри трансформер с L слоями производит L итераций (предусловленного предыдущей частью промпта) градиентного спуска, достигая оптимума или критической точки, в зависимости от разброса и входных данных (к которым он тоже по сути адаптируется)
Навевает много размышлений о том, как именно тогда получается обучившийся результат моделей - в соответствии с наименьшим сопротивлением (относительно архитектуры модели), но и так же в соответствии с теми алгоритмами, которые независимо от трансформера придумал человек 🤔
Кстати говоря, все эти теоретические выкладки произведены для линейного аттеншна. Если применять классический, то результат ухудшается. Но это только для линейной регрессии, а для реальных или более сложных задач - не факт 😈
👀LINK
Все знают про чудеса ин-контекст лернинга трансформеров. Более общим образом, если вы зададите в промпте последовательность, из которой можно вычленить какую-либо тенденцию, то моделька скорее всего сможет ее найти и реализовать на новом примере
В теории изучения ин-контекста часто проводят анализ на уровне линейной регрессии и семплов из нее. так вот, если вы в промпт зададите последовательность итераций градиентного спуска, то трансформер сможет ее повторить и спуститься в итоге к оптимуму
Но что если просто подавать тренировочные семплы, как любому супервайзд алгоритму? сможет ли трансформер на инференсе спуститься к оптимуму на произвольных данных, зная, что примеры определяются благодаря линейной функции?
Как оказывается - да. если обучать модель просто на задачу регрессии, то окажется, что внутри трансформер с L слоями производит L итераций (предусловленного предыдущей частью промпта) градиентного спуска, достигая оптимума или критической точки, в зависимости от разброса и входных данных (к которым он тоже по сути адаптируется)
Навевает много размышлений о том, как именно тогда получается обучившийся результат моделей - в соответствии с наименьшим сопротивлением (относительно архитектуры модели), но и так же в соответствии с теми алгоритмами, которые независимо от трансформера придумал человек 🤔
Кстати говоря, все эти теоретические выкладки произведены для линейного аттеншна. Если применять классический, то результат ухудшается. Но это только для линейной регрессии, а для реальных или более сложных задач - не факт 😈
👀LINK
🤯4👀2
HyperLLaVA: Dynamic Visual and Language Expert Tuning for Multimodal Large Language Models
Yet another MLLM, but with stuff from 2017🔕
LLaVa у нас использует статичные параметры для мэппинга между картинками и текстом. Тут в статье авторы обмазались гиперсетями, чтобы делать динамические фичи
Есть два модуля: картиночный и текстовый эксперт😓 . Эксперты эти представляют из себя гиперсети, которые генерируют параметры сети для динамически меняющихся эмбеддингов. Такого эксперта вставляются на каждом слое проектора для картинок, и обучают на фичах конкретного слоя. Сами гиперсети генерят параметры для upsample и downsample модулей, по сути имитируя адаптер
Языковой эксперт (такой же адаптер с гиперсетью) вставляется в промежуточный слой LLM и оперирует на фичах после аттеншена и RMS нормализации
На бенчмарках бьет ллаву 1.5. Также пишут, что языкового эксперта полезно вставлять во вторую половину слоев языковой модели, так как в начале есть интуиция, что по началу в текстовых фичах не хватает инфу для эффективного гайденса динамических модулей
LINK 👀
Yet another MLLM, but with stuff from 2017
LLaVa у нас использует статичные параметры для мэппинга между картинками и текстом. Тут в статье авторы обмазались гиперсетями, чтобы делать динамические фичи
Есть два модуля: картиночный и текстовый эксперт
Языковой эксперт (такой же адаптер с гиперсетью) вставляется в промежуточный слой LLM и оперирует на фичах после аттеншена и RMS нормализации
На бенчмарках бьет ллаву 1.5. Также пишут, что языкового эксперта полезно вставлять во вторую половину слоев языковой модели, так как в начале есть интуиция, что по началу в текстовых фичах не хватает инфу для эффективного гайденса динамических модулей
LINK 👀
Please open Telegram to view this post
VIEW IN TELEGRAM
❤2🔥2
Transformers Learn Temporal Difference Methods for In-Context Reinforcement Learning
И снова теория! и снова рл! и снова теория ин-контекст рл! на этот раз дополняющая возможности трансформера еще круче
пожалуй, самый обширный и результативный пласт рл методов составляют Temporal Difference алгоритмы. обучаются они итеративно, наподобие градиентного спуска, но это не он. это полу-градиентные методы, поскольку берется не вся производная в уравнении Беллмана обучаемой функции.
Авторы показывают (один из них, кстати, работал и над этой статьей), что трансформер может вопроизвести и их! при том не на одной таске, а на многих, а в последствии и обобщиться на те, которые не видел
И он не просто может, а именно и воспроизводит их во время обучения. при том могут воспроизвести не только TD, но и
- residual gradient (когда берем полный градиент в уравнении Беллмана)
- TD(lambda) - взвешенное среднее между обычным TD и Monte Carlo Policy Evaluation с полным вычислением ретернов
- недисконтированный случай ревардов - Average Reward TD
Стоит отметить, что в качестве данных они принимают не MDP, а Markov Reward Process - убирают действия из уравнений, чтобы все зависело только от состояний. облегчили себе работу, поскольку статья нацелена на моделирование трансформером value function, а не актора/control algorithm + анализ опять проведен над линейным аттеншеном. а что будет дальше - не знаем, но скорее всего будет еще жарче 😈
👀LINK
И снова теория! и снова рл! и снова теория ин-контекст рл! на этот раз дополняющая возможности трансформера еще круче
пожалуй, самый обширный и результативный пласт рл методов составляют Temporal Difference алгоритмы. обучаются они итеративно, наподобие градиентного спуска, но это не он. это полу-градиентные методы, поскольку берется не вся производная в уравнении Беллмана обучаемой функции.
Авторы показывают (один из них, кстати, работал и над этой статьей), что трансформер может вопроизвести и их! при том не на одной таске, а на многих, а в последствии и обобщиться на те, которые не видел
И он не просто может, а именно и воспроизводит их во время обучения. при том могут воспроизвести не только TD, но и
- residual gradient (когда берем полный градиент в уравнении Беллмана)
- TD(lambda) - взвешенное среднее между обычным TD и Monte Carlo Policy Evaluation с полным вычислением ретернов
- недисконтированный случай ревардов - Average Reward TD
👀LINK
❤2👍2
rizzearch
Transformers Learn Temporal Difference Methods for In-Context Reinforcement Learning И снова теория! и снова рл! и снова теория ин-контекст рл! на этот раз дополняющая возможности трансформера еще круче пожалуй, самый обширный и результативный пласт рл методов…
А остальные обзоры на статьи по In-context RL вы можете найти с нашим дайджестом!
А для тех, кто хочет разобраться в базе рл, незаменимым творением будет учебник Саттона и Барто по фундаментальным основам области
А для тех, кто хочет разобраться в базе рл, незаменимым творением будет учебник Саттона и Барто по фундаментальным основам области
❤🔥3
Linear Transformers with Learnable Kernel Functions are Better In-Context Models
возвращаясь к линейным аттеншнам (мы уже писали про классную статью об этом), наши ребята смогли улучшить базированную (based) идею, которая до этого считалась что-то типа классикой
итак - в линейном аттеншне тем или иным образом с feature map’ами стараются аппроксимировать оригинальный аттеншн, где есть возведение экспоненты в степень. Ну и based делал это через разложение в тейлора до второй степени. и было круто
все бы ничего - только экспонента на то и экспонента, что не парабола. откидываем серьезную часть того, что называется о малое (или что-то типо того я чет уже не помню), а это сильно влияет во время оптимизации - разные точки экстремума, манера возрастания/убывания и все такое
но авторы решили оч круто это - не изменили квадратичный кернел, а просто аргумент начали подавать туда другой - с обучаемым аффинным преобразованием (который выражен в виде леернормы, пушто до этого увидели благоприятность нормализации данных)
и ко всему прочему есть и код - и хф, и все-все
👀LINK
возвращаясь к линейным аттеншнам (мы уже писали про классную статью об этом), наши ребята смогли улучшить базированную (based) идею, которая до этого считалась что-то типа классикой
итак - в линейном аттеншне тем или иным образом с feature map’ами стараются аппроксимировать оригинальный аттеншн, где есть возведение экспоненты в степень. Ну и based делал это через разложение в тейлора до второй степени. и было круто
все бы ничего - только экспонента на то и экспонента, что не парабола. откидываем серьезную часть того, что называется о малое (или что-то типо того я чет уже не помню), а это сильно влияет во время оптимизации - разные точки экстремума, манера возрастания/убывания и все такое
но авторы решили оч круто это - не изменили квадратичный кернел, а просто аргумент начали подавать туда другой - с обучаемым аффинным преобразованием (который выражен в виде леернормы, пушто до этого увидели благоприятность нормализации данных)
и ко всему прочему есть и код - и хф, и все-все
👀LINK
❤6