上圖:在我的筆記型電腦上訓練 60 秒後 LunarLander-v2 的結果
CppRl 是一個強化學習框架,使用 PyTorch C++ 前端編寫。
它很大程度上是基於 Ikostrikov 精彩的 pytorch-a2c-ppo-acktr-gail。您甚至可以將其視為一個連接埠。 API 和底層演算法幾乎相同(在轉向 C++ 時涉及必要的變更)。
它還包含一個簡單的 OpenAI Gym 伺服器的實現,該伺服器透過 ZeroMQ 進行通訊以在 Gym 環境中測試框架。
CppRl 的目標是成為一個可擴展、合理優化、生產就緒的框架,用於在 Python 不可行的專案中使用強化學習。它應該可以在用戶電腦上的桌面應用程式中使用,而用戶端所需的設定最少。
在撰寫本文時,還沒有一個通用的 C++ 強化學習框架。我的個人專案需要一個,而 PyTorch C++ 前端最近發布了,所以我想我應該製作一個。
example
中提供了使用隨附的 OpenAI Gym 伺服器的範例。它可以如下運作: 終端 1:
./launch_gym_server.py
2 號航廈:
build/example/gym_server
在我的筆記型電腦(i7-8550U 處理器)上將代理程式訓練到 200 平均獎勵大約需要 60 秒。
環境和超參數可以在example/gym_client.cpp
中設定。
注意:Gym 伺服器和客戶端沒有得到很好的最佳化,尤其是在涉及影像觀察的環境時。使用進程間通訊系統需要一些額外的副本,然後gym_client.cpp
有一個或兩個額外的副本來將觀察結果轉換為PyTorch張量。這就是為什麼與運行 Gym 環境的 Python 庫相比效能不佳的原因。
CMake 用於建置系統。大多數依賴項都作為子模組包含在內(運行git submodule update --init --recursive
來取得它們)。 Libtorch 必須單獨安裝。
cd pytorch-cpp-rl
mkdir build && cd build
cmake ..
make -j4
cd pytorch-cpp-rl
mkdir build && cd build
cmake -G "Visual Studio 15 2017 Win64" -DCMAKE_PREFIX_PATH=C:/path/to/libtorch ..
cmake --build . --config Release
在運行之前,請確保將libtorch/lib
新增至PATH
環境變數。
目前 Windows 效能約為 Linux 的 75%。我正在研究如何加快速度。
您可以使用build/cpprl_tests
執行測試(在 Windows 上為build/Release/cpprl_tests.exe
)。