The AdEMAMix Optimizer: Better, Faster, Older
периодически появляются новые оптимизаторы, которые не выглядят полной дичью и что-то да могут
вот тут от эпл возможно как раз такое: они нам напоминают, что в адаме первая бета интуитивно отвечает за аккумуляцию предыдущих градиентов. ну это не только интуитивно, а и математически так, но не суть (например, при beta=0.9 половина веса при апдейте падает на 6 предыдущих градиентов, при beta=0.9999 это число уже становится 6930)
но есть нюанс - хорошо, что помним про предыдущие давние градиенты и накапливаем момент, только желательно еще хорошо чувствовать, что происходит с недавними градиентами и недавним состоянием системы, математически выражаясь. и одновременно выдерживать эти 2 момента, как оказывается по экспериментам авторов, трудно для адама и адамв
потому авторы и добавляют доп момент в числителе, который просто еще один ЕМА градиентов (при том он еще не скейлится на бету как другие моменты для пущей аккумуляции) ⇒ получаем AdEMAMix
с ним батчи забываются намного медленее, при том батчи в недавнем прошлом продолжают влиять на лосс довольно сильно, а значит и сходимость должна быть быстрее. вроде идея норм, но так хорошо она не работает в начале трейна из-за высокой степени нестабильности ⇒ добавляют еще прикольные шедулеры под гиперы нового момента, чтобы с этим справиться
смущает разве что очень маленький скейл моделек, максимальный размер - 1.3B. что будет происходить на 7б хотя бы уже непонятно (взять хотя бы тот факт, что придется менять гиперы под этот новый момент, а не ставить его равным привычным значениям другого параметра с другим смыслом)
👀LINK
периодически появляются новые оптимизаторы, которые не выглядят полной дичью и что-то да могут
вот тут от эпл возможно как раз такое: они нам напоминают, что в адаме первая бета интуитивно отвечает за аккумуляцию предыдущих градиентов. ну это не только интуитивно, а и математически так, но не суть (например, при beta=0.9 половина веса при апдейте падает на 6 предыдущих градиентов, при beta=0.9999 это число уже становится 6930)
но есть нюанс - хорошо, что помним про предыдущие давние градиенты и накапливаем момент, только желательно еще хорошо чувствовать, что происходит с недавними градиентами и недавним состоянием системы, математически выражаясь. и одновременно выдерживать эти 2 момента, как оказывается по экспериментам авторов, трудно для адама и адамв
потому авторы и добавляют доп момент в числителе, который просто еще один ЕМА градиентов (при том он еще не скейлится на бету как другие моменты для пущей аккумуляции) ⇒ получаем AdEMAMix
с ним батчи забываются намного медленее, при том батчи в недавнем прошлом продолжают влиять на лосс довольно сильно, а значит и сходимость должна быть быстрее. вроде идея норм, но так хорошо она не работает в начале трейна из-за высокой степени нестабильности ⇒ добавляют еще прикольные шедулеры под гиперы нового момента, чтобы с этим справиться
смущает разве что очень маленький скейл моделек, максимальный размер - 1.3B. что будет происходить на 7б хотя бы уже непонятно (взять хотя бы тот факт, что придется менять гиперы под этот новый момент, а не ставить его равным привычным значениям другого параметра с другим смыслом)
👀LINK
🔥5 3
Discovering Preference Optimization Algorithms with and for Large Language Models
в последнее время в алайменте можно было заметить тенденцию в реформулировке лосса - от перехода с рлхф к дпо и орпо, вплоть до взвешенно адаптивного тюна таких лоссов
авторы подумали-подумали (наверное, недолго) и решили запромптить ллм самой выдавать лоссы лучше
в чем суть? предоставляем цепочку предложенных лоссов с обоснованием, почему именно они выглядят так как выглядят, обучаемся с ним и выдаем модели перформанс фидбек, по которому она себя корректирует. при том если функция лосса не запускается, то этот шаг сохраняется в истории + добавляется трейсбек, по которому надо сделать код рабочим
получилось даже что-то прикольное, несколько осмысленных лоссов гпт-4 да выдала, которые суть взвешенные экспоненциальные и логистические лоссы, к тому же еще и невыпуклые + гиперпараметр бета, который отвечает за кл регуляризацию, начинает вплетать другую интуицию
еще рассказали про прикольные эксперименты в контексте VLM, когда на вход моделька еще видит кривую соответствующего лосса
побаловаться в моменты отчаяния можно, когда уже ничего другое и не работает, ну а если заставить такое выдавать каким-либо образом модель, которую мы и алайним, то это будет что-то сногсшибательное
👀LINK
в последнее время в алайменте можно было заметить тенденцию в реформулировке лосса - от перехода с рлхф к дпо и орпо, вплоть до взвешенно адаптивного тюна таких лоссов
авторы подумали-подумали (наверное, недолго) и решили запромптить ллм самой выдавать лоссы лучше
в чем суть? предоставляем цепочку предложенных лоссов с обоснованием, почему именно они выглядят так как выглядят, обучаемся с ним и выдаем модели перформанс фидбек, по которому она себя корректирует. при том если функция лосса не запускается, то этот шаг сохраняется в истории + добавляется трейсбек, по которому надо сделать код рабочим
получилось даже что-то прикольное, несколько осмысленных лоссов гпт-4 да выдала, которые суть взвешенные экспоненциальные и логистические лоссы, к тому же еще и невыпуклые + гиперпараметр бета, который отвечает за кл регуляризацию, начинает вплетать другую интуицию
еще рассказали про прикольные эксперименты в контексте VLM, когда на вход моделька еще видит кривую соответствующего лосса
побаловаться в моменты отчаяния можно, когда уже ничего другое и не работает, ну а если заставить такое выдавать каким-либо образом модель, которую мы и алайним, то это будет что-то сногсшибательное
👀LINK
❤1
Genie: Generative Interactive Environments
мы уже писали про концепцию world models в рл (тут и тут), которая (как и наверное все другие концепции) может сильно продвинуть область, если получить очень классную модель мира
дипмаинды, кажется, сделали супер крутое - foundation world model, которая по почти любому кадру (картиночному промпту) из интернета способна смоделировать траекторию этой “интерактивной среды”
пайплайн же состоит из трех моделек
- видео токенайзер: ето автоэнкодер, но не простой, а который может обработать видео у которых оч много токенов (вплоть до O(10^4), что бы это ни значило). и это Spatial-Temporal Transformer + VQ-VAE. вдвоем они компрессят входные фреймы в дискретные токены, а ST-Transformer используется в том числе и в декодере во время обучения и инференса для учета временной динамики, а не только пространственной
- модель латентных действий (latent action model, LAM): в себя тоже включает кодбуки VQ-VAE, которые и представляют из себя как раз обучаемые латентные действия. последовательность фреймов при том так же обрабатывается через СТ-Трансформер, а латентное действие является просто аутпутом энкодера, через который надо декодировать следующий фрейм, тем самым выявлять возможности изменения среды (действия). на инференсе же вся эта штука убирается и действия появляются от юзера
- модель динамики: по последовательности закодированных фреймов и последовательности латентных действий показывает, что будет дальше. тут так же фигурирует СТ-Трансформер в MaskGIT (видимо потому что у них он завелся именно этот каузальный трансформер)
в итоге юзер может подать просто кадр, из этого создатся энва, и управлять в ней даже тем, что посчитается юзером. при том уровень моделирования динамики настолько хорош, что в играх эмулируется постепенная смена заднего фона в зависимости от угла наблюдателся - параплакс. а можно подавать как и фотки, так и какие-то ручные наброски с пиксельными кадрами игр
кода правда так и нет, as always, учитывая, что встает очень много вопросов по имплементации - как подбирать размерность латентных действий, как именно юзер подбирает действия, которые хочет совершить (кроме как метода тыка), почему в модели динамики у них сработало только суммирование акшнов с фрейм токенами (конкатенация не сработала, а пробовали ли что-то еще) и прочее-прочее
👀LINK
мы уже писали про концепцию world models в рл (тут и тут), которая (как и наверное все другие концепции) может сильно продвинуть область, если получить очень классную модель мира
дипмаинды, кажется, сделали супер крутое - foundation world model, которая по почти любому кадру (картиночному промпту) из интернета способна смоделировать траекторию этой “интерактивной среды”
пайплайн же состоит из трех моделек
- видео токенайзер: ето автоэнкодер, но не простой, а который может обработать видео у которых оч много токенов (вплоть до O(10^4), что бы это ни значило). и это Spatial-Temporal Transformer + VQ-VAE. вдвоем они компрессят входные фреймы в дискретные токены, а ST-Transformer используется в том числе и в декодере во время обучения и инференса для учета временной динамики, а не только пространственной
- модель латентных действий (latent action model, LAM): в себя тоже включает кодбуки VQ-VAE, которые и представляют из себя как раз обучаемые латентные действия. последовательность фреймов при том так же обрабатывается через СТ-Трансформер, а латентное действие является просто аутпутом энкодера, через который надо декодировать следующий фрейм, тем самым выявлять возможности изменения среды (действия). на инференсе же вся эта штука убирается и действия появляются от юзера
- модель динамики: по последовательности закодированных фреймов и последовательности латентных действий показывает, что будет дальше. тут так же фигурирует СТ-Трансформер в MaskGIT (видимо потому что у них он завелся именно этот каузальный трансформер)
в итоге юзер может подать просто кадр, из этого создатся энва, и управлять в ней даже тем, что посчитается юзером. при том уровень моделирования динамики настолько хорош, что в играх эмулируется постепенная смена заднего фона в зависимости от угла наблюдателся - параплакс. а можно подавать как и фотки, так и какие-то ручные наброски с пиксельными кадрами игр
кода правда так и нет, as always, учитывая, что встает очень много вопросов по имплементации - как подбирать размерность латентных действий, как именно юзер подбирает действия, которые хочет совершить (кроме как метода тыка), почему в модели динамики у них сработало только суммирование акшнов с фрейм токенами (конкатенация не сработала, а пробовали ли что-то еще) и прочее-прочее
👀LINK
🔥3
Retrieval-Augmented Decision Transformer: External Memory for In-Context RL
really cool idea по поводу ин-контекст рл, которую захотелось заимплементить (в том числе оттого, как понятно авторы описали свою идею)
в основном работает интуиция, что чем сложнее среда, тем бОльший контекст нужен модели для перформанса на near-optimal/optimal level (особенно когда речь идет про ПОМДП). и вот тут, как и в нлп, возникает загвоздка - улетаем в требования по памяти. и здесь довольно много есть путей, как такое решать - как костыльные, так и более-менее красивые👀
авторы же попробовали прикрутить индекс датабазу эмбеддингов и получилось очень даже прикольно - но есть нюансы
- будем делать кнн по внешней базе эмбеддингов и затем подавать выданные через кросс аттеншн, окей: откуда взять репрезентативные эмбеддинги? можно претрейнить Decision Transformer, но так же использовать и ЛМки, что очень красиво
- делается это при помощи рандомной матрицы (которая уже использовалась здесь и здесь), чтобы подогнать размерности к хидденам ЛМки
- а эмбеддинги языковых моделей остаются релевантными и для рл данных из-за своей плотной полисемантичности (и потому что первый автор уже разбирался в этом вопросе)
- при этом при контексте модели в С токенов в индекс базе для ретривала сохраняются эмбеддинги подтраекторий длиной 2С, чтобы агент мог так же получать интуицию о последствиях действий в будущем
- ретривятся эмбеддинги по схожести, но так же потом отбираются еще дополнительно по понятию utility, которая может быть связана либо же с повышенным ретерном траектории, либо по проверке того, одинаковая ли таска с траекторией-запросом (query)
в итоге - контекст окна в их методе можно ставить независимо от длины одного эпизода сред + во многих кейсах на голову обгоняет то, что уже есть (а где ин-контекст свойства не наблюдается у предыдущих методов, RA-DT тоже не перформит как хочется)
есть только несколько вопросов - почему на помдп (например в прокгене или мейзраннере) в некоторых местах дпт перформит лучше ад, в то время как дпт заявляется как MDP-like algorithm, может ли это говорить о чем-то другом кроме как того что не совсем правильно завели какой-то из алгосов + на даркруме (мдп) ад лучше по резам чем дпт (здесь предполагаю, что оставили результаты с 2 эпизодами в качестве контекста, в то время как дпт может по теории перформить хоть с single-episode context, а ад из-за способности к помдп нет)
а в общем - и аблации, и ревард обучения сурс алгоритма показали, и гиперы есть, и разные сиды, и код более-менее чистый, и все-все есть, очень вкусно 😋
👀LINK
подслушано здесь
really cool idea по поводу ин-контекст рл, которую захотелось заимплементить (в том числе оттого, как понятно авторы описали свою идею)
в основном работает интуиция, что чем сложнее среда, тем бОльший контекст нужен модели для перформанса на near-optimal/optimal level (особенно когда речь идет про ПОМДП). и вот тут, как и в нлп, возникает загвоздка - улетаем в требования по памяти. и здесь довольно много есть путей, как такое решать - как костыльные, так и более-менее красивые
авторы же попробовали прикрутить индекс датабазу эмбеддингов и получилось очень даже прикольно - но есть нюансы
- будем делать кнн по внешней базе эмбеддингов и затем подавать выданные через кросс аттеншн, окей: откуда взять репрезентативные эмбеддинги? можно претрейнить Decision Transformer, но так же использовать и ЛМки, что очень красиво
- делается это при помощи рандомной матрицы (которая уже использовалась здесь и здесь), чтобы подогнать размерности к хидденам ЛМки
- а эмбеддинги языковых моделей остаются релевантными и для рл данных из-за своей плотной полисемантичности (и потому что первый автор уже разбирался в этом вопросе)
- при этом при контексте модели в С токенов в индекс базе для ретривала сохраняются эмбеддинги подтраекторий длиной 2С, чтобы агент мог так же получать интуицию о последствиях действий в будущем
- ретривятся эмбеддинги по схожести, но так же потом отбираются еще дополнительно по понятию utility, которая может быть связана либо же с повышенным ретерном траектории, либо по проверке того, одинаковая ли таска с траекторией-запросом (query)
в итоге - контекст окна в их методе можно ставить независимо от длины одного эпизода сред + во многих кейсах на голову обгоняет то, что уже есть (а где ин-контекст свойства не наблюдается у предыдущих методов, RA-DT тоже не перформит как хочется)
есть только несколько вопросов - почему на помдп (например в прокгене или мейзраннере) в некоторых местах дпт перформит лучше ад, в то время как дпт заявляется как MDP-like algorithm, может ли это говорить о чем-то другом кроме как того что не совсем правильно завели какой-то из алгосов + на даркруме (мдп) ад лучше по резам чем дпт (здесь предполагаю, что оставили результаты с 2 эпизодами в качестве контекста, в то время как дпт может по теории перформить хоть с single-episode context, а ад из-за способности к помдп нет)
а в общем - и аблации, и ревард обучения сурс алгоритма показали, и гиперы есть, и разные сиды, и код более-менее чистый, и все-все есть, очень вкусно 😋
👀LINK
подслушано здесь
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
Sparse Autoencoders Reveal Temporal Difference Learning in Large Language Models
мы уже писали о том, что трансформер может “ин-контекстно” осуществлять итеративный TD алгоритм, как и градиентный спуск для линрега, так и вообще подобно людям в них осуществляется ассиметричное обновление внутреннего состояния ситуации
уже скорее неудивительно, но такое могут сделать и ллмки (не стоит забывать что они в принципе способны к вычленению полезных паттернов из осмысленной последовательности)
как это решили выяснить авторы? через Sparse Autoencoder над хидден стейтами конкретного внутреннего слоя сетки, что суть просто автоэнкодер с Л1 нормой на энкодер аутпуты - вот вам и разреженность. а учили это все конкретно над резидуалом в слоях модели, поскольку так вроде как легче получить моносемантическое и обособленное множество фичей
на вход модели подавали в виде текстового описания таски и смотрели внутренние представления токенов, которые предшествовали токенам действия → чекаем есть ли вычисления чего-то вроде q функции
в итоге по результатам реварда лламы что-то да выучивают в контексте и повышают награду с течением времени
но так же происходит выучивание не только будущих дисконтированнных ревардов, но и то, что называется state occupancies (близко по понятию к goal-based rl), где ревард можно сформулировать через достижение поставленного стейта. that’s super duper bruh😎
однако авторы решили не углубляться, как именно происходит появление таких обособленных фичей внутри модели - то ли из-за индуктивных голов, то ли еще из-за чего
👀LINK
подслушано здесь
мы уже писали о том, что трансформер может “ин-контекстно” осуществлять итеративный TD алгоритм, как и градиентный спуск для линрега, так и вообще подобно людям в них осуществляется ассиметричное обновление внутреннего состояния ситуации
уже скорее неудивительно, но такое могут сделать и ллмки (не стоит забывать что они в принципе способны к вычленению полезных паттернов из осмысленной последовательности)
как это решили выяснить авторы? через Sparse Autoencoder над хидден стейтами конкретного внутреннего слоя сетки, что суть просто автоэнкодер с Л1 нормой на энкодер аутпуты - вот вам и разреженность. а учили это все конкретно над резидуалом в слоях модели, поскольку так вроде как легче получить моносемантическое и обособленное множество фичей
на вход модели подавали в виде текстового описания таски и смотрели внутренние представления токенов, которые предшествовали токенам действия → чекаем есть ли вычисления чего-то вроде q функции
в итоге по результатам реварда лламы что-то да выучивают в контексте и повышают награду с течением времени
но так же происходит выучивание не только будущих дисконтированнных ревардов, но и то, что называется state occupancies (близко по понятию к goal-based rl), где ревард можно сформулировать через достижение поставленного стейта. that’s super duper bruh
однако авторы решили не углубляться, как именно происходит появление таких обособленных фичей внутри модели - то ли из-за индуктивных голов, то ли еще из-за чего
👀LINK
подслушано здесь
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
👍1
Scaling and evaluating sparse autoencoders
в продолжение темы разреженных автоэнкодеров, опенаи решили отскейлить и улучшить это дело, ибо они довольно удобны для выявления моносемантичных интерпретируемых фичей как в фаундейшн, так и в заалайненных модельках
что они сделали как улучшения:
- заменили л1 регуляризацию на топ-к активацию, которая не зануляет только к самых больших активаций (при том этот выбор численно лучше, тк такое пенальти в принципе склоняло все активации к нулю).
- проверили кросс энтропией и кл дивергенцией релевантны ли моносемантичные получившиеся фичи для языкового моделирования (да, при том при минимизации мсе такой лосс оптимайзится лучше и мсе можно связать с кл дивергенцией через power law)
- добавили доп лосс на реконструкцию при помощи только k’ мертвых латентов
после этого количество мертвых латентов (которые так сильно мешали интерпретировать моносемантичные фичи) снизилось с двух третей от всех параметров до ~7%. да и смогли уследить power laws относительно количества латентов и уровня разреженности (параметра к).
в аппендиксе еще можно найти много важных деталей, по тому как именно и что они делали (ема, градиент клиппинг, изменение эпсилона в адаме, инициализация биаса как геом среднее трейн выборки, в принципе инит других частей модели и тд) + это все сопровождается более-менее хорошим кодом (который подстроен под гпт2) и залипательным визуализатором, который получили от автоэнкодера с 16млн латентами на 40б токенов
большой боттлнек пока составляет как раз уровень разреженности (гипер к), который подбирается вручную - как мы можем понять, если продолжать улучшение этого флоу, то работа в основном будет идти в автоматический подбор этого параметра (через роутинг или мб что похлеще)
👀LINK
в продолжение темы разреженных автоэнкодеров, опенаи решили отскейлить и улучшить это дело, ибо они довольно удобны для выявления моносемантичных интерпретируемых фичей как в фаундейшн, так и в заалайненных модельках
что они сделали как улучшения:
- заменили л1 регуляризацию на топ-к активацию, которая не зануляет только к самых больших активаций (при том этот выбор численно лучше, тк такое пенальти в принципе склоняло все активации к нулю).
- проверили кросс энтропией и кл дивергенцией релевантны ли моносемантичные получившиеся фичи для языкового моделирования (да, при том при минимизации мсе такой лосс оптимайзится лучше и мсе можно связать с кл дивергенцией через power law)
- добавили доп лосс на реконструкцию при помощи только k’ мертвых латентов
после этого количество мертвых латентов (которые так сильно мешали интерпретировать моносемантичные фичи) снизилось с двух третей от всех параметров до ~7%. да и смогли уследить power laws относительно количества латентов и уровня разреженности (параметра к).
в аппендиксе еще можно найти много важных деталей, по тому как именно и что они делали (ема, градиент клиппинг, изменение эпсилона в адаме, инициализация биаса как геом среднее трейн выборки, в принципе инит других частей модели и тд) + это все сопровождается более-менее хорошим кодом (который подстроен под гпт2) и залипательным визуализатором, который получили от автоэнкодера с 16млн латентами на 40б токенов
большой боттлнек пока составляет как раз уровень разреженности (гипер к), который подбирается вручную - как мы можем понять, если продолжать улучшение этого флоу, то работа в основном будет идти в автоматический подбор этого параметра (через роутинг или мб что похлеще)
👀LINK