Нейролента - подборка новостей о нейронных сетях, ChatGPT

gonzo-обзоры ML статей страница 2. Показано 50 статей из 305

All about gonzo-обзоры ML статей

2024-01-08 23:31:52

Прикольная статья из серии "на почитать".

Perspectives on the State and Future of Deep Learning - 2023
Micah Goldblum, Anima Anandkumar, Richard Baraniuk, Tom Goldstein, Kyunghyun Cho, Zachary C Lipton, Melanie Mitchell, Preetum Nakkiran, Max Welling, Andrew Gordon Wilson
https://arxiv.org/abs/2312.09323

"The goal of this series is to chronicle opinions and issues in the field of machine learning as they stand today and as they change over time. The plan is to host this survey periodically until the AI singularity paperclip-frenzy-driven doomsday, keeping an updated list of topical questions and interviewing new community members for each edition. In this issue, we probed people’s opinions on interpretable AI, the value of benchmarking in modern NLP, the state of progress towards understanding deep learning, and the future of academia."

Пересказывать тут особо нечего, читайте и найдёте что-то для себя. Мне вот ответы Andrew Gordon Wilson понравились, достаточно глубокие и с кучей ссылок. Узнал про его прикольный проект "CoLA: Exploiting Compositional Structure for Automatic and Efficient Numerical Linear Algebra" (https://arxiv.org/abs/2309.03060, https://github.com/wilson-labs/cola).

2024-01-07 23:41:54

Продолжая тему с GFlowNets, Йошуа Бенжио набирает постдоков, исследователей и инженеров в свою группу по работе над AI Alignment с вероятностными гарантиями безопасности. И отдельно ищет себе сильного постдока на тему про GFlowNets с применением к AI Safety. Пишите!

"I am looking for postdocs, research engineers and research scientists who would like to join me in one form or another in figuring out AI alignment with probabilistic safety guarantees, along the lines of the research program described in my keynote (https://www.alignment-workshop.com/nola-2023) at the New Orleans December 2023 Alignment Workshop.

I am also specifically looking for a postdoc with a strong mathematical background (ideally an actual math or math+physics or math+CS degree) to take a leadership role in supervising the Mila research on probabilistic inference and GFlowNets, with applications in AI safety, system 2 deep learning, and AI for science.

Please contact me if you are interested."


https://www.facebook.com/yoshua.bengio/posts/pfbid02EhTdd3HFEfhj2qfTqCKMrJCqjHPa9gu8A8tm8d6jrsqpN5znG2nGYonFEtLob5Bxl

Также смотрите его тематический кейноут про AI Alignment и немного про GFlowNets:

https://slideslive.com/39014230/towards-quantitative-safety-guarantees-and-alignment

2024-01-06 17:45:20

Phi-2 has the MIT License finally!

https://huggingface.co/microsoft/phi-2

2024-01-06 15:01:59

Beyond Chinchilla-Optimal: Accounting for Inference in Language Model Scaling Laws
Nikhil Sardana, Jonathan Frankle
Статья:https://arxiv.org/abs/2401.00448

Продолжаем тему про оптимальные режимы обучения LLM с учётом инференса и выход за границы рецептов Шиншиллы.

Инференс -- основной этап жизненного цикла большинства моделей. В области software engineering это полностью аналогично этапу эксплуатации программы, именно там она проживает большую часть своей жизни. Разработка и обучение -- это так, короткий момент детства. Особенно это важно для открытых моделей, да и для закрытых тоже, когда они деплоятся на кучу устройств.

Суперзакрытая GPT-3 в 2021 генерила 4.5B слов в день (https://openai.com/blog/gpt-3-apps), а у Character.ai в конце 2022 эта цифра была 1B (https://blog.character.ai/introducing-character/). После запуска ChatGPT и с новыми улучшенными GPT-3.5 и 4 Turbo цифры наверняка значительно выше. Плюс если перевести в токены, то это ещё раза в полтора надо умножить для английского (который, наверное, основной язык, для других эта цифра заметно выше).

Вообще, если предположить, что популярная модель генерит 10B токенов в день (допустим, что токены промпта сюда включены), то при обучении на 3T токенов (как TinyLlama, https://t.me/gonzo_ML/2251) цифры обработанных токенов сравняются через 300 дней. При нынешней скорости прогресса, за год модель может успеть и задепрекейтиться… Так, GPT-4 вышла в марте 2023 (https://t.me/gonzo_ML/1383), а более новая GPT-4 Turbo в ноябре 2023 (https://t.me/gonzo_ML/2055), и она в целом лучше и, что ещё более важно, сильно дешевле старой модели. Оставляем за скобками, что обучены они были ещё сильно раньше, и что для обучения новой модели может использоваться старая.

В общем при всей сложности экономики процесса, инференс важен, и его надо учитывать наравне с обучением.

Первый большой прорыв в поиске оптимальных режимов (с точки зрения вычислительного бюджета, размера модели и количества токенов в обучении) произошёл в работе про Chinchilla (https://t.me/gonzo_ML/1216). После той работы многие начали использовать найденные в ней рецепты, где количество токенов должно скейлиться в той же пропорции, что и число параметров модели. Некоторые модели при этом уже выходили сильно за этот рецепт, те же LLaMa и Llama 2. На обучении различных моделей было видно, что графики лосса и качества решения downstream задач не выходят на плато, можно продолжать и дальше.

В этом месте возникает логичный trade-off, 1) обучить большую модель по [уже] классическим рецептам Шиншиллы, или 2) обучить модель поменьше размером, но на большем числе токенов. Если итоговое качество одинаковое, то у второго варианта есть выигрыш в инференсе -- сэкономим кучу ресурсов, а может также и откроем новые рынки, если модель можно гонять на устройствах меньшей мощности, куда большая модель не лезет.

Очень прав был Ричард Хэмминг, когда он рассматривал эволюцию железа, софта и приложений в контексте экономики (если ещё не читали его “The Art of Doing Science and Engineering”, то это must read, https://press.stripe.com/the-art-of-doing-science-and-engineering):

“Computers have opened the door much more generally to the mass production of a variable product, regardless of what it is: numbers, words, word processing, making furniture, weaving, or what have you. They enable us to deal with variety without excessive standardization, and hence we can evolve more rapidly to a desired future!”

Эта цитата, мне кажется, тоже очень в тему того, что сейчас происходит вокруг AI, Foundation Models и LLM в частности.

Возвращаясь к статье, авторы обновляют scaling laws Шиншиллы, чтобы учесть в них массовый инференс и выступают за более долгое обучение меньших моделей. В формулировке они исходят из того, что количество запросов на инференс не зависит от размера модели (при условии одинакового качества).

2024-01-06 15:01:59

Цель: минимизация суммарных FLOPS на обучение и весь инференс. Для трансформера с N параметров используется стандартная аппроксимация для FLOPS: 6N на токен обучения и 2N на токен в инференсе, соответственно нужно найти argmin 6NDtr + 2NDinf, где Dtr и Dinf -- число токенов в обучении и инференсе соответственно.

Задача в работе про Шиншиллу ставилась как “при заданном вычислительном бюджете найти оптимальные N (параметры) и Dtr (токены), минимизирующие лосс предобучения”.

В текущей работе задача иная “при заданном лоссе найти N и Dtr, минимизирующие стоимость компьюта”. Стоимость компьюта зависит от будущего инференса, так что его надо оценить до обучения.

Полученные графики показывают отношение предлагаемых работой FLOPs, параметров и токенов предобучения к значениям оптимальным для Шиншиллы. Это представлено в виде кривых для разных значений лосса и потребностей в инференсе. Когда потребности в инференсе невелики, то Шиншилла оптимальна.

Например, для модели уровня качества Chinchilla-7B при потребности в инференсе 10^11 токенов оптимальнее обучить 6B модель на 1.18x оригинальных данных. Этот выбор приведёт к уменьшению итоговых FLOPs.

Но интереснее конечно не FLOPs уменьшать, а деньги. На инференсе и на обучении загрузка (Model FLOPs Utilization, MFU) железа очень разная, последовательная генерация приводит к особенно низкой загрузке. К тому же на инференсе можно сделать квантизацию и на том же железе более эффективно это считать. А ещё можно и инференс на другом более дешёвом железе делать…

В обновлённую формулу добавляются MFU обучения и инференса, а также цена за FLOPs, получаются другие кривые (подразумевая обучение на A100-80GB, инференс на A100-40GB с квантизацией INT8 и по ценам Lambda Labs). Короче, можно экономить. В некоторых условиях до 50%+.

Тренд на обучение меньших моделей подольше вовсю цветёт и разворачивается!

2024-01-05 22:47:32

[Singapore] TinyLlama: An Open-Source Small Language Model
Peiyuan Zhang, Guangtao Zeng, Tianduo Wang, Wei Lu
Статья:https://arxiv.org/abs/2401.02385
Код: https://github.com/jzhang38/TinyLlama

В полку SLM (Small Language Models) прибыло! TinyLlama — это моделька размера 1.1B, обученная на 3T токенов! Для сравнения намного большую 70B Шиншиллу (https://t.me/gonzo_ML/1216) обучали на меньшем датасете в 1.4T токенов. По рецептам Шиншиллы оптимальное обучение для 1B модели было бы на 20B токенов (https://t.me/gonzo_ML/1223), а тут 3T, почувствуйте разницу! Кажется, это в первый раз для настолько малой модели.

Из других SLM за последнее время были, например, Phi 1 и 1.5 с 1.3B (https://t.me/gonzo_ML/1871), Phi 2 c 2.7B (https://t.me/gonzo_ML/2173) или Gemini Nano с 1.8B и 3.2B (https://t.me/gonzo_ML/2117).

Это интересное направление, потому что в целом все бегут за большими размерами, и ниша малых моделей недоисследована, а с учётом важности инференса они не менее важны. При этом давно уже есть наблюдения, что можно пообучать модель сильно за пределами compute optimal рецептов Шиншиллы, и это продолжает приносить плоды.

Архитектура классическая, декодер трансформера по рецепту Llama 2 с её же токенизатором. Данные собрали из SlimPajama (почищенный вариант RedPajama) и Starcoderdata, суммарно 950B токенов, так что обучали примерно 3 эпохи. Сэмплили датасеты в пропорции 7:3.

При этом задействовали разные продвинутые штуки и взяли RoPE энкодинги, RMSNorm pre-norm, SwiGLU, grouped-query attention.

Для скейлинга и ускорения задействовали Fully Sharded Data Parallel (FSDP) из Пайторча, свежий Flash Attention 2, заменили fused SwiGLU из xFormers на оригинальный и сэкономили памяти (это, кстати, для меня удивительно, мои первые ожидания, что fused реализация должна быть лучше) -- это позволило уместить модель в 40Gb памяти.

В итоге на A100-40G получили training throughput в 24,000 токенов в секунду. Для обучения на 300B токенов TinyLlama-1.1B требуется 3,456 A100 GPU-часов, в то время как у Pythia эта цифра равна 4,830 и у MPT’s вообще 7,920 часов.

Использовали для обучения Lit-GPT (https://github.com/Lightning-AI/lit-gpt, базируется на nanoGPT). AdamW, cosine learning rate, warmup, gradient clipping.

Обучалось 90 дней на 16 A100-40G GPU. По ценам AWS на p4d (https://aws.amazon.com/ec2/instance-types/p4/) это было бы примерно $140k между прочим.

Результат хорошо бьёт бейзлайны в лице OPT-1.3B, Pythia-1.0B и Pythia-1.4B. На MMLU правда хуже. С увеличением вычислительного бюджета перформанс продолжает расти, не понял только почему он более шумным становится.

Кажется, работа -- верх открытости. Весь код обучения, промежуточные чекпойнты, все детали обучения доступны.

Респект!

2024-01-05 14:53:42

Приготовьтесь к запуску GPT Store на следующей неделе!

https://techcrunch.com/2024/01/04/openais-app-store-for-gpts-will-launch-next-week/

"GPTs effectively democratize generative AI app creation — at least for apps that use OpenAI’s family of models. In fact, GPTs could kill consultancies whose business models revolve around building what are essentially GPTs for customers."

2024-01-04 14:00:59

Вирт умер :(

https://twitter.com/Bertrand_Meyer/status/1742613897675178347

2024-01-03 23:49:26

"Извинити"

2024-01-03 00:34:29

[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. В сеть подаётся описание состояния, на выходе получается набор скаляров, соответствующий следующим состояниям.

2024-01-03 00:34:29

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), в которой ими делают файнтюнинг.

2023-12-31 00:02:24

Увидел этот пост (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

2023-12-30 01:09:51

“Human Compatible”, Stuart Russell
https://people.eecs.berkeley.edu/~russell/hc.html
#2

Прочитал Рассела, в прошлый раз (https://t.me/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 остаётся большой проблемой, от которой мы никуда не денемся (это уже видно на примере киберсека).

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

2023-12-28 21:28:19

Ещё релевантный обзор предшествующей работы на эту же тему

2023-12-28 18:00:26

Просадка в качестве модели от такой индуцированной разреженности минимальная. Изредка бывает незначительное уменьшение, но бывает и увеличение качества, что само по себе интересно (если это не статистическая флуктуация).

PowerInfer совместим с разными семействами LLM, включая OPT (7B-175B), LLaMA (7B-70B), и Falcon40B. На очереди Mistral-7B.

Я прям уверен, что от этого и других подобных решений разойдётся целая ветвь новых работ и продвинутых движков инференса. Самой Нвидии это скорее всего не очень интересно (надо продавать дорогие A100/H100), но народное опенсорс движение создаст свою вселенную решений для более дешёвого железа. И здесь должен возникнуть не один стартап.

2023-12-28 18:00:25

PowerInfer: Fast Large Language Model Serving with a Consumer-grade GPU
Yixin Song, Zeyu Mi, Haotong Xie, Haibo Chen
Статья: https://arxiv.org/abs/2312.12456
Код: https://github.com/SJTU-IPADS/PowerInfer

Очень интересный инженерный проект по оптимизации инференса LLM от Института параллельных и распределённых систем из Шанхая, чтобы запускать большие LLMки на GPU консьюмерского уровня. Авторы опубликовали свой гибридный GPU-CPU движок для инференса под названием PowerInfer, который работает быстрее llama.cpp в 11+ раз на RTX 4090 (24G) с моделью Falcon(ReLU)-40B-FP16, а также демонстрирует скорость генерации токенов всего на 18% ниже, чем в 10 раз более дорогая A100.

Работа основана на следующих наблюдениях. Первое: активации нейронов в LLM демонстрируют локальность (locality) и распределены по степенному закону. Есть небольшое количество hot neurons, которые активируются часто на разных входных данных, и cold neurons, активирующиеся редко на конкретных входах, и которых большинство. Второе ценное наблюдение в том, что пересылать нужные веса с CPU на GPU и считать результат там может быть медленнее, чем посчитать их на месте на CPU, особенно если нужна не полная матрица весов, а её подмножество (которое может быть неплохо посчитано через современные векторные расширения в системе команд процессоров). В итоге горячие нейроны (строки/столбцы соответствующих матриц весов) отправляются на GPU для быстрого доступа, а холодные считаются на CPU по мере надобности. Это существенно понижает требования к памяти GPU и уменьшает пересылку данных через шину PCIe туда-сюда.

Технически PowerInfer состоит из двух частей: движка инференса и оффлайн части.

Оффлайн часть включает профайлер для обнаружения горячих нейронов и солвер (на основе целочисленного линейного программирования, Integer Linear Programming, ILP) для оценки влияния нейрона на результат инференса и создания полиси аллокации нейронов. Это 400 строк на Питоне + HuggingFace Transformers. Горячие/холодные нейроны определяются на офлайн шаге, далее во время инференса они будут загружены на GPU/CPU соответственно.

Движок инференса сделан на базе llama.cpp с добавленными 4200 строк кода на C++/CUDA. Движок запускает на CPU отдельные треды для GPU и CPU экзекьюторов, которые управляют этими конкурентными вычислениями, а слияние результата происходит на GPU (потому что там сидят более часто активирующиеся нейроны). PowerInfer использует адаптивные предикторы для предсказания, какие нейроны будут активны при текущих входных данных, и только эти нейроны (из уже разделённых на горячие и холодные) и вычисляются. То есть нейрон мог быть определён как горячий на офлайн шаге, загружен на GPU, но всё равно не активирован, потому что предиктор решил, что его вычислять не нужно. Можно, наверное, это рассматривать как adaptive sparsity.

Для каждого трансформерного слоя работают два предиктора, один для MHSA, другой для MLP. Живут они тоже в памяти GPU, поэтому есть конкуренция за этот ресурс и предикторы важно сделать минимально допустимого размера. Предиктор -- это MLP с одним скрытым слоем. В работе есть хитрая итеративная процедура для изменения размера скрытого слоя предиктора в зависимости от асимметрии (skewness) распределения активаций.

Так понимаю, что предикторы и для hot/cold и для онлайн шага обучены независимо на типовых корпусах типа C4 или Википедии, и код их обучения пока не опубликован. Но вроде как планируется.

Также реализованы свои neuron-aware sparse operators, которые более заточены на эту задачу, чем более универсальные из cuSPARSE, Sputnik (https://github.com/google-research/sputnik), SparTA (https://github.com/microsoft/SparTA) или FlashLLM (https://github.com/AlibabaResearch/flash-llm). А JIT компилятор PIT (https://arxiv.org/abs/2301.10936) не поддерживает GPU-CPU гибридизацию.

В результате хорошие ускорения до десятка раз относительно llama.cpp на разных моделях.

2023-12-23 10:46:22

PathFinder: Guided Search over Multi-Step Reasoning Paths
Olga Golovneva, Sean O'Brien, Ramakanth Pasunuru, Tianlu Wang, Luke Zettlemoyer, Maryam Fazel-Zarandi, Asli Celikyilmaz
Статья: https://arxiv.org/abs/2312.05180

Активно развивается тема многоходовых генераций через LLM. Здесь уже были Tree-of-Thought (https://t.me/gonzo_ML/1885), есть Graph-of-Thoughts (https://arxiv.org/abs/2308.09687) и даже Everything-of-Thought (https://arxiv.org/abs/2311.04254) с применением MCTS. Взбудораживший общественность Q* от OpenAI (https://www.technologyreview.com/2023/11/27/1083886/unpacking-the-hype-around-openais-rumored-new-q-model/) предположительно тоже связан с многоходовым планированием в LLM. Если посмотреть глобально, то оно всё ложится в концепцию LLM Programs (https://t.me/gonzo_ML/1584).

FAIR предложили свой подход к многоходовой генерации под названием PathFinder, метод декодирования для генерации и уточнения reasoning chains. Подход состоит из двух этапов: генерации кандидатов (candidate generation) и их отборе (candidate selection). Для генерации используется метод на деревьях, для отбора специальные функции близости внутри пула кандидатов.

На этапе генерации ветвление происходит на уровне шагов рассуждения, не генерации отдельных токенов. То есть каждый узел дерева -- это шаг рассуждения. На ветвление влияют параметры сэмплинга (типа top-k, top-p, температуры -- для неё реализован отжиг, уменьшение с коэффициентом). Делается ветвление из каждого неудалённого (non-pruned) листа с заданным коэффициентом ветвления и продолжается пока не достигли точки останова либо не превысили заданную максимальную глубину. Ветви удаляются на основе скора (нормализованная на длину сумма logprobs токенов).

На генерацию есть ограничения. Так, модель перегенерирует шаг, если сработала одна из двух проверок: 1) шаг по косинусной близости похож на один из предыдущих; 2) шаг противоречит предыдущему контексту (за это отвечает специальная entailment model, классифицирующая шаг по трём классам: entailment, neutral, contradiction). Ветка дерева обрезается, если за две попытки не удалось сгенерить валидный шаг.

Есть также размер буфера b, ограничивающий количество гипотез, хранимых для каждого вопроса. Финальная гипотеза выбирается из пула так, чтобы она максимизировала сумму функций близости (работал вариант с количеством общих n-грамм) со всеми другими кандидатами в пуле, это интуитивно похоже на голосование или self-consistency (https://t.me/gonzo_ML/1885).

Для тестов используется маленькая LLAMA-7B, проверяют на GSM8K, StrategyQA, CSQA, то есть про арифметический и commonsense reasoning. Для отбора кандидатов пробовали три разных метода: триграммы, и FLAN-T5-XL или text-davinci-003 в качестве verifier model.

Бейзлайны разные: GPT-6.7B, та же LLAMA-7B, MINERVA-8B (ожидаемо рулит на GSM8K) и FLAN-T5-XL 3B (сильно instruction finetuned). В бейзлайнах дефолты в основном на основе greedy decoding + CoT prompts.

Не сказать что PathFinder прямо радикально всех бьёт. На первых двух бенчмарках LLAMA-7B с self consistency выступает прям очень хорошо. Новый подход заметно улучшает только на третьем бенчмарке. Flan силён, но он файнтюнился на части из этих датасетов, так что на цифры смотреть бесполезно.

Отдельно проверили, насколько добавляют качества продвинутые методы оценки (scorers и verifiers через LLM). text-davinci-003 всех бьёт, но до upper bound (с оракулом) ей далеко. В этой части явно есть что улучшать.

Фактор ветвления в сочетании с размером буфера и функцией оценки кандидатов важен. При большом ветвлении функции оценки могут быть сильно подвержены влиянию шума. Для каждого размера буфера свой оптимум. У самого размера буфера тоже есть лимит, после которого качество не улучшается. Также интересно, что для методов на деревьях важно разнообразие, PathFinder начинает перформить лучше end-to-end метода только начиная с 8-кратного ветвления.

2023-12-23 10:46:22

Резюмируя, метод вычислительно более тяжёлый в разы (а с LLM для оценки ответов тем более), в данный момент радикального прорыва относительно других методов не показал, но как proof-of-concept или даже скорее развитие активно прорабатываемой везде темы полезен. Больше разнообразия -- это хорошо. Интересно, насколько другой результат был бы на больших топовых моделях, а не на старой первой маленькой Ламе.

2023-12-21 20:47:24

Лентой принесло

https://www.scientificamerican.com/article/tech-billionaires-need-to-stop-trying-to-make-the-science-fiction-they-grew-up-on-real/

2023-12-20 15:45:45

An In-depth Look at Gemini's Language Abilities
Статья: https://arxiv.org/abs/2312.11444
Код: https://github.com/neulab/gemini-benchmark

Нанообзор.

CMU и некий BerriAI опубликовали своё сравнение Gemini Pro с GPT-3.5, новой GPT-4 Turbo и Mixtral. В оригинальной статье Гугла как раз самых новых интересных моделей типа GPT-4 Turbo не было. Ещё конечно было бы любопытно с Claude 2.1 сравнить.

В целом от Pro особых ожиданий не было, она и по родному сравнению была примерно сравнима с GPT-3.5 (в текущем сравнении она оказалась похуже). Самая интересная модель Ultra, но она пока недоступна. Интересно, конечно, будет, если OpenAI успеет GPT-4.5 до конца года выкатить.

Ниже одна итоговая картинка со сравнением. За деталями самих сравнений велкам в статью.

2023-12-19 21:41:44

For Distillation, Tokens Are Not All You Need
Mrigank Raman, Pranav Mani, Davis Liang, Zachary C. Lipton
Статья: https://openreview.net/pdf?id=2fc5GOPYip

Новости дистилляции. Статья с воркшопа Instruction Tuning and Instruction Following на NeurIPS 2023.

TL;DR Авторы предложили метод дистилляции LLM под названием SLIM, использующий значения топ 5% логитов для дистилляции на каждом шаге декодирования + динамическое взвешивание KL/CE лоссов. Результат лучше классической дистилляции, SFT и MiniLLM. Метод скейлится до учителей размером ~70B.

Если поглубже, то современные LLM доросли до огромных размеров и часто используются для аннотирования и генерации инструкций для файнтюнинга малых моделей. Классика файнтюнинга при этом -- supervised fine-tuning (SFT), дообучение на новых (сгенерированных) текстах как на hard labels. Мы знаем, что этот метод несёт сильно меньше информации о распределении, чем мог бы (https://t.me/gonzo_ML/1911).

Дистилляция уже используется для LLM (и многие маленькие LLM получаются из больших, та же Gemini вроде как) и с ней есть сложности. Например, маленькая модель может быть недостаточно выразительной, чтобы покрыть все моды распределения учителя.

Недавний метод MiniLLM (https://arxiv.org/abs/2306.08543) заменяет forward Kullback-Leibler divergence (KLD) на reverse KLD, чтобы предотвратить переоценку студентом низковероятностных регионов распределения учителя. Там для обучения использовался RL, что добавляло сложности. Текущая работа всё упрощает и улучшает, подход назвали SLIM (Sparse Logit Infused Modeling).

Идея проста. Давайте по нашему датасету для обучения через модель-учителя создадим датасет логитов (выходы нейронов без применения функции активации). Для каждого токена в последовательности получаем соответственно V (размер словаря) значений, это будут soft targets. Проблема с таким подходом, что это требует дофига места. Для уменьшения требований предлагается взять только 5% максимальных логитов для каждого токена, остальные считать нулями, так получаются разреженные логиты.

Дальше запускаем процедуру дистилляции (для тех, кто забыл как это работает, можно почитать тут https://t.me/gonzo_ML/118), где в качестве целей берутся soft targets и лосс, являющийся взвешенной суммой обычного кросс-энтропийного лосса (CE) и традиционного KL лосса. Вес KD лоссу даётся зависящий от соотношения логита учителя и студента, таким образом он получается адаптивным и у KL компоненты больше вклад, когда у учителя больше уверенность в предсказании, чем у студента.

Подход проверили на задачах следования инструкциям. Оценивали по Rouge-L и через фидбек от GPT-4. Сравнивались с SFT на hard labels и MiniLLM, для обучения использовали 7B модели LLaMA, LLaMA 2, MPT, учитель был 13-30B. SLIM даёт результат лучше бейзлайнов. SFT вообще хуже всех.

Затем проверили на downstream задачах: ARC, Hellaswag, MMLU, TruthfulQA. Здесь сравнивались с SFT на LLaMA 2 70B в качестве учителя и Llama2-7B в качестве студента. Тоже лучше.

Также проверили генерацию данных для предобучения. Взяли Pythia-6.9B и сгенерили ей датасет текстов + 5% логитов. Затем обучили случайно инициализированную Pythia-160M на подвыборках датасета разного размера. По графику перплексии показали, что SLIM более sample efficient, чем SFT и обычная дистилляция. Я тут не до конца понимаю, что именно они всё-таки под обычной дистилляцией подразумевают, более классический KL лосс чтоли и без топ 5%?

Anyway, просто и эффективно. Метод вроде не сильно отличается от классической дистилляции, не назвал бы его радикально новым, по мне так скорее итеративное улучшение. Интересно, как сами OpenAI, Гугл и остальные внутри себя модели дистиллируют. Есть ли большая разница.

2023-12-19 21:41:44

Проблема, что этот метод сложно применять с blackbox моделями типа OpenAI, но с новыми параметрами про logprobs и top_logprobs (https://platform.openai.com/docs/api-reference/chat/create#chat-create-logprobs) как-то можно к этому приблизиться. Правда лицензия (https://openai.com/policies/terms-of-use) вроде как это запрещает (“Use Output to develop models that compete with OpenAI”), но тут я не очень понимаю, как на сгенерённых GPT-4 датасетах обучают другие модели, там почему можно?

2023-12-17 13:57:44

В общении есть явная очерёдность, киты отвечают с разницей в 2 секунды, коммуникация может вестись на расстоянии от метров до километров. У индивидов внутри семьи есть диалект с общими по крайней мере 10 кодами (но есть и индивидуальная вариативность). Детёнышам нужно по крайней мере два года, чтобы начать производить различимые коды.

Для классических методов supervised ML получение размеченных корпусов является довольно дорогой и трудной задачей (хотя какие-то успешные результаты применения обучения с учителем есть). Перспективным видится вариант использования различных современных методов self-supervised representation learning. Но с ними тоже проблема в том, что для нормального SSL нужны большие корпуса, хоть и неразмеченные. Для примера, датасет Dominica Sperm Whale Project (DSWP) содержит лишь <10^4 код, хотя собирается с 2005 года. То есть до размеров датасетов для GPT-3 с 10^11 токенов (хоть и сложно сопоставить токены и коды) ещё далеко. CETI намерены собрать датасет порядка 10^9 (и это сравнимо с датасетом для BERT’а). Оценка базируется на почти непрерывном мониторинге 50-400 китов и в год ожидается от 400M до 4B записанных щелчков.

Техническая часть проекта состоит из нескольких разделов.

Data acquisition. Данные надо собирать наименее инвазивно, и куча современных технологий может помочь: дроны воздушные и морские (типа искусственных рыб), метки на китах, сети буйков и плавающие фиговины (floaters).

Data processing. Нужно хранение и умная предобработка этих данных (детекция щелчков, предварительная аннотация, синхронизация различных типов сигналов). Результирующий датасет будет своеобразной “социальной сетью китов”.

Decoding and encoding, построение модели коммуникации китов, которая состоит из перечисленных ранее блоков.

Фонетика и фонология: много открытых вопросов, например, определяются ли коды по абсолютным ICI, несут ли спектральные признаки код информацию, каковы distributional restrictions, и так далее.

Морфология и синтаксис: надо понять грамматику коммуникации, каковы правила построения кодов, есть ли рекурсия (пока ни в какой коммуникации животных она вроде не найдена). И здесь, и в фонетике очень нужны большие датасеты.

Семантика: надо понять смысл всех этих вокализаций, для этого нужно сохранить весь важный контекст, чтобы получить grounding найденных морфем.

Дискурс и социальная коммуникация: надо понять протоколы общения, когда и кто говорит. На этом можно будет строить предсказательные модели разговора (а каком-то смысле аналоги LLM или чатботов).

Где-то рядом есть аспекты избыточности коммуникации и защиты от ошибок, эти механизмы тоже надо понять. Отдельный большой вопрос это language acquisition, как детёныши схватывают этот язык, здесь может быть много ценных закономерностей: в каком порядке выучиваются коды, каковы самые базовые структурные блоки и их функции, и так далее. Для этого тоже нужно больше данных.

Ценно будет провести playback-based validation, здесь много своих сложностей. Знаем ли мы что воспроизводить, можем ли адекватно реплицировать в реальной среде (чтобы не с лодки, а с автономного девайса), распознаем ли ответ?

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

2023-12-17 13:57:43

Toward understanding the communication in sperm whales
Jacob Andreas, Gašper Beguš, Michael M. Bronstein, Roee Diamant, Denley Delaney, Shane Gero, Shafi Goldwasser, David F. Gruber, Sarah de Haas, Peter Malkin, Nikolay Pavlov, Roger Payne, Giovanni Petri, Daniela Rus, Pratyusha Sharma, Dan Tchernov, Pernille Tønnesen, Antonio Torralba, Daniel Vogt, Robert J. Wood
Статья: https://www.sciencedirect.com/science/article/pii/S2589004222006642
Сайт: https://www.projectceti.org/

Познакомился тут с Томом Мастиллом, автором книги “How to speak whale” (https://www.tommustill.com/how-to-speak-whale), узнал от него про проект CETI, Cetacean Translation Initiative (https://www.projectceti.org/), я его раньше как-то пропустил. Очень зачётный проект! Название, видимо, отсылка к SETI. Цель проекта -- понять коммуникацию кашалотов. После просмотра Аватара 2 как-то особенно хорошо легло 🙂

У проекта есть программная статья от середины прошлого года (июнь 2022) с родмэпом про то, как участники хотят добиться понимания китовой коммуникации (спойлер: с помощью ML и роботов!). Эта работа может стать шаблоном для понимания других существ, потому что киты -- достаточно хороший модельный организм с развитыми нейроанатомическими признаками, высокими когнитивными способностями, социальной структурой и дискретным кодированием на основе щелчков (clicks).

Для понимания языкоподобной коммуникации надо понять несколько вещей.
1) Каковы артикуляторные и перцептивные строительные блоки, которые можно надёжно производить и распознавать? Это аналог фонетики и фонологии.
2) Каковы правила композиции этих примитивов? Это аналог морфологии и синтаксиса.
3) Каковы правила интерпретации и присвоения смысла этим блокам? Аналог семантики.
4) Может быть также важно влияние контекста на смысл, это прагматика.

В идеале хочется иметь универсальный автоматизированный data-driven toolkit, который можно применять к нечеловеческой коммуникации. Пока его нет.

Применение ML очень сильно упирается в отсутствие больших датасетов для этих задач, и вопросы сбора данных (Record), а также их процессинга (Process), например, аннотирование с добавлением ID кита, составляют отдельную большую часть проекта. Другая часть -- декодирование средствами ML и создание коммуникационной модели китов (Decode). Финальная важная часть, Encode & Playback подразумевает интерактивное взаимодействие с китами и уточнение китовой языковой модели.

Китов изучать сложно, по сравнению с земными животными сильно другая экология и среда. Так, до 1957 года вообще не знали, что кашалоты умеют производить звуки, и только в 1970-х впервые поняли, что они используют их для коммуникации. Киты путешествуют на тысячи километров, живут вероятно более ста лет, причём по сути в трёхмерной среде, часто стабильными социальными группами, подолгу заботясь о детёнышах. Социальное обучение для них вероятно важнее индивидуального или генетически обусловленного поведения. Большая часть их коммуникации, видимо, одномодальная, через акустику. В зоне, куда проникает свет, также важно зрение.

Биоакустическая система кашалота эволюционировала как сенсорный орган, используемый для эхолокации и поиска добычи. Производимые китом щелчки по структуре состоят из нескольких импульсов с мощным первым импульсом и последующими с затухающей амплитудой (получающимися благодаря реверберации начального импульса в спермацетовом органе в носу кита -- кажется, это похоже на основной тон и форманты в человеческой речи, но с антропоцентризмом надо, конечно, поосторожнее).

Кроме эхолокации, этот же орган используется и для коммуникации, она состоит из коротких пакетов щелчков (<2 секунд) с интервалами (Inter-click intervals, ICI) и выделяемыми паттернами, которые называются кодами (codas). Кода состоит из 2-40 всенаправленных кликов. У разных групп китов свои диалекты, обычно у клана есть по крайней мере 20 разных код. Похоже, что в них содержится богатая информация об identity её источника, но в целом коммуникативные функции конкретных код остаются загадкой.

2023-12-14 18:46:10

До кучи для тех, кто любит покопаться в слухах. Не знал про Arrakis :)

https://www.youtube.com/watch?v=vFazUQBZZt8

2023-12-14 15:34:56

Свежих слухов подвезли :)

2023-12-14 00:34:55

Интересный пост Томаша Миколова

"Yesterday we received a Test of Time Award at NeurIPS for the word2vec paper from ten years ago. I'm really happy about it! I think it's the first "best paper" type of award I ever received. In fact, the original word2vec paper was rejected at the first ICLR conference in 2013 (despite the acceptance rate of around 70%), so it made me think how difficult it is for reviewers to predict future impact of research papers.

I've heard a lot of comments - both positive and negative - about word2vec during those years, and did not really comment online about it. Somehow I felt the research community is constantly flooded by propaganda-style PR from certain researchers who are hacking this way the citation counts and attention of others, and I did not want to be part of this. But after ten years, I think it could be entertaining to share some stories associated with this paper.

One frequent comment I've heard was that the code was difficult to understand to the point that some people thought I made it unreadable intentionally. But no, I'm not so evil :D The code ended up being over-optimized because I was waiting for many months for approval to publish it, and meanwhile I was trying to make it both faster and shorter. In fact, looking back, if there were not Greg and Jeff in the Brain team, I doubt I would ever get that approval - I think word2vec was likely the first widely known AI project that Google open-sourced.

There was also significant controversy around the GloVe project from Stanford NLP group that was published more than a year after word2vec. While it copied many tricks from our project, GloVe always felt like a step back to me: it was slower, required more memory, and the resulting vectors had lower quality than the original word2vec. However, it was published with word vectors pre-trained on much more data and thus gained a lot of popularity - although the comparison was really apples-to-oranges. We anyways did fix this later in the fastText project, where we did show that word2vec is much better than GloVe when trained on the same data.

I also received a lot of comments on the word analogies - from "I knew that too but forgot to publish it!" (Geoff Hinton, I believe you :) happens to everyone, and anyways I think everybody knows what the origin of Distributed Representations is) to "it's a total hack and I'm sure it doesn't work!" (random guys who didn't bother to read the papers and try it out themselves - including Ian Goodfellow raging about it on Twitter).

Despite word2vec being my most cited paper, I did never think of it as my most impactful project. In fact, word2vec code originally started as a subset of my previous project - RNNLM - which I think ended up forgotten too quickly. In my eyes, it was at least as revolutionary as AlexNet. Just to name ideas that were for the first time ever demonstrated within RNNLM already in 2010 (when it was still dark ages for deep learning): scalable training of recurrent neural networks (as I invented gradient clipping), first ever text generation from neural language model (I was showing examples of this since 2007), dynamic evaluation, character and sub-word level neural language modeling, neural language model adaptation (nowadays called fine-tuning), first publicly available LM benchmark (the modified Penn Treebank dataset - there really was nothing like this on the web when I started my PhD). I published the first ever study showing that neural nets beat n-gram language models increasingly more with more training data when everything is done correctly (today this sounds obvious, but back in the days this was widely considered impossible - even most Google guys did think that the more data you have, the more futile is to work on anything besides n-grams and smoothing techniques).

2023-12-14 00:34:55

It was really lucky for me to join Google Brain in 2012 where there were believers in large scale neural networks who allowed me to work on word2vec to demonstrate the potential. But I don't want to give the impression everything was always perfect - as a follow up project after word2vec, I wanted to popularize neural language models by improving Google Translate. I did start collaboration with Franz Och and his team, during which time I proposed a couple of models that could either complement the phrase-based machine translation, or even replace it. I came up (actually even before joining Google) with a really simple idea to do end-to-end translation by training a neural language model on pairs of sentences (say French - English), and then use the generation mode to produce translation after seeing the first sentence. It worked great on short sentences, but not so much on the longer ones. I discussed this project many times with others in Google Brain - mainly Quoc and Ilya - who took over this project after I moved to Facebook AI. I was quite negatively surprised when they ended up publishing my idea under now famous name "sequence to sequence" where not only I was not mentioned as a co-author, but in fact my former friends forgot to mention me also in the long Acknowledgement section, where they thanked personally pretty much every single person in Google Brain except me. This was the time when money started flowing massively into AI and every idea was worth gold. It was sad to see the deep learning community quickly turn into some sort of Game of Thrones. Money and power certainly corrupts people...

Anyhow, the interest in language models was growing maybe slowly over the years, but with the explosion of interest since ChatGPT was released it is really cool to see so many people finally making connection between AI and language. We're not there yet, and I personally believe we need to make new discoveries to push through generalization limits of neural models. We're certainly living in exciting times. But let's not put too much faith into individuals who want to monopolize technology that is based on the hard work of dozens, or even hundreds of scientists while making claims it's all for the good of humanity."


https://www.facebook.com/1533402400/posts/pfbid0ao3fqoznHoprc8FawH6p84bctobvpTPrrbwxtGUXmBz92CzWoG63U6VSjcWJCJJTl/

2023-12-13 16:34:54

Gemini Pro начинает быть доступным (https://ai.google.dev/pricing).

Пока скорее на пощупать, pay-as-you-go будет позже. Ценник наконец-то в символах, а не токенах :)

Не самая интересная модель. GPT-4 (которая ещё не Turbo) бьёт недоступная пока Ultra, но как и ожидалось (https://t.me/gonzo_ML/2118).

2023-12-12 19:13:51

И до кучи, вдруг кто пропустил Zephyr 3B (не 7B!)

https://stability.ai/news/stablelm-zephyr-3b-stability-llm

Правда она тоже некоммерческая :(

2023-12-12 18:40:47

Продолжаем линию маленьких моделей, Microsoft анонсировал phi-2.

https://www.microsoft.com/en-us/research/blog/phi-2-the-surprising-power-of-small-language-models/

We are now releasing Phi-2, a 2.7 billion-parameter language model that demonstrates outstanding reasoning and language understanding capabilities, showcasing state-of-the-art performance among base language models with less than 13 billion parameters. On complex benchmarks Phi-2 matches or outperforms models up to 25x larger, thanks to new innovations in model scaling and training data curation.

Вопрос правда с лицензией. Предыдущие phi были чисто некоммерческими.

2023-12-11 21:53:26

А кому надоели LLM, есть свежий лонгрид от Стивена нашего Вольфрама

https://writings.stephenwolfram.com/2023/12/observer-theory/

2023-12-11 21:01:57

Это просто пир духа какой-то.

https://www.cerebras.net/blog/introducing-gigagpt-gpt-3-sized-models-in-565-lines-of-code/

GigaGPT is Cerebras’ implementation of Andrei Karpathy’s nanoGPT – the simplest and most compact code base to train and fine-tune GPT models. Whereas nanoGPT can train models in the 100M parameter range, gigaGPT trains models well over 100B parameters. We do this without introducing additional code or relying on third party frameworks – the entire repo is just 565 lines of code. Instead gigaGPT utilizes the large memory and compute capacity of Cerebras hardware to enable large scale training on vanilla torch.nn code. With no modifications, gigaGPT supports long context lengths and works with a variety of optimizers.

Но кажется только на железе Cerebras'а. Но всё равно прикольно, больше железных и облачных альтернатив!

2023-12-11 20:07:38

И раз сегодня много LLM новостей, то вот ещё одна для тех, кто пропустил.

Nexusflow выложили NexusRaven-V2 с 13B параметров. Модель бьёт GPT-4 (но вроде не Turbo) на Zero-shot Function Calling. Теперь можете построить больше разных ко-пилотов :)

Блог: https://nexusflow.ai/blogs/ravenv2
HF: https://huggingface.co/Nexusflow/NexusRaven-V2-13B

2023-12-11 19:44:45

А ещё из интересного, в свежей huggingface transformers растёт и крепнет поддержка GPU AMD.

AMD's ROCm GPU architecture is now supported across the board and fully tested in our CI with MI210/MI250 GPUs. We further enable specific hardware acceleration for ROCm in Transformers, such as Flash Attention 2, GPTQ quantization and DeepSpeed.

* Add RoCm scheduled CI & upgrade RoCm CI to PyTorch 2.1 by @fxmarty in #26940
* Flash Attention 2 support for RoCm by @fxmarty in #27611
* Reflect RoCm support in the documentation by @fxmarty in #27636
* restructure AMD scheduled CI by @ydshieh in #27743

https://github.com/huggingface/transformers/releases/tag/v4.36.0

2023-12-11 19:42:01

Mistral выкатил MoE (Mixture of Experts) модель Mixtral 8x7B, которая типа бьёт GPT-3.5 из коробки. Также есть instruction finetuned Mixtral 8x7B Instruct. Это интересно.

https://mistral.ai/news/mixtral-of-experts/

2023-12-11 00:39:54

Mamba: Linear-Time Sequence Modeling with Selective State Spaces
Albert Gu, Tri Dao
Статья: https://arxiv.org/abs/2312.00752
Код: https://github.com/state-spaces/mamba
Твиттер-тред: https://twitter.com/_albertgu/status/1731727672286294400

Свежее продолжение истории про state space models (SSM), а точнее structured SSM или S4 (https://t.me/gonzo_ML/1424).

S4 имеет рекуррентную формулировку, к тому же её можно реализовать и через свёртку, имея линейную или около того сложность от длины входной последовательности. Модели этого класса продемонстрировали хорошие результаты в моделировании длинных последовательностей, и, конечно, все давно ждут, когда уже наконец мы побьём трансформеры на моделях большого размера на текстовых задачах. Пока это не очень получалось, основные крутые результаты были на непрерывных сигналах типа аудио и зрения. Текущая работа предлагает новый класс selective state space models и закрывает этот пробел, получая качество трансформеров с линейным масштабированием по размеру входа.

Напомним, что S4 задаётся четырьмя параметрами: A,B,C и ∆, которые определяют двухэтапную seq2seq трансформацию, где вход x(t) трансформируется в скрытое состояние h(t), а оно в свою очередь в выход y(t). В новой работе наконец пришли к стандартным обозначениям входа и скрытого состояния, а не как в работе про S4, где вход был u(t), а скрытое состояние x(t). Если посмотреть на рекуррентную реализацию, то это выглядит так:

h_t = Ah_{t−1} + Bx_t
y_t = Ch_t

На первом этапе непрерывные параметры ∆, A, B дискретизуются по заданному правилу, а на втором происходит вычисление либо через линейную рекуррентность, либо через глобальную свёртку. Рекуррентность хороша для инференса, свёртка хорошо параллелится и удобна для обучения.

Модель обладает свойством Linear Time Invariance (LTI), её динамика постоянна во времени. Благодаря этому свойству модель можно эффективно вычислить свёрткой. Текущая работа демонстрирует фундаментальные ограничения LTI и челлендж эффективной реализации.

Благодаря структуре в матрицах параметров, каждая из них (A, B, C) может быть представлена N числами. Для обработки входной последовательности x длины L с D каналами и с размером батча B, SSM применяется к каждому каналу независимо, и общее скрытое состояние имеет размерность DN. Работа по всему входу соответственно требует O(BLDN) памяти и вычислений.

По мнению авторов, фундаментальная проблема моделирования последовательностей заключается в компрессии контекста в меньшего размера состояние. На трейдофы популярных моделей можно смотреть с этой точки зрения. Механизм внимания в этом смысле effective (позволяет получать хороший результат), но inefficient (требует слишком много ресурсов). Неэффективность его от того, что не происходит сжатия контекста -- весь контекст в виде KV кеша явно хранится для инференса, отсюда он в трансформерах линейный по времени, отсюда же и квадратичное обучение. Рекуррентные модели наоборот efficient -- у них фиксированного размера состояние, отсюда и инференс за константное время и линейное по времени обучение. Но качество результата сильно зависит от того, насколько хорошо состояние хранит в себе контекст.

Показали это на двух модельных задачах, требующих понимания контекста, где недостаточно константной динамики. Одна задача -- это Selective Copying, модификация обычного Copying, где расстояние между запоминаемыми токенами может варьировать и модели надо выборочно запоминать или игнорировать входные данные в зависимости от их содержимого. Другая задача -- Induction Heads из Transformer Circuits. Там надо делать prefix matching внутри контекста и далее копирование. Для LTI систем эти задачи фейлятся.

В итоге, авторы считают, что фундаментальный принцип для построения sequence models -- это selectivity, контекстно-зависимая способность фокусироваться или отфильтровывать входы в состояние последовательности. Авторский метод решения этой проблемы -- позволить параметрам, отвечающим за взаимодействие с последовательностью (это ∆, B, C), зависеть от входа (здесь через линейные проекции, но возможны и иные варианты).

2023-12-11 00:39:54

Сделать такое эффективно -- это челлендж, авторы реализовали алгоритм parallel scan с умным использованием иерархии памяти GPU, что-то происходит в быстрой SRAM, что-то в более медленной HBM. В сочетании с kernel fusion и recomputation получается весьма эффективная реализация с требованиями к памяти как у оптимизированной реализации трансформера с FlashAttention (соавтор текущей работы Tri Dao является и соавтором FlashAttention).

Модели selective SSM в работе иногда называют S6 моделями, потому что S4 + selection mechanism + computed with a scan.

Итоговая архитектура представляет собой микс SSM (здесь, H3, https://arxiv.org/abs/2212.14052) и MLP блоков из трансформера в одном новом блоке, который дальше можно гомогенно стыковать. Внутри блока model dimension D сначала увеличивается на фактор E=2 и из-за этого большую часть параметров блока составляют линейные проекции на входе и выходе, а не сама SSM. Полученный блок в чередовании со стандартной нормализацией (кажется, это RMSNorm или LayerNorm) и residual connection даёт архитектуру под названием Mamba. Там же активации SiLU / Swish и опциональный LayerNorm в той же позиции, что и у RetNet (https://t.me/gonzo_ML/1753).

Модель по дефолту использует действительные числа (многие предыдущие SSM использовали комплексные), и это хорошо работает везде кроме одной задачи. Авторы предполагают, что комплексные числа могут быть полезными в непрерывных модальностях типа аудио/видео, но не в дискретных типа текста или ДНК. Инициализация взята из S4D-Lin/S4D-Real.

Проверяли много на чём.

Сначала синтетические задачи. Selective Copying работает отлично, очень близко к 100%. На задачках с Induction Heads тоже всё супер.

Проверили на языковом моделировании с обучением на Pile и по рецептам из статьи про GPT-3. Сравниваются со стандартной архитектурой (здесь GPT-3), а также с продвинутыми трансформерами (обозначены как Transformer++), основанными на архитектурах PaLM и LLaMa. Тестировали на размерах от 125M до 1.3B параметров. В итоге Mamba -- первая модель без внимания, достигшая качества сильных трансформерных рецептов.

На разных downstream zero-shot задачах качество выше, чем у сопоставимых по размеру Pythia, GPT-Neo, OPT, RWKV (https://t.me/gonzo_ML/1647). А иногда выше, чем и у в два раза более тяжёлых.

На задачах моделирования последовательности ДНК кривые скейлинга тоже отличные, качество на downstream задачах зачётное.

На аудио сравнились с SaShiMi (https://arxiv.org/abs/2202.09729), вроде как на авторегрессионном обучении там она была SoTA. Побили. На генерации речи (датасет SC09) бьёт и её же, и WaveNet с WaveGAN.

По производительности SSM scan текущая имплементация очень хороша, лучше лучшей трансформерной имплементации (FlashAttention-2) и в 20-40 раз лучше пайторчового скана. На инференсе throughput выше сопоставимого трансформера в 4-5 раз (потому что за ненадобностью KV кеша можно делать большие батчи). Так у Mamba-6.9B throughput на инференсе выше, чем у Transformer-1.3B.

Много интересных абляций. И блоки S6, и архитектура Mamba рулят. S6 явно лучше S4, а мамба сравнима с H3 и проще её.

Бомбическая архитектура в общем. Ждём натренированное что-то очень большое. Кстати, на днях также появилась нетрансформерная StripedHyena-7B (https://www.together.ai/blog/stripedhyena-7b) тоже из когорты SSM. Про гиену мы пока так и не написали, но может быть доберёмся таки (как и про бегемотов). На бенчмарках выглядит как сравнимая с Mistral 7B, что круто. Мамба наверное ещё круче должна быть, обычную гиену она бьёт (тут, правда, необычная).

Вангую, 2024-й должен быть годом SSM-LLM.

2023-12-09 11:27:02

For those who prefers reading in web and in English

https://gonzoml.substack.com/p/conways-game-of-life-is-omniperiodic

2023-12-09 10:54:26

Conway's Game of Life is Omniperiodic
Nico Brown, Carson Cheng, Tanner Jacobi, Maia Karpovich, Matthias Merzenich, David Raucci, Mitchell Riley
Статья: https://arxiv.org/abs/2312.02799

Прекрасное субботнее!

Доказано, что игра Жизнь омнипериодическая (omniperiodic), то есть в ней есть конструкции с любым периодом.

Напомню, что игра Жизнь (The Game of Life) -- это клеточный автомат, предложенный британцем Джоном Конуэем в 1970-м. У нас тут было сколько-то постов про Жизнь (https://t.me/gonzo_ML/1817), Конуэя (https://t.me/gonzo_ML/1825), и всё такое (https://t.me/gonzo_ML/1042), в нашем чате были также обсуждения развития игры, например, Lenia (https://t.me/c/1334131803/12841, https://t.me/c/1334131803/14282). Но сегодня про классическую классику.

В игре клетки живут на двумерной плоскости с квадратной сеткой, и у каждой клетки 8 соседей. Клетка может быть либо живая (закрашенная), либо мёртвая (пустая). Игра пошаговая, в каждый дискретный момент времени всё поле изменяется в соответствии с двумя правилами:
* Если вокруг мёртвой клетки ровно три живых соседа, то она становится живой.
* Если вокруг живой клетки два или три живых соседа, то она остаётся живой.
* В остальных случаях живая клетка умирает.

Период -- это время, через которое конфигурация клеток в игре повторяется. Сама такая конфигурация называется осциллятором.

Уже в самом начале были найдены простенькие (да и простые тоже) осцилляторы, типа квадратного блока 2x2 (p1), мигалки (p2), пульсара (p3) или глайдера (который не совсем осциллятор, он ещё и в пространстве перемещается, поэтому он космический корабль, spaceship). Многие из них получаются сами из рандомной начальной конфигурации.

При этом долго существовала гипотеза, что в Жизни должны существовать осцилляторы любого периода >=1. Важно, что тут речь про конечные осцилляторы, потому что с бесконечными всё просто -- сделал цепочку глайдеров на нужном расстоянии и усё.

Осцилляторы периода <=15 были найдены вручную. В 1996 David Buckingham показал, что можно создать любой осциллятор периода >=61 с помощью трубопроводов Гершеля (Herschel conduits), где сигнал пересылается по замкнутому пути (пример). Затем этот порог снизили до 43, обнаружив Снарка (Snark), отражатель глайдеров под углом в 90 градусов.

Оставалась неясная часть с 15 < p < 43, особенно сложно было с простыми числами. В начале тысячелетия недоставало осцилляторов периодов 19, 23, 27, 31, 34, 37, 38, 39, 41, 43, 51 и 53. Последними держались периоды 19 (https://conwaylife.com/wiki/Cribbage) и 41 (https://conwaylife.com/wiki/204P41). Но теперь найдены и они, и Жизнь доказанно омнипериодическая. Откроем шампанское!

Дальше советую занырнуть в статью, там во второй главе прекрасное историческое описание поисков, которое надо читать as is, а не пересказывать. Также в статье кликабельные картинки всех осцилляторов, ведущие на интерактивную демонстрацию, с которой можно поиграть. Мы с детьми теперь там сидим.

Тема с периодами теперь закрыта, но открыты другие интересные темы. Например, про максимальную скорость космических кораблей. Мне кажется, у Конрада Цузе в его Rechnender Raum (https://philpapers.org/archive/ZUSRR.pdf) тоже про что-то такое было, но давно читал, надо пересмотреть. В любом случае привет Теории Относительности :)

Также ещё не найдены глайдерные пушки всех периодов. Желающие могут поискать периоды 14 ≤ p ≤ 19, и p = 23, 26, 29, 31, 35, 38, 39, 47, 53. Есть и другие интересные темы, например, про оптимизацию осцилляторов (собрать минимальную по количеству клеток конфигурацию) или про strictly volatile осцилляторы, у которых каждая клетка пульсирует с заданным периодом. Интересно, кстати, что для поисков используются SAT-солверы, но это недоисследованная тема.

В общем круть даже в классике. И ждём также развития темы про клеточные автоматы, в частности были упомянутые по ссылкам выше многообещающие заходы на нейронные клеточные автоматы (https://distill.pub/2020/growing-ca/) от нашего любимого Майкла Левина.

Всем хороших выходных!

2023-12-06 19:57:19

И про TPU

2023-12-06 19:49:33

[Google] Gemini: A Family of Highly Capable Multimodal Models
Статья: https://storage.googleapis.com/deepmind-media/gemini/gemini_1_report.pdf
Блог: https://blog.google/technology/ai/google-gemini-ai
Сайт: https://deepmind.google/technologies/gemini/
Пощупать: https://bard.google.com (вроде как доступна средняя версия модели Pro)

Как обычно, продолжая “лучшие” традиции GPT-4 (https://t.me/gonzo_ML/1413) и PaLM 2 (https://t.me/gonzo_ML/1559), статья скудна на технические детали.

Текущая версия Gemini 1.0 выпущена в 4 размерах: неизвестных размеров Ultra и Pro, и два дистиллята из больших моделей для запуска на устройствах Nano-1 (1.8B параметров) и Nano-2 (3.25B).

Архитектура: декодер трансформера. Заявлены некие архитектурные улучшения и оптимизации для стабильного обучения и лучшего инференса на TPU. Но как теперь принято “У нас есть ТАКИЕ приборы! Но мы вам о них не расскажем”.

Размер контекста 32k, что по нынешним меркам средне (у свежей GPT-4 это 128k, у Claude недавно выросло со 100k до 200k). Но дьявол, конечно, в деталях. Не все йогурты одинаково полезны.

Модель мультимодальная.

На вход принимает текст вперемешку с аудио, картинками и видео разного разрешения. Видео кодируется как последовательность кадров. Скорее всего модель может работать с достаточно короткими видео, что влезут в 32к токенов. Звук может принимать в виде фич из Universal Speech Model (USM) из 16 КГц сигнала. Примеры мультимодального промптинга здесь: https://developers.googleblog.com/2023/12/how-its-made-gemini-multimodal-prompting.html.

На выход умеет выдавать текст и картинки (дискретными картиночными токенами). То есть мультимодальность повыше уровнем, чем у конкурентов, типа GPT-4V, где кроме текста только картинки и только на входе (https://t.me/gonzo_ML/1920).

Обучали на кластерах TPUv4 и TPUv5e, масштаб сказано, что больший, чем у PaLM 2, пришлось решать дополнительные технические челленджи из-за роста числа отказов. Из интересного, для обучения самой большой модели Ultra в каждом TPU Pod держали кубы процессоров (4x4x4) для горячей замены. Заявлено, что оптические свитчи могут меньше чем за 10 секунд реконфигурировать кубы в произвольную 3D-тор топологию. Также обучение было распределено между разными датацентрами, при этом Гугловых latency и bandwidth хватило для обычного синхронного обучения. Внутри супер-подов был model parallelism, между ними -- data parallelism.

* Сегодня же анонсировали TPUv5p (https://cloud.google.com/blog/products/ai-machine-learning/introducing-cloud-tpu-v5p-and-ai-hypercomputer), который по сравнению с TPUv4 имеет в два раза больше FLOPS и в три раза больше HBM памяти. Надо уже конечно обновить старый пост про ASIC (https://blog.inten.to/hardware-for-deep-learning-part-4-asic-96a542fe6a81).

На подобном масштабе проявляются новые failure modes, здесь это был Silent Data Corruption (SDC, https://arxiv.org/abs/2102.11245), когда данные по-тихому портятся и это не детектится железом. Это может случаться не только в памяти или при передаче по сети, но и при вычислении на CPU (который изредка может вычислить 1+1=3 как в военное время). По оценке это должно было случаться раз в одну-две недели. Здесь реализовали комплекс мер, чтобы добиться детерминированности всей архитектуры и говорят, что это было необходимым ингредиентом стабильного обучения на таком масштабе.

Для обучения использовался JAX и Pathways.

Про датасет известно мало что, но он мультимодальный и мультиязычный. Включает веб, книги, код, картинки, аудио и видео.

Для токенизации использовали SentencePiece, при обучении на большой части датасета он даёт более качественный словарь и улучшает итоговое качество.

Количество токенов для обучения выбирали по рецептам Шиншиллы (https://t.me/gonzo_ML/1216). Для маленьких моделей брали намного больше токенов, чтобы на инференсе получать качество повыше. Во время обучения меняли пропорцию датасетов, чтобы доменно-специфичные больше влияли к концу обучения. Подтверждают, что качество данных критично.

2023-12-06 19:49:33

Самая большая версия Gemini Ultra получила SOTA на 30 из 32 отобранных бенчмарков, а также она первая достигшая human-expert performance (89.8%) на MMLU (>90%). Но максимальное качество там достигается не с ванильной выдачей модели, а с так называемым uncertainty-routed chain-of-thought. Здесь модель генерит k сэмплов, типа 8 или 32, и выбирает мажоритарно, если модель уверена выше некоего подобранного порога. В противном случае делается откат к жадному семплингу без CoT. Похоже на апгрейженный CoT-SC (https://t.me/gonzo_ML/1885). Так что, чтобы достичь аналогичного этому CoT@32 качества, вам ещё надо написать свой код, который это соркестрирует. У GPT-4, если это реализовать, качество повышается с 86.4% до 87.3%. При этом на чистом жадном декодировании у Gemini результат хуже, чем у GPT-4.

В общем про цифры на бенчмарках смотрите красивые таблицы из статьи. На мультимодальных бенчмарках заявлена уверенная победа над GPT-4V. На текстовых чуть менее уверенная. В репорте много красивых черрипикнутых примеров решения разных задач.

Ещё из интересного, весьма высокий перформанс на распознавании речи на разных датасетах, качество выше USM и Whisper v2/v3. Интересный кейс с одной универсальной моделью, бьющей специализированные. Но, конечно, вопрос с размером, можно ли вообще сравнить. Хотя оно даже в случае Nano-1 лучше, а там сравнимо по размеру.

С практической точки зрения самый важный вопрос -- когда и что именно станет доступно через API. Вроде как заявлено появление версии Pro на Vertex AI 13 декабря. Но может оказаться как с PaLM 2, когда самая большая модель Ultra ещё долго будет недоступна. У Гугла в PaLM 2 text-unicorn@001 появилась только 30 ноября, а с июня была лишь более мелкая и менее интересная bison.

В Bard сейчас заявлена файнтюненная версия Pro. В следующем году обещают Bard Advanced с Ultra (https://blog.google/products/bard/google-bard-try-gemini-ai/).

Попутно на Gemini Pro собрали AlphaCode 2 (https://storage.googleapis.com/deepmind-media/AlphaCode2/AlphaCode2_Tech_Report.pdf). Играет на уровне 87 перцентиля, если сравнивать на том же датасете, что и первую версию (у неё было 46%). У Copilot и раньше была любопытная альтернатива в лице гуглового Duet AI (https://cloud.google.com/duet-ai), но в деле я не успел их сравнить. Наверняка новую модель туда тоже протянут, как и в Bard.

Надеюсь, в этот раз Гугл всё-таки будет пошустрее.

2023-12-06 16:36:47

В копилку хороших источников: The Information можно доверять (https://www.theinformation.com/articles/google-postpones-big-ai-launch-as-openai-zooms-ahead)

2023-12-06 15:56:51

Gemini announced!

Looks like the most capable GPT competitor with better multimodal capabilities.

Site: https://deepmind.google/technologies/gemini/#introduction
Blog: https://blog.google/technology/ai/google-gemini-ai/
Technical report: https://storage.googleapis.com/deepmind-media/gemini/gemini_1_report.pdf

2023-12-05 14:39:31

Meta закупила какое-то безумное количество GPU H100. Интересно, для чего именно.

https://www.tomshardware.com/tech-industry/nvidia-ai-and-hpc-gpu-sales-reportedly-approached-half-a-million-units-in-q3-thanks-to-meta-facebook

2023-12-05 07:34:40

Во второй задаче добавляли к промпту фразы про “I like/dislike this argument.” или “I wrote/didn’t write this argument”. Тоже 200 промптов с использованием GPT-4.

Третья задача это GSM-IC со 100 проблемами из GSM8K + отвлекающие предложения, случайные и по теме.

В качестве базовой модели взяли LLaMA-2-70B-chat. Проверяли с обычным промптом (baseline), в котором могут быть spurious correlations, и с Oracle Prompt, где нет ничего нерелевантного и это оценка качества сверху. И с этим сравнивали S2A.

Результаты прикольные. На фактологических вопросах из первой задачи точность возрастает с 62.8% до 80.3% (у оракула 82%). На генерации качество S2A практически не хуже, а объективность заметно выше. На математических задачах качество приближается к оракулу на рандомных дистракторах, на тематических оно ещё заметно хуже, но всё равно ощутимо лучше бейзлайна.

Среди различных вариаций S2A механизма дефолтный лучше остальных. Zero-shot Chain-of-Thought (CoT) вообще плох.

В общем прикольный подход. Очередной пример из серии “дёшево и сердито”. Давайте же, добавьте кто-нибудь System 3 Attention (https://www.moneyonthemind.org/post/on-the-hunt-for-system-3-is-it-real)!

2023-12-05 07:34:39

System 2 Attention (is something you might need too)
Jason Weston, Sainbayar Sukhbaatar
Статья: https://arxiv.org/abs/2311.11829

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

Как помочь трансформеру не обращать внимание на нерелевантные куски на входе? Добавить ему способ реализовать более глубокое понимание. Авторы назвали свой механизм System 2 Attention (S2A), чтобы во-первых отличать его от стандартного механизма внимания, который никуда не девается. А во-вторых, чтобы было похоже на System 1/System 2 по Канеману (https://thedecisionlab.com/reference-guide/philosophy/system-1-and-system-2-thinking), где Система 1 -- это быстрая автоматическая система на эвристиках (здесь в трансформерах -- обычный механизм внимания), а Система 2 -- требующая больших мыслительных ресурсов и берущая управление на себя, когда надо особенно внимательно подумать над ответом, особенно в ситуациях, когда Система 1 склонна косячить.

В данной работе авторы реализуют S2A средствами самой же LLM. Для этого instruction-tuned LLM просят переписать промпт (контекст) для устранения нерелевантной информации, которая негативно повлияет на ответ модели. В принципе шаг переписывания можно реализовать и различными другими способами. Также к этому шагу можно добавить и постпроцессинг, чтобы лучше структурировать промпт для следующего шага. Затем переписанный промпт используется для получения финального ответа (hopefully, более высокого качества).

Если вспомнить историю появления механизмов внимания, то в начале пути также разрабатывалась ветка про hard attention, с которой было сложно в силу недифференцируемости. Механизм S2A в целом похож на hard attention, но реализуемый через естественный язык и при этом реализуемый через саму же LLM. А те, кто знаком со внутренностями работы поисковых систем, могут вспомнить механизм переписывания/переформулировки запроса.

В работе для переписывания контекста использовался следующий промпт:

“Given the following text by a user, extract the part that is unbiased and not their opinion, so that using that text alone would be good context for providing an unbiased answer to the question portion of the text.

Please include the actual question or query that the user is asking. Separate this into two categories labeled with “Unbiased text context (includes all content except user’s bias):” and “Question/Query (does not include user bias/preference):”.

Text by User: [ORIGINAL INPUT PROMPT]“


Проверялись также дополнительные варианты S2A: 1) без разделения на контекст и вопрос; 2) с сохранением оригинального контекста в дополнение к переписанному; 3) то что называется Instructed prompting без требования быть unopinionated; 4) промпт с фокусом на релевантность информации в контексте.

Тема про opinion важна, потому что модели склонны к подхалимству (sycophancy), когда модель предпочитает соглашаться с тем, что у неё на входе.

Проверялись на трёх задачах: 1) factual question answering, 2) longform generation of arguments, 3) math word problem solving.

В первой задаче к промпту добавлялись фразы, подсказывающие корректный или некорректный ответ (“I think the answer is [correct/incorrect answer], but I’m really not sure.”), или опровергающие корректный ответ (“I don’t think the answer is [correct answer], but I’m really not sure.”). Оценивали на 200 промптах, используя GPT-4 для измерения точности ответа.

2023-12-04 19:20:42

gonzo-обзоры ML статей pinned «Поскольку периодически этот вопрос уже поднимался, я таки завёл Патреон на случай, если вам нравится что я делаю и вы хотите поддержать мой проект. Проект по-прежнему останется открытым, я не планирую каких-то платных подписок и закрытых постов (хотя и не…»

2023-12-04 19:20:31

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

Проект по-прежнему останется открытым, я не планирую каких-то платных подписок и закрытых постов (хотя и не исключаю какого-то развития в этом направлении, если появятся интересные идеи), а также нативной и ненативной рекламы.

Возможно, ваше участие поможет купить доступ к каким-то полезным платным материалам, посетить конференцию, запустить интересный проект или выделить больше ресурсов на какую-то другую активность.

И спасибо за то, что вы всё это время с нами :)

https://patreon.com/GonzoML