Игрок Minecraft собрал в песочнице работающий ИИ-чатбот из 445 тысяч командных блоков без единого мода

Сообщество Minecraft давно освоило постройку графических калькуляторов, генераторов QR-кодов и даже Tetris внутри игры с помощью редстоуна и командных блоков.

Геймер, известный как Objz пошёл дальше и реализовал полноценную языковую модель, использовав 445 782 командных блока и не прибегая к модам, плагинам или датапакам. Сам создатель охарактеризовал работу коротко, назвав её "головной болью".

Модель получилась миниатюрной по современным меркам. В ней 64-мерное пространство эмбеддингов, скрытый слой на 256 нейронов и словарь всего из 2048 слов, а обучение проводилось на 11 118 диалогах из датасета DailyDialog. Общаться с чатботом можно через игровую команду "/dialog", а ответ выводится по одному слову за раз, как в привычных языковых моделях.

При этом Objz честно предупреждает, что нейросеть умеет лишь поддерживать беседу. Считать она не способна, широкими знаниями о мире не обладает и особой сообразительностью не блещет.

Главное достижение здесь именно в оптимизации. Изначальная версия с теми же возможностями занимала почти 2 миллиона блоков, и без ухищрений структура такого объёма данных и вычислений действительно потребовала бы миллионов кубов.

Веса в языковых моделях обычно хранятся в виде чисел с плавающей запятой, реализовать которые в Minecraft было бы чересчур сложно, так что автор ограничился тернарными значениями: -1, 0 и +1.

Команда "scoreboard" в Minecraft поддерживает умножение и деление, но работает только с целыми числами. Преобразование между целыми и дробными значениями добавило бы лишние операции, а квантизация до -1/0/+1 решила сразу две задачи, убрав ненужные команды и заметно сократив объём данных. Благодаря обилию нулевых весов каждая операция умножения с накоплением обходится в среднем в 0,67 команды.

Важная деталь в том, что Objz не просто округлил веса готовой модели после обучения. Квантизация применялась с самого начала при прямом проходе, а для обновления исходных чисел с плавающей запятой во время обратного распространения ошибки использовался straight-through estimator. Вместе с дополнительными оптимизациями это снизило перплексию, то есть вероятность выдать бессмысленное слово в последовательности ответа, с 48,7 до 38,8.

Из-за ограничений игры на количество одновременно выполняемых команд модель разбита на небольшие группы. Даже так на сервере с частотой 35 тиков в секунду генерация одного слова занимает около 1,8 секунды.

Создатель отмечает, что масштабировать такую архитектуру крайне дорого с вычислительной точки зрения – языковая модель на 135 миллионов параметров оказалась бы примерно в 200 раз больше нынешней постройки.

Больше статей на Shazoo
Тэги:

Об авторе

Эксперт по Fallout
Главный редактор
Более 16 лет в индустрии освещения видеоигр, кино, сериалов, науки и техники. Особенно разбираюсь в серии Fallout, ценитель The Elder Scrolls. Поклонник Arcanum и Fallout Tactics. Больше всего играю в Civilization, Old World и градостроители. Изучаю ИИ и загадки космоса.