gonzo-обзоры ML статей – Telegram
gonzo-обзоры ML статей
24.1K subscribers
2.72K photos
2 videos
3 files
1.34K links
Авторы:
Гриша Сапунов, ранее руководитель разработки Яндекс-Новостей, ныне CTO Intento. Области интересов: AI/ML/DL, биоинформатика.
Лёша Тихонов, ранее аналитик в Яндексе, автор Автопоэта, Нейронной Обороны... Области интересов: discrete domain, NLP, RL.
Download Telegram
This media is not supported in your browser
VIEW IN TELEGRAM
7🐳3
Ещё релевантный обзор предшествующей работы на эту же тему
Forwarded from КПД
Deja Vu: Contextual Sparsity for Efficient LLMs at Inference Time
[Статья] [Код]

Гугл выдаст кучу статей с дежавю в названии:

🎉 Do SSL Models Have Déjà Vu? A Case of Unintended Memorization in Self-supervised Learning.
🎉 DejaVu: Conditional Regenerative Learning to Enhance Dense Prediction
🎉 DEJA VU: Continual Model Generalization For Unseen DomainsDeja-Vu: A Glimpse on Radioactive Soft-Error Consequences on Classical and Quantum Computations
🎉 Déjà vu: A Contextualized Temporal Attention Mechanism for Sequential Recommendation
🎉 Déjà Vu: an empirical evaluation of the memorization properties of ConvNets

Так что авторы немного прогадали с оригинальностью названия)

Перейдем же к сути дела.

Введение

Как известно, нейронные сети перепараметризованы, и имеет место значительная избыточность в весах моделей - значительную долю весов можно отбросить без заметной просадки в качестве. На этом свойстве основаны методы прунинга. Тем не менее, чтобы решать широкий круг задач foundation модель должна обладать значительным количеством параметров, чтобы хранить в себе большой обьем знаний. Потому добиться существенного сжатия и ускорения без просадки в качестве крайне затруднительно.

Однако, для конкретного запроса, будь то последовательность или иной тип входа, требуется лишь малая доля аккумулированного в модель знания. Чтобы взять интеграл от функции не требуется быть египтологом или знать всех представителей рода соколиных.
👍111
Forwarded from КПД
Метод

Ускорить время работы сети без просадки в качестве можно не используя часть голов в attention или каналов в feedforward слоях.

Первая часть работы посвящена анализу внутренних представлений внутри сети.
Авторы делают два прямых прохода: на первом определяют каналы и головы с наибольшими значениями активаций, и на втором проходе используют только долю параметров, соответствующую самым большим активациям. Оказывается, что таким образом можно пропустить до 80% голов в Attention и до 95% в MLP слоях без существенного изменения выхода модели. Кроме того, оказывается что в большинстве голов attention размазан равномерно по токенам, и эти головы не выполняют никакой полезной работы.

При определении важных/неважных для конкретного входа параметров описанным выше образом приходится делать один проход с использованием всех параметров, потому толку от него как от козла молока. Можно ли как-то заранее определить нужные каналы?

Авторы рассматриваемой статьи делают следующее: берут обученную языковую модель и поверх нее обучают слои предсказывать, насколько релевантен вход данному каналу ffn / голове трансформера. На инференсе задается доля весов, которую мы хотим использовать, и берутся только измерения с самым высоким предсказанным скором. Выбор нулевых весов зависит от входа (то есть контекста) - потому sparsity носит прилагательное contextual.

Предсказывать важность канала/головы на основе активаций текущего слоя оказывается технически неэффективно, так как определение используемых для данного входа параметров и прогонка через блок должны осуществляться последовательно, что снижает утилизацию железа. Потому предлагается использовать активации с прошлого блока для выбора. Благодаря наличию residual connections активации слабо меняются от блока к блоку, потому активации прошлого блока служат хорошим приближением активаций в текущем блоке, и предиктор можно прогонять параллельно с attention и mlp блоком.
👍10🔥1
Forwarded from КПД
Эксперименты

Авторы валидируют свой подход на больших моделях из семейства OPT (66B, 175B) и Bloom через замеры перплексии на WikiText/C4, и zero-shot бенчмарках из lm-eval-harness. Contextual sparsity в районе 50-60% даже слегка накидывает в качестве, и до 80% не просаживает качестве по сравнению с исходной моделью.

Deja Vu ускоряет генерацию с OPT-175B в 1.8-2x по сравнению с FasterTransformers и 4.8-6x c реализацией трансформера в HuggingFace (сильно неоптимальной) при contextual sparsity 75%

