Разработка Gamio AI. Сквозь боль и баги

Gamio AI — текстовое приключение на русском языке, основанное на искусственном интеллекте.

Как бы пафосно это не звучало, мне удалось создать рабочую версию этой амбициозной идеи

Основной интерфейсОсновной интерфейс

Начало всех начал

Не могу назвать себя профессиональным разработчиком, но я имел большой опыт в сфере машинного обучения.

Мне хотелось создать продукт на основе нейронных сетей, который будет понятен и доступен каждому человеку без вникания в эту сложную тему.

Ничего лучше я не придумал, кроме как создать текстовый квест с использованием искусственного интеллекта. Данный формат уже популярен за рубежом.

Так и появилась первая версия Gamio AI.

Самая ранняя версия GamioСамая ранняя версия Gamio

В самой первой версии я прибегнул к ресурсам компании Ai21 Labs.

На тот момент у них было две GPT-like модели: одна имела 7 млрд параметров, другая 178 млрд параметров. Они предоставляли возможность бесплатного обучения нейронной сети.

Я собрал CYOA истории и отправил им. Через несколько недель я получил две модели, имеющие 7 млрд параметров (вторая была основана на предыдущей). Все они понимали исключительно английский язык (пришлось использовать переводчик).

Две обученные модели.Две обученные модели.

Из этого всего вытекли целых две крупных проблемы.

  • Ужасное, просто ужасающие качество полученной модели. (Кто в этом виноват — не ясно)

  • Огромная цена на обслуживание такой модели. Если каждый день 100 человек будут играть в Gamio, то мне бы понадобилось 70 000 руб/месяц на поддержание работоспособности проекта.

С таким настроем проект проработал два дня.

Образец раннего ИИОбразец раннего ИИ

Возрождение проекта

После нескольких месяцев скурпулёзного изучения всех доступных средств реализации, я решил несмотря ни на что довести проект до ума.

Разработка сайта

В первую очередь я начал проектирование самого сервиса, потому что был уверен в качестве планируемого искусственного интеллекта.

Мне был удобен язык Python, поэтому использование открытого фреймворка Django — было правильным решением.

Главная страница GamioГлавная страница Gamio

Сайт было решено оформить в простом, тёмном стиле. Никаких проблем с созданием дизайна не возникло.

Для реализации всех своих творческих идей, я использовал WebFlow.

Капча

Не хотелось иметь ботов на своём сайте. Использование стандартных reCAPTCHA или hCAPTCHA меня не устраивало. Их можно легко обойти.

Поэтому я решил изобрести велосипед под названием fiCAPTCHA. Это самостоятельный модуль для Python, который генерирует изображение, на котором нужно найти определённый объект.

Пример сгенерированной капчиПример сгенерированной капчи

Может это банально, но боту её точно не пройти.

Вот таким кодом идёт определение координат клика и дальнейшей проверки. Истинные координаты хранятся на серверной стороне.

function click(event) {
    var xCoordinate = event.offsetX;
    var yCoordinate = event.offsetY;
    $.ajax({
        type: 'POST',
        url: '/app/captcha/c',
        data: {...},
        success: (function(data){
            ...
        })
    });
}

Цензура

В Gamio Ai присутствует некое сообщество, высказывания которого нужно регулировать.

В этой задаче было решено использовать искусственный интеллект. А точнее BERT-модель, которая классифицирует текст по двум категориям: 0 — допустить; 1 — не допустить.

Каждый мир и комментарий имеет дополнительно поле в своей базе данных.

class ...(models.Model):
    ...
    is_reviewed = models.BooleanField(default=False)

Во время проверки нейронной сетью, запись или удаляется, или поле is_reviewed принимает значение True

Как показала практика, такое решение было верным. ИИ не делает ошибок.

f5f542de2ccd5092a4fd951ecafc924b.png

Искусственный интеллект

90% успеха Gamio Ai зависит от качества нейронного движка, который обслуживает клиентов.

Для задачи генерации текста отлично подходит архитектура GPT-2, которая находится в открытом доступе.

На первое время я решил не обучать ИИ с нуля, а воспользоваться готовыми решениями. Так, я остановился на русскоязычной модели ruGPT3large, обученная Сбером.

Тонкая настройка

«Ванильная» модель не понимала, что от неё требуют. Поэтому в данной ситуации я прибегнул к тонкой настройке.

График потерь во время обученияГрафик потерь во время обучения

Объём обучающих данных был 45 мб. Это мало, но достаточно.

> Ты [действие]
[результат]

> Ты [действие]
[результат]

Нейронная сеть просмотрела этот файл 10 раз. Результат меня порадовал.

На данный момент в Gamio используется именно данная модель.

Образец игрыОбразец игры

Для удобства, игроку предоставляется полный контроль над историей.

Можно редактировать любой фрагмент текста;

Редактирование историиРедактирование истории

Дополнять текст через нейронную сеть;

Дополнение ИИДополнение ИИ

И возможность перегенерировать последнее действие;

Что дальше?

Это только начало…

Далее планируется с нуля обучить новую русскоязычную нейронную сеть, которая будет иметь 6 млрд параметров. Обучение должно стартовать к концу июня 2022 года.

Если вы заинтересовались Gamio Ai и хотите следить за его развитием:

Gamio Ai — https://gamio.ru

Телеграм — https://t.me/gamio_n

Вконтакте — https://vk.com/gamio_ru

Дискорд — https://discord.gg/gvJFRz4f7b

Спасибо за прочтение:)

© Habrahabr.ru