三年手搓ChatGPT!劍橋天才少年在Minecraft游戲中爆火回歸
MC(Minecraft,我的世界)是一款自由度極高的全球最高人氣沙盒游戲,其中的紅石電路玩法極其豐富,吸引了眾多技術宅大神投入海量時間造出令人驚嘆的奇觀。
有人在MC中復刻了整座城市:

BV1bPVizYEFs
而那位在MC中手搓CPU后爆火,后續又在MC中造出了套娃MC的大神sammyuri,終于在上周發布了時隔3年的最新力作:在MC中復刻ChatGPT!
MC紅石電路簡介
紅石電路其實就是MC里用來「做機關」的一種玩法。
你可以把它想象成游戲里的「電」,通過一些導線(叫紅石粉)和開關(按鈕、拉桿等),把信號傳給其他東西,比如一扇門、一個活塞或者一盞燈。
比如你拉一下拉桿,紅石線就像電線一樣把信號傳過去,門就打開了。

剛開始你可能只會做個自動門或控制燈的開關,但慢慢地你可以用它做出自動農場、物品分類器,甚至復雜到能模擬計算機的系統。
它的有趣之處就是,你能用很簡單的方塊,搭出很聰明的裝置,全靠你怎么組合和安排。
對于沒接觸過的人來說,其實它就是Minecraft世界里的「積木版電路」,動手試一試,很快就能理解。
使用Python訓練
首先作者使用Python語言為該模型定制了訓練的算法。下圖為作者展示的矩陣乘法代碼:

之后使用一個小數據集TinyChat訓練模型,下圖為部分參數:

該模型的參數量(5,087,280)比最初的ChatGPT-1都要小約23倍,和效果比較好的GPT-3小約17萬。
下面是作者展示出的損失函數訓練圖,效果不錯:

MC中的神經網絡模型架構
除了最開始展現的「鍵盤」輸入和一個大的紅色顯示屏外,后面的部分都是用MC紅石實現AI的部分。
我們之前已經在參數量上提到其實作者做出的不是真正的ChatGPT級別的AI語言模型,參數量因為客觀限制小了很多,但作者和GPT1一樣,用的都是Transformer的架構。
當然和OpenAI的GPT-1都是用了Transformer的解碼器(Decoder)部分,屬于純解碼器架構(Decoder-Only),即下圖的右半部分。
純解碼器架構適合自回歸任務,即大家理解的文本生成任務。左半部分是編碼器(Encoder)架構,是用來做文本理解的,用于BERT系列模型,我們可以舍棄左半部分。
當右半半部分的下面直接是用戶文本輸入(Input)時,就是我們的純解碼器模型了。

整個視頻所展示的紅石架構基本上也是按照Transformer的解碼器部分來完成的。
下圖是分詞器(Tokenizer)。
它會把輸入的文本按預定的分詞算法先把輸入的句子初步處理后切成token,再按照對應的詞匯表映射為數字,送入下一部分。

因為之后的Attention架構對語序的理解能力差:例如「我愛你」和「你愛我」中,「我」和「你」的順序對語義影響很大,我們要給每個token順序加入位置信息。
這里和GPT-1都是采用的位置編碼(Position-Embedding)。

這里就是用數學方法算出位置值,加入token信息里面。

下面將token映射為向量(18bit精度的嵌入參數是通過ROM紅石導入的)。

之后就是按照官方的架構復現了歸一化層(LayerNorm)、矩陣乘法、多頭注意力機制、KV緩存等。

最終作者復制了多份架構,形成了多層的Transformer網絡。

最后經過反嵌入、預測下一個token和輸出架構,就可以將AI回復的句子呈現在屏幕上面了!


效果呈現
基礎的問題:
「你今天怎么樣?」
CraftGPT答:
「我感覺很開心,感謝提問。」

當然,模型的交互效果是有限的,最終只能實現64 tokens的上下文窗口。而且就算在加速的MCHPRS服務器上,一次回復耗時都需要約2小時。
作者簡介
sammyuri尚未在互聯網通過任何渠道公開自己的真實身份。
這位天才少年只在YouTube頻道發布了6個視頻,全部都是極其硬核的MC紅石電路視頻。
本次發布的CraftGPT是他近3年來的課余時間做出的公開的唯一重大成果。

我們發現了可能是sammyuri本人的CodeForce賬號,顯示他的CF分已達超過2600分,意味著他的編程實力已可以通過IOI等世界級編程競賽贏得獎牌,直通世界名校。
該賬號信息顯示,他已入讀劍橋大學。

該視頻的存檔也已公布,所有人都可以在MC中加載該存檔,通過這種電路可視化的方式,更好地直觀理解ChatGPT這類大語言模型的詳細工作原理,寓教于樂。
存檔地址:
https://drive.google.com/file/d/1GToQikx1VpJSOg5unnnFhJl8onq0DRhY/view




























