Погрузившись в тему DL NLP, набрел на просторах интернета на любопытный репозиторий. Это не много не мало — Русская GPT-2! Ну, т.е. русскоязычная. Причем не какая-нибудь мелкая 117М, а вполне себе 1250М, что уже довольно серьезно. Автор проделал немалую работу по адаптации исходной модели и подготовке корпуса для обучения. Да и само обучение, надо полагать заняло немало времени и мощностей. В общем, респект товарищу l4rz! Планирую пойти по его стопам и обучить систему на своем корпусе (в процессе подготовки которого сейчас нахожусь) — благо автор оставил довольно подробные инструкции, как именно подступиться к столь масштабной задаче… По итогам отчитаюсь! ;)
В пока, чисто развлечения ради, предлагаю на суд общественности некоторые эксперименты с системой, по мотивам поста о более крутой GPT-3 (хотя там автор, очевидно, и GPT-3 не считает чем-то выдающимся). С одной стороны представленная здесь система заметно проще GPT-3, с другой — все-таки обученная русскоязычная модель! Мне кажется это забавно.
Disclaimer. Результаты во многом определяются корпусом, на котором училась сеть. Вот что автор говорит об этом: I scraped a couple of Russian press sites, parsed HTML with beautifulsoup4 and saved parsed texts as well as metadata (headers, TL;DRs, timestamps) for further sorting and postprocessing in PKLs… In order to push things further the 4Gb dataset (415M tokens) was augmented with 3Gb of filtered fanfics, becoming a 7Gb one (862M tokens).
Методика эксперимента проста: я запускаю сеть трижды с одним и тем же входом. Выход сети отмечен жирным. Никаких правок я не делал, за исключением чисто косметических — вроде пропущенных пробелов (которые и пропущены то были из-за моего вмешательства в код*). Эксперименты в целом повторяют те, что описаны в статье про GPT-3, и я решил их никак не комментировать… ;)
Эксперимент №1
.>>>Вы наливаете себе стакан клюквенного сока, однако затем по рассеянности добавляете в него чайную ложечку виноградного сока. Выглядит он нормально. Вы пытаетесь его понюхать, но у вас сильная простуда, поэтому вы не чувствуете запахов. Вам очень хочется пить. Поэтому вы пьете кофе с медом и сахаром.>>> new
Вы наливаете себе стакан клюквенного сока, однако затем по рассеянности добавляете в него чайную ложечку виноградного сока. Выглядит он нормально. Вы пытаетесь его понюхать, но у вас сильная простуда, поэтому вы не чувствуете запахов. Вам очень хочется пить. Поэтому вы снова сливаете себе кофе. Вы чувствуете тошноту. В этом нет ничего плохого, вы не знаете, как это пить в любом случае. Вы чувствуете что-то очень плохое, но на вас никто не обращает внимания.>>> new
Вы наливаете себе стакан клюквенного сока, однако затем по рассеянности добавляете в него чайную ложечку виноградного сока. Выглядит он нормально. Вы пытаетесь его понюхать, но у вас сильная простуда, поэтому вы не чувствуете запахов. Вам очень хочется пить. Поэтому вы продолжаете есть, если хотите, но не знаете, как он выглядит.
Эксперимент №2
.>>>Вы организовали небольшую вечеринку. Вы хотите подать ужин в гостиной. Стол из столовой шире дверного проёма, и чтобы перенести его в гостиную, вам придётся выпить стакан горячего молока.>>> new
Вы организовали небольшую вечеринку. Вы хотите подать ужин в гостиной. Стол из столовой шире дверного проёма, и чтобы перенести его в гостиную, вам придётся сделать несколько шагов.>>> new
Вы организовали небольшую вечеринку. Вы хотите подать ужин в гостиной. Стол из столовой шире дверного проёма, и чтобы перенести его в гостиную, вам придётся приложить немало усилий.
Эксперимент №3
.>>>Вы адвокат защиты, и вам сегодня необходимо попасть в суд. Одеваясь с утра, вы обнаружили, что брюки от вашего костюма сильно испачканы. Однако ваши плавки чистые и очень стильные. Это плавки высокого класса из Франции, которые вам на день рождения подарила Изабель. Вы решаете, что вам нужно надеть для суда?>>> new
О да*
Вы адвокат защиты, и вам сегодня необходимо попасть в суд. Одеваясь с утра, вы обнаружили, что брюки от вашего костюма сильно испачканы. Однако ваши плавки чистые и очень стильные. Это плавки высокого класса из Франции, которые вам на день рождения подарила Изабель. Вы решаете, что вам нужно надеть для суда. Если вам что-то не нравится — возьмите с собой одежду из вашего гардероба.>>> new
Вы адвокат защиты, и вам сегодня необходимо попасть в суд. Одеваясь с утра, вы обнаружили, что брюки от вашего костюма сильно испачканы. Однако ваши плавки чистые и очень стильные. Это плавки высокого класса из Франции, которые вам на день рождения подарила Изабель. Вы решаете, что вам нужно надеть для суда?
— У меня есть множество вопросов к адвокату.
Эксперимент №4
.>>>Вчера я оставил одежду в химчистке, и сегодня мне ещё нужно её забрать. Где моя одежда?>>> new
— Идиот, мне надо его вернуть, а не делать там всё по плану.
Вчера я оставил одежду в химчистке, и сегодня мне ещё нужно её забрать. Где моя одежда?>>> new
— Не, я не знаю, что это за вещи, но я всегда могу забрать одну, а это не всегда приятно.
Вчера я оставил одежду в химчистке, и сегодня мне ещё нужно её забрать. Где моя одежда?
— Хорошо. Не буду ему мешать,- ответил я.
Эксперимент №5
.>>>Джанет и Пенни пошли в магазин, чтобы купить Джеку подарок. Джанет сказала: «Я куплю Джеку топ». «Не покупай Джеку топ», — говорит Пенни. «У него есть топ. Он получит от меня, когда мы будем выбирать.И если ты не купишь Джеку, то продашь Джеку.>>> new
Джанет и Пенни пошли в магазин, чтобы купить Джеку подарок. Джанет сказала: «Я куплю Джеку топ». «Не покупай Джеку топ», — говорит Пенни. «У него есть топ. Он получит свой кусок от Джека.>>> new
Джанет и Пенни пошли в магазин, чтобы купить Джеку подарок. Джанет сказала: «Я куплю Джеку топ». «Не покупай Джеку топ», — говорит Пенни. «У него есть топ. Он получит. Возьму. Он всегда рядом. И я не продам. Только в отличие от Джека. Его не интересует, чем ему так не угодил. Он не будет ничего покупать, чем покупать себе сам.
Эксперимент №6
.>>>На вечеринке я налил себе стакан лимонаду, однако он оказался слишком кислым, поэтому я добавил немного сахару. Под рукой не было ложки, поэтому я размешал напиток сигаретой. Но это оказалось очень плохой идеей, потому что я уже давно выпил. Ух ты, какой замечательный вкус!>>> new
На вечеринке я налил себе стакан лимонаду, однако он оказался слишком кислым, поэтому я добавил немного сахару. Под рукой не было ложки, поэтому я размешал напиток сигаретой. Но это оказалось очень плохой идеей, потому что лимонад не давал мне пить.>>> new
На вечеринке я налил себе стакан лимонаду, однако он оказался слишком кислым, поэтому я добавил немного сахару. Под рукой не было ложки, поэтому я размешал напиток сигаретой. Но это оказалось очень плохой идеей, потому что он был слишком горячим, поэтому я стал пить из горла.
Эксперимент №7
.>>>В следующих вопросах у некоторых действий есть серьёзные последствия, а некоторые безопасны. Твоя задача – определить последствия употребления различных смесей и их опасность.*Небольшое лирическое отступление. GPT-2 с неограниченной генерацией текста (пол страницы за раз), как было в исходнике, мне не понравился. И я зарезал вывод до минимума, но сделал возможность рекурсивного продолжения (когда на вход подается предыдущий вывод). Таким образом я немного «мухлюю», т.к. Сам определяю когда можно/нужно остановиться. В данном случае сеть и правда вывела результат, который можно с некоторой натяжкой интерпретировать как ответ (правда, парадоксальный), но если продолжить вывод, то… Судите сами:
1. Вы наливаете себе стакан клюквенного сока, однако затем по рассеянности добавляете в него чайную ложечку виноградного сока. Выглядит он нормально. Вы пытаетесь его понюхать, но у вас сильная простуда, поэтому вы не чувствуете запахов. Вам очень хочется пить. Вы выпиваете его.
А) Это опасная смесь.
Б) Это безопасная смесь.
Правильный ответ: 2. А)
Правильный ответ:>>> new
2. А) Все остальное НЕ надо знать.
3. Б) Зависимость.
4. На каком основании вы хотите его пить?
…>>> new
Правильный ответ: это ядовитые вещества.
…
Правильный ответ: «Всё готово.»
За сим, все…
P.S. Если сообщество подскажет, где можно разместить Модель, размером 5Gb (так, что бы она была доступна чем-то вроде wget) — я добавлю в статью ссылку на Colab notebook и любой желающий сможет погонять систему в живую… ;) А то мой домашний «хостинг», боюсь, не выдержит хабра-эффекта. А пока могу попробовать что получится с вашим текстом в качестве ввода, если кому интересно!
UPDATE: Сообщество в лице grigorov откликнулось, так что вот обещанный Блокнот! Теперь вы можете сами поэкспериментировать, сравнить с оригиналом (ссылка из поста DesertFlow GPT-2 нейросеть от OpenAI. Быстрый старт) и может быть сделать какие-то выводы. ;) Например: имеет ли значение язык при обучении языковой модели?
КОММЕНТАРИЙ АВТОРА: Привет,
да, конечно, не против — иначе бы я не выкладывал модель сюда.
>>>Имеет ли значение язык при обучении языковой модели?
Разумеется, имеет — я заметил, что модели с малым количеством параметров хуже работают с русским языком. Предполагаю, что это связано с более сложной (менее формализованной) семантикой русского, по сравнению с английским; я про это написал в моем writeup. Также, принятый в русском способ передачи диалогов, когда каждая реплика начинается с новой строки и предваряется тире, без указания, кому эти реплики принадлежат, совсем не помогает модели правильно идентифицировать структуру диалога (и вдобавок затрудняет тренировку, потому что модель учится структурировать любые тексты подобным образом — такой же эффект наблюдается, когда в данные для тренировки просачивается любой markup).
Еще один момент, который я упустил (мне он показался очевидным) — если хочется делать finetune этой модели, то нужно использовать тот sentencepiece словарь (sp.*), который идет вместе с моделью.
Также, при тренировке 1250M использовались в основном новости, пресса, и позже — фанфики, что отражается на характере результатов.
Nehc Автор
>>> я добавлю в статью ссылку на Colab notebook и любой желающий сможет погонять систему в живую… ;)
А может и не добавлю… ( У автора модель в довольно условном «свободном» доступе — на мегашаре. Будет ли корректно с моей стороны переложить её куда-то еще? Надо, наверное, с ним связаться предварительно, уточнить…
n0isy
После статьи комментарий тоже выглядит как эксперимент…
Nehc Автор
Почему? Скачивать, запускать, делиться результатами автор явно не запрещал… Но вот переложить плод его трудов (а главное там, конечно, модель) на другой хостинг и всем предоставить к ней прямой доступ — может быть не совсем корректно. Я не очень знаю принцип работы мегашары — автор получает что-то за скачивания?
Nehc Автор
Или вы про стиль комментария? )) Каюсь — косноязычен…
kryvichh
С чем поведёшься, от того и наберёшься.
Давно была идея скормить нейросети полное собрание сочинений В. И. Ленина. Интересно было бы поболтать на актуальные темы.
Nehc Автор
Добавил блокнот…
У автора запросил согласия — если вдруг ответит отказом, придется убрать.