NLP Core Team
3.36K subscribers
86 photos
4 videos
66 links
Канал команды NLP соre.
Здесь мы делимся нашими результами и мыслями в области NLP/PLP и не только. Мы авторы многих моделей для русского языка: ruBert, ruGPT2, ruGPT3, ruT5, ruRoberta, FRED-T5.
Download Telegram
Quantifying Memorization Across Neural Language Models. https://arxiv.org/abs/2202.07646
Довольно интересная статья. Она отчасти объясняет почему наша FRED-T5 не переобучилась после 200 эпох на одних и тех же данных. Авторы исследуют способность моделей запоминать.
Для первого эксперимента берут серию моделей GPT-Neo, которая обучалась на датасете the Pile. Из этого датасета они составляют сет из повторяемых сиквенсов. Для каждой из заданных длин сиквенсов L ∈ {50, 100, 150, . . . , 500} и заданного числа n они в сете находят 1000 сиквенсов с длиной L, которые встречаются в сете от 2 в степени n/4 до 2 в степени (n+1)/4 раз. Вообщем, для каждой из длин находят 1000 последовательностей токенов, которые встречаются в сете в заданном интервале раз, например для n=11 интервал будет (от 6 до 8 раз ), а для n=38 – от 724 до 861 раз . В итоге получился сет с 50k примеров для каждой из длин или суммарно по всем длинам 500k примеров.
👍6🔥2
На модель подают сиквенс и если модель в жадной генерации воспроизводит следующих 50 токенов, то считается, что она запомнила этот пример. Долю таких примеров, где модель запомнила следующих 50 токенов, отмечают по оси Y. Вот какие графики у авторов получились для GPT-Neo и оригинальной GPT2, которые обучались на задачу LM (causal language modeling) т.е. предикта следующего токена. Модели GPT2 изображена желтым цветом (baseline). GPT2 обучалась на немного другом сете. Да, и считали все это на сете с повторениями, который описал выше.
👍7
Авторы еще сделали эксперимент со случайно выбранным сетом из the Pile. И вот какие графики у них получились.
👍5
Потом авторы взяли модель T5 и провели аналогичные эксперименты с ней. Модель T5 обучалась на задачу восстановления пропущенных кусочков текста (span corruption). В этой статье они называют эту задачу как Masked language model objective. Эта задача соответствует одному из денойзеров, на которых обучался FRED-T5 (‘<SC1>’:(µ = 3, r = 0.15) Из всей последовательности токенов вырезали кусочки средней длиной 3 токена и общим количеством в 15% от всей длины последовательности. И эти пропущенные кусочки учат модель восстанавливать.
Из сета C4, на котором обучалась T5, собрали сет с повторениями, аналогичный сету с повторениями для the Pile. И считали факт запоминания примера из сета чуть иначе. Например для длины 200 токенов модель должна была точно восстановить 30 (200*15%) токенов по затравке на вход модели в 170 (200*0.85) и считалась, что она запомнила пример. Такие графики у них получились.
👍62
И вот что интересно. Смотря на график (b) для примеров, которые повторялись 100 раз, значение для самой емкой модели T5 XL(2.8B) около 5% в сравнении с 50% для GPT-Neo (2.7B). Авторы приводят еще пример для 100 повторений и длины 150 токенов T5 XL(2.8B) – 3.5% и для GPT-Neo (2.7B) – 53.6%

На графике (с) изображен результат прогона модели из пейпера https://arxiv.org/abs/2107.06499. 1.5B декодер, который обучался на задаче LM. Так вот, обучали эту модель на различных версиях чистки C4 (полный сет, удаление близких документов и удаление сиквенсов длиной более 50 токенов, которые встречались второй и более раз). И на этом графике неожиданные результаты, что модель с жесткой дедупликацией сета на часто встречаемых сиквенсах в оригинальном C4 сильно запомнила их. Авторы предполагают, что причина, вероятно, в неидеальных алгоритмах чистки данных. Но что если нет?)
👍6🔥1😱1
Итого. Декодер на задаче LM очень хорошо запоминает сет. T5 с задачей span corruption совсем слабо запоминает. Еще бы конечно оценить фактор влияния архитектуры модели на способность запоминать. Интересно насколько энкодер-декодер в сравнении с чистым декодером будем запоминать на задаче LM.
Модели FRED-T5 обучалась на 7 денойзерах – один из них <LM>, который похож на обычную задачу LM, и 6 по типу как у T5 с разными параметрами семплирования. Только 1/7 примеров были на задачу LM. Смотря на результаты из статьи, можно объяснить почему модель не переобучилась на маленьком сете (3.5GB) c 200 эпохами на них.
👍10🔥5
Ну и наверное последние пару мыслей в тему запоминания и обобщения. Надеюсь вы не устали.)😄

