Любой, кто играл в Minecraft достаточно долго, знаком с творениями сообщества: внутриигровыми графическими калькуляторами, генераторами QR-кодов и «Тетрисом», созданными с помощью командных блоков, модов и бездны свободного времени. Создание инструментов ИИ — логичный следующий шаг, и в этом направлении с использованием редстоуна появилось несколько сложных проектов. Однако пользователь Reddit Objz реализовал LLM, используя всего 445 782 командных блока и никаких модов, плагинов или датапаков. По описанию создателя, проект был «головной болью».
LLM от Objz на самом деле не такая уж и большая. Она имеет лишь 64-мерное пространство вложений, скрытый слой из 256 нейронов и крошечный словарь из 2048 слов, а обучалась на 11 118 диалогах из набора DailyDialog. Пользователи могут общаться с ней через внутриигровую функцию «/dialog», и выходной поток возвращается по одному слову за раз, как у типичных чат-ботов.
Однако даже с таким обучением, по словам автора, эта LLM годится только для разговора и не отличается особой сообразительностью: она не умеет считать и не обладает широкими знаниями.
Тем не менее, проделанная работа впечатляет. 445 000 командных блоков звучат как много, пока не осознаешь, что такая структура данных и вычислений потребовала бы буквально миллионов кубов, если бы не была оптимизирована. Действительно, оригинальная версия, даже с вышеупомянутыми возможностями, состояла почти из 2 миллионов блоков. Веса LLM обычно представляются значениями с плавающей точкой, что было бы чрезвычайно сложно реализовать, поэтому Objz решил использовать только троичные значения для весов: -1, 0 и +1.
Команда «scoreboard» в Minecraft поддерживает умножение и деление, но она основана на целых числах, и её использование потребовало бы преобразования целых в числа с плавающей точкой, добавляя лишние операции. Первоначальная квантизация до -1/0/+1 убивает двух зайцев одним выстрелом, пропуская команды и уменьшая набор данных. В итоге каждая операция умножения-накопления в среднем занимает 0,67 команды благодаря всем нулевым значениям.
Objz отмечает, что они не просто округлили значения обычной модели постфактум для достижения такого троичного представления. Создатель выполнил квантизацию с самого начала для прямого прохода через модель во время обучения и использовал сквозной оценщик (straight-through estimator) при обратном распространении для обновления базовых весов с плавающей точкой. Этот шаг помог снизить показатель перплексии (грубо говоря, вероятность того, что модель выдаст бессмысленное слово в последовательности ответа) с 48,7 до 38,8 после некоторых дополнительных оптимизаций.
Учитывая ограничения Minecraft на количество одновременно выполняемых команд, LLM разделена на более мелкие группы, и даже при этом на сервере с тикрейтом 35 тиков в секунду генерация каждого слова в ответе занимает около 1,8 секунды. Автор замечает, что сделать эту LLM больше и умнее было бы вычислительно затратным делом, так как даже LLM со 135 миллионами параметров, построенная по такой архитектуре, была бы в 200 раз больше этого проекта. Но это яркий пример того, как ограничения стимулируют креативность.
Всегда имейте в виду, что редакции могут придерживаться предвзятых взглядов в освещении новостей.
Автор – Bruno Ferreira




