4小時學會雅達利遊戲,AI需要幾臺電腦?
原作 Felipe Petroski Such, Kenneth O. Stanley and Jeff Clune
Root 編譯自 Uber Engineering blog
量子位 出品 | 公眾號 QbitAI
一臺足矣。
昨天,優步AI Lab開源了深度神經進化的加速程式碼。其部落格上稱,哪怕使用者只有一臺電腦(桌上型電腦),用這個程式碼也能訓練出會打雅達利的AI。而且只需要4!小!時!
要知道,此前用深度神經進化方法,讓AI一小時學會玩雅達利,需要720個CPU。
720個CPU啊……誰來算算要多少錢……
別費勁算了。反正就是貴到爆炸。想訓練出自己的AI?不是壕根本不要想。
優步還是決心伸出援手,拉貧苦大眾一把。他們研發出這個深度神經進化加速程式碼,是希望降低AI研究的資金門檻。至少讓那些窮得只能買得起遊戲配置的學生們,想自己動手玩玩AI時還有機會。
用神經進化技術,解決深度強化學習問題是非常promising的。玩雅達利(↖)和MuJoCo機器人運動模擬(↗)都可以用神經進化技術。
只用一臺電腦,4小時?怎麼做到的?
弱弱地先補充個小前提:這臺式電腦的配置得高階一點。
△ 也不用這麼“高階”
事實上,高階的臺式電腦是有幾十個虛擬核的,這相當於中型計算叢集了。
如果能恰當的平行執行評估環節的話,那原本需要720核CPU跑1小時的任務現在48核的個人電腦只要16小時。
但別忘了高階的電腦還有GPU可以用,畢竟GPU跑深度神經網路更快。
整體思路:CPU和GPU同時用起來
優步這次開源的程式碼可以同時最大化“榨”幹CPU和GPU。讓GPU跑深度神經網路,讓CPU跑電子遊戲或物理模擬器,然後平行批量執行多個評估程式。另外,它也包含調整過的TensorFlow運算,這對於訓練速度的提高相當重要。
先改進GPU
在優步的setup裡,執行單個神經網路,用CPU比GPU要快。
但GPU更擅長平行執行多個神經網路。
所以,為了充分發揮GPU的優勢,優步把多個神經網路整合到了一起,放在同一批裡執行。這種做法,在神經網路研究裡還是挺常見的,通常用於同樣的神經網路處理不同的輸入的情況。
不過,神經網路的進化是不一樣的。它需要用到不同類的神經網路。這對記憶的容量要求就變高了。
一開始,優步AI研究團隊用基礎的TensorFlow運算跑了一次,只用8小時就搞定。但他們覺得還有空間優化。
於是,他們進一步調整TensorFlow,增加了兩類自定義的運算,於是速度又提升了一倍,訓練用時再降到4小時。
其中,第一個自定義TensorFlow運算顯著加速了GPU。它專門針對強化學習中的異構神經網路強化學習運算,比如雅達利遊戲和大多數機器人運動模擬任務,在這些任務中,各個神經網路的訓練週期長度都不同。有了這個自定義運算,GPU可以只呼叫必需的神經網路進行運算,而不必每一次任務都跑完所有的網路,這樣能夠大大節省計算量。
再針對CPU
上述提到的所有改進,側重點都在GPU上。不過,GPU快到一定程度,也會受制於CPU的速度。為了提高CPU執行遊戲模擬器的表現,就需要第二個自定義的TensorFlow運算。
具體來說,就是把雅達利模擬器的wrapper從Python改成自定義TensorFlow指令(reset,step,observation)。
這樣不僅能利用TensorFlow多執行緒的快速處理能力,還避免了因為Python和TensorFlow相互作用而造成的減速。
總體上,這些調整極大地提升了雅達利模擬器的執行速度。確切來說,大概是原來的3倍。
對於任何一個域(比如雅達利模擬器、物理模擬器等)裡包含多個例項的強化學習研究,上面提到的這些創新方法都能幫它們加速。這類研究越來越常見,比如深度Q學習DQN,或策略梯度A3C的強化學習都是這樣。
分開優化後,整體再協調
單拎GPU或CPU來看,速度上已經提升到極致了。但下一個要面臨的挑戰是如何讓所有的計算資源都同時開動起來。
比方說,我們在每個神經網路上都加個前饋傳遞,問它當下狀態應該採取什麼行動,那麼當每個神經網路計算答案的時候,執行遊戲模擬器的CPU只能空轉。
同樣,如果我們問域模擬器——現在這些行為會產生什麼狀態,那麼CPU在模擬出結果的時候,GPU就沒事幹了。
下圖就是CPU+GPU多執行緒的示意圖。
從這張圖可以瞭解到,如何逐步優化強化學習裡處理不同型別神經網路的執行效果。
藍框指的是域模擬器,在這篇文章裡是雅達利遊戲模擬器,或者是MuJoCo物理模擬器。這兩個模擬器都有不同時間長度的場景。
最左側,是最原始的處理方法,效果最差。既沒有充分利用到平行計算的能力,也沒浪費了GPU或CPU等待對方處理資料的時間。
中間是多執行緒方法稍微好一點,一個CPU可以同時處理多個模擬任務,等到GPU執行時,也可以接上CPU處理好的多組資料。不過還是存在互相等造成的時間浪費。
優步的方法是CPU+GPU流水線法。其中,CPU不帶停的。在GPU處理CPU資料的時候,CPU並沒有閒下來,繼續馬不停蹄地處理更多的資料。
4百萬引數的神經網路,用優步個方法,4個小時就能搞定。
流水線法的意義
又快又便宜。
這直接降低了研究門檻,使得更多自學AI的人,尤其是學生群體,也可以訓練出自己想要的深度神經網路了。
效率大大提升的程式碼將會促進研究更高速的發展。
優步自己就受益匪淺。
他們針對遺傳演算法釋出的大型超引數搜尋,所花預算是隻是原來的一部分。而且在大部分的雅達利遊戲裡的表現都獲得了提升。具體數字請看優步更新的論文。(https://arxiv.org/abs/1712.06567)
另外,這程式碼還能縮短神經進化迭代的週期,AI研究人員可以更快地嘗試新的想法,也願意去試原先很大耗時很久的網路了。
優步AI lab研發的軟體庫包含深度遺傳演算法的實施,源自Saliman等工作的進化策略演算法,還有優步自家據說超級好用隨機搜尋控制。
深度神經進化領域裡,近期還有很多里程碑意義的工作。感興趣的可以進一步瞭解以下機構的工作:
OpenAI:https://blog.openai.com/evolution-strategies/
DeepMind:https://deepmind.com/blog/population-based-training-neural-networks/
Google Brain:https://research.googleblog.com/2018/03/using-evolutionary-automl-to-discover.html
Sentient:https://www.sentient.ai/blog/evolution-is-the-new-deep-learning/
最後,附神經網路加速程式碼:
https://github.com/uber-common/deep-neuroevolution/tree/master/gpu_implementation
相關文章
- 雅達利遊戲的最後時光遊戲
- 遊戲+健身:從"雅達利平衡板"到"世嘉健身環"遊戲
- 曾經讓美國遊戲業崩潰的雅達利,現在要出新遊戲遊戲
- 自己動手2小時學會配置遊戲輔助遊戲
- AI時代,6小時做一款遊戲!AI遊戲
- 跟著 AI 一個小時學會 PythonAIPython
- 倫敦大學學院:睡眠會在最初的幾個小時內重置大腦連線
- NPC會夢見電子羊嗎?從遊戲AI到AI遊戲AI
- 課時4:改進我們的小遊戲遊戲
- 遊戲學 | 玩電子遊戲是浪費時間?遊戲
- 細剖雅達利大崩潰
- 如何學web前端-幾款前端小遊戲推薦Web前端遊戲
- 遊戲史記(三):街機黃金年代的拓荒者,無冕之王雅達利遊戲
- 《大聖歸來》IP遊戲化:一場中國式的雅達利大崩潰遊戲
- 5000元電腦配置方案:Intel和AMD平臺主流遊戲電腦配置推薦Intel遊戲
- 錦利國際遊戲平臺@19188193789遊戲
- 電腦遊戲版 Facebook Gameroom遊戲GAMOOM
- 三消遊戲收益提升,必須學會這幾招遊戲
- 2019臺北國際電腦展:小雞科技首次參展 創新遊戲外設玩法遊戲
- 電腦端遊熱門遊戲庫遊戲
- NHK:日本首次遊戲成癮社調 4成玩家每天遊戲不到1小時遊戲
- MIDiA Research:調查顯示遊戲玩家每週觀看遊戲內容時長達8.5小時 超過實際遊戲時長遊戲
- 學會以下幾個軟體你就會3D遊戲模型了3D遊戲模型
- 打遊戲月薪4、5萬?你可能誤會電競了遊戲
- NPD:2020年美國玩家遊戲時長達15小時 同比增長15%遊戲
- 流量紅利的魔法:小遊戲與社交平臺不得不說的故事遊戲
- 看一眼就學會的 HTML 小遊戲搭建!HTML遊戲
- iPhone 12續航盤點 玩遊戲3小時沒電iPhone遊戲
- AI時代,我們到底需要什麼樣的“大腦”AI
- 2019年Q3美國各大遊戲直播平臺一覽:Twitch直播時長達8730萬小時 略有下降遊戲
- Streamlabs:2020年Q3遊戲玩家在流媒體平臺視訊觀看時間達74.6億小時遊戲
- WePlay主舞臺“CiGA×Fami通_電擊遊戲 - 遊戲直面會”首位嘉賓公開!遊戲
- HowLongToBeat: 《塞爾達傳說:王國之淚》榮登2023年最耗時遊戲榜首 遊玩時長高達110小時遊戲
- Facebook小遊戲後臺配置方法遊戲
- 醫學影像AI為什麼需要小資料學習?AI
- PR影片剪輯需要什麼配置的電腦?幾套PR影片剪輯電腦配置推薦
- 遊戲心理學研究:基於發展心理學與社會時鐘的遊戲設計遊戲設計
- 小島秀夫:遊戲和電影的界限會逐漸模糊遊戲