Transformer LM на анекдотах
Языковые модели, обученные с нуля на русском корпусе анекдотов. Архитектура: ALiBi вместо позиционных эмбеддингов, GQA в attention, SwiGLU в FFN, RMSNorm. Токенизатор: byte-level BPE, словарь 1024.
Задание
Реализовать трансформер с ALiBi, GQA и SwiGLU, обучить токенизатор BPE, обучить модели на датасете анекдотов. Из-за предположения, что анекдоты состоят из довольно шаблонных конструкций, было принято решение в качестве эксперимента сделать переобученную версию модели small для проверки изменения качества генерации.
Модели
| Папка | Параметры | Конфиг | Лучший чекпоинт | LR | Val loss | Примечание |
|---|---|---|---|---|---|---|
nano/ |
0.5M | 3 слоя, hidden 96 | 20000 | 3e-4 | 3.329 | плато |
mini/ |
10.5M | 6 слоёв, hidden 384 | 30000 | 3e-4 | 2.530 | лучший val, train/val расходятся |
small/ |
79.5M | 12 слоёв, hidden 768 | 37000 | 3e-4 | 2.376 | лучший val, train/val расходятся |
small-overfit/ |
79.5M | 12 слоёв, hidden 768 | 77000 | 3e-4 -> 1e-4(Повторные запуски) | 2.426 | плато |
small-overfit был получен повторным запуском обучения small с меньшим lr
Сравнение при одинаковом бюджете шагов
| Модель | Val loss |
|---|---|
| nano | 3.495 |
| mini | 2.707 |
| small | 2.445 |
Сравнение проводилось на этапе 20000 шагов. small-overfit был обучен из small уже после прохождения этого порога, в связи с чем не включён в сравнение.
Опрос (слепое сравнение small и small-overfit)
Опрос 8 человек, 63 пары, одинаковые затравки.
| Вопрос | Best val | Overfit | Сложно ответить |
|---|---|---|---|
| Смешнее | 13 | 15 | 35 |
| Связнее | 11 | 35 | 17 |
| Больше похож на анекдот | 14 | 26 | 23 |
Юмор не различается: тексты, по оценке авторов, одинаково слабо смешные, поэтому опрос не даёт информации по этому вопросу.
Связность у переобученной версии выше. Проверки:
- Длины: best val в среднем длиннее на ~5% по символам (116 против 111). Голоса по парам с близкой длиной не пересчитывались.
- Копирование (доля 5-грамм, встречающихся в train): best val 0.049, overfit 0.070, контроль из test 0.073. Признаков запоминания не найдено.
Выборка маленькая, поэтому вывод о связности следует считать предварительным.
Примеры генерации
| Модель | Затравка | Пример генерации |
|---|---|---|
| nano | Штирлиц | Штирлиц серемители на пилще. Отличный пива на гологичник. |
| nano | Шёл медведь по лесу | Шёл медведь по лесу приколотал лишнее по более мозга. Послабоием на магазине. - После свадьбы 406 к таблетки и штандейнев? Напрологовский 963 миллионов. |
| nano | Заходит улитка в бар | Заходит улитка в бар пальцов к другу:- Вот, что-то на рыбалку?- Да.- Как называют? |
| mini | Штирлиц | Штирлиц достал кабинетки в МАС. Штирлиц зацепил письмо, чтобы обратно в столовую и переписал у котлетки. |
| mini | Шёл медведь по лесу | Шёл медведь по лесу, встретил её бабку с бодуна. |
| mini | Заходит улитка в бар | Заходит улитка в бар и начинает ловить бармену офигенно:- Молодой человек, пишите белье, и мне так сказали, что я уже выходил замуж... |
| small | Штирлиц | Штирлиц шел разбирая бокалы. Так разбивал головную боль. |
| small | Шёл медведь по лесу | Шёл медведь по лесу и увидел штаны, на дерево паспорт текла... |
| small | Заходит улитка в бар | Заходит улитка в бар, заказывает жареную курицу от бара и говорит:- Простите, это кошка?- Нет, это я - кот. |
| small-overfit | Штирлиц | Штирлиц и Мюллер выбрали Мюллера из штата. Света сразу же привела на голову и отмочила его. Два Мюллера вместе взялись за 500 баксов, а третий зашел ограбленный. |
| small-overfit | Шёл медведь по лесу | Шёл медведь по лесу и вдруг видит, что из него вылезает. |
| small-overfit | Заходит улитка в бар | Заходит улитка в бар, садится перед зеркалом и говорит: -#####, как я заработаю этот огромный урожай |
Тексты имеют структуру анекдота, однако в основном бессмысленны. Также overfit-модель по наблюдениям чаще использует обсценную лексику в анекдотах, с чем связан этот эффект - неизвестно.
Ограничения
- Шаблонные анекдоты из датасета.
- Опрос маленький (8 человек), оценки одного человека зависимы.
- Один seed на модель, разброс между запусками не оценивался.
- Токенизатор обучен на том же корпусе, что и модели.
Примечание
Результаты генерации похожи на анекдоты структурно, но представляют из себя бессмыслицу. Выглядят как анекдот, ведут себя как анекдот, но не содержат в себе анекдота. По сути получается какая-то постмодернистская деконструкция анекдота.