SequenceMatch: Imitation Learning for Autoregressive Sequence Modelling with Backtracking
авторы очень ясно подняли вопрос накопительной ошибки (как снежный ком) у авторегрессионных языковых моделей: если в какой-то момент на инференсе модель выдает оод относительно трейн данных, то дальше все идет по накатанной
если переформулировать вопрос генерации текстовых последовательностей как марковский процесс принятия решений (MDP, выглядит уже как тренд, потому что появлялось и здесь), то можно использовать наработки из imitation learning’a, которые минимизируют другие дивергенции, не KL, штрафующие оод выходы модели более жестко
И их можно использовать и в нлп таким образом - в этой работе используется хи-квадрат дивергенция, и не просто между распределением модели и данных, а между распределением модели и средним арифметическим обоих
Furthermore, авторы ввели новый токен, который значит backspace - если модель поняла, что надо откатиться, то она может это сделать ⇒ для этого надо было подправить процесс генерации и маскирования + это не вызывает проблем с KV кешем, просто роллимся назад если что
по результатам обгоняет стандартный сетап с Maxiumum Likelihood Estimation (который соответствует КЛ дивергенции) на генерации текста и арифметике, но с небольшим оверхедом из-за возможности бекапаться
👀LINK
авторы очень ясно подняли вопрос накопительной ошибки (как снежный ком) у авторегрессионных языковых моделей: если в какой-то момент на инференсе модель выдает оод относительно трейн данных, то дальше все идет по накатанной
если переформулировать вопрос генерации текстовых последовательностей как марковский процесс принятия решений (MDP, выглядит уже как тренд, потому что появлялось и здесь), то можно использовать наработки из imitation learning’a, которые минимизируют другие дивергенции, не KL, штрафующие оод выходы модели более жестко
И их можно использовать и в нлп таким образом - в этой работе используется хи-квадрат дивергенция, и не просто между распределением модели и данных, а между распределением модели и средним арифметическим обоих
Furthermore, авторы ввели новый токен, который значит backspace - если модель поняла, что надо откатиться, то она может это сделать ⇒ для этого надо было подправить процесс генерации и маскирования + это не вызывает проблем с KV кешем, просто роллимся назад если что
по результатам обгоняет стандартный сетап с Maxiumum Likelihood Estimation (который соответствует КЛ дивергенции) на генерации текста и арифметике, но с небольшим оверхедом из-за возможности бекапаться
👀LINK
👍4❤1
Model Tells You What to Discard: Adaptive KV Cache Compression for LLMs
We think, многие пользовались KV кешем (особенно при использовании флеш аттна)
тем не менее - при увеличении размера модели и длины последовательности для трансформера кеш тоже сильно по памяти занимает на девайсе
И авторы призадумались и увидели, что не все стоит хранить в кеше (идея синонимична с этим творением)
а потому они предложили 5 видов компрессии кеширования
- хранить в кеше, относящееся к специальным токенам (<s>, [INST] etc.)
- пунктуация - . , ?
- long-range контекст
- самые частые токены в последовательностях (называется Heavy Hitter, к чему есть вопросы)
- комбинация из вышеперечисленного
и вот как раз вопрос по поводу Heavy Hitter - если хранить только самые частые токены, то как решать задачи типа needle in a haystack, где иголка будет представлять из себя редкий токен? какой вообще резон такое делать, кроме как по памяти сэкономить, если это жоско портит потенциал модели (я действительно не смекаю)
по псевдокоду алгоритмов не до конца понятно как именно это имплементировать ( а код они кончено не приложили ), но видимо если почитать предыдущие работы, то можно разобраться (не оч круто для статьи с таким нарративом)
потенциал крутой - интересно, как такое скомбинировать квантизацией/дистилляцией и с другими видами аттеншна типа grouped-query, чтобы повысить эффективность еще поболе да и применимость в том числе
👀LINK
We think, многие пользовались KV кешем (особенно при использовании флеш аттна)
тем не менее - при увеличении размера модели и длины последовательности для трансформера кеш тоже сильно по памяти занимает на девайсе
И авторы призадумались и увидели, что не все стоит хранить в кеше (идея синонимична с этим творением)
а потому они предложили 5 видов компрессии кеширования
- хранить в кеше, относящееся к специальным токенам (<s>, [INST] etc.)
- пунктуация - . , ?
- long-range контекст
- самые частые токены в последовательностях (называется Heavy Hitter, к чему есть вопросы)
- комбинация из вышеперечисленного
и вот как раз вопрос по поводу Heavy Hitter - если хранить только самые частые токены, то как решать задачи типа needle in a haystack, где иголка будет представлять из себя редкий токен? какой вообще резон такое делать, кроме как по памяти сэкономить, если это жоско портит потенциал модели (я действительно не смекаю)
по псевдокоду алгоритмов не до конца понятно как именно это имплементировать ( а код они кончено не приложили ), но видимо если почитать предыдущие работы, то можно разобраться (не оч круто для статьи с таким нарративом)
потенциал крутой - интересно, как такое скомбинировать квантизацией/дистилляцией и с другими видами аттеншна типа grouped-query, чтобы повысить эффективность еще поболе да и применимость в том числе
👀LINK
👍4
Is Value Functions Estimation with Classification Plug-and-play for Offline Reinforcement Learning?
недавно вышла статья от дипмаинд, которая меняет парадигму обучения Q функций в рл - вместо того, чтобы регрессией ее фиттить под уравнение Беллмана, лучший результат получается, если аутпут критика разделить на бины и обучать его посредством классификации
а авторы этой статьи решили проверить, а насколько это верно в оффлайн сеттинге на д4рл - для оффлайн алгоритмов внедрить такую классификацию? (проверяли ReBRAC IQL LB-SAC ) а обучать при помощи HL гаусса
что получилось?
- лучше перформанс по сравнению с сота решениями
- в важных местах стабилизировался результат (на том же AntMaze критик ребрака перестал расходиться, в то же время на маленьких датасетах оверфит на адроите)
- лб сак стал хуже на горизонте всех тасок, как и iql (с лб саком может быть связано из-за размера ансамбля)
- нету масштабирования для МЛП, хотя в изначальной папире можно масштабировать резнет и трансформер (скорее всего просто проблема млп)
куча табличек с расчетами (которые получились не без помощи джакса), которые не дают практически поводов сомневаться в эмпирических выводах авторов + чистый код. (и даже есть EOP для гиперов)
Явного ответа нет, присутствует ли улучшение - в этом и ресерч, панацея редко когда придумывается
один из примеров того, как следует писать текст, проводить эксперименты и репортить результаты из них + предоставлять воспроизводимый и понятный код
👀LINK
недавно вышла статья от дипмаинд, которая меняет парадигму обучения Q функций в рл - вместо того, чтобы регрессией ее фиттить под уравнение Беллмана, лучший результат получается, если аутпут критика разделить на бины и обучать его посредством классификации
а авторы этой статьи решили проверить, а насколько это верно в оффлайн сеттинге на д4рл - для оффлайн алгоритмов внедрить такую классификацию? (проверяли ReBRAC IQL LB-SAC ) а обучать при помощи HL гаусса
что получилось?
- лучше перформанс по сравнению с сота решениями
- в важных местах стабилизировался результат (на том же AntMaze критик ребрака перестал расходиться, в то же время на маленьких датасетах оверфит на адроите)
- лб сак стал хуже на горизонте всех тасок, как и iql (с лб саком может быть связано из-за размера ансамбля)
- нету масштабирования для МЛП, хотя в изначальной папире можно масштабировать резнет и трансформер (скорее всего просто проблема млп)
куча табличек с расчетами (которые получились не без помощи джакса), которые не дают практически поводов сомневаться в эмпирических выводах авторов + чистый код. (и даже есть EOP для гиперов)
Явного ответа нет, присутствует ли улучшение - в этом и ресерч, панацея редко когда придумывается
один из примеров того, как следует писать текст, проводить эксперименты и репортить результаты из них + предоставлять воспроизводимый и понятный код
👀LINK
🔥3❤1
Think before you speak: Training Language Models With Pause Tokens
yet another simple idea, которая может иметь шансы на успех
а кто вам сказал, что ллм не надо хотя бы на йоту призадуматься и подумать о том, что она генерирует? звучит как какое-то ущемление🥴
ну а авторы это объясняют так - порой выгодно откладывать генерацию модели, если за это время она сможет как-то по-разному обработать инпут (и если по-разному отработает аттеншн например)
реализуют они это при помощи токена паузы, который вставляют определенное гипером количество раз (?) - тогда происходит другой пересчет, нежели без этого токена (логично) и, возможно, это помогает лучше ллм генерировать то, что она генерирует (вижу в этом аналогию с медленным мышлением по Канеману)
а обучают с нуля и файнтюнят такую идею как можно более прямым образом - вставляют на рандоме этот токен в данные, игнорируют вывод, который на нем делает модель (как при инференсе) и обучают вуаля
еще большой вопрос вызывает, как именно аппендятся паузы на инференсе - судя по алгоритму выглядит так, как будто на каждом шаге в конец последовательности они вставляют определенное количество пауз. звучит шокирующе (почему не попробовать на определении какого-то скора выдавать паузу, чтобы сделать перерасчет), но если работает, то let it work
показывают улучшение на QA и ризонинг сетапах
жаль, что кода нет, а по мне выглядит очень прикольно
👀LINK
yet another simple idea, которая может иметь шансы на успех
а кто вам сказал, что ллм не надо хотя бы на йоту призадуматься и подумать о том, что она генерирует? звучит как какое-то ущемление
ну а авторы это объясняют так - порой выгодно откладывать генерацию модели, если за это время она сможет как-то по-разному обработать инпут (и если по-разному отработает аттеншн например)
реализуют они это при помощи токена паузы, который вставляют определенное гипером количество раз (?) - тогда происходит другой пересчет, нежели без этого токена (логично) и, возможно, это помогает лучше ллм генерировать то, что она генерирует (вижу в этом аналогию с медленным мышлением по Канеману)
а обучают с нуля и файнтюнят такую идею как можно более прямым образом - вставляют на рандоме этот токен в данные, игнорируют вывод, который на нем делает модель (как при инференсе) и обучают вуаля
еще большой вопрос вызывает, как именно аппендятся паузы на инференсе - судя по алгоритму выглядит так, как будто на каждом шаге в конец последовательности они вставляют определенное количество пауз. звучит шокирующе (почему не попробовать на определении какого-то скора выдавать паузу, чтобы сделать перерасчет), но если работает, то let it work
показывают улучшение на QA и ризонинг сетапах
жаль, что кода нет, а по мне выглядит очень прикольно
👀LINK
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
🤔6👍2🤯2
LoRA Learns Less and Forgets Less
все любят лорку, но есть интуиция, что она может выдавать перформанс похуже, чем если тюнить все параметры - и авторы решили это выяснить количественно
по результатам на датасетах по коду и математике, лора похуже выступает по сравнению с полным файнтюном, но при этом (скорее всего, неудивительно) у нее лучше с забыванием трейн последовательностей и, как следствие, более разнообразный инференс + лора лучше в регуляризацию и более чувствительна к гиперам
да, многое (если не все) из этого было и интуитивно понятно еще с самого рождения лоры, но теперь у нас есть эта работа в качестве эмпирического доказательства
👀LINK
все любят лорку, но есть интуиция, что она может выдавать перформанс похуже, чем если тюнить все параметры - и авторы решили это выяснить количественно
по результатам на датасетах по коду и математике, лора похуже выступает по сравнению с полным файнтюном, но при этом (скорее всего, неудивительно) у нее лучше с забыванием трейн последовательностей и, как следствие, более разнообразный инференс + лора лучше в регуляризацию и более чувствительна к гиперам
да, многое (если не все) из этого было и интуитивно понятно еще с самого рождения лоры, но теперь у нас есть эта работа в качестве эмпирического доказательства
👀LINK
❤8👍1
Diversifying Deep Ensembles: A Saliency Map Approach for Enhanced OOD Detection, Calibration, and Accuracy
Ансамбли показывают отличные результаты при оценке неопределенности и детекции OOD семплов. Но как еще больше повысить их производительность?🤔
Ранее, метод DICE ввел условную избыточную состязательную оценку, чтобы сбалансировать разнообразие и точность отдельных моделей. В новой статье про диверфисикацию ансамблей через карты внимания авторы продолжают это направление работы с помощью своего подхода
Метод называется Saliency-Diversified Deep Ensemble (SDDE). Минимизируя сходство между картами внимания📹 разных моделей в ансамбле, мы заставляем модели использовать для предсказаний разные признаки. Все супер просто и с минимальным оверхедом на тренировку
SDDE устанавливает SOTA🔥 в OOD детекции, сохраняя высокую точность и калибровку на ImageNet и CIFAR10/100. Точность зачастую даже лучше чем у обычных ансамблей, что дает право использовать метод в обычной классификации. Вообще хайп
Дополнительно, в сочетании с OOD данными на тренировке как в Outlier Exposure, производительность SDDE становится еще лучше
Код есть, что всегда круто
👀 LINK
🌟 CODE
Ансамбли показывают отличные результаты при оценке неопределенности и детекции OOD семплов. Но как еще больше повысить их производительность?
Ранее, метод DICE ввел условную избыточную состязательную оценку, чтобы сбалансировать разнообразие и точность отдельных моделей. В новой статье про диверфисикацию ансамблей через карты внимания авторы продолжают это направление работы с помощью своего подхода
Метод называется Saliency-Diversified Deep Ensemble (SDDE). Минимизируя сходство между картами внимания
SDDE устанавливает SOTA
Дополнительно, в сочетании с OOD данными на тренировке как в Outlier Exposure, производительность SDDE становится еще лучше
Код есть, что всегда круто
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥3👏3❤🔥2
Efficient Streaming Language Models with Attention Sinks
как оказывается, есть интересны phenomenon в механизме внимания - предположим, у нас есть некоторое количество баланса/бюджета/энергии, которое в аттеншне распределяется по токенам (и после софтмакса этот бюджет суммируется в 1).
и в идеальном мире мы представляем, что у нас все распределяется адекватно, иначе можно перефразировать Священное Писание и выразиться так: каждому токену воздастся за релевантный контекст его🤔
но на практике наблюдаем немного другое - на более глубоких слоях тот “фиксированный бюджет” оказывается избыточным, а его надо куда-то сливать в системе, ну и в нейронке это сливается в первые токены (в основном в первый)
и вот авторы предлагают стабилизировать ситуацию:
- не меняя первый токен из всей длиннющей последовательности, по которой мы привыкли пробегаться трансформером при помощи скользящего окна
- менять первый токен в инпуте, который мы скармливаем модели, вообще на что угодно (например на \n)
- сделать обучаемый фиктивный токен, который будет принимать в себя всю вот эту избыточную энергию аттеншна и ставить его всегда на первое место (в обратном случае работает хуже)
все пункты выше можно назвать attention sinks ⇒ стабилизирует инференс, да и в скорости нехилый прирост дает на стриминговом сетапе
есть только момент, который я не могу понять в папире -на последней картинке параграф, где идет пояснение про поз энкодинг в кв кэше. там подаются в общем относительные позиции внутри кеша.
оттого и встает вопрос - а есть ли смысл в принципе создавать вот эти якоря для аттеншна, если можно сразу вот так нативно исправить позицию в позиционной кодировке для кв кеша?
по идее тогда свойства сохранятся, ведь, как сами показали авторы, в аттеншн синке больше влияет позиция, чем сам токен (оттого и вместо этого токена можно вставить что угодно). могу быть не прав, но хз-хз
👀LINK
как оказывается, есть интересны phenomenon в механизме внимания - предположим, у нас есть некоторое количество баланса/бюджета/энергии, которое в аттеншне распределяется по токенам (и после софтмакса этот бюджет суммируется в 1).
и в идеальном мире мы представляем, что у нас все распределяется адекватно, иначе можно перефразировать Священное Писание и выразиться так: каждому токену воздастся за релевантный контекст его
но на практике наблюдаем немного другое - на более глубоких слоях тот “фиксированный бюджет” оказывается избыточным, а его надо куда-то сливать в системе, ну и в нейронке это сливается в первые токены (в основном в первый)
и вот авторы предлагают стабилизировать ситуацию:
- не меняя первый токен из всей длиннющей последовательности, по которой мы привыкли пробегаться трансформером при помощи скользящего окна
- менять первый токен в инпуте, который мы скармливаем модели, вообще на что угодно (например на \n)
- сделать обучаемый фиктивный токен, который будет принимать в себя всю вот эту избыточную энергию аттеншна и ставить его всегда на первое место (в обратном случае работает хуже)
все пункты выше можно назвать attention sinks ⇒ стабилизирует инференс, да и в скорости нехилый прирост дает на стриминговом сетапе
есть только момент, который я не могу понять в папире -
оттого и встает вопрос - а есть ли смысл в принципе создавать вот эти якоря для аттеншна, если можно сразу вот так нативно исправить позицию в позиционной кодировке для кв кеша?
по идее тогда свойства сохранятся, ведь, как сами показали авторы, в аттеншн синке больше влияет позиция, чем сам токен (оттого и вместо этого токена можно вставить что угодно). могу быть не прав, но хз-хз
👀LINK
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥4👍2🐳2❤1🍌1