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

в 10:03, , рубрики: Без рубрики

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Что дальше?

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

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

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


Gamio Ai - https://gamio.ru

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

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

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


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

Автор: Данил

Источник

* - обязательные к заполнению поля


https://ajax.googleapis.com/ajax/libs/jquery/3.4.1/jquery.min.js