Недавно ребята из сбер(-банка) анонсировали и выложили в свободный доступ свою модель gpt-3 и я понял, что можно наконец то реализовать свою давнюю мечту - сделать AI dungeon для русского языка. Данная игра сильно выстрелила в прошлом году, про нее было написано множество статей. Если описать AI dungeon кратко, то это эксперимент с огромной генеративной нейронной сетью, где слово игра используется, чтобы заменить множество непонятных слов. Суть игры проста: вы пишете историю и место действия своему персонажу (или выбираете из заранее готовых). Буквально пишете. Вариантов выборов бесконечно много, результаты всегда непредсказуемы, а приключения по настоящему уникальны. Завораживающе, правда?
Причем особенно сильно эта игра понравилась американский имиджбордам, которые сразу же начали допиливать и улучшать функционал игры. Но в конечном итоге создатель игры решил начать зарабатывать деньги и все последующие обновления для игры стали закрытыми, а добрая половина игры - платной. Аноны с 4chan ушли еще дальше -- обучили gpt2 на огромных корпусах эротики и создали генеративный аналог одной широко известной в узких кругах порнографической текстовой флеш игры corruption of champions (гусары, не гуглить!). Превратили архитектуру для интересных приключений в генератор томов “Похотливой аргонианской девы”, как жаль.
Перейдем к экспериментам
В качестве начальной точки я решил повторить все шаги, которые делал автор оригинальной AI Dungeon. В качестве датасета он использовал распарсенный реддит и сайт ChooseYourStory.com. Формат данных представляет себе структуру Choose Your Own Adventure (рус. Выбери себе приключение). Например:
Вас укусила змея
Если ты решил укусить змею в ответ, то переходи на страницу 10
Если ты решил побежать в больницу за антидотом, то переходи на страницу 12
Данный формат восходит к серии книжек 80ых годов. Эти книжки издавали на русском, так что многие из вас возможно их даже читали. В общем счете у него получилось около 30мб хороших тренировочных данных.
И тут начинаются проблемы. На русском языке мне удалось получить только ~1мб размеченных данных -- как раз те книжки, которые перевели на русский язык. Небольшие поиски не выдали мне сайтов или форумов на русском языке, где люди бы писали фанфики а-ля CYOA. Поэтому я решил поступить достаточно скверно: просто перевести датасет на русский язык, а затем подмешать к нему хорошие тексты. Из-за перевода конечно же страдает смысл, но я решил, что для модели выучить структуру CYOA будет важнее. Но все равно хороших текстов очень мало. Чтобы хоть как то улучшить ситуацию я добавил в датасет набор диалогов из Готики 1 и 2 (единственные игры, которые оказались на моем ноутбуке). Классический пример диалогов из готики 2:
Немного юмора, магии и фэнтези - хорошие данные для обучения. Это дало еще 8мб текстов. В сумме получается ~45мб текстов. Мало, но сойдет.
Далее, перейдем к самой игре. Для всех экспериментов я взял форк оригинального AI dungeon. В него добавили несколько хороших особенностей, но на них я не буду особенно останавливаться. Подружить данный форк с русским языком оказалось очень просто - достаточно просто в файлах заменить английские местоимения на русские (you say - ты сказал) С обучением тоже не было никаких особенностей: в colab влезает только маленькая rugpt2 модель.
Я обучил две модели: с диалогами и без, так как диалоги не соответствуют структуре CYOA. И модель действительно начала генерировать нечто осмысленное. Это конечно не уровень https://play.aidungeon.io/, но бесплатно и на русском. Что еще для счастья надо?
Заключение
И гитхаб, где русская модель обитает
В общем, все действительно работает. Но требуются еще тысячи правок и сотни часов дообучения чтобы результат стал действительно качественным. Если вдруг у читателя есть гениальная идея откуда достать хорошие датасеты на русском или просто хорошие мысли, прошу поделиться в комментариях. Но последний вопрос так и остался нерешенным: как обращаться к игроку, на >ты или на >вы?
gotz
А сколько памяти на картах бесплатного колаба? На 16Gb Colab Pro мне удалось файнтюнить ruGPT-3 Medium, по идее, она более хорошие результаты диалогов должна выдать
Srat_Ohota Автор
Странно, у меня как раз в Colab Pro не влезла средняя модель(ruGPT-3 Medium). Ты какие параметры задавал?