0
本文作者: skura | 2020-02-14 11:16 |
早在 2019 年 3 月,我就建立了一個(gè)名為 AI Dungeon 的 hackathon 項(xiàng)目。這個(gè)項(xiàng)目是一個(gè)經(jīng)典的文本冒險(xiǎn)游戲。故事的內(nèi)容和所呈現(xiàn)的潛在動(dòng)作都是通過機(jī)器學(xué)習(xí)產(chǎn)生的:
圖片來源:AI Dungeon Classic
這款游戲在 hackathon 很受歡迎,總會(huì)有一小群人在線,但總的來說,離我的預(yù)想還有差距。
首先,玩家只能從游戲提供的選項(xiàng)中進(jìn)行選擇。我想要一個(gè)真正開放的世界,玩家可以隨心所欲地寫作;另一方面,在長(zhǎng)時(shí)間的游戲過程中,游戲很快就變得容易胡言亂語:
圖片來源:AI Dungeon Classic
不幸的是,這兩個(gè)問題都沒有很明確的解決方法。我在當(dāng)時(shí)最大的可用參數(shù)版本 GPT-2 上建立了 AI Dungeon。盡管 GPT-2 是可用的最強(qiáng)大的模型,但實(shí)際上還遠(yuǎn)遠(yuǎn)不夠。經(jīng)過幾個(gè)月的修復(fù)和調(diào)整,我的游戲有了很大的改進(jìn),但還是遇到了同樣的問題。
然而,在 11 月,OpenAI 發(fā)布了完整的 15 億參數(shù) GPT-2 模型,并為新版本的游戲打開了大門,這個(gè)版本更接近我最初的想法。一個(gè)月后,我發(fā)布了 AI Dungeon 2,一個(gè)基于 GPT-2 模式的真正開放的文本冒險(xiǎn)游戲:
圖片來源:AI Dungeon
在游戲中,你可以做任何事情。組建一個(gè)骷髏搖滾樂隊(duì)?吃月亮?安裝 Windows 10?一切皆有可能。
游戲反響非常好。我們登上了黑客新聞的榜首,一些受歡迎的玩家發(fā)布了相關(guān)視頻,Twitter 上滿是 ML 生成的冒險(xiǎn)的截圖。一周之內(nèi),我們有了超過 10 萬名玩家,其中超過一半玩家從頭到尾完成了游戲。
然而,由于突然引起關(guān)注,我們的成本也大大增加。
如何在 GCP 上花費(fèi) 50000 美元
當(dāng)我第一次發(fā)布 AI Dungeon 2 時(shí),它并不是一個(gè)托管應(yīng)用,而是一個(gè)用戶可以復(fù)制并運(yùn)行的 Google Colab notebook,用戶可以下載 AI Dungeon 模型并安裝游戲界面。
圖片來源:Google Colab
這種方法之所以有意義,有幾個(gè)原因。首先,Colab 是免費(fèi)的,這使得它成為了一個(gè)很好的輔助項(xiàng)目平臺(tái)。其次,Google 為每個(gè) Colab notebook 提供了一個(gè)免費(fèi)的 GPU 實(shí)例,這是運(yùn)行 5GB 模型所必需的。
我們遇到的第一個(gè)問題是我們的模型幾乎不適合 GPU 實(shí)例。如果由于某種原因,你的游戲需要一點(diǎn)額外的內(nèi)存,整個(gè)游戲可能會(huì)崩潰。
第二個(gè)更嚴(yán)重的問題是資金問題。
我之所以選擇 Colab 是基于成本的考慮,但我沒有考慮數(shù)據(jù)下載的費(fèi)用。由于每個(gè) Colab notebook 都需要下載 5GB 的模型,而且用戶分布在不同的地區(qū),因此每次下載的成本在 0.30 到 0.40 美元之間。
當(dāng)每天的賬單達(dá)到 2000 美元時(shí),比亞迪的感知控制認(rèn)知實(shí)驗(yàn)室(PCCL)非常友好地處理了這些費(fèi)用;當(dāng)成本達(dá)到 7000 美元時(shí),他們還可以接受;但是當(dāng)成本達(dá)到 15000 美元時(shí),他們開始緊張起來;在成本達(dá)到 20000 美元時(shí),我們都同意我們需要做點(diǎn)什么;在成本達(dá)到 30000 美元時(shí),他們都想拔掉插頭了。
到一切都談妥時(shí),三天內(nèi)總帳已達(dá) 50000 美元。
在不中斷的情況下按比例部署 GPT-2
在 PCCL 關(guān)閉 AI Dungeon 2 的 12 小時(shí)內(nèi),我們的社區(qū)已經(jīng)通過 torrent 分享模型的點(diǎn)對(duì)點(diǎn)解決方案,這意味著游戲是備份的,沒有下載收費(fèi)。
然而,這顯然是一項(xiàng)臨時(shí)措施。AI Dungeon 2 的愿景是,它是一個(gè)任何人都可以玩的游戲,而不僅僅是那些有技術(shù)頭腦的人運(yùn)行一個(gè) Colab notebook。為了做到這一點(diǎn),我們需要發(fā)布一個(gè)真正的應(yīng)用程序游戲。
要構(gòu)建一個(gè)完整的 AI Dungeon 2 應(yīng)用程序,我們的模型需要部署為后端 web 服務(wù)器。你可以將它當(dāng)成是一個(gè)“預(yù)測(cè)API”,我們的應(yīng)用程序可以通過用戶的輸入進(jìn)行查詢,從而生成接下來的故事。以前使用過 microservices 的人都應(yīng)該熟悉這種模式。
問題是,如何在 ML 模型的基礎(chǔ)上構(gòu)建微服務(wù)?
事實(shí)證明,有一個(gè)開源工具可以自動(dòng)實(shí)現(xiàn)它,那就是 Cortex。在高層上,Cortex 將會(huì):
將模型打包在 API 中并將其容器化
將模型部署到云中,將 API 公開為 HTTP 端點(diǎn)
自動(dòng)縮放實(shí)例以處理流量波動(dòng)
我們沒有使用 Flask、Docker、Kubernetes 和一大堆 AWS 服務(wù)來構(gòu)建自己的基礎(chǔ)設(shè)施,我們可以整合和自動(dòng)化我們的基礎(chǔ)設(shè)施。
這種架構(gòu)允許我們將我們的模型作為網(wǎng)絡(luò)和移動(dòng)應(yīng)用程序的后端,向不能使用 Colab 的玩家開放游戲。然而,它也需要一些優(yōu)化,以便我們能夠負(fù)擔(dān)得起其費(fèi)用。
首先,我們需要配置積極的自動(dòng)縮放。我們每運(yùn)行一個(gè)實(shí)例就收取一分鐘的費(fèi)用,為了服務(wù)于許多并行用戶,我們需要啟動(dòng)許多實(shí)例。為了最高效地利用我們的資源,我們需要在任何給定的時(shí)刻提高所需實(shí)例的最小數(shù)量,并快速地刪除任何不必要的實(shí)例。
其次,我們需要選擇最佳的實(shí)例類型。這意味著要準(zhǔn)確計(jì)算出我們的實(shí)例需要多大才能有效地承載模型,并利用 spot 實(shí)例——云提供商以大幅折扣出售的未使用實(shí)例。
經(jīng)過一些修復(fù),我們能夠使我們的 Cortex 部署比以前 Colab 的設(shè)置成本效益高出大約 90%。在兩周內(nèi),我們的服務(wù)器數(shù)量達(dá)到了 715 臺(tái)的峰值,我們支持了超過 10 萬名玩家。六周后,我們已經(jīng)支持了超過了 100 萬名用戶,創(chuàng)建了 600 萬個(gè)獨(dú)特的故事。
擴(kuò)展 AI Dungeon 需要社區(qū)的共同努力
在每個(gè)發(fā)展階段,社區(qū)都是開啟我們下一階段規(guī)模的關(guān)鍵。
最明顯的例子是那些玩 AI Dungeon 2 的人。沒有他們,游戲就沒有任何規(guī)模可言。不過,除了我們的玩家,我們還得到了社區(qū)成員的幫助,比如:
BYU PCCL 支付我們的初始 GCP 賬單
在關(guān)閉后的 12 小時(shí)內(nèi),通過 torrent 將 AI Dungeon 2 重新上線的用戶
Braydon Batungbacal,他自愿構(gòu)建 iOS 和 Android 應(yīng)用程序
繼續(xù)支持 AI Dungeon 發(fā)展的 Patreon 支持者
像 Cortex 這樣的開源項(xiàng)目曾經(jīng)支持 AI Dungeon
隨著我們繼續(xù)開發(fā) AI Dungeon,并有可能為其他由 ML 驅(qū)動(dòng)的游戲提供一個(gè)更大的平臺(tái),毫無疑問,我們的社區(qū)將繼續(xù)成為我們做出決策和執(zhí)行決策的驅(qū)動(dòng)力。
感謝所有參與的人,請(qǐng)繼續(xù)關(guān)注下一步。
雷鋒網(wǎng)雷鋒網(wǎng)雷鋒網(wǎng)
雷峰網(wǎng)版權(quán)文章,未經(jīng)授權(quán)禁止轉(zhuǎn)載。詳情見轉(zhuǎn)載須知。