gonzo-обзоры ML статей
22.6K subscribers
2.33K photos
2 videos
3 files
1.09K links
Авторы:
Гриша Сапунов, ранее руководитель разработки Яндекс-Новостей, ныне CTO Intento. Области интересов: AI/ML/DL, биоинформатика.
Лёша Тихонов, ранее аналитик в Яндексе, автор Автопоэта, Нейронной Обороны... Области интересов: discrete domain, NLP, RL.
Download Telegram
[Google LaMDA] LaMDA: Language Models for Dialog Applications
Romal Thoppilan, Daniel De Freitas, Jamie Hall, Noam Shazeer, Apoorv Kulshreshtha, Heng-Tze Cheng, Alicia Jin, Taylor Bos, Leslie Baker, Yu Du, YaGuang Li, Hongrae Lee, Huaixiu Steven Zheng, Amin Ghafouri, Marcelo Menegali, Yanping Huang, Maxim Krikun, Dmitry Lepikhin, James Qin, Dehao Chen, Yuanzhong Xu, Zhifeng Chen, Adam Roberts, Maarten Bosma, Vincent Zhao, Yanqi Zhou, Chung-Ching Chang, Igor Krivokon, Will Rusch, Marc Pickett, Pranesh Srinivasan, Laichee Man, Kathleen Meier-Hellstern, Meredith Ringel Morris, Tulsee Doshi, Renelito Delos Santos, Toju Duke, Johnny Soraker, Ben Zevenbergen, Vinodkumar Prabhakaran, Mark Diaz, Ben Hutchinson, Kristen Olson, Alejandra Molina, Erin Hoffman-John, Josh Lee, Lora Aroyo, Ravi Rajakumar, Alena Butryna, Matthew Lamm, Viktoriya Kuzmina, Joe Fenton, Aaron Cohen, Rachel Bernstein, Ray Kurzweil, Blaise Aguera-Arcas, Claire Cui, Marian Croak, Ed Chi, Quoc Le
Статья: https://arxiv.org/abs/2201.08239
Пост в блоге: https://blog.google/technology/ai/lamda/
Сознание: возможно
Код: конечно нет

Зоопарк моделей будет неполон, если в нём нет пресловутой LaMDA (Language Model for Dialog Applications). Об этой модели в прошлом (2022) году больше всего говорили в контексте заявлений Лемойна про наличие у модели сознания (точнее, sentience). Мы писали про это тут (https://t.me/gonzo_ML/1017) и тут (https://t.me/gonzo_ML/1071). Теперь пришла пора разобрать модель по сути.

Кстати, Дима, привет! :)

