Ci-dessus : résultats sur LunarLander-v2 après 60 secondes d'entraînement sur mon ordinateur portable
CppRl est un framework d'apprentissage par renforcement, écrit à l'aide de l'interface PyTorch C++.
Il est très fortement basé sur le merveilleux pytorch-a2c-ppo-acktr-gail d'Ikostrikov. Vous pourriez même considérer cela comme un port. L'API et les algorithmes sous-jacents sont presque identiques (avec les changements nécessaires impliqués dans le passage au C++).
Il contient également une implémentation d'un simple serveur OpenAI Gym qui communique via ZeroMQ pour tester le framework sur les environnements Gym.
CppRl vise à être un framework extensible, raisonnablement optimisé et prêt pour la production pour utiliser l'apprentissage par renforcement dans des projets où Python n'est pas viable. Il doit être prêt à être utilisé dans les applications de bureau sur les ordinateurs des utilisateurs avec une configuration minimale requise de la part de l'utilisateur.
Au moment de la rédaction de cet article, il n’existe pas de framework d’apprentissage par renforcement à usage général pour le C++. J'en avais besoin pour un projet personnel, et l'interface PyTorch C++ avait récemment été publiée, j'ai donc pensé que je devrais en créer un.
Un exemple qui utilise le serveur OpenAI Gym inclus est fourni dans example
. Il peut être exécuté comme suit : Terminal 1 :
./launch_gym_server.py
Borne 2 :
build/example/gym_server
Il faut environ 60 secondes pour former un agent à une récompense moyenne de 200 sur mon ordinateur portable (processeur i7-8550U).
L'environnement et les hyperparamètres peuvent être définis dans example/gym_client.cpp
.
Remarque : Le serveur et le client Gym ne sont pas très bien optimisés, surtout lorsqu'il s'agit d'environnements avec observations d'images. Il y a quelques copies supplémentaires nécessaires en utilisant un système de communication inter-processus, puis gym_client.cpp
a une ou deux copies supplémentaires pour transformer les observations en tenseurs PyTorch. C'est pourquoi les performances ne sont pas si bonnes par rapport aux bibliothèques Python exécutant des environnements Gym.
CMake est utilisé pour le système de build. La plupart des dépendances sont incluses sous forme de sous-modules (exécutez git submodule update --init --recursive
pour les obtenir). Libtorch doit être installé séparément.
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
Avant d'exécuter, assurez-vous d'ajouter libtorch/lib
à votre variable d'environnement PATH
.
Les performances de Windows représentent actuellement environ 75 % de celles de Linux. Je cherche comment accélérer les choses.
Vous pouvez exécuter les tests avec build/cpprl_tests
( build/Release/cpprl_tests.exe
sous Windows).