GPT版超級(jí)馬里奧來了!輸入文本即可自定義游戲關(guān)卡 | GitHub標(biāo)星500+
本文經(jīng)AI新媒體量子位(公眾號(hào)ID:QbitAI)授權(quán)轉(zhuǎn)載,轉(zhuǎn)載請(qǐng)聯(lián)系出處。
用文字生成游戲關(guān)卡自己玩是一種什么樣的體驗(yàn)?
GitHub今日熱榜項(xiàng)目《GPT版馬里奧》了解一下~
瞧,你只需在文本框中輸入“多點(diǎn)管道,多點(diǎn)敵人,少點(diǎn)障礙物,elevation低點(diǎn)”:
點(diǎn)擊“Generate level”,就能獲得自己的馬里奧游戲了:
左邊是玩耍區(qū),按方向鍵和a、s、d鍵進(jìn)行控制就能直接玩,右邊則是根據(jù)你的要求生成的整體效果圖。
隨意設(shè)置這幾個(gè)選項(xiàng),還能解鎖更多樣式。
比如障礙物少一點(diǎn)的:
又或者是管道少一點(diǎn)、障礙物多一點(diǎn)的:
……
這一波,簡直童年回憶拉滿,媽媽再也不用擔(dān)心我無聊了
不得不提的是,以上你看到的這些效果,都是基于GPT-2完成的——
大語言模型又立功了~
用GPT2生成馬里奧關(guān)卡
該項(xiàng)目背后的模型名叫MarioGPT。
它是首個(gè)基于文本生成游戲關(guān)卡(text2level)的模型,在GPT2(distilgpt2)上微調(diào)而成,作者來自哥本哈根信息技術(shù)大學(xué)。
其訓(xùn)練素材包括《超級(jí)馬里奧兄弟》和《超級(jí)馬里奧兄弟:失落的關(guān)卡》,由視頻游戲關(guān)卡語料庫提供。
具體原理如下圖所示:
和GPT2一樣,MarioGPT能夠?qū)ο乱粋€(gè)token序列進(jìn)行預(yù)測(cè)。
其中的關(guān)卡被表示為字符串,它會(huì)經(jīng)過一個(gè)字節(jié)對(duì)編碼器(Byte-Pair Encoding)進(jìn)行tokenize。
關(guān)卡是被按列進(jìn)行分解的,并展平為單個(gè)向量(或者是多個(gè)關(guān)卡組成一批向量)。
為了將用戶輸入的信息進(jìn)行合并,作者給MarioGPT安排了一個(gè)凍結(jié)文本編碼器,它以預(yù)訓(xùn)練的雙向LLM(BART)形式出現(xiàn)。
與此同時(shí),在這里輸出模型前向傳播的平均隱藏狀態(tài)(hidden state)。
最后,將輸出的狀態(tài)用于GPT2架構(gòu)的交叉注意力層,并與傳遞到模型中的實(shí)際關(guān)卡序列進(jìn)行結(jié)合就可以了。
對(duì)于MarioGPT的效果,作者則表示很驚訝,因?yàn)樗罱K生成的結(jié)果中,有88%都是可以用來實(shí)際進(jìn)行闖關(guān)的。
怎么玩?
由于MarioGPT已經(jīng)開源,大家也可以自己下載體驗(yàn)一把。
確保電腦安裝了3.8+版本的python后,使用pip命令或者git一下:
“pip install mario-gpt” 或 “git clone git@github.com:shyamsn97/mario-gpt.git >python setup.py install”
生成關(guān)卡最少只需要下面這些代碼:
作者在項(xiàng)目中也提供了更深入的教程。
要想自己上手試一試生成的關(guān)卡,可以:
(1)去Huggingface上的demo上玩。它甚至可以不用你輸入文本,直接在每個(gè)元素上選擇“多”或者“少”等選項(xiàng)生成任意關(guān)卡。
(2)通過代碼控制:使用play和astar函數(shù),前提是你電腦安裝了Java 8+。
感興趣的朋友快去試試吧~目前MarioGPT已經(jīng)有超過500+人標(biāo)星了。
論文地址:?https://arxiv.org/abs/2302.05981?
項(xiàng)目地址:?https://github.com/shyamsn97/mario-gpt?
HF試玩地址:
??https://huggingface.co/spaces/multimodalart/mariogpt?