用文字生成遊戲關卡自己玩是一種什麽樣的體驗?
GitHub 今日熱榜項目《GPT 版馬裏奧》了解一下~
瞧,你隻需在文本框中輸入 " 多點管道,多點敵人,少點障礙物,elevation 低點 ":
點擊 "Generate level",就能獲得自己的馬裏奧遊戲了:
左邊是玩耍區,按方向鍵和 a、s、d 鍵進行控制就能直接玩,右邊則是根據你的要求生成的整體效果圖。
随意設置這幾個選項,還能解鎖更多樣式。
比如障礙物少一點的:
又或者是管道少一點、障礙物多一點的:
……
這一波,簡直童年回憶拉滿,媽媽再也不用擔心我無聊了
不得不提的是,以上你看到的這些效果,都是基于GPT-2完成的——
大語言模型又立功了~
用 GPT2 生成馬裏奧關卡
該項目背後的模型名叫MarioGPT。
它是首個基于文本生成遊戲關卡(text2level)的模型,在 GPT2(distilgpt2)上微調而成,作者來自哥本哈根信息技術大學。
其訓練素材包括《超級馬裏奧兄弟》和《超級馬裏奧兄弟:失落的關卡》,由視頻遊戲關卡語料庫提供。
具體原理如下圖所示:
和 GPT2 一樣,MarioGPT 能夠對下一個 token 序列進行預測。
其中的關卡被表示爲字符串,它會經過一個字節對編碼器(Byte-Pair Encoding)進行 tokenize。
關卡是被按列進行分解的,并展平爲單個向量(或者是多個關卡組成一批向量)。
爲了将用戶輸入的信息進行合并,作者給 MarioGPT 安排了一個凍結文本編碼器,它以預訓練的雙向 LLM(BART)形式出現。
與此同時,在這裏輸出模型前向傳播的平均隐藏狀态(hidden state)。
最後,将輸出的狀态用于 GPT2 架構的交叉注意力層,并與傳遞到模型中的實際關卡序列進行結合就可以了。
對于 MarioGPT 的效果,作者則表示很驚訝,因爲它最終生成的結果中,有88%都是可以用來實際進行闖關的。
怎麽玩?
确保電腦安裝了 3.8+ 版本的 python 後,使用 pip 命令或者 git 一下:
"pip install mario-gpt" 或 "git clone [email protected]:shyamsn97/mario-gpt.git >python setup.py install"
生成關卡最少隻需要下面這些代碼:
作者在項目中也提供了更深入的教程。
要想自己上手試一試生成的關卡,可以:
(1)去 Huggingface 上的 demo 上玩。它甚至可以不用你輸入文本,直接在每個元素上選擇 " 多 " 或者 " 少 " 等選項生成任意關卡。
(2)通過代碼控制:使用 play 和 astar 函數,前提是你電腦安裝了 Java 8+。
感興趣的朋友快去試試吧~目前 MarioGPT 已經有超過 500+ 人标星了。
論文地址:
https://arxiv.org/abs/2302.05981
項目地址:
https://github.com/shyamsn97/mario-gpt
HF 試玩地址:
https://huggingface.co/spaces/multimodalart/mariogpt