Can Large Language Models Adapt to Other Agents In-Context?
думайте сами, решайте сами - статья ли это по мульти-агентности, промптингу или ин-контекст лернингу
ну а на самом деле присутствуют довольно интересные размышления, авторы берут интуицию из модели психики (theory of mind, ToM) и даже расширяют ее на случай агентов
- есть literal ToM, когда агент может предсказывать поведение другого, в случае с ллмками на промт подаем ему ситуацию среды и свои/чужие действия → в аутпуте пишет что вероятнее всего могут сделать другие
- а есть functional ToM, когда агент непосредственно адаптируется к принятиям решений других агентов, чтобы максимизировать (минимизировать) общую награду (регрет)
so, для этого они сделали нестатичные мульти-агент энвы для ллм под камень ножницы бумага, итеративную дилемму заключенного и баталию сексов)
в итоге разделение ТоМ теории на 2 составляющие было небесполезным - ллмкам (лламе 70б в основном) действительно тяжело адаптировать свои действия под поведение других игроков, в то время как по идее она неплохо справляется с тем, чтобы предсказывать это самое поведение. при том разница между этими двумя сущностями настолько велика, что модель не может обогнать табулярный рл метод (здесь по заверениям использовали модел-бейзд Rmax, который как раз заточен под стохастичную игру - более общий сценарий МДП для мульти-агент интеракций)
еще из сайд эффектов есть момент, что при удлинении горизонта планирования (long-term strategy) перформанс только ухудшается, что даже удивительно. имхо (основываясь на размышлении авторов) inductive bias настолько не заточен под момент стохастичности от других игроков, что настолько поразительные возможности затухают с необходимостью брут форса токенов (интересное сравнение механизма аттеншна и брут форса услышал здесь)
в общем да, хайп вокруг ллм мульти-агентности раз присутствует, то почему бы и не приправить к этому что-то более-менее красивое из науки
👀LINK
думайте сами, решайте сами - статья ли это по мульти-агентности, промптингу или ин-контекст лернингу
ну а на самом деле присутствуют довольно интересные размышления, авторы берут интуицию из модели психики (theory of mind, ToM) и даже расширяют ее на случай агентов
- есть literal ToM, когда агент может предсказывать поведение другого, в случае с ллмками на промт подаем ему ситуацию среды и свои/чужие действия → в аутпуте пишет что вероятнее всего могут сделать другие
- а есть functional ToM, когда агент непосредственно адаптируется к принятиям решений других агентов, чтобы максимизировать (минимизировать) общую награду (регрет)
so, для этого они сделали нестатичные мульти-агент энвы для ллм под камень ножницы бумага, итеративную дилемму заключенного и баталию сексов)
в итоге разделение ТоМ теории на 2 составляющие было небесполезным - ллмкам (лламе 70б в основном) действительно тяжело адаптировать свои действия под поведение других игроков, в то время как по идее она неплохо справляется с тем, чтобы предсказывать это самое поведение. при том разница между этими двумя сущностями настолько велика, что модель не может обогнать табулярный рл метод (здесь по заверениям использовали модел-бейзд Rmax, который как раз заточен под стохастичную игру - более общий сценарий МДП для мульти-агент интеракций)
еще из сайд эффектов есть момент, что при удлинении горизонта планирования (long-term strategy) перформанс только ухудшается, что даже удивительно. имхо (основываясь на размышлении авторов) inductive bias настолько не заточен под момент стохастичности от других игроков, что настолько поразительные возможности затухают с необходимостью брут форса токенов (интересное сравнение механизма аттеншна и брут форса услышал здесь)
в общем да, хайп вокруг ллм мульти-агентности раз присутствует, то почему бы и не приправить к этому что-то более-менее красивое из науки
👀LINK
ReBind: Enhancing Ground-State Molecular Conformation Prediction via Force-Based Graph Rewiring
Нейронки по-разному пытаются удешевить DFT. Один из вариантов как повлиять на это - научить модель предсказывать 3D ground-state конформацию по 2D графу. Это задача очень важна, так как 3D конформация в состоянии равновесия описывает многие физические и химические процессы конкретной молекулы
Так вот для такой задачи можно использовать методы, основанные на GNN. Однако, как мы можем знать из базового курса химии, энергия может быть представлена связанными и несвязанными взаимодействиями. Так вот GNN зачастую полагаются только на ковалетные связи, упуская неявное влияние. Это ведет к ошибкам при моделировании молекул, например, с сильным вандерваальсовым взаимодействием
Авторы ReBind предалагают использовать encoder-decoder сеть с конструкцией force-aware матрицы связности. Чтобы учитывать non-bonded взаимодействия используют потенциал Леннарда-Джонса на промежуточной конформации из энкодера. Из производной потенциала получают силу, которую используют вместе с матрицей межатомных расстояний, чтобы добавить top-K ребер между вершинами с сильным взаимодействием. Их также разделяют на силы притяжения и отталкивания как веса новых ребер. Получившиеся матрицы связности используют в аттеншене декодера для генерации финальной конформации
Тестируют на QM9, MoleculeNet3D и GEOM-DRUGS. В основном сравнение направлено на то, чтобы побить последний метод на трансформере для задачи - GTMGC. Также метод неплохо скейлится на большие молекулы
Интересно, конечно было бы еще посмотреть на то, как можно улучшить non-bonded моделирование с помощью других потенциалов и дескрипторов помимо LJ
👀 LINK
Нейронки по-разному пытаются удешевить DFT. Один из вариантов как повлиять на это - научить модель предсказывать 3D ground-state конформацию по 2D графу. Это задача очень важна, так как 3D конформация в состоянии равновесия описывает многие физические и химические процессы конкретной молекулы
Так вот для такой задачи можно использовать методы, основанные на GNN. Однако, как мы можем знать из базового курса химии, энергия может быть представлена связанными и несвязанными взаимодействиями. Так вот GNN зачастую полагаются только на ковалетные связи, упуская неявное влияние. Это ведет к ошибкам при моделировании молекул, например, с сильным вандерваальсовым взаимодействием
Авторы ReBind предалагают использовать encoder-decoder сеть с конструкцией force-aware матрицы связности. Чтобы учитывать non-bonded взаимодействия используют потенциал Леннарда-Джонса на промежуточной конформации из энкодера. Из производной потенциала получают силу, которую используют вместе с матрицей межатомных расстояний, чтобы добавить top-K ребер между вершинами с сильным взаимодействием. Их также разделяют на силы притяжения и отталкивания как веса новых ребер. Получившиеся матрицы связности используют в аттеншене декодера для генерации финальной конформации
Тестируют на QM9, MoleculeNet3D и GEOM-DRUGS. В основном сравнение направлено на то, чтобы побить последний метод на трансформере для задачи - GTMGC. Также метод неплохо скейлится на большие молекулы
Интересно, конечно было бы еще посмотреть на то, как можно улучшить non-bonded моделирование с помощью других потенциалов и дескрипторов помимо LJ
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
👍4🔥4
DeMo: Decoupled Momentum Optimization
Кингма вместе с братвой из nousresearch.com (которая частично ответственна за создание YaRN) решил покуралесить в области оптимизации
и задался вопросом - а что ж так много раз во время мульти-гпу/мульти-нод обучения надо синхронизировать состояния оптимизатора (optimizer states) да и в принципе параметры модели (на ддп) между всеми процессами (что делается через all-reduce в общем)
ну и пришло в голову довольно необычное решение - давайте вычисляемые моменты (в которых накопляются градиенты) на каждом из процессов не синхронизировать между собой напрямую, а делать это после шага оптимайзера через то, что авторы назвали fast-moving components (при том оптимизатор у нас не абы какой, а локальный LocalSGD, взятый из федеративного обучения)
поконкретнее - интуитивно в обновляющихся моментах есть slow-moving и fast-moving компоненты, про которые авторы думают как о чем-то типа что фундаментально заложено и меняется очень небыстро и что-то, что восприимчиво к immediate апдейтам в данных
по такой логике можно попробовать синхронизировать только быстрые компоненты, а медленные компоненты оставлять на каждом процессе свои
остается только загвоздка в том, а как эти fast-moving components экстрактить - при том они должны быть для эффективности декоррелированы и быстро вычисляться. на помощь этому приходит дискретное косинусное преобразование (DCT) по чанкам размера s. через него выбираем k частот в сигнале с самыми большими амплитудами → синхронизируем эти амплитуды и частоты по процессам (а это может быть гораздо легче если подобрать норм s & k по сравнению со всем размером модели) → применяем обратную операцию чтобы получить so-called “principal fast-moving” components и вычитаем (оставляем только slow-moving components которые гладко должны нас вести к сходимости)
по экспам решили сравниться против АдамВ на модели олмо (непонятно почему) и претренились на Долме. за факт того, как скрупулезно подошли к сравнению с бейзлайн моделью отдельный респект
про евал метрики все примерно ожидаемое (ну тут просто сами вопросы к этим метрикам). ну и видимо можно заключить, что действительно хорошо так прибавляет по скорости (на 1б по крайней мере) + даже улучшает сходимость, ну это по крайней мере на ддп и при таком скейле модели
👀LINK
Кингма вместе с братвой из nousresearch.com (которая частично ответственна за создание YaRN) решил покуралесить в области оптимизации
и задался вопросом - а что ж так много раз во время мульти-гпу/мульти-нод обучения надо синхронизировать состояния оптимизатора (optimizer states) да и в принципе параметры модели (на ддп) между всеми процессами (что делается через all-reduce в общем)
ну и пришло в голову довольно необычное решение - давайте вычисляемые моменты (в которых накопляются градиенты) на каждом из процессов не синхронизировать между собой напрямую, а делать это после шага оптимайзера через то, что авторы назвали fast-moving components (при том оптимизатор у нас не абы какой, а локальный LocalSGD, взятый из федеративного обучения)
поконкретнее - интуитивно в обновляющихся моментах есть slow-moving и fast-moving компоненты, про которые авторы думают как о чем-то типа что фундаментально заложено и меняется очень небыстро и что-то, что восприимчиво к immediate апдейтам в данных
по такой логике можно попробовать синхронизировать только быстрые компоненты, а медленные компоненты оставлять на каждом процессе свои
остается только загвоздка в том, а как эти fast-moving components экстрактить - при том они должны быть для эффективности декоррелированы и быстро вычисляться. на помощь этому приходит дискретное косинусное преобразование (DCT) по чанкам размера s. через него выбираем k частот в сигнале с самыми большими амплитудами → синхронизируем эти амплитуды и частоты по процессам (а это может быть гораздо легче если подобрать норм s & k по сравнению со всем размером модели) → применяем обратную операцию чтобы получить so-called “principal fast-moving” components и вычитаем (оставляем только slow-moving components которые гладко должны нас вести к сходимости)
по экспам решили сравниться против АдамВ на модели олмо (непонятно почему) и претренились на Долме. за факт того, как скрупулезно подошли к сравнению с бейзлайн моделью отдельный респект
про евал метрики все примерно ожидаемое (ну тут просто сами вопросы к этим метрикам). ну и видимо можно заключить, что действительно хорошо так прибавляет по скорости (на 1б по крайней мере) + даже улучшает сходимость, ну это по крайней мере на ддп и при таком скейле модели
👀LINK
👍4🔥2❤1
Half-Quadratic Quantization of Large Machine Learning Models
про квантизацию уже говорили и затрагивали пока только методы где нужен калибровочный датасет (с помощью которого и составляется гессиан в тех статьях, которые мы упоминали)
получается этакое обучение под датасет, только чтобы квантизовать веса. однако этим делом не ограничивается и есть идеи без таких данных. обычно они хуже по перформансу, но в этот раз постарались такое исправить (не оч получилось имхо)
классическую лосс функцию (lp норму, 0 < p < 1) дополняют вспомогательной обучаемой переменной которую называют W_e в нотации. по сути она приближает ошибку между оригинальными весами и теми, которые прошли квантизацию-деквантизацию + это все при фиксированном скейле (то есть из двух основных параметров zero_point & scale для квантизации фиттится только первое)
авторы обосновывают такой выбор тем, что таким образом получается моделировать аутлаеры в весах (из-за которых в принципе и встает остро необходимость в существующих методах квантизации в таком виде, в котором они есть сейчас) через гипер-Лапласовское распределение (красный график на последней картинке)
есть интересный нюанс, что методу не нужен автоград (никаких активаций слоев нет, только вес как они есть), так еще и за несколько минут на цпу half-quadratic солверы (в честь которых и назван метод) сходятся к решению
евалятся на перплексии с лламой 2, так еще зацепляют ViT + CLIP (проверяют линейную пробу и зеро шот). методы без калибровочных данных обгоняют, показывают что и GPTQ типо тоже курит в сторонке на аж 2 битах
но тут есть момент, который они сами упомянули, что не везде скейл так же квантуется в 8 бит, в остальных местах у него 16 бит → получается то не 2 бита а 3 на модельку то
в целом - не перегоняет, но нет оснований полностью откидывать. пишу это постфактум, ибо просто увидел, что HQQ используется в сота компрессии КВ кэшей (пирамид кв)
👀LINK
про квантизацию уже говорили и затрагивали пока только методы где нужен калибровочный датасет (с помощью которого и составляется гессиан в тех статьях, которые мы упоминали)
получается этакое обучение под датасет, только чтобы квантизовать веса. однако этим делом не ограничивается и есть идеи без таких данных. обычно они хуже по перформансу, но в этот раз постарались такое исправить (не оч получилось имхо)
классическую лосс функцию (lp норму, 0 < p < 1) дополняют вспомогательной обучаемой переменной которую называют W_e в нотации. по сути она приближает ошибку между оригинальными весами и теми, которые прошли квантизацию-деквантизацию + это все при фиксированном скейле (то есть из двух основных параметров zero_point & scale для квантизации фиттится только первое)
авторы обосновывают такой выбор тем, что таким образом получается моделировать аутлаеры в весах (из-за которых в принципе и встает остро необходимость в существующих методах квантизации в таком виде, в котором они есть сейчас) через гипер-Лапласовское распределение (красный график на последней картинке)
есть интересный нюанс, что методу не нужен автоград (никаких активаций слоев нет, только вес как они есть), так еще и за несколько минут на цпу half-quadratic солверы (в честь которых и назван метод) сходятся к решению
евалятся на перплексии с лламой 2, так еще зацепляют ViT + CLIP (проверяют линейную пробу и зеро шот). методы без калибровочных данных обгоняют, показывают что и GPTQ типо тоже курит в сторонке на аж 2 битах
но тут есть момент, который они сами упомянули, что не везде скейл так же квантуется в 8 бит, в остальных местах у него 16 бит → получается то не 2 бита а 3 на модельку то
в целом - не перегоняет, но нет оснований полностью откидывать. пишу это постфактум, ибо просто увидел, что HQQ используется в сота компрессии КВ кэшей (пирамид кв)
👀LINK
PyramidKV: Dynamic KV Cache Compression based on Pyramidal Information Funneling
а вот идея у пирамид кв, который мы пораньше упомянули, довольна проста. возможно даже чересур
после очередных пристальных взглядов в аттеншп мапы авторы заметили, как и творцы LayerSkip, что количество токенов (в ключах), на которые приходит почти все внимание аттеншна, резко падает в более глубоких слоях → почему бы не оставлять эти самые токены и все? потребление по памяти на кв кэш тогда вообще значительно снизится
окей, а как выбирать эти самые токены и как определить степень снижения количества токенов на каждом слою? тут авторы сильно не парились и просто определили гипером alpha количество последних токенов в последовательности, для которых кэш будет сохраняться (они так же называются instruction tokens or local window) и далее
- оставляют из других токенов только те, у которых аттеншн скоры очень высокие с local window, при том это общее количество не превосходит заранее заданный “бюджет” на кэшированные токены для данного слоя
- а эти самые бюджеты для каждого слоя определяются арифметической прогрессией, где есть тоже отдельный гипер beta, интуитивно задает степень агрессивности в снижении бюджета. при том для первого слоя могут оставлять все токены, а чем дальше в лес, тем меньше токенов
и все это они назвали пирамид кв, потому что при визуализации для интуиции количество кэшированных токенов напоминает пирамидку (ну или воронку смотря где у вас голова модели на картинке)
на этом все, удивительно для меня также было, что оставляют только последние токены, даже не первые, как уже было неоднократно расхайплено в аттн синках
по евалу конечно что-то супер жесткое, одновременно вызывающее удивление и сомнение: где-то 12%, где-то 0.7% (!) можно хранить от кэша и не получать деградации в перформанске (из евала был лонгбенч, иголка в сене и еще и few-show question задача) + говорят что получше и бейзлайна может перформить (когда мы все кэши храним) в случае LlaMa-3-8B-Instruct
ну а HQQ используется уже в коде как доп метод квантизации непосредственно оставшегося кэша (то есть комбинируется квантизация с компрессией, которая заключается именно в отсечении “исчерпывающей” части), в статье про это ни слова, да там и в принципе спустя время репа расширилась до размеров, что реализованы имплементации хайповых методов
👀 link, code
а вот идея у пирамид кв, который мы пораньше упомянули, довольна проста. возможно даже чересур
после очередных пристальных взглядов в аттеншп мапы авторы заметили, как и творцы LayerSkip, что количество токенов (в ключах), на которые приходит почти все внимание аттеншна, резко падает в более глубоких слоях → почему бы не оставлять эти самые токены и все? потребление по памяти на кв кэш тогда вообще значительно снизится
окей, а как выбирать эти самые токены и как определить степень снижения количества токенов на каждом слою? тут авторы сильно не парились и просто определили гипером alpha количество последних токенов в последовательности, для которых кэш будет сохраняться (они так же называются instruction tokens or local window) и далее
- оставляют из других токенов только те, у которых аттеншн скоры очень высокие с local window, при том это общее количество не превосходит заранее заданный “бюджет” на кэшированные токены для данного слоя
- а эти самые бюджеты для каждого слоя определяются арифметической прогрессией, где есть тоже отдельный гипер beta, интуитивно задает степень агрессивности в снижении бюджета. при том для первого слоя могут оставлять все токены, а чем дальше в лес, тем меньше токенов
и все это они назвали пирамид кв, потому что при визуализации для интуиции количество кэшированных токенов напоминает пирамидку (ну или воронку смотря где у вас голова модели на картинке)
на этом все, удивительно для меня также было, что оставляют только последние токены, даже не первые, как уже было неоднократно расхайплено в аттн синках
по евалу конечно что-то супер жесткое, одновременно вызывающее удивление и сомнение: где-то 12%, где-то 0.7% (!) можно хранить от кэша и не получать деградации в перформанске (из евала был лонгбенч, иголка в сене и еще и few-show question задача) + говорят что получше и бейзлайна может перформить (когда мы все кэши храним) в случае LlaMa-3-8B-Instruct
ну а HQQ используется уже в коде как доп метод квантизации непосредственно оставшегося кэша (то есть комбинируется квантизация с компрессией, которая заключается именно в отсечении “исчерпывающей” части), в статье про это ни слова, да там и в принципе спустя время репа расширилась до размеров, что реализованы имплементации хайповых методов
👀 link, code
🔥5👍1
ReMoE: Fully Differentiable Mixture-of-Experts with ReLU Routing
китайцы сделали интересное нововведение для МоЕ, которую мы не так уж и часто упоминали (и еще чуть-чуть здесь)
обычно используется как классика ТопК над софтмаксом (который в последнее время используется и в разреженных автоэнкодерах), и вот в этом как раз заключается загвоздка по заверениям авторов, ибо топ-к сильно так ограничивает по бекворду обновление сетки и количество активированных экспертов всегда одинаково
потому авторы решили заменить это на релу → получаем (почти) дифференцируемый оператор выбора экспертов, да и к тому же при каждом форварде это количество экспертов нефиксировано
но релу сама по себе не обеспечивает разреженности, потому на обучении пришлось добавить л1 регуляризацию + коэффициент к ней адаптивный и высчитывается в соответствии с понятиями average sparsity & target sparsity
- average sparsity высчитывается на каждом степе (ну или раз в N степов) и определяется просто через количество нулевых релу активаций
- а target sparsity задается через гиперпараметры. да, количество экспертов при каждом запуске модели правда динамичное, но мы все равно должны задавать сколько примерно экспертов должно быть активировано, иначе ниче не получится (можеть быть и момент в котором статья не является breathtaking)
- так же они еще добавили эксперименты о том как в эту регуляризацию добавили Load Balancing, чтобы инпуты равномерно разделялись между экспертами, через аналогичное высчитывание средней активации по отношению к целевой. но на экспах (и оч небольшом скейле) load balancing может появляться и без этого
по экспам трудно что-то сказать, ибо все до 1б параметров, но хотя бы тут выигрывает. в принципе пейпер отличителен всякими прикольными замечаниями, которые подтверждают интуитивное понимание аллоцирования динамического количества экспертов во время форварда - естественным образом во время обучения сначала все эксперты активируются, потом разреженность повышается и достигает таргета в конечном счет + так же естественно количество активирующихся экспертов повышается со снижением частоты токена (авторы проводят аналогию с деревом Хаффмана, где нужна меньшая длина для кодировки более частого объекта)
👀LINK
китайцы сделали интересное нововведение для МоЕ, которую мы не так уж и часто упоминали (и еще чуть-чуть здесь)
обычно используется как классика ТопК над софтмаксом (который в последнее время используется и в разреженных автоэнкодерах), и вот в этом как раз заключается загвоздка по заверениям авторов, ибо топ-к сильно так ограничивает по бекворду обновление сетки и количество активированных экспертов всегда одинаково
потому авторы решили заменить это на релу → получаем (почти) дифференцируемый оператор выбора экспертов, да и к тому же при каждом форварде это количество экспертов нефиксировано
но релу сама по себе не обеспечивает разреженности, потому на обучении пришлось добавить л1 регуляризацию + коэффициент к ней адаптивный и высчитывается в соответствии с понятиями average sparsity & target sparsity
- average sparsity высчитывается на каждом степе (ну или раз в N степов) и определяется просто через количество нулевых релу активаций
- а target sparsity задается через гиперпараметры. да, количество экспертов при каждом запуске модели правда динамичное, но мы все равно должны задавать сколько примерно экспертов должно быть активировано, иначе ниче не получится (можеть быть и момент в котором статья не является breathtaking)
- так же они еще добавили эксперименты о том как в эту регуляризацию добавили Load Balancing, чтобы инпуты равномерно разделялись между экспертами, через аналогичное высчитывание средней активации по отношению к целевой. но на экспах (и оч небольшом скейле) load balancing может появляться и без этого
по экспам трудно что-то сказать, ибо все до 1б параметров, но хотя бы тут выигрывает. в принципе пейпер отличителен всякими прикольными замечаниями, которые подтверждают интуитивное понимание аллоцирования динамического количества экспертов во время форварда - естественным образом во время обучения сначала все эксперты активируются, потом разреженность повышается и достигает таргета в конечном счет + так же естественно количество активирующихся экспертов повышается со снижением частоты токена (авторы проводят аналогию с деревом Хаффмана, где нужна меньшая длина для кодировки более частого объекта)
👀LINK