上: ラップトップで 60 秒間トレーニングした後の LunarLander-v2 の結果
CppRl は、PyTorch C++ フロントエンドを使用して作成された強化学習フレームワークです。
これは、Ikostrikov の素晴らしい pytorch-a2c-ppo-acktr-gail に大きく基づいています。これを港と考えることもできます。 API と基礎となるアルゴリズムはほぼ同一です (C++ への移行に伴う必要な変更はあります)。
また、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 テンソルに変換するための追加のコピーが 1 つまたは 2 つあります。これが、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
) を使用してテストを実行できます。