上图:在我的笔记本电脑上训练 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
)。