Всеки, който е играл Minecraft известно време, е запознат с творения на общността, като графични калкулатори в играта, генератори на QR кодове и игри Tetris, изградени с помощта на командни блокове, модове и твърде много свободно време. Създаването на инструменти за изкуствен интелект е логична следваща стъпка и в този дух са възникнали няколко сложни проекта, използващи redstone. Потребителят на Reddit Objz обаче е имплементирал LLM, използвайки само 445 782 командни блока и никакви модове, плъгини или пакети с данни. Според описанието на създателя му, проектът е бил „главоболие“.
Големият езиков модел на 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 отбелязва, че не е закръглил просто стойностите от нормален модел впоследствие, за да постигне това троично представяне. Създателят ги е квантовал от самото начало за директното преминаване през модела по време на обучението и е използвал директен оценител по време на обратното разпространение, за да актуализира основните тегла с плаваща запетая. Тази стъпка е помогнала за намаляване на степента на объркване (приблизително колко е вероятно моделът да генерира нечувствителна дума в последователност от отговори) от 48,7 на 38,8 след някои допълнителни оптимизации.
Като се имат предвид ограниченията на Minecraft за това колко команди може да изпълни едновременно, LLM е разделен на по-малки групи и дори тогава е необходимо около 1,8 секунди, за да се генерира всяка дума в отговор на сървър с 35 такта в секунда. Авторът отбелязва, че превръщането на този LLM в по-голям и по-интелигентен би било изчислително скъпо, тъй като дори LLM със 135 милиона параметъра, изграден с помощта на тази архитектура, би бил цели 200 пъти по-голям от този проект. Въпреки това, случката е добър пример за това как ограниченията стимулират креативността.
Снимка: Unsplash/Reddit, _objz
Виж още: Умната джаджа на OpenAI: с камери, ChatGPT, колонка, компактна и - изненада - скъпа