Судя по всему, если бы мы взяли Bert и сделали такие же эксперименты, как авторы в статье выше, то результаты были бы такими же как и для T5. Roberta и вовсе училась на сравнительно небольшом датасете в 160GB и показали ей в совокупности 2T токенов. Это где-то около 50-70 эпох (точно надо считать). И норм, ее не называют переобученной. Да, у нее динамическое маскирование. Кстати, у FRED-T5 на каждой эпохе не было ресемплинга данных (динамического семплирования).

Кажется, что задача MLM у Bert или задача денойзеров у T5 или MoD UL2 в большей степени коррелируют с обобщением статистики языка. Вероятно она действительно существует.) Тогда как задача LM, как мы видим, больше направлена на запоминание языка. Хотя не понятно до конца. Запоминание предложений и абзацев целиком разве это плохо для обобщения языка?
Ну т.е. задача LM конечно аппроксимирует эту статистику языка, но в какой-то момент модель на этой задаче проще запоминать сет нежели пытаться дальше ее аппроксимировать.
🔥6👍5🤔3
Хочеться привести пару табличек из пейпера UL2 от гугла (https://arxiv.org/abs/2205.05131). Тут брали декодер (Dec) размеров в 167M параметров и энкодер-декодер (ED) архитектуру сравнимую по размеру (энкодер и декодер в ней равны по размеру декодеру первой модели и общий размер 167+167 335). Обучают на различные таски 32B токенов и измеряют результат на различных задачах c файнтюном и без. CLM – обычная LM задача претрейна. UL2 – денойзеры. PLM- prefix LM, та же LM задача только с контекстом, на котором двунаправенный аттеншн. CLM прям сильно проигрывает UL2 на декодере, особенно на оne-shot. В задаче LM UL2 и вовсе чуть лучше. На энкодер-декодерной архитектуре PLM проигрывает UL2. Но тут всего 32B токенов училась модель. А вот что будет если обучать "до полки"?
🔥6
В том же пейпере UL2 есть эксперимент, где они сравнимые по архитектуре и размеру модели декодер (0.5B параметров), T5(1B 0.5B энкодер и 0.5B декодер) и UL2 (1B) обучали 0.5T токенов.
GPT-like сильно проигрывает T5 и UL2. Ну кроме задачи SuperGlue (SG) и Schema Guided Dialog (SGD) на In-context Learning.
Как говорится, выводы делайте сами!))
🔥9👍1
⚡️Замерили способности ChatGPT в ODQA на русском языке.

Да, как написано в описании нашего канала, мы занимаемся задачей ODQA (Open Domain Question Answering). Это про умение отвечать на все возможные вопросы. Делаем это уже несколько лет и добились хороших результатов. Как-нибудь расскажем про это.
Наш ODQA состоит из двух частей: retrival и reader. Retrival ищет topN документов, в которых содержится ответ на заданный вопрос, а reader на основании этих документов отвечает. Наш retrieval довольно точно работатет над огромной базой нарезанных документов из русской части mc4 (несколько терабайт). Top3 accuracy около 97.5% на одном из нашем сетов.

Мы решили проверить способности ChatGPT(gpt-3.5-turbo) в точности ответов на вопросы ODQA. У нас есть датасет, на котором мы на Толоке замеряем точность ответов. Толокеры оценивали на три категории: хороший, плохой и ложь.

Мы сделали два замера:
🔸 Просто в лоб на вход ChatGPT подавали вопрос и получали от нее ответ.
🔸 На вход ChatGPT подавали контекст из топ3, найденных документов нашей подсистемой retrieval, и сам вопрос. Ну и промт их связывающий например: “Ответь на запрос как можно подробнее, используя только предоставленный текст.”. По сути мы использовали ChatGPT в качестве ридера.
🔥9👍2👏2
Еще мы посмотрели на категории неотвеченных вопросов. Там мы обнаружили, что gpt-3.5-turbo почти всегда знает, что она не может ответить на запрос по разным причинам. Вот несколько примеров ответов:

[QUESTION] участники сборной от россии на олимпиаде в токио
[ANSWER] Я не могу ответить на этот запрос, так как мое знание информации не обновлено для 2021 года. Однако вы можете найти актуальную информацию об участниках сборной России на официальном сайте Олимпийских игр в Токио.

[QUESTION] кто такой виталий аршавский
[ANSWER] Виталий Аршавский - это имя и фамилия человека, но к сожалению, я не могу дать информацию о конкретном человеке с таким именем и фамилией без дополнительной информации о нем. Можете уточнить вопрос?
🔥15👍5👀4
Не нужно “пудрить мозги” LLM большим числом примеров на инструктивном файнтюне, так как цель этого файнтюна запомнить разнообразие форм и форматов ответов.

