Transformers need glasses! Information over-squashing in language tasks
мы уже упоминали о том, что трансформеры могут быть чувствительны к чувствительным инпутам, и авторы недалеко отошли от этих выводов, но и заметили еще другое интересно
они выявили нестабильность не на уровне леернормы/весов, как в прошлой работе, а на уровне внутренних репрезентаций токенов. как оказывается, чем длиннее последовательность, тем ближе репрезентации последних токенов становятся друг к другу (и неразличимыми впоследствии. это при условии, что последовательности более-менее похожи, но не одинаковы) + происходит серьезная затычка с флоу информации на последних токенах через декодер, поскольку у них намного меньше путей по прокидыванию этой самой информации по сравнению с более ранними токенами
ну и получаем то, что получаем. на вход идет чувствительная задача ⇒ трансформер точно так же чувствительно (плохо) и неидеально отвечает. при том верно для большого и маленького скейла. эмпирическое подкрепление их теории сделано на 7б модели (в принципе экспы провоили га гемини и гемме)
однако вместе с этими выводами пришли и интересные инсайты
- в трансформере присутствует U-shape тенденция к запоминанию: таска лучше решается, если релевантные для нее токены находятся рядом с началом/концом последовательности
- если “разбавлять” чувствительную последовательность, например, добавлять периодически запятые, то репрезентации становятся более различимыми и все идет smoother
довольно занятно, ибо такие же фичи свойственны и человеческой способности к запоминанию, да и решение с запятыми по сути так же помогает нам не сбиться с адекватного поглощения текстовой информации
👀LINK
мы уже упоминали о том, что трансформеры могут быть чувствительны к чувствительным инпутам, и авторы недалеко отошли от этих выводов, но и заметили еще другое интересно
они выявили нестабильность не на уровне леернормы/весов, как в прошлой работе, а на уровне внутренних репрезентаций токенов. как оказывается, чем длиннее последовательность, тем ближе репрезентации последних токенов становятся друг к другу (и неразличимыми впоследствии. это при условии, что последовательности более-менее похожи, но не одинаковы) + происходит серьезная затычка с флоу информации на последних токенах через декодер, поскольку у них намного меньше путей по прокидыванию этой самой информации по сравнению с более ранними токенами
ну и получаем то, что получаем. на вход идет чувствительная задача ⇒ трансформер точно так же чувствительно (плохо) и неидеально отвечает. при том верно для большого и маленького скейла. эмпирическое подкрепление их теории сделано на 7б модели (в принципе экспы провоили га гемини и гемме)
однако вместе с этими выводами пришли и интересные инсайты
- в трансформере присутствует U-shape тенденция к запоминанию: таска лучше решается, если релевантные для нее токены находятся рядом с началом/концом последовательности
- если “разбавлять” чувствительную последовательность, например, добавлять периодически запятые, то репрезентации становятся более различимыми и все идет smoother
довольно занятно, ибо такие же фичи свойственны и человеческой способности к запоминанию, да и решение с запятыми по сути так же помогает нам не сбиться с адекватного поглощения текстовой информации
👀LINK
❤3
Return-Aligned Decision Transformer
another alternative to улучшить Decision Transformer (который мы упоминали и здесь)
есть проблемка в том, что аттенш не так уж и сильно обращает внимание на ретерн в подаваемом контексте, оттого и могут возникать проблемы при предикте действий, оод, да и в принципе дестабилизация модели при инференсе (и обучении as well)
как это решили авторы? разбили входную последовательность на 2 модальности - returns-to-go + state/action, а не как одна последовательность state-action-return.
после этого применяют то, что они назвали SeqRA & StepRA: по сути это чуть модифицированный кросс аттеншн над 2 модальностями и адаптивная леернорма соответственно. при том оба этих модуля усложняют флоу информации внутри сетки относительно ретерна, ибо эти модули ставят большую на него акцентуацию ⇒ повышается чувствительность к реварду и точность как следствие
чем глобально полезна эта статья? описанный рабочий (по крайней мере по заверениям авторов) метод, как добавить более осмысленную обработку гетерогенных рл данных, ибо часто (и особенно в рл) такое происходит, что не работает то, что работает в остальных областях. например, наивный кросс аттеншн - сделать 3 модальности под state action return - вряд ли работает, иначе авторы бы так не ухищрялись
супер обидно, что они не выложили код, потому что импакт их статьи по сути в том, что они вставили в трансформер блок те модули, стабильность которых крайне сильно зависит от имплементации (и может например не заработать со стандартным nn.LayerNorm из торча, если имплементация на нем, ибо из генеративных сетей есть эвиденс, что без bias’a леернорма и рмснорма работают лучше)
👀LINK
another alternative to улучшить Decision Transformer (который мы упоминали и здесь)
есть проблемка в том, что аттенш не так уж и сильно обращает внимание на ретерн в подаваемом контексте, оттого и могут возникать проблемы при предикте действий, оод, да и в принципе дестабилизация модели при инференсе (и обучении as well)
как это решили авторы? разбили входную последовательность на 2 модальности - returns-to-go + state/action, а не как одна последовательность state-action-return.
после этого применяют то, что они назвали SeqRA & StepRA: по сути это чуть модифицированный кросс аттеншн над 2 модальностями и адаптивная леернорма соответственно. при том оба этих модуля усложняют флоу информации внутри сетки относительно ретерна, ибо эти модули ставят большую на него акцентуацию ⇒ повышается чувствительность к реварду и точность как следствие
чем глобально полезна эта статья? описанный рабочий (по крайней мере по заверениям авторов) метод, как добавить более осмысленную обработку гетерогенных рл данных, ибо часто (и особенно в рл) такое происходит, что не работает то, что работает в остальных областях. например, наивный кросс аттеншн - сделать 3 модальности под state action return - вряд ли работает, иначе авторы бы так не ухищрялись
супер обидно, что они не выложили код, потому что импакт их статьи по сути в том, что они вставили в трансформер блок те модули, стабильность которых крайне сильно зависит от имплементации (и может например не заработать со стандартным nn.LayerNorm из торча, если имплементация на нем, ибо из генеративных сетей есть эвиденс, что без bias’a леернорма и рмснорма работают лучше)
👀LINK
Improving Conversational Abilities of Quantized Large Language Models via Direct Preference Alignment
несмотря на то, что есть супер классные работы по квантизации фаундейшн моделей (и в принципе любых), китайцы нашли частный случай квантизации, где любого (по их интуиции) метода PTQ не будет хватать для нормального качества
и это случай диалоговых моделей - conversational abilities, как показывают авторы, сильно ухудшаются после квантизации. а потому они предлагают по-особому алайнить уже квантизованную версию заалайненной модели
используют стандартный ДПО, только в качестве негативных примеров используются генерации квантизованной версии, а позитивные - генерации модельки в full precision → снижаем шансы попасть в момент accumulating error при авторегрессионной генерации относительно изначальной модельки + дообучаем веса, чтобы разница в численной точности нивелировалась внутри KV кеша
таким образом, без создания доп датасета, получаем более-менее восстановление способностей в диалог (которые не всегда коррелируют с перплексией, которую только и измеряют в вопросе общей квантизации)
прикольная вещь, только нет гарантии, что эта вещь пригодится при том же AQLM. однако забывать про такую идею явно не стоит
👀LINK
несмотря на то, что есть супер классные работы по квантизации фаундейшн моделей (и в принципе любых), китайцы нашли частный случай квантизации, где любого (по их интуиции) метода PTQ не будет хватать для нормального качества
и это случай диалоговых моделей - conversational abilities, как показывают авторы, сильно ухудшаются после квантизации. а потому они предлагают по-особому алайнить уже квантизованную версию заалайненной модели
используют стандартный ДПО, только в качестве негативных примеров используются генерации квантизованной версии, а позитивные - генерации модельки в full precision → снижаем шансы попасть в момент accumulating error при авторегрессионной генерации относительно изначальной модельки + дообучаем веса, чтобы разница в численной точности нивелировалась внутри KV кеша
таким образом, без создания доп датасета, получаем более-менее восстановление способностей в диалог (которые не всегда коррелируют с перплексией, которую только и измеряют в вопросе общей квантизации)
прикольная вещь, только нет гарантии, что эта вещь пригодится при том же AQLM. однако забывать про такую идею явно не стоит
👀LINK
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