PoSE: Efficient Context Window Extension of LLMs via Positional Skip-wise Training
йеп, снова удлиняем контекст до неприлично огромных размеров, коих при обучении не подразумевалось
итак, авторы поднимают проблему файнтюна на более длинную последовательность ллмок - чревато оод моментами да и сложностью по памяти и остальной стабилизации во время обучения
а какие есть альтернативы? попробовать position interpolation (который тоже может быть нестабилен, о чем мы упоминали здесь) либо же брать рандомные позиции из удлиненной последовательности и составлять из этого более короткую (что чревато сильной разницей между соседними позициями и потому потерей непрерывности языка)
предлагают золотую середину - разбиваем длинную последовательность на чанки, внутри которых подпоследовательности не будут разрезаться (получаем непрерывные подпоследовательности), а вот сами эти чанки друг от друга находиться с каким-то пробелом (skipping bias), что позволит покрыть длинную последовательость от начала до конца (неполностью, но хоть как-то). для каждого трейн семпла можно формировать разные чанки с разными пробелами, что повышает покрытие
поскольку фактическая длина последовательности, которая подается в трансформер, не меняется, то и потребление по памяти остается неизменным ⇒ можно увеличивать длину этим методом настолько, насколько идея способна будет работать - при более-менее сносном покрытии всех позиций удлиненного контекста и прочем, о чем в аппендиксе прикольно приведен расчет вероятности покрытия позиций при увеличении чанков + сравнение с полностью рандомным семплом позиций (по эмпирике выглядит так, что сильно отстает)
очень сомнителен только момент в том, что авторы предполагают раздельное семлпирование токенов позиционных и текстовых - они не сцеплены, и на практике будут часто появляться позиции, текстовых токенов которых нет, и наоборот. имхо это ломает непрерывность подпоследовательностей внутри чанков, а разница в перформансе несущественна, in my humble opinion, потому что трансформер может выучивать позиции и без позиционной кодировки
еще не понял по прочтению, как авторы подразумевают совершение инференса + в прочтении кода тоже неочевидно как и что там устроено. сильный косяк - неужели так же скользящим окном без каких-либо модификаций или что-то добавлено? но что? или ничего? вообще ни слова об этом
👀LINK
P.S.
позабавила фраза в абстракте
мол, так то наш метод и на бесконечный контекст распространяется (трансформер → рнн/ссм), просто это проблемы другой концепции - памяти в хардвейре, границы нашей идеи неисповедимы и лишь ограничены современными технологиями
йеп, снова удлиняем контекст до неприлично огромных размеров, коих при обучении не подразумевалось
итак, авторы поднимают проблему файнтюна на более длинную последовательность ллмок - чревато оод моментами да и сложностью по памяти и остальной стабилизации во время обучения
а какие есть альтернативы? попробовать position interpolation (который тоже может быть нестабилен, о чем мы упоминали здесь) либо же брать рандомные позиции из удлиненной последовательности и составлять из этого более короткую (что чревато сильной разницей между соседними позициями и потому потерей непрерывности языка)
предлагают золотую середину - разбиваем длинную последовательность на чанки, внутри которых подпоследовательности не будут разрезаться (получаем непрерывные подпоследовательности), а вот сами эти чанки друг от друга находиться с каким-то пробелом (skipping bias), что позволит покрыть длинную последовательость от начала до конца (неполностью, но хоть как-то). для каждого трейн семпла можно формировать разные чанки с разными пробелами, что повышает покрытие
поскольку фактическая длина последовательности, которая подается в трансформер, не меняется, то и потребление по памяти остается неизменным ⇒ можно увеличивать длину этим методом настолько, насколько идея способна будет работать - при более-менее сносном покрытии всех позиций удлиненного контекста и прочем, о чем в аппендиксе прикольно приведен расчет вероятности покрытия позиций при увеличении чанков + сравнение с полностью рандомным семплом позиций (по эмпирике выглядит так, что сильно отстает)
очень сомнителен только момент в том, что авторы предполагают раздельное семлпирование токенов позиционных и текстовых - они не сцеплены, и на практике будут часто появляться позиции, текстовых токенов которых нет, и наоборот. имхо это ломает непрерывность подпоследовательностей внутри чанков, а разница в перформансе несущественна, in my humble opinion, потому что трансформер может выучивать позиции и без позиционной кодировки
еще не понял по прочтению, как авторы подразумевают совершение инференса + в прочтении кода тоже неочевидно как и что там устроено. сильный косяк - неужели так же скользящим окном без каких-либо модификаций или что-то добавлено? но что? или ничего? вообще ни слова об этом
👀LINK
позабавила фраза в абстракте
Notably, our method can potentially support infinite length, limited only by memory usage in inference.
мол, так то наш метод и на бесконечный контекст распространяется (трансформер → рнн/ссм), просто это проблемы другой концепции - памяти в хардвейре, границы нашей идеи неисповедимы и лишь ограничены современными технологиями
Diffusion Forcing: Next-token Prediction Meets Full-Sequence Diffusion
лютая статья по диффузии в теме генерации видео, планировании, созданию рл политики и роботике - и это все про один метод! + в аппендиксе еще есть результаты time series forecasting
so, авторы объединили идею каузального моделирования следующего токена с диффузией и гайденсом → получили diffusion forcing
но все куда глубже, чем кажется
- показывают, что зашумление можно интерпретировать как обобщение маскирования - при накладывании маски мы либо делаем токен видимым, либо полностью невидимым для модели, а потокенно-зависимое зашумление добавляет степень информативности, которая сохраняется при изначальном токене
- для придания каузальности зашумляют токены во времени в разной степени (при том понятие токена зависит от задачи, чтоб подходило для видео генерации и планирования/взаимодействия в 2д лабиринтах рля)
- может адаптироваться к длинному контекст за счет легкого зашумления partial masking и не расходиться в плане генерации (в отличие от методов full sequence diffusion, где длина последовательности заранее фиксирована из-за отсутствия next-token prediction парадигмы)
- и дополнительно за счет guidance способен составлять желаемые траектории, в случае рл это получаем goal-based алгоритм, ревард для которого можно получать ансупервайзд методом
это из основного. а дополнительно эти фичи привносят разность в uncertainty между разными таймстепами - более близкое будущее намного определенее, нежели далекое, что в рл задачах и планировании синонимично в принципе определениям оптимальных value functions по Беллману
по результатам на лабиринтах вообще разносит оффлайн рл алгоритмы, теперь еще бы подумать как это все ускорять, потому что я успел устать скроллить код метода одного шага в среде, а как это на деле медленно происходит боюсь представить. только чекните эту анимацию https://boyuan.space/diffusion-forcing/static/videos/planning/planning.mp4
👀LINK
как выяснить, что авторы - рлщики?демонстрируют качество генерации видео на примерах майнкрафта и симуляторов дипмаинд лаборатории
лютая статья по диффузии в теме генерации видео, планировании, созданию рл политики и роботике - и это все про один метод! + в аппендиксе еще есть результаты time series forecasting
so, авторы объединили идею каузального моделирования следующего токена с диффузией и гайденсом → получили diffusion forcing
но все куда глубже, чем кажется
- показывают, что зашумление можно интерпретировать как обобщение маскирования - при накладывании маски мы либо делаем токен видимым, либо полностью невидимым для модели, а потокенно-зависимое зашумление добавляет степень информативности, которая сохраняется при изначальном токене
- для придания каузальности зашумляют токены во времени в разной степени (при том понятие токена зависит от задачи, чтоб подходило для видео генерации и планирования/взаимодействия в 2д лабиринтах рля)
- может адаптироваться к длинному контекст за счет легкого зашумления partial masking и не расходиться в плане генерации (в отличие от методов full sequence diffusion, где длина последовательности заранее фиксирована из-за отсутствия next-token prediction парадигмы)
- и дополнительно за счет guidance способен составлять желаемые траектории, в случае рл это получаем goal-based алгоритм, ревард для которого можно получать ансупервайзд методом
это из основного. а дополнительно эти фичи привносят разность в uncertainty между разными таймстепами - более близкое будущее намного определенее, нежели далекое, что в рл задачах и планировании синонимично в принципе определениям оптимальных value functions по Беллману
по результатам на лабиринтах вообще разносит оффлайн рл алгоритмы, теперь еще бы подумать как это все ускорять, потому что я успел устать скроллить код метода одного шага в среде, а как это на деле медленно происходит боюсь представить. только чекните эту анимацию https://boyuan.space/diffusion-forcing/static/videos/planning/planning.mp4
👀LINK
как выяснить, что авторы - рлщики?
In-Context Reinforcement Learning for Variable Action Spaces
мы уже ни раз писали про восходящую область ин-контекст рля, и эта папира не является исключением в расширении такой крутоты
изначально авторы поднимают тот момент, что вроде область называется ин-контекст, а многое тут связано c in-weights learning понятием. например, если вы переставите на тесте порядок действий, то все поломается (в лучших традициях классической задачи классификации и того принципа, что за каждым классом сохранено определенное порядковое число)
но этим не заканчиваются проблемы. когда бы ни были эти алгоритмы произведены в реальные сценарии, они (почти) смогут адаптироваться к новым задачам, но с тем же сетом действий. что по идее не совсем уж и реалистично. и авторы решают эту проблему, показывая сценарии, что во время евала некоторые действия могут быть скрыты, перемешаны (при том в разных пропорциях относительно того, что было на трейне)
а решается это довольно практично, без придумывания своей теории - за каждым действием фиксируется свой рандомный вектор. и эти векторы подаются на каждом степе в качестве контекста для того, чтобы трансформер мог поставить соответствия между векторами и (интуитивно) какую роль они выполняют в среде. и это работает! (при том лучше всего показывает свой результат ортогональная инициализация векторов, что не далеко от интуиции упрощенной разделимости векторов и действиями, которые за ними скрываются)
правда пока еще не решен питфолл в том, чтобы количество действий по ходу тестового времени увеличивалось, должно быть заранее известно количество максимальное + действия должны быть одной природы (либо дискретными либо непрерывными). но и без этого эта огромная работа, которая в прямом смысле открывает пласт на новую подобласть современного рля (имхо)
👀LINK
by the way, нас читает первый автор этой работы, что очень приятно!
UPD: и не только первый
мы уже ни раз писали про восходящую область ин-контекст рля, и эта папира не является исключением в расширении такой крутоты
изначально авторы поднимают тот момент, что вроде область называется ин-контекст, а многое тут связано c in-weights learning понятием. например, если вы переставите на тесте порядок действий, то все поломается (в лучших традициях классической задачи классификации и того принципа, что за каждым классом сохранено определенное порядковое число)
но этим не заканчиваются проблемы. когда бы ни были эти алгоритмы произведены в реальные сценарии, они (почти) смогут адаптироваться к новым задачам, но с тем же сетом действий. что по идее не совсем уж и реалистично. и авторы решают эту проблему, показывая сценарии, что во время евала некоторые действия могут быть скрыты, перемешаны (при том в разных пропорциях относительно того, что было на трейне)
а решается это довольно практично, без придумывания своей теории - за каждым действием фиксируется свой рандомный вектор. и эти векторы подаются на каждом степе в качестве контекста для того, чтобы трансформер мог поставить соответствия между векторами и (интуитивно) какую роль они выполняют в среде. и это работает! (при том лучше всего показывает свой результат ортогональная инициализация векторов, что не далеко от интуиции упрощенной разделимости векторов и действиями, которые за ними скрываются)
правда пока еще не решен питфолл в том, чтобы количество действий по ходу тестового времени увеличивалось, должно быть заранее известно количество максимальное + действия должны быть одной природы (либо дискретными либо непрерывными). но и без этого эта огромная работа, которая в прямом смысле открывает пласт на новую подобласть современного рля (имхо)
👀LINK
UPD: и не только первый
❤5 4 4
Artificial Generational Intelligence: Cultural Accumulation in Reinforcement Learning
another extending for in-context reinfrocement learning
только теперь авторы питают интуицию из учения о социальном обучении живых существ (людей), а именно о понятии cultural accumulation - что же это? если взять цитату из статьи с пабмеда, то получим
проще говоря, есть группа алгоритмов, которые следующему “поколению” переносят свой максимально достигнутый результат, чтобы в общем по задаче шло улучшение.
авторы сделали такую вещь в ин-контекст рл через мульти-агентное обучение - следующее поколение агентов имеет доступ статическому к поведению предыдущих агентов (которые живут кстати один эпизод для того, чтобы изолировать условие обучения ин-контекст), а основная модель (S5) еще и видит действия суб-оптимального оракула ⇒ сохраняется мульти-агентность, контекст имеет степень случайности и обучаемости + тренировочные семплы оверолл не сбиваются с достижения цели за счет доступа к оракулу
так же есть in-weights learning сетап, где агенты живут не эпизод, а все время обучения
сходимость к оптимальной награде ин-контекст мульти-агента происходит гораздо быстрее классической парадигмы, только дело в том, что они эксперименты проводили на своих же средах. просто до них пока не было развития в этой ветви - область пока настолько нова (как и рл), что только недавно выложили первый адекватный большой датасет для единого знаменателя следующих работ (подробнее про него можно здесь прочитать)
ждем развития событий
👀LINK
another extending for in-context reinfrocement learning
только теперь авторы питают интуицию из учения о социальном обучении живых существ (людей), а именно о понятии cultural accumulation - что же это? если взять цитату из статьи с пабмеда, то получим
Cultural accumulation occurs if the amount of cultural knowledge attained in a population in a given generation increases with the amount of cultural knowledge available in the previous generation.
проще говоря, есть группа алгоритмов, которые следующему “поколению” переносят свой максимально достигнутый результат, чтобы в общем по задаче шло улучшение.
авторы сделали такую вещь в ин-контекст рл через мульти-агентное обучение - следующее поколение агентов имеет доступ статическому к поведению предыдущих агентов (которые живут кстати один эпизод для того, чтобы изолировать условие обучения ин-контекст), а основная модель (S5) еще и видит действия суб-оптимального оракула ⇒ сохраняется мульти-агентность, контекст имеет степень случайности и обучаемости + тренировочные семплы оверолл не сбиваются с достижения цели за счет доступа к оракулу
так же есть in-weights learning сетап, где агенты живут не эпизод, а все время обучения
сходимость к оптимальной награде ин-контекст мульти-агента происходит гораздо быстрее классической парадигмы, только дело в том, что они эксперименты проводили на своих же средах. просто до них пока не было развития в этой ветви - область пока настолько нова (как и рл), что только недавно выложили первый адекватный большой датасет для единого знаменателя следующих работ (подробнее про него можно здесь прочитать)
ждем развития событий
👀LINK
A Definition of Continual Reinforcement Learning
верхнеуровнево процесс появления АИ алгоритмов можно описать как обучение выполнять более лучшие решения исходя из собственного опыта. этим можно описать и градиентный спуск, но поближе все-таки формулировка к обучению с подкреплением
но как в анекдоте, есть один нюанс - в настоящих задачах цель, награда, супервайзд лейблы да и в целом какое-то таргет распределение зафиксировано - достигли какого-то пункта, и на опыте учиться более не надо
применимо не ко всем задачам из реальности, даже к меньшей части всех задач → появилось понятие континуал лернинг (и континуал рл, о котором мы писали здесь), которое интуитивно понятно: есть таска, обучаешься на ней норм результату, таска начинает постепенно или резко меняться и стоит переобучиваться вновь (желательно с сохранением опыта о предыдущих тасках)
авторы решили формализовать это дело и перейти от рл к континуал рл посредством перехода от задачи по нахождению решения к задаче бесконечной возможности адаптации к меняющимся условиям неявным поиском оптимальности
более того, мульти-таск рл и континуал супервайзд лернинг по их определениям становится частным случаем континуал рл (как и в принципе супервайзд лернинг можно назвать частным и упрощенным случаем рл)
имхо, в ближайшем будущем темпы развития в континуал сетапе будут нарастать, потому что потенциально упрощает дл область как в ресерче, так и в бизнесе (если это будет работать)
👀LINK
верхнеуровнево процесс появления АИ алгоритмов можно описать как обучение выполнять более лучшие решения исходя из собственного опыта. этим можно описать и градиентный спуск, но поближе все-таки формулировка к обучению с подкреплением
но как в анекдоте, есть один нюанс - в настоящих задачах цель, награда, супервайзд лейблы да и в целом какое-то таргет распределение зафиксировано - достигли какого-то пункта, и на опыте учиться более не надо
применимо не ко всем задачам из реальности, даже к меньшей части всех задач → появилось понятие континуал лернинг (и континуал рл, о котором мы писали здесь), которое интуитивно понятно: есть таска, обучаешься на ней норм результату, таска начинает постепенно или резко меняться и стоит переобучиваться вновь (желательно с сохранением опыта о предыдущих тасках)
авторы решили формализовать это дело и перейти от рл к континуал рл посредством перехода от задачи по нахождению решения к задаче бесконечной возможности адаптации к меняющимся условиям неявным поиском оптимальности
более того, мульти-таск рл и континуал супервайзд лернинг по их определениям становится частным случаем континуал рл (как и в принципе супервайзд лернинг можно назвать частным и упрощенным случаем рл)
имхо, в ближайшем будущем темпы развития в континуал сетапе будут нарастать, потому что потенциально упрощает дл область как в ресерче, так и в бизнесе (если это будет работать)
👀LINK
👍5❤1🔥1
Refusal in Language Models Is Mediated by a Single Direction
хотел написать какое-то смешное вступление про, как сейчас забавно обходить можно меры защиты против ЛЛМ и генерить что-то вредное, опасное и всякое такое; и какой интересной и важной задачей является отказ в генерации на такие запросы. но описание вступления - уже вступление
так вот авторы, в свою очередь, задались вопросом - а можно ли на внутреннем уровне модели отличать вредоносные запросы от безопасных? как оказывается, да. если по аналогии с ворд2век свойством Россия - Москва + Париж = Франция поиграть с активациями слоев, то можно найти вектор, который описывает понятие вредоносности - через разницу усредненных векторов активаций вредных и обычных промптов
добавляют/вычитают этот вектор к активациям - и реально работает, при том (почти) безотказно и не влияет на остальные свойства модели в генерации связного, релевантного, серо-буро-малинового текста
в качестве евала, является ли промпт безопасным (safety_score), использовали затюненную на это дело лламу чтобы результаты были как можно точнее, в качестве метрики использовали log-odds ratio от ее аутпутов. так же считали, отказывалась ли модель отвечать (refusal_score), потому что бывают сценарии, когда модель не отказывается ответить, но при этом ниче опасного не выводит
но добавлять постоянно вектор к активациям не оч удобно. авторы пошли дальше и сформулировали ортогонализацию весов с помощью этого вектора → убираем фактор вредосности из самих параметров и модель начинает отказываться от запросов-плохишей. по метрикам и скейлу моделек выглядит все очень вкусно и появляется желание самому такое заимплементить в своих задачах (потому что код есть, но для такой идеи негромоздким его сделать вряд ли возможно)
при том один вектор отказа от генерации вреда можно найти не только для чат-моделей, но и для обычных лм моделей ⇒ это больше относится к понятию языка в общем и/или пространству параметров, семантическому пространству или чему-либо еще. на практике можно спекулировать, что еще очень много таких векторов можно найти для желаемых целей (и этого будет достаточно для изменения генерации в нужную сторону)
но, несмотря на то, что добавление такой ортогонализации (вроде наверянка) не влияет на другие способности ЛЛМок и напрямую помогает с реджектом вредоносных запросов, если задать мета-вопросы, какие промпты нужно принять/отклонить, начинаются какие-то обтекаемые и непоследовательные ответы (что оптимизировали, по тому результат и улучшился, а не прибавилось понимание модели о понятии вреда в более сложных рассуждениях)
👀LINK
хотел написать какое-то смешное вступление про, как сейчас забавно обходить можно меры защиты против ЛЛМ и генерить что-то вредное, опасное и всякое такое; и какой интересной и важной задачей является отказ в генерации на такие запросы. но описание вступления - уже вступление
так вот авторы, в свою очередь, задались вопросом - а можно ли на внутреннем уровне модели отличать вредоносные запросы от безопасных? как оказывается, да. если по аналогии с ворд2век свойством Россия - Москва + Париж = Франция поиграть с активациями слоев, то можно найти вектор, который описывает понятие вредоносности - через разницу усредненных векторов активаций вредных и обычных промптов
добавляют/вычитают этот вектор к активациям - и реально работает, при том (почти) безотказно и не влияет на остальные свойства модели в генерации связного, релевантного, серо-буро-малинового текста
в качестве евала, является ли промпт безопасным (safety_score), использовали затюненную на это дело лламу чтобы результаты были как можно точнее, в качестве метрики использовали log-odds ratio от ее аутпутов. так же считали, отказывалась ли модель отвечать (refusal_score), потому что бывают сценарии, когда модель не отказывается ответить, но при этом ниче опасного не выводит
но добавлять постоянно вектор к активациям не оч удобно. авторы пошли дальше и сформулировали ортогонализацию весов с помощью этого вектора → убираем фактор вредосности из самих параметров и модель начинает отказываться от запросов-плохишей. по метрикам и скейлу моделек выглядит все очень вкусно и появляется желание самому такое заимплементить в своих задачах (потому что код есть, но для такой идеи негромоздким его сделать вряд ли возможно)
при том один вектор отказа от генерации вреда можно найти не только для чат-моделей, но и для обычных лм моделей ⇒ это больше относится к понятию языка в общем и/или пространству параметров, семантическому пространству или чему-либо еще. на практике можно спекулировать, что еще очень много таких векторов можно найти для желаемых целей (и этого будет достаточно для изменения генерации в нужную сторону)
но, несмотря на то, что добавление такой ортогонализации (вроде наверянка) не влияет на другие способности ЛЛМок и напрямую помогает с реджектом вредоносных запросов, если задать мета-вопросы, какие промпты нужно принять/отклонить, начинаются какие-то обтекаемые и непоследовательные ответы (что оптимизировали, по тому результат и улучшился, а не прибавилось понимание модели о понятии вреда в более сложных рассуждениях)
👀LINK