GPT版超級馬里奧來了!輸入文本即可自定義游戲關卡 | GitHub標星500+
本文經AI新媒體量子位(公眾號ID:QbitAI)授權轉載,轉載請聯系出處。
用文字生成游戲關卡自己玩是一種什么樣的體驗?
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%都是可以用來實際進行闖關的。
怎么玩?
由于MarioGPT已經開源,大家也可以自己下載體驗一把。
確保電腦安裝了3.8+版本的python后,使用pip命令或者git一下:
“pip install mario-gpt” 或 “git clone git@github.com: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?






