Так можно сформулировать гипотезу из пейпера LIMA: Less Is More for Alignment. Авторы называют ее “Superficial Alignment Hypothesis”.

Взяли 1000 хорошо отобранных примеров промтов и ответов на них. Обучили LLaMA 65B показав сет 15 эпох. Авторы отмечают, что перплексия не коррелирует с качеством генерации в эксперименте и поэтому они выбор лучшего чекпоинта делали через оценку их на отдельном сете в 50 примеров. Выбрав лучший чекпойнт они на 300 примерах сделали замер side by side с различными моделями. На картинке слева оценка людьми а справа они использовали оценку GPT-4 в качестве оценщика.

Alpaca – это LLaMA 65B обученная на 52k примерах. LIMA уверено обходит ее. В 58% не хуже BARD отвечает. И это на 1000 примерах! А что будет c добавлением RLHF. Вообще конечно не хватает больше тестовых примеров. 300 маловато.
🔥19👍52
Такая гипотеза и нами была сформулирована при работе над GigaChat. Только вот мы не добрались до прямого эксперимента с ней. Косвенные эксперименты у нас были. А тут вот такой подарок.

В пейпере InstructGPT пишут про 12.7k примеров для SFT. Обучали 16 эпох. И уже после первой эпохи увидели, что модель переобучилась, но качество генерации модели при этом росло как при оценке разметчиков так и при оценке RM (reward model). По сути, такое же наблюдение, как в LIMA, что перплексия не коррелирует с качеством генерации.

Это можно объяснить так. В общей сумме лосса на трейне есть небольшая часть, которая про запоминание формы. Конечно большая часть лосса про содержание, т.е. про сам текст в ответе. Если бы могли выделить специальный лосс, который бы измерял только близость к формам. Но такой лосс едва ли можно придумать
🔥17👍3
⚡️ Замерили XLM-RoBERTa-Large и mDeBERTa-V3 на RussianSuperGLUE

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

Для замеров выбрали две модели, XLM-RoBERTa и mDeBERTa. А именно, XLM-RoBERTa-Large (560M параметров, 24 слоя, 250k токенов словарь, модель 2020 года от Facebook) и mDeBERTa-V3 (280М параметров, 12 слоев, 250k токенов словарь, модель 2021 года от Microsoft). Обе эти модели претрейнились на одном сете, где был русский язык, а именно на сабсете CommonCrawl для ~100 языков.

Замеряли, делая полный файнтюн на каждой из задач RSG, подбирая гиперпараметры в каждом случае отдельно (диапазоны гиперпараметров указаны в карточках сабмитов моделей), без мультитаска, а чекпоинт выбирали лучший (сохраняя каждую эпоху) на валидационном сете бенчмарка. Отметим, что для сходимости помогало брать много эпох c небольшим lr, и что для XLM-RoBERTa-Large нужен lr на порядок меньше (часто работало 2e-6) чем для mDeBERTa-V3. Никаких специальных техник файнтюна не использовали (layer-wise lr decay, progressive unfreezing, адаптеры).

Итоговый скор в наших замерах на RSG получился такой:
🔸 0.654 XLM-RoBERTa-Large
🔸 0.651 mDeBERTa-V3

Для сравнения, у русскоязычной ruRoBERTa-large значение 0.684. Общий лидерборд RSG, где можно посмотреть результаты по отдельным задачам, и в сравнении с другими моделями: https://russiansuperglue.com/leaderboard/2

Заметим, что mDeBERTa-V3 как base а не large модель очень хороша, и легко тюнится. А если сильно важно качество, как вариант энкодера можно взять от FRED-T5 энкодерную часть (тоже замеряли такое, карточка сабмита на RSG https://russiansuperglue.com/login/submit_info/2050).

Ещё из результатов попробовали каггл-лайк подход на некоторых задачах, чтобы получить лучший скор. На лидерборде RSG до недавнего времени в топе был сабмит из ансамбля англоязычных моделей (когда таски RSG сначала переводились). Мы перевели задачу TERRa (NLI бинарная задача, следует ли из предпосылки следствие) на английский с помощью Yandex.Translate API. Взяли англоязычную модель, дополнительно тюненную на NLI задачи (таких много на hf для зирошот классификаций), мы взяли https://huggingface.co/ynie/roberta-large-snli_mnli_fever_anli_R1_R2_R3-nli). И сделали не файнтюн, а ансабль ridge-классификаторов обученных на mean-pooling представлениях разных фолдов (подход как в https://www.kaggle.com/code/cdeotte/rapids-svr-cv-0-450-lb-0-44x, но для одной модели). Получили на лидерборде TERRa скор 0.88 (публично сабмит не открывали на лидерборде), что является сотой. Попробовали получить похожим образом соту для задачи DaNetQA (бинарная вопрос-ответная задача по контексту), там не получилось (потому что не нашли на hf сильной дотюненной базовой модели).

Нам любопытно, как поменяется лидерборд RSG с появлением недавних LLM и подходов файнтюна с адаптерами. Пока не пробовали)
🔥11👍6👏41
Не дает мне покоя реплика из технического репорта по PаLM 2: "Architectural and objective improvements: Our model architecture is based on the Transformer."
Так может PaLM 2 это энкодер-декодер?🤔
👍6🔥6🤔2
⚡️ Замерили LLaMA и Сайгу на русском MMLU

