Di atas: hasil di LunarLander-v2 setelah 60 detik pelatihan di laptop saya
CppRl adalah kerangka pembelajaran penguatan, ditulis menggunakan frontend PyTorch C++.
Ini sangat didasarkan pada pytorch-a2c-ppo-acktr-gail yang indah dari Ikostrikov. Anda bahkan dapat menganggap ini sebagai pelabuhan. API dan algoritme yang mendasarinya hampir sama (dengan perubahan yang diperlukan saat berpindah ke C++).
Ini juga berisi implementasi server OpenAI Gym sederhana yang berkomunikasi melalui ZeroMQ untuk menguji kerangka kerja di lingkungan Gym.
CppRl bertujuan untuk menjadi kerangka kerja siap produksi yang dapat diperluas, dioptimalkan secara wajar, untuk menggunakan pembelajaran penguatan dalam proyek di mana Python tidak dapat dijalankan. Ini harus siap digunakan dalam aplikasi desktop di komputer pengguna dengan pengaturan minimal yang diperlukan di sisi pengguna.
Pada saat penulisan, belum ada kerangka pembelajaran penguatan yang digunakan secara umum untuk C++. Saya memerlukannya untuk proyek pribadi, dan frontend PyTorch C++ baru-baru ini dirilis, jadi saya pikir saya harus membuatnya.
Contoh penggunaan server OpenAI Gym yang disertakan disediakan dalam example
. Ini dapat dijalankan sebagai berikut: Terminal 1:
./launch_gym_server.py
Terminal 2:
build/example/gym_server
Dibutuhkan sekitar 60 detik untuk melatih agen hingga 200 hadiah rata-rata di laptop saya (prosesor i7-8550U).
Lingkungan dan hyperparameter dapat diatur di example/gym_client.cpp
.
Catatan: Server dan klien Gym tidak dioptimalkan dengan baik, terutama jika menyangkut lingkungan dengan pengamatan gambar. Ada beberapa salinan tambahan yang diperlukan dengan menggunakan sistem komunikasi antar-proses, lalu gym_client.cpp
memiliki satu atau dua salinan tambahan untuk mengubah observasi menjadi tensor PyTorch. Inilah sebabnya kinerjanya tidak begitu bagus jika dibandingkan dengan perpustakaan Python yang menjalankan lingkungan Gym.
CMake digunakan untuk sistem build. Sebagian besar dependensi disertakan sebagai submodul (jalankan git submodule update --init --recursive
untuk mendapatkannya). Libtorch harus diinstal secara terpisah.
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
Sebelum menjalankan, pastikan untuk menambahkan libtorch/lib
ke variabel lingkungan PATH
Anda.
Performa Windows sekitar 75% dibandingkan Linux saat ini. Saya sedang mencari cara untuk mempercepatnya.
Anda dapat menjalankan pengujian dengan build/cpprl_tests
( build/Release/cpprl_tests.exe
di Windows).