Для Bloom результаты и выводы аналогичные.

Затем авторы смотрят на contextual sparsity с ростом количества одновременно подаваемых последовательностей, и оказывается, что количество каналов/голов с большим значением активаций растет медленнее, чем линейно с размером батча. Причем в первых слоях, активируются одни и те же каналы и головы во всех последовательностях, и различие возникает в более поздних блоках.

Deja Vu можно совместить с другими методами сжатия и ускорения, в частности, квантизацией.

Вывод

С одной стороны логичное и в то же время интересное наблюдение. Интуитивно понятно, что все заложенное знание в foundation модель не требуется для конкретного запроса, но вопрос о том, как эффективно извлекать это знание, не перебирая при этом половину книг в эдакой импровизированной библиотеке. Результаты для OPT выглядят весьма впечатляюще, однако отсутствие подобных экспериментов на более современных и эффективных моделях, пресловутой Llama к примеру, вызывает смутные подозрения. По всей видимости, столь высокая разреженность активаций как-то связана с недообученностью и compute-неоптимальностью моделей. Тем не менее, contextual sparsity - перспективное направление для развития эффективных foundation моделей.
👍161🔥1
“Human Compatible”, Stuart Russell
https://people.eecs.berkeley.edu/~russell/hc.html
#2

Прочитал Рассела, в прошлый раз (https://news.1rj.ru/str/gonzo_ML/1516) рассказывал про первую часть книги, в этот раз напишу про две другие.

Вторая часть посвящена проблемам и опасностям ИИ. Глава про злонамеренное использование, глава про суперинтеллект и отдельная классная глава с разбором типичных возражений и убеждений из дебатов об опасностях ИИ. Хорошая подборка всего, стоит прочитать, если хотите взвешенный и широкий обзор про разного рода риски.

Последняя третья часть содержит основную идею и посвящена подходу к beneficial AI, на который рассчитывает Расселл.

Его идея в том, что классический ML/AI часто смотрит на задачу как на построение машины, оптимизирующей некую objective. С этим подходом есть фундаментальные проблемы, потому что objective очень сложно задать, легко что-то не учесть, она может измениться и так далее. Ну все тут наверное когда-нибудь общались с джином (или джуном) или писали ТЗ, догадываются про сложности 🙂 Когда машина отпущена в свободное плавание, исправить или изменить objective может быть уже нереально. Винер в 1960-е тоже про это писал, см. “Some Moral and Technical Consequences of Automation” (https://www.cs.umd.edu/users/gasarch/BLOGPAPERS/moral.pdf).

Расселл предлагает зайти с другой стороны. 1) Не надо закладывать в машину никаких objectives кроме как “максимизировать выполнение человеческих предпочтений (preferences)”. 2) Машина при этом изначально uncertain относительно этих предпочтений и 3) основным источником информации о предпочтениях должно быть человеческое поведение.