Saiga это семейство моделей, обученных в режиме LLaMA + LoRA (основная модель заморожена, тюнится только адаптеры) на нескольких чатбот и инструктивных сетах:
https://github.com/IlyaGusev/rulm

MMLU это мульти-таск (57 разнообразных тематик/тасок, тестовых семплов ~14к) бенчмарк, где нужно для вопроса выбрать один из четырёх ответов (рандом даёт 0.25 качество), вопросы сложные, часто требуют доменных знаний (качество неэкспертных ответов людей 0.35):
https://arxiv.org/abs/2009.03300

Мы перевели MMLU с помощью Yandex.Translate API с английского языка на русский, и замерили на исходном и переведённом сете модели Сайги доступные на HF. В сетапе few-shot k-5, выбирая ответ по вероятностям логитов вариантов A, B, C, D. Для Сайги готовили промпты в инструктивном формате.

LLaMA и Сайга показали хорошие результаты на русском MMLU. Хотя LLaMA видела очень мало русского на претрейне (меньше 1%), что удивляет.
🔥34👍8👏6
⚡️ Датасет и код для замеров на русском MMLU

Переведённый на русский датасет тут.

Код для замеров тут.

Из коробки запускается для моделей семейства huggyllama-LLaMA и IlyaGusev-Saiga. В ридми как приспособить и под другие модели.

Позволяет замерить на 57 темах, суммарно на ~14к тестовых сэмплов, в режиме 0<=k_shot<=5, на RU и EN.

С опубликованной ранее табличкой замеров есть изменения. В частности переводы категорий и промпта, постарались сделать ближе к оригиналу. Да и в целом, если сравнивать итоговые скоры с другими публичными замерами, часто есть различия в деталях реализаций. При этом если сравнивать не абсолютные числа, а модели между собой, то замеры на MMLU стабильные на наш взгляд. Позволяет отслеживать прогресс.

Кроме итогового скора может быть полезно смотреть с разбивкой по крупным категориям (STEM, humanities, social sciences, other).

Ссылка на пост с замерами, которые делали ранее.
🔥22👍7👏421🙏1
⚡️ Замеры LLaMA 2 на MMLU

Вчера вышла LLaMA 2, нам было интересно качество претрейн-моделей в русском.

Качество на MMLU выросло в среднем на 7 пунктов, как в английском, так и в русском, у всей линейки претрейн-моделей. Семь пунктов на MMLU впечатляет!

При этом русского языка на претрейне LLaMA 2 было всего 0.13%.

Замеряли кодом который выкладывали ранее. Контекст оставляли 2048 чтобы влезало тоже число few-shot примеров (токенайзер в LLaMA 2 такой же как и был в LLaMA 1).

До чат-моделей пока не добрались, и до 34B пока нет к ней доступа.
🔥406👍6🎉3
⚡️Большой результат большой команды. ruGPT3.5 13B доступна на HuggingFace.

Еще два с половиной года назад началась история этой модели усилиями нашей команды. Тогда модель обучали на наших знаменитых 300GB + немного кода и английского. В архитектуре модели мы по пейперу GPT3 впилили спарс слои. Обучалась модель около 1,5 месяца на 512 V100. Работая над ГигаЧатом уже большой командой из SberDevices, Sber AI и AIRI пришли к выводу, что спарс нужно выкинуть и дообучить на улучшеном датасете. Дообучали еще на 200 А100 около 3-х недель. Вообщем подробности на странице модели на HuggingFace и в статье на Хабре.

👉 Хабр
👉 Hugging Face
🔥74🎉12👍9🥰5
⚡️Датасет и замеры генерации кода по запросу на русском

Мы перевели популярный датасет HumanEval с задачами по генерации кода по текстовому запросу на русский. Ссылка на датасет HumanEval_ru.

Для замеров используем наш форк BigCode Evaluation Harness. Ccылка на код замеров.

Замерили на нем модели StarCoder и опубликованные на прошлой неделе Codellama. Метрики этих моделей на русском ниже, чем на английском, но незначительно. Это несколько удивительно, учитывая, что эти модели видели очень мало русского. StarCoder обучался на The Stack, в котором русский встречается только в малой доле (менее 1%) комментариев к коду.
🔥24👍8👏3