위: 내 노트북에서 60초 동안 훈련한 후 LunarLander-v2의 결과
CppRl은 PyTorch C++ 프런트엔드를 사용하여 작성된 강화 학습 프레임워크입니다.
이는 Ikostrikov의 훌륭한 pytorch-a2c-ppo-acktr-gail을 기반으로 합니다. 이것을 항구라고 생각할 수도 있습니다. API와 기본 알고리즘은 거의 동일합니다(C++로의 전환과 관련된 필요한 변경 사항 포함).
또한 Gym 환경에서 프레임워크를 테스트하기 위해 ZeroMQ를 통해 통신하는 간단한 OpenAI Gym 서버 구현도 포함되어 있습니다.
CppRl은 Python이 실행 가능하지 않은 프로젝트에서 강화 학습을 사용하기 위한 확장 가능하고 합리적으로 최적화된 프로덕션 지원 프레임워크를 목표로 합니다. 사용자 측에서 필요한 최소한의 설정만으로 사용자 컴퓨터의 데스크톱 응용 프로그램에서 사용할 준비가 되어 있어야 합니다.
이 글을 쓰는 시점에는 C++용 범용 강화 학습 프레임워크가 없습니다. 개인 프로젝트를 위해 하나가 필요했고, 최근 PyTorch C++ 프런트엔드가 출시되었기 때문에 하나 만들어야겠다고 생각했습니다.
포함된 OpenAI Gym 서버를 사용하는 예가 example
에 나와 있습니다. 다음과 같이 실행할 수 있습니다: 터미널 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
)를 사용하여 테스트를 실행할 수 있습니다.