單GPU運行數千環境、800萬步模擬只需3秒,斯坦福開發超強遊戲引擎


現階段,AI 智能體彷彿無所不能,玩遊戲、模仿人類完成各種任務,而這些智能體基本是在復雜環境中訓練而成的。不僅如此,隨著學習任務變得越來越複雜,模擬環境的複雜性也隨之增加,從而增加了模擬環境的成本。

即使擁有超級計算規模資源的公司和機構,訓練好一個可用的智能體也可能需要數天的時間才能完成。

這阻礙了該領域的進展,降低了訓練先進AI 智能體的實用性。為了解決環境模擬的高成本問題,最近的研究努力從根本上重新設計模擬器,以在訓練智能體時實現更高的效率。這些工作共享批量模擬的思想,即在單個模擬器引擎內同時執行許多獨立的環境(訓練實例)。

本文,來自斯坦福大學等機構的研究者,他們提出了一個名為Madrona 的強化學習遊戲引擎,可以在單個GPU 上並行運行數千個環境,將智能體的訓練時間從幾小時縮減到幾分鐘。

論文地址:https://madrona-engine.github.io/shacklett_siggraph23.pdf 論文主頁:https://madrona-engine.github.io/‌

具體而言,Madrona 是一款研究型遊戲引擎,專為創建學習環境而設計,可以在單個GPU 上同時運行數千個環境實例,並且以極高的吞吐量(每秒數百萬個聚合步驟)執行。 Madrona 的目標是讓研究人員更輕鬆地為各種任務創建新的高性能環境,從而使AI 智能體訓練的速度提高幾個數量級。

Madrona 具有以下特點:

GPU 批量模擬:單個GPU 上可運行數千個環境; 實體組件系統(ECS) 架構; 可與PyTorch 輕鬆互操作。

Madrona 環境示例:

上面我們已經提到,該研究利用了ECS 設計原則,其具體過程如下:

研究者藉助Madrona 框架,實現了多個學習環境,結果表明,相較於開源CPU 基線,GPU 的速度提升達到了兩到三個數量級,相較於在32 線程CPU 上運行的強基線,速度提升為5-33 倍。此外,該研究還在該框架中實現了OpenAI 的「hide and seek 3D」環境,每個模擬步驟都執行剛體物理學和光線追踪,在單個GPU 上實現了每秒超過190 萬個step 速度。

作者之一、斯坦福大學計算機科學副教授Kayvon Fatahalian 表示,在一款讓多個智能體玩烹飪遊戲Overcooked 上,借助Madrona 遊戲引擎,模擬800 萬個環境步驟的時間從一小時縮短到三秒。

目前,Madrona 需要使用C++ 來編寫遊戲邏輯。 Madrona 僅提供了可視化渲染支持,雖然它可以同時模擬數千個環境,但可視化器一次只能查看一個環境。

基於Madrona 搭建的環境模擬器有哪些?

Madrona 本身不是一個RL 環境模擬器,而是一個遊戲引擎或框架。開發者藉助它可以更容易地實現自己的新的環境模擬器,從而通過在GPU 上運行批次模擬並將模擬輸出與學習代碼緊密結合來實現高性能。

下面是基於Madrona 搭建的一些環境模擬器。

Madrona Escape Room

Madrona Escape Room 是一個簡單的3D 環境,使用了Madrona 的ECS API 以及物理和渲染功能。在這個簡單任務中,智能體必須學習按下紅色按鈕並推動其他顏色的箱子以通過一系列房間。

Overcooked AI

Overcooked AI 環境是一個基於協作電子遊戲的多智能體學習環境(多人協作烹飪遊戲),這裡對它進行了高通量Madrona 重寫。

圖源:https://store.epicgames.com/zh-CN/p/overcooked‌

Hide and Seek

2019 年9 月,OpenAI 智能體上演了捉迷藏攻防大戰,自創套路與反套路。這裡使用Madrona 對「Hide and Seek」環境進行了復現。

Hanabi

Hanabi 是一個基於Madrona 遊戲引擎的Hanabi 紙牌遊戲的實現,也是一個協作式Dec-POMDP。該環境基於DeepMind 的Hanabi 環境,並支持部分MAPPO 實現。

Cartpole

Cartpole 是一個典型的RL 訓練環境,它與構建在Madrona 遊戲引擎之上的gym 實現有相同的動力學。

GitHub 地址:https://github.com/shacklettbp/madrona‌

Overcooked 烹飪遊戲:一分鐘內訓練最佳智能體

Overcooked in Thousands of Kitchens: Training Top Performing Agents in Under a Minute

論文作者之一、斯坦福大學本科生Bidipta Sarkar 撰寫博客詳細介紹了訓練智能體玩Overcooked 烹飪遊戲的過程。 Overcooked 是一款流行的烹飪遊戲, 也可以作為協作多智能體研究的基準。

在Sarkar 的RL 研究中,模擬虛擬環境的高成本對他來說始終是訓練智能體的一大障礙。

就Overcooked 烹飪遊戲而言,大約需要800 萬步的遊戲經驗,才能訓練一對在Overcooked 狹窄房間佈局(下圖)中收斂到穩定均衡策略的智能體。 Overcooked 的開源實現使用Python 編寫,在8 核AMD CPU 上每秒運行2000 步,因此生成必要的智能體經驗需要花費1 個小時以上。

相比之下,在英偉達A40 GPU 上執行訓練所需的所有其他操作(包括所有800 萬個模擬步驟的策略推理、策略訓練的反向傳播)僅需不到1 分鐘的時間。很顯然,訓練Overcooked 智能體受限於Overcooked 環境模擬器的速度。

考慮到Overcooked 是一個簡單的環境,讓模擬速度難住似乎很愚蠢。因此Sarkar 試著看看Overcooked 環境模擬的速度是否可以提升,這就需要用到Madrona 遊戲引擎。

利用Madrona 遊戲引擎,Sarkar 得到了一個原始Overcooked Python 實現的即插即用的GPU 加速版替代。當並行模擬1000 個Overcooked 環境時,GPU 加速後的實現在A40 GPU 上每秒可以生成350 萬步經驗。

作為結果,模擬800 萬個環境步驟的時間從1 小時縮短至了3 秒,從而可以使用A40 GPU 在短短1 分鐘內訓練一個策略。

該模擬器的速度為在Overcooked 中執行廣泛的超參數掃描打開了新的可能性,尤其是在以往訓練單個策略所需的時間內有了訓練多個策略的可能。

最後,Sarkar 意識到與創建GPU 加速環境的現有替代方案(如PyTorch、Taichi Lang、Direct CUDA C++)相比,將Overcooked 移植到Madrona 的過程更加地順利。

博客詳情:https://bsarkar321.github.io/blog/overcooked_madrona/index.html‌

參考鏈接:https://madrona-engine.github.io/‌

資訊來源:由0x資訊編譯自8BTC。版權歸作者所有,未經許可,不得轉載

Total
0
Shares
Related Posts