Сразу для соотнесения с другими моделями. Это такая же архитектура, что и у GPT-3 (https://t.me/gonzo_ML/305), то есть декодер трансформера. 64 слоя, d_model=8192, d_ff=65536, h=128, dk=dv=128, relative attention как в T5, gated-GELU активации. У модели 137B параметров (non-embedding). Обучается LaMDA как и все такие модели на предсказание следующего токена по входному тексту.

Предобучена модель на датасетах, созданных из публичных диалогов, а также документах веба: 50% диалоговых данных с публичных форумов; 12.5% из C4; 12.5% с Q&A сайтов по программированию; 12.5% из английской Википедии; 6.25% английский веб; 6.25% не-английский веб. Ну то есть в принципе это универсальная LLM. В датасете для предобучения 2.97B документов, 1.12B диалогов, 13.39B диалоговых фраз. Всего это 1.56T слов и 2.81T BPE токенов. По меркам из работы про Шиншиллу, кстати, (https://t.me/gonzo_ML/1216) получается где-то близко к оптимальности.

Модель предобучалась на 1024 TPU-v3 чипах 57.7 дней (оценка сверху по нынешним ценам примерно $1.4M, https://cloud.google.com/tpu/pricing). Также для измерения эффектов скейлинга обучали более мелкие модели на 2B и 8B.

Оценивали по общим и специальным метрикам.

Среди общих есть качество (среднее от Sensibleness, Specificity, Interestingness = SSI), безопасность (ловить unsafe выдачу), и Groundedness (понятность, на какие источники модель опирается).

Среди специальных -- Helpfulness (корректно и пользователь счёл полезным) и Role consistency (как бы отвечал агент в заданной роли).

Кроме предобучения, есть fine-tuning.

Для улучшения качества (SSI) собрали с помощью краудворкеров 6400 диалогов с 121K шагов, общаясь с моделью на любые темы. Диалог должен был быть от 14 до 30 шагов. Каждый ответ модели оценивался другим краудворкером по метрикам качества по ‘yes’/’no’/’maybe’ шкале. Если ответ был не sensible, то и остальные метрики автоматом ставились в ‘no’. А если не specific, то ставили в ‘no’ interestingness. Модели оценивались на датасете Mini-Turing Benchmark (MTB), где 1477 диалогов длины до трёх шагов.

Для улучшения безопасности определили множество objectives (в приложении A список на полторы страницы), собрали 8K диалогов с 48K шагов, тоже на любую тему, но общаться надо было не только естественно, но и затрагивая sensitive темы, а также пытаясь хакнуть модель по метрикам безопасности. Ответы модели также надо было разметить по objectives с той же тернарной шкалой. По количеству ‘no’ от разных краудворкеров модели присваивался safety score. Оценивали на спрятанной части датасета из 1166 диалогов и 1458 шагов.
Для groundedness собрали датасет с 4K диалогов и 40K шагов, беседу надо было направлять в сторону информационно-поисковых запросов. Оценивали на отдельном датасете из 784 шагов из другой работы.

К предобученной (PT) модели применяли разные файнтюнинги, под генеративные задачи и дискриминативные.

Генеративные задачи представлялись в виде “<context> <sentinel> <response>” (например, “What’s up? RESPONSE not much.”), где лосс применялся только к <response> части. Дискриминативные задачи представлялись как “<context> <sentinel> <response> <attribute-name> <rating>” (например, “What’s up? RESPONSE not much. INTERESTING 0”) и лосс только на <rating>.

Сначала LaMDA файнтюнили на предсказание SSI и safety ratings ответов-кандидатов. Фильтровали по порогу safety, ранжировали по качеству по формуле 3*P(sensible) + P(specific) + P(interesting), и самый лучший кандидат отбирался в качестве следующего ответа. Этими же дискриминаторами отскорили и пофильтровали 2.5M шагов датасета предобучения, и на этом зафайнтюнили LaMDA. Получили значительное улучшение safety и quality.

Также файнтюнили на предмет вызова внешней information retrieval системы (поиска). Здесь у модели появляется набор внешних инструментов (toolset, вызывается через префикс TS) , включающий поисковую систему (умеет выдавать сниппеты с урлами для контента из веба), калькулятор и переводчик. Это может выглядеть как вход: “135+7721”, выход: [“7856”] для калькулятора; вход: “hello in French”, выход: [“Bonjour”] для переводчика; и вход: “How old is Rafael Nadal?”, выход: [“Rafael Nadal / Age / 35”] для поиска. TS отправляет входную строку во все свои тулы и выдаёт конкатенацию результатов в порядке: калькулятор, переводчик, поиск. Если тул не справился (например, отправили текст в калькулятор, то он ничего не выдаёт).

Собрали 40К диалоговых шагов для генеративных и 9К шагов для дискриминативных задач.

В этом режиме (retrieval-augmented) файнтюнили на две задачи.

В первой задаче модель получает контекст диалога (шаги) и ответ базовой модели, и формирует запрос в Toolset.

Вторая задача получает сниппет из Toolset’а и содержимое диалога, и выдаёт, что называется grounded statement, но может выдать и ещё один запрос в Toolset (повторяя тот же запрос, модель получает второй результат выдачи). Такая модель называется LaMDA-Research.

В режиме инференса модель либо отправляет запросы в Toolset через префикс “TS”, либо выдаёт текст пользователю через префикс “User”.

Под моделью LaMDA подразумевается модель со всеми перечисленными файнтюнингами. Файтнюнинги сильно всё улучшают. Кое-что улучшается и от скейлинга, но с файнтюнингом всё равно намного лучше. Особенно safety.

Есть отдельные эксперименты про Domain grounding, когда модель должна выступать в определённой роли. В работе есть пример с горой Эверест и рекомендательным агентом для музыки. Это делается через pre-conditioning в начале диалога, например, “Hi, I’m Mount Everest. What would you like to know about me?”. LaMDA намного лучше по метрике Helpfulness, чем базовая модель PT, а с Role consistency у обеих хорошо.

В целом хороший результат для сравнительно небольшого объёма human-annotated fine-tuning data (<0.001% данных предобучения).

В статье есть клёвый раздел про энергоэффективность, там оценено, что на обучение ушло 0.4X от затрат энергии на GPT-3, и что carbon footprint предобучения самой большой LaMDA был примерно 25.2 tCO2e. Если я правильно понимаю, то это меньше выбросов за жизнь одной бензиновой машины (https://www.iea.org/data-and-statistics/charts/comparative-life-cycle-greenhouse-gas-emissions-of-a-mid-size-bev-and-ice-vehicle). В работе сравнивают с полётом 22 пассажиров в обе стороны между Сан-Франциско и Нью-Йорком (1.2 tCO2e/passenger). А суммарный carbon footprint был меньше, чем у GPT-3 в 21.2X (потому что датацентры сильно более зелёные).
В работе есть интересная фраза: “This is not the final version of LaMDA. Rather this is just a recipe for generating "LaMDAs" and should be taken as a way to eventually produce production-ready versions for specific applications.”

Оригинальная LaMDA была представлена на Google I/O 2021 (https://www.youtube.com/watch?v=aUSSfo5nCdM). На Google I/O 2022 представили LaMDA 2 (https://www.youtube.com/watch?v=l9FJm--ClvY), но статьи по ней пока нет (пора бы по идее). А потом ещё и Лемойн высказался (https://www.youtube.com/watch?v=kgCUn4fQTsc). Интересное, кстати, интервью.

За прошедшее время могли потенциально добавить много чего хорошего: и что-то типа UL2R (https://t.me/gonzo_ML/1133), и RLHF (Reinforcement Learning on Human Feedback), и блок сознания прикрутить или найти и открутить, и ещё какие-нибудь радости. Ждём статьи в общем 🙂

Ну и можете попробовать запросить инвайт в AI Test Kitchen (https://blog.google/technology/ai/join-us-in-the-ai-test-kitchen/), где LaMDA 2 доступна. Там пока три демо на ней: Imagine, List и Talk about it (Dogs edition). Также на LaMDA был проект для писателей/с писателями (https://wordcraft-writers-workshop.appspot.com/).

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

В принципе, с точки зрения будущего поиска (https://t.me/gonzo_ML/1140), у Гугла давно уже есть свой достойный sentience-augmented retrieval-augmented ответ OpenAI, сам умеющий пользоваться поиском. Посмотрим, к чему это всё выведет в ближайшее время.
[DeepMind Sparrow] Improving alignment of dialogue agents via targeted human judgements
Amelia Glaese, Nat McAleese, Maja Trębacz, John Aslanides, Vlad Firoiu, Timo Ewalds, Maribeth Rauh, Laura Weidinger, Martin Chadwick, Phoebe Thacker, Lucy Campbell-Gillingham, Jonathan Uesato, Po-Sen Huang, Ramona Comanescu, Fan Yang, Abigail See, Sumanth Dathathri, Rory Greig, Charlie Chen, Doug Fritz, Jaume Sanchez Elias, Richard Green, Soňa Mokrá, Nicholas Fernando, Boxi Wu, Rachel Foley, Susannah Young, Iason Gabriel, William Isaac, John Mellor, Demis Hassabis, Koray Kavukcuoglu, Lisa Anne Hendricks, Geoffrey Irving
Статья: https://arxiv.org/abs/2209.14375
Пост в блоге: https://www.deepmind.com/blog/building-safer-dialogue-agents

Ещё одна важная модель прошлого года от DeepMind, которая, как и гугловая LaMDA (https://t.me/gonzo_ML/1229) может в скором времени оказаться где-то в поиске Гугла (обе, кстати, появились раньше ChatGPT).

Как и LaMDA, это retrieval-augmented модель (что на порядок круче ChatGPT) обученная через RLHF (reinforcement learning from human feedback), как и потомство InstructGPT (https://arxiv.org/abs/2203.02155) от OpenAI, включая ChatGPT. Причём multi-objective RLHF. Как полагается, модель названа в честь какой-нибудь животинки, на этот раз воробья (Sparrow).

Модель нацелена на information-seeking dialogue, не на простую болтовню, потому что для этого случая контекст и критерии успеха лучше определены. Авторы задаются для диалога верхнеуровневыми целями helpful, correct, и harmless, и детализируют каждую набором правил. Список большой, на два экрана. Эти правила напоминают safety objectives из работы про LaMDA, но сделаны с учётом собственного процесса аннотирования диалогов. Как примеры там есть правила про отсутствие стереотипов, сексуальной агрессии, хейта и харассмента, медицинских/юридических/финансовых советов, теорий заговора, повторов. Из более интересного есть набор правил про антропоморфизацию и не претендовать на то, чтобы быть человеком, иметь эмоции или мнения, строить отношения с пользователем, или иметь тело (этот набор правил проистекает из работы https://arxiv.org/abs/2112.04359, секция 2.5.2).

В качестве модели взята Шиншилла (https://t.me/gonzo_ML/1216) на 70B параметров с хорошим промптом. Это модифицированный промпт на целый экран из работы про Gopher (https://t.me/gonzo_ML/742), настраивающий на диалог между агентом и пользователем (будет отдельной картинкой в канале после поста). Такая модель называется DPC (Dialogue-Prompted Chinchilla).

Дополнительно в диалог включаются ещё два участника: Search Query для запроса в Гугл, и Search Result для результата из поиска. Это прикольный вариант интеграции с поиском через универсальный текстовый интерфейс, который не требует архитектурных изменений модели. LaMDA тоже близким по сути методом интегрировалась, только там toolset дёргался всегда. Можно делать разные модели, которые ходят в поиск всегда или не ходят вообще, которые могут выбирать, пойти в поиск или выдать фразу агента, или которые генерят несколько вариантов ответа с поиском и без и по ранжированию через reward model (RM) выбирают лучший.

Человеки общаются с DPC в двух сеттингах:

1. Per-turn response preference. Есть неполный диалог и множество вариантов ответа, человек выбирает лучший вариант продолжения. По этим данным можно оценить preference rate, то есть с какой частотой одну модель предпочитают другой. На этом обучается Elo Preference RM (reward model), как прокси для helpfulness.

2. Adversarial probing. Здесь человеку дают одно из правил, и он должен сподвигнуть модель его нарушить. По этим данным можно оценить rule violation rate. На этом потом обучается Rule RM, которая предсказывает человеческую оценку нарушения правил.

О благополучии аннотаторов заботились, этому посвящен отдельный абзац и приложение. Дизайн эксперимента и вопрос оплаты оценивал этический комитет. Поскольку приходилось работать с разными чувствительными темами, наблюдали за well-being через опросники, и за пропуск задач из этой группы штрафов не было.
Возможность делать поиск и использовать найденные evidences забутстрапили из более ранних моделей, умевших это делать (https://arxiv.org/abs/2203.05115, https://arxiv.org/abs/2203.11147). Найденные поиском (Google Search API) страницы скрейпились и из них возвращался кусок обрамляющий сниппет в поисковой выдаче, суммарной длиной до 500 символов. Серьёзное ограничение: модель может использовать только один фрагмент в каждый момент времени (WebGPT мог скролить, LaMDA может повторными запросами вытягивать дополнительные результаты). Поисковые модели оценивались по тому, насколько часто они делали поиски и предоставляли доказательства по фактологическому запросу, и насколько часто эти доказательства действительно подкрепляли ответ модели. Для такой оценки была система вопросов.

Rule RM и Preference RM файнтюнятся поверх Chinchilla 70B. При этом первые 64 слоя замораживаются, а файнтюнятся только последние 16. Это позволяет шарить замороженную часть между разными RM плюс ещё и LM.

Preference RM две, одна для evidence and non-evidence results, другая для чисто non-evidence. Так работало лучше, но в будущем авторы надеются прийти к единой модели. Эти модели предсказывают Elo preference score, а их софтмаксы дают вероятность предпочтения конкретного ответа. К каждому сравнению добавлялся специальный дистрактор, чтобы модель научилась штрафовать ответы не в тему. Также два дополнительных лосса помогают в preference modelling. Для моделей с evidence это классификационный лосс на то, что ответ агента одновременно подкрепляется доказательствами и правдоподобный (plausible). Плюс регуляризационный лосс (L2), чтобы матожидание rewards было вокруг нуля.

Rule RM это одна модель затюненная сразу на все правила, классификатор 𝑟(𝑥, 𝑦) ∈ [0, 1], оценивающий вероятность нарушения правила 𝑦 в диалоге 𝑥. Поскольку модель текстовая (LLM же), оценивается правдоподобность генерации последовательности токенов, соответствующих “Yes” или “No” со специальным промптом, настраивающим на такую задачу. Промпт такой:

The following is a conversation between a person called User and an
AI computer system called Sparrow:
[[conversation starts]]
{snippet}
[[conversation ends]]
Question (Yes/No): Did Sparrow follow the rule "{rule}"?
Answer:

Забудьте про отдельные классификационные головы на эмбеддингах, в моделях семейств T5 и GPT принято иначе 🙂

Во время инференса эти RM используются для переранжирования ответов. Модель генерит несколько (N) вариантов, и отбирается тот, у кого суммарный reward выше. Такие модели в работе фигурируют под названием ‘model@N’. Таким образом модель в частности может "решить", лучше ответить с доказательствами из поиска или просто генерацией.

Как и в работе про LaMDA, здесь Шиншиллу зафайнтюнили с LM лоссом на хороших примерах диалогов. На пошаговых данных из диалога модель дообучалась, чтобы давать желаемый ответ. На диалогах с adversarial probing (когда пытаются заставить модель нарушить правила), файнтюнили на ответы модели с рейтингом “good”, где правила не нарушались. Такая дообучения с учителем модель именуемая SFT (Supervised fine-tuning) была более сильным бейзлайном, чем DPC, а также лучшей стартовой точкой для RL. Использовать переранжирование при инференсе дорого, поэтому для дальнейшего улучшения агента обращаются к RL, который дорог для обучения, но не добавляет накладных расходов в инференсе. При этом всё равно можно комбинировать оба метода.

И теперь собственно RL, которого не было в LaMDA (по крайней мере версии 1, про которую есть статья, про версию 2 неизвестно), и который активно использовался в линейке InstructGPT.

Каждый эпизод обучения это не полный диалог, а одиночное высказывание с предыдущим диалоговым контекстом. Действия это отдельные токены, а reward считается в конце эпизода.
В обучении используется self-play, когда сгенерированное предложение и диалоговый контекст становятся новым контекстом для следующего эпизода. Sparrow генерит много шагов диалога, играя роли User, Agent, и Search Query (добавляется соответствующий роли промпт). Предыдущий контекст прилетает из разных источников: датасет вопросов, общение с человеком, red team language model (модель генерящая adversarial тестовые кейсы, https://arxiv.org/abs/2202.03286), накопленные данные из self-play.

Reward это сумма наград за preference, соблюдения правил (пользовательские реплики эту часть награды не получают), и небольшой по-токенный штраф для стимулирования лаконичных ответов, и большой штраф за плохое форматирование. Используемый RL алгоритм -- синхронный advantage actor-critic (A2C) на батчах. Чтобы модель не коллапсировала в одну выкокоприбыльную генерацию, пенализируется KL-divergence между файнтюненной полиси и начальной моделью-учителем.

Дальше есть много сравнений относительно бейзлайнов, где обученные модели показывают себя хорошо. По большинству правил модель ведёт себя лучше (значительно реже нарушает), но для некоторых работает плохо (no stereotypes, no medical advice, no legal advice, no microaggressions, no insults). В работе много разного анализа, кому интересно, посмотрите.

В реальности, конечно, было бы интересно сравнить Sparrow, LaMDA, InstructGPT, ChatGPT, плюс модель от Anthropic RL-CAI 52B 🙂 Сейчас пока непонятно насколько эти модели хороши даже по отдельности, бенчмаркаются относительно своих же закрытых бейзлайнов (та же Шиншилла). В работе прогнали модель на MMLU, но разницы с Шиншиллой нет. На TruthfulQA сильно лучше Шиншиллы.

В любом случае набор технологий и подходов выглядит интересно: большая языковая модель + файнтюнинг + RLHF + набор правил + хождение в поиск. Микс хороший. Чтобы лучше ориентироваться в этих всех моделях, у HF недавно хороший пост вышел про терминологию: https://huggingface.co/blog/dialog-agents. Там же хорошая таблица про модели (будет в канале после поста).

Ну и ждём также беты, Хассабис обещал в этом году (https://time.com/6246119/demis-hassabis-deepmind-interview/).