1. 程式人生 > 其它 >OpenAI 開源機器人模擬 Python 庫:優化API介面提升400%處理速度

OpenAI 開源機器人模擬 Python 庫:優化API介面提升400%處理速度

在OpenAI的許多專案中都使用域隨機化技術。 最新版本的mujoco-py支援支援自動的(headless)GPU 渲染,與基於CPU的渲染相比,它的速度有40倍的提升,可以每秒產生數百幀的合成影象資料。

該Python庫是OpenAI團隊深入學習機器人研究的核心工具之一,現在該團隊釋出的是作為MuJoCo的主要版本的mujoco-py(Python 3 的 MuJoCo 繫結)。 Mujoco-py 1.50.1.0帶來了許多新的功能和顯著的效能提升新功能包括以下幾點:

  • 高效處理並行模擬
  • GPU 加速的自動 3D 渲染
  • 直接訪問 MuJoCo 函式和資料結構
  • 支援所有的 MuJoCo 1.50 功能,比如改進的接觸求解器

批量模擬

軌跡(trajectory)優化和強化學習中的許多方法(如LQR,PI2和TRPO)可以從並行執行多個模擬中受益。 mujoco-py通過OpenMP使用資料並行,並通過Cython和NumPy直接訪問記憶體管理,從而使批量模擬更有效率。

新版本的MjSimPool介面的初步使用顯示,速度超過舊版本的 400%,並且在一個已優化和受限的使用模式中(通過 Python 的多處理工具包獲取相同水平的平行計算)仍然大約為舊版本的180%。提速的大部分原因在於MuJoCo各種資料結構的訪問時間縮短。

高效能紋理隨機化

在OpenAI的許多專案中都使用域隨機化技術。 最新版本的mujoco-py支援支援自動的(headless)GPU 渲染,與基於CPU的渲染相比,它的速度有40倍的提升,可以每秒產生數百幀的合成影象資料。 在上述(減速)動畫中,OpenAI使用理隨機化技術來改變一個機器人的紋理,幫助這個機器人辨識其身體(在將其從模擬器轉移至現實時)。 請檢視examples / disco_fetch.py以獲取隨機紋理生成的示例。

採用mujoco-py實現VR

由mujoco-py公開的API足以使虛擬現實互動而無需任何額外的C ++程式碼。 OpenAI使用mujoco-py將MuJoCo的C ++ VR示例移植到Python。 如果您有HTC Vive VR設定,您可以嘗試使用這一示例(此支援被認為是實驗性的,但是OpenAI已經在內部使用它了)。

API和用法

開始使用mujoco-py的最簡單的方式是使用MjSim class。 它是圍繞模擬模型和資料的包裝(wrapper),可讓您輕鬆地進行模擬並從相機感測器中渲染影象。 下面是一個簡單的例子:

from mujoco_py import load_model_from_path, MjSim 
model = load_model_from_path("xmls/tosser.xml")  
sim = MjSim(model) 
sim.step() 
print(sim.data.qpos) 
# => [ -1.074e-05   1.043e-04  -3.923e-05   0.000e+00   0.000e+00]

對於高階使用者,OpenAI 提供了大量的低水平介面以直接訪問 MuJoCo C 結構體和內部函式。