С точки зрения п.1 машина альтруистична, у неё нет никакой ценности в собственном существовании (я так понимаю тут мы не касаемся темы про машины, имеющие сознание, с этим имхо будет всё сложнее и не так). С точки зрения п.2 машина скромна, при непонятностях ожидает помощи и подсказки от человека. С точки зрения п.3 она учится предсказывать человеческие предпочтения, занимается Inverse Reinforcement Learning (IRL, https://thegradient.pub/learning-from-humans-what-is-inverse-reinforcement-learning/) -- пытается понять rewards по поведению. IRL -- тема, совсем не чуждая Расселлу (оказывается ещё и Ыну, https://ai.stanford.edu/~ang/papers/icml00-irl.pdf) и вообще популярная в его родном Беркли (https://people.eecs.berkeley.edu/~pabbeel/cs287-fa12/slides/inverseRL.pdf), но не только там, конечно.

Расселл признаёт, что есть много сложностей: люди разные, их много, они хорошие и плохие, глупые и эмоциональные, ещё и со временем всё может меняться. Совсем готового рецепта у автора нет, но он рассчитывает на лучшее. Расселл ожидает регуляцию, думает что её внедрение будет довольно болезненным процессом, но надеется, что для преодоления сопротивления индустрии не потребуется аналог Чернобыля. Misuse остаётся большой проблемой, от которой мы никуда не денемся (это уже видно на примере киберсека).

Хорошая книжка в общем, рекомендую. Особенно тем, кто будет кричать, что проблем с ИИ быть не может, или кто утверждает, что есть только думеры пугающие всех нереальным сценарием со скрепками.
21👍16🤮3🤡3💩2🔥1💯1🆒1
Увидел этот пост (https://medium.com/@alexey.inkin/advice-to-my-younger-self-and-you-after-20-years-in-programming-a3a2ccc7a942) у Дениса Афанасьева и поделюсь им тоже. Он как бы не очень про ML, но он достаточно универсальный чтобы быть и про него тоже. К тому же сейчас хорошее время чтобы подвести итоги своего года и выработать планы на будущее. С чем-то в посте можно не соглашаться, это up to you. Я надеюсь он станет для кого-то питательным бульоном и поводом, чтобы порефлексировать самостоятельно. Plans are useless, but planning is indispensable.

Пользуясь случаем также скажу пару слов за IEEE и GDE. Обе темы крайне полезные и я настоятельно их рекомендую.

В IEEE я вступил наверное уже лет 20 назад в основном из-за их публикаций и профессиональных журналов (а также спасибо Макконнеллу http://www.symbol.ru/alphabet/449955.html). Они до сих пор высочайшего качества, начиная с универсальных IEEE Spectrum и Computer. ACM Queue и CACM кстати тоже были ничего, но для меня конкретно IEEE как-то больше зашёл. Оттуда я узнавал многие вещи за 3-5 лет до того как они массово доходили не то что до популярной прессы, а вообще до русскоязычной профессиональной среды.

GDE же это прекрасное комьюнити профессионалов, каждый из которых постоянно делает что-то интересное и у кого можно всегда учиться. Там есть прямо мегакрутые люди. В своё время я стал первым и единственным GDE в категории ML в России, и как-то так и не удалось затянуть в эту тему никого больше. А жаль, я пытался :) Сейчас программа на территории России уже не работает, но если вы на других территориях, то я очень рекомендую. Вступайте в рады Фурье! Тут https://developers.google.com/community/experts
16👍8🏆2💩1
Я пока не понял, для чего именно это нужно (https://news.1rj.ru/str/gonzo_ML?boost), но если у вас есть идеи как этим улучшить канал, то присылайте ваши идеи вместе с бустами.

Всех с Наступающим Новым годом! Желаю всем мира, счастья и здоровья!
👍125🥱5
😁3011👍4🤣1
[GFlowNets]: Flow Network based Generative Models for Non-Iterative Diverse Candidate Generation
Emmanuel Bengio, Moksh Jain, Maksym Korablyov, Doina Precup, Yoshua Bengio
Статья: https://arxiv.org/abs/2106.04399
Код: https://github.com/GFNOrg/gflownet
Пост: https://yoshuabengio.org/2022/03/05/generative-flow-networks/
Короткое саммари от соавтора: https://folinoid.com/w/gflownet/

Давно хотелось написать про GFlowNets, или Generative Flow Networks, работу в соавторстве Йошуа Бенжио, про которую он крайне тепло отзывается и считает важным новым направлением исследований. По словам Бенжио, среди прочих крутых вещей, работа открывает дорогу к созданию system 2 inductive biases (https://www.microsoft.com/en-us/research/video/gflownets-and-system-2-deep-learning/).

В этом посте в основном про основополагающую работу с NeurIPS 2021. К текущему моменту есть развития, например, “GFlowNet Foundations” (https://arxiv.org/abs/2111.09266), “Multi-Objective GFlowNets” (https://arxiv.org/abs/2210.12765), “A theory of continuous generative flow networks” (https://arxiv.org/abs/2301.12594) и многое другое, особенно в прикладной части с применением к задачам разных областей и особенно для биологии (например, https://arxiv.org/abs/2203.04115).

GFlowNets (GFN) -- генеративные сети, как следует из названия, в которых генеративный процесс представлен транспортной сетью, flow network. Оригинальная работа посвящена генерации молекулярных графов, но в целом GFN годятся для сэмплинга различных комбинаторных объектов.

Цель -- не получить единственную последовательность действий с максимальным reward, а сделать выборку из распределения траекторий, чья вероятность пропорциональна вознаграждению. Или, другими словами, преобразовать заданную функцию вознаграждения в генеративную policy, сэмплирующую с вероятностью пропорциональной вознаграждению. Это может быть полезно в задачах, где много мод и важна часть про exploration (как раз пример из drug discovery). В одной из последующих работ GFN называют diversity-seeking reinforcement learning algorithms.

Подход GFlowNets работает с сетью, в узлах которой находятся состояния, а выходящие из них рёбра соответствуют детерминированным переходам в результате выбранных действий. Поток в этой сети даёт вероятность действия в текущем состоянии. GFlowNet это именно сеть, не дерево -- разные пути могут приводить к одним и тем же состояниям.

MDP (Markov Decision Process) на сети, где все листья являются терминальными состояниями с вознаграждением, представляется в виде транспортной сети, которая описывается направленным ациклическим графом (DAG). Используется эпизодический RL, где вознаграждение получается лишь в конце эпизода, а везде в процессе он равен нулю. У сети один исток и стоки по числу листьев, вытекающий поток равен вознаграждению в листе, входящий поток -- сумма всех выходных. Общий поток через сеть в каждом узле должен удовлетворять условию, что входной поток в узел равен выходному потоку из него. Касательно полиси, вероятность действия a из состояния s, π(a|s), равна отношению потока из состояния s по ребру a, F(s, a), к общему потоку из состояния s, F(s).

Для реальных задач задать сеть явно нереально (например, для молекул может потребоваться 10^16 узлов), поэтому мы аппроксимируем поток через каждый узел нейросетью (например, графовой или трансформером), это аналогично переходу RL → Deep RL. В сеть подаётся описание состояния, на выходе получается набор скаляров, соответствующий следующим состояниям.
12👍11🔥2
Objective (или лосс) для траектории τ навеян уравнениями Беллмана для temporal-difference (TD) алгоритмов, это сумма, в которой потоки по рёбрам траектории из текущих состояний с плюсом, а терминальные вознаграждения следующих состояний и потоки из них с минусом. Для борьбы разными масштабами потоков (на входных узлах он большой, на выходных маленький), в flow matching objective используются логарифмы потоков. Минимизация этой objective и даёт правильные потоки с нужными нам свойствами, позволяющими сэмплить из полиси. Возможны также и другие objectives, например, detailed balance (https://arxiv.org/abs/2111.09266) и trajectory balance (https://arxiv.org/abs/2201.13259) из более поздних работ.

Если я правильно понял, с этим лоссом осуществляется шаг градиентного спуска (в целом SGD, конкретно здесь Adam) с четырьмя траекториями в минибатче. Обучение GFlowNet идёт бутстрапом -- сэмплим траектории (можно текущим полиси, тогда это on-policy обучение, а можно другими полиси и вообще иными средствами для исследования пространства, в том числе поднимая данные из базы данных, тогда это всё off-policy), получаем для них reward, считаем лосс и обновляем текущую полиси (градиентным спуском).

В случае молекул была задача сгенерировать множество маленьких молекул с высоким reward (который определялся через прокси-модель). Описывающий молекулу граф является последовательностью аддитивных редактирований, где на каждом шаге агент выбирает один из 72 предопределённых блоков для добавления, а также атом, к которому тот будет добавлен. Есть дополнительное действие для остановки редактирования. Эта последовательность редактирований даёт DAG MDP. Для прокси использовалась Message Passing Neural Network (MPNN, https://arxiv.org/abs/1704.01212) с GRU внутри, которой подавался граф атомов; для предсказателя потока — MPNN с графом блоков. GFN сработал хорошо и нашёл больше разнообразных кандидатов чем бейзлайны с MCMC (MARS) и RL (PPO).

Ссылки в тему:
* В ноябре 2023 в Mila прошёл GFlowNet Workshop (https://www.gflownet.org/), видео материалы выложены: https://www.youtube.com/watch?v=H2w-TrAzrBA&list=PLvSH07QabjqZRKKuq92HN7zXqUIDk6Nyx.
* Есть большой туториал: http://yoshuabengio.org/gflownet-tutorial и Colab https://colab.research.google.com/drive/1fUMwgu2OhYpQagpzU5mhe9_Esib3Q2VR.
* Подборка ресурсов по теме: https://www.gflownet.org/resources.html
* Кроме кода к статье есть библиотеки для работы с GFlowNets, например, gflownet (https://github.com/recursionpharma/gflownet) от Recursion и частично тех же авторов, включая Бенжио младшего; и torchgfn (https://github.com/GFNOrg/torchgfn) с участием Бенжио старшего.


В принципе, кажется, GFlowNets могут быть интересным вариантом для (до)обучения LLM. Даже как минимум одна свежая работа на эту тему уже есть: “Amortizing intractable inference in large language models” (https://arxiv.org/abs/2310.04363), в которой ими делают файнтюнинг.
👍6🔥2🤔1