要玩轉這個星際爭霸II開源AI,你只需要i5+GTX1050
DeepMind、OpenAI 和暴雪對於星際爭霸 2 人工智慧的研究仍在進行中,面對複雜的即時戰略遊戲,人們目前還鮮有進展。儘管近期 ofollow,noindex">騰訊 、南大、 伯克利 等均在星際 II 上攻克了全場遊戲,但其訓練規模並不是個體研究者所能 handle 的。最近,來自 University of Tartu 的 Roman Ring 開源了首個星際爭霸 2 的智慧體專案,我們也可以在這個前沿領域裡展開自己的研究了。
Reaver 是一個模組化的深度強化學習框架,可提供比大多數開源解決方案更快的單機並行化能力,支援星際爭霸 2、OpenAI Gym、Atari、MuJoCo 等常見環境,其網路被定義為簡單的 Keras 模型,易於配置和共享設定。在示例中,Reaver 在不到 10 秒鐘內通過了 CartPole-v0 遊戲,在 4 核 CPU 筆記本上每秒取樣率為 5000 左右。
Reaver 可以在 30 分鐘內攻克星際爭霸 2 的 MoveToBeacon 小遊戲,和 DeepMind 得到的結果相當,僅使用了配置 Intel i5-7300HQ CPU (4 核) 和 GTX 1050 GPU 的筆記本,你也可以在 Google Colab 上線上跑跑對比一下。
-
Reaver 的 Google Colab 地址: https://colab.research.google.com/drive/1DvyCUdymqgjk85FB5DrTtAwTFbI494x7
具體來說,Reaver 具備以下特徵:
效能:現有研究的多數強化學習基線通常針對程序之間基於訊息的通訊(如 MPI)進行調整。這對於 DeepMind、OpenAI 等擁有大規模分散式 RL 設定的公司來說是有意義的,但對於只擁有一個計算機/HPC 節點的研究人員或發燒友來說,這似乎是一個很大的瓶頸。因此,Reaver 採用了共享記憶體,與之前基於訊息的並行化的專案相比,速度提升了 2 倍。具體來說,Reaver 通過 lock-free 的方式利用共享記憶體,可以專門針對這種情況優化。這種方法可以在星際爭霸 II 取樣率上速度提升了 2 倍(在一般情況下可以實現 100 倍的加速),其最主要的瓶頸在於 GPU 的輸入/輸出管道。
模組化:許多 RL 基線或多或少都是模組化的,但經常緊緊地與作者使用的模型/環境耦合。以我個人經驗來看,當我只專注於星際爭霸 2 遊戲時,每一次實驗或除錯都是一個令人沮喪的長期過程。而有了 Reaver 之後,我就能夠在一行程式碼中交換環境(即使是從 SC2 到雅達利或 CartPole)。對於模型來說也是如此——任何 Keras 模型都可以,只要它遵守基本 API 契約(inputs = agent obs, outputs = logits + value)。Reaver 的三個核心模組 envs、models、 和 agents 基本上是完全獨立的。這保證了在一個模組上的功能擴充套件可以無縫地連線到其它模組上。
可配置性:現有的智慧體通常具有幾十個不同的配置引數,共享這些引數似乎讓每一個參與其中的人都很頭疼。我最近偶然發現了這個問題的一個有趣的解決方案——gin-config,它支援將任意 Python 可呼叫函式配置為類似 Python 的配置檔案和命令列引數。試驗後發現 gin-config 可以實現僅用一個檔案共享全部訓練流程環境配置。所有的配置都能輕鬆地以.gin 檔案的形式進行分享,包括所有超引數、環境變數和模組定義。
不過時:DL 中充滿變數,即使只有一年曆史的程式碼庫也會過時。我使用即將面世的 TensorFlow 2.0 API 寫 Reaver(大多使用 tf.keras,避開 tf.contrib),希望 Reaver 不會遭此厄運。
Reaver 的用途並不侷限於星際爭霸 II 智慧體的深度強化學習訓練,如果有任何擴充套件的想法歡迎分享給我。我計劃近期新增 VizDoom 環境到這個專案中去。
python -m reaver.run --env MoveToBeacon --agent a2c --envs 4 2> stderr.log
只需通過一行程式碼,Reaver 就可以直接配置一個訓練任務,如上所示。Reaver 的獎勵函式可以很快收斂到大約 25-26RMe(mean episode rewards),這和 DeepMind 在該環境(MoveToBeacon)中得到的結果相當。具體的訓練時間取決於你自己的硬體。以下日誌資料是通過配置了 Intel i5-7300HQ CPU (4 核) 和 GTX 1050 GPU 的筆記本訓練了 30 分鐘得到的。
| T118 | Fr51200 | Ep212 | Up100 | RMe0.14 | RSd0.49 | RMa3.00 | RMi0.00 | Pl0.017 | Vl0.008 | El 0.0225 | Gr3.493 | Fps433 | | T238 | Fr102400 | Ep424 | Up200 | RMe0.92 | RSd0.97 | RMa4.00 | RMi0.00 | Pl-0.196 | Vl0.012 | El 0.0249 | Gr1.791 | Fps430 | | T359 | Fr153600 | Ep640 | Up300 | RMe1.80 | RSd1.30 | RMa6.00 | RMi0.00 | Pl-0.035 | Vl0.041 | El 0.0253 | Gr1.832 | Fps427 | ... | T1578 | Fr665600 | Ep2772 | Up1300 | RMe24.26 | RSd3.19 | RMa29.00 | RMi0.00 | Pl0.050 | Vl1.242 | El 0.0174 | Gr4.814 | Fps421 | | T1695 | Fr716800 | Ep2984 | Up1400 | RMe24.31 | RSd2.55 | RMa30.00 | RMi16.00 | Pl0.005 | Vl0.202 | El 0.0178 | Gr56.385 | Fps422 | | T1812 | Fr768000 | Ep3200 | Up1500 | RMe24.97 | RSd1.89 | RMa31.00 | RMi21.00 | Pl-0.075 | Vl1.385 | El 0.0176 | Gr17.619 | Fps423 |
在 MoveToBeacon 環境上的 RMe 學習曲線。
基準評測分數
其中:
-
Human Expert 是由 DeepMind 從戰網天梯的大師級玩家中收集的資料
-
DeepMind ReDRL 是當前業內最佳結果,出自 DeepMind 2018 年 6 月的論文《 Relational Deep Reinforcement Learning 》
-
DeepMind SC2LE 成績出自 DeepMind 和暴雪 2017 年 8 月的論文《StarCraft II: A New Challenge for Reinforcement Learning》
-
Reaver(A2C)是通過訓練 reaver.agents.A2C 智慧體獲得的結果,其在硬體上儘可能複製 SC2LE 的架構。通過訓練智慧體 --test 模組 100 個迭代,計算總獎勵值,收集結果。表中列出的是平均值、標準差(在括號中),以及最小&最大值(在方括號中)。
訓練細節,注意這些訓練時間都是在配置了 Intel i5-7300HQ CPU (4 核) 和 GTX 1050 GPU 的筆記本上得到的。我並沒有花費太多時間來調超引數,而是先展示其可學習性,但至少在 MoveToBeacon 環境中,我已經顯著地降低了訓練樣本數。
不同環境下的 RMe 學習曲線和標準差。