Вверху: результаты на LunarLander-v2 после 60 секунд тренировки на моем ноутбуке.
CppRl — это среда обучения с подкреплением, написанная с использованием интерфейса PyTorch C++.
Он во многом основан на замечательном pytorch-a2c-ppo-actr-gail Икострикова. Можно даже считать это портом. API и базовые алгоритмы практически идентичны (с необходимыми изменениями, связанными с переходом на C++).
Он также содержит реализацию простого сервера OpenAI Gym, который обменивается данными через ZeroMQ для тестирования платформы в средах Gym.
CppRl стремится стать расширяемой, разумно оптимизированной и готовой к использованию средой для использования обучения с подкреплением в проектах, где Python нежизнеспособен. Он должен быть готов к использованию в настольных приложениях на компьютерах пользователей с минимальной настройкой, необходимой со стороны пользователя.
На момент написания статьи для C++ не существовало универсальных сред обучения с подкреплением. Мне нужен был такой для личного проекта, недавно был выпущен интерфейс PyTorch C++, поэтому я решил, что мне следует его создать.
Пример использования включенного в комплект сервера OpenAI Gym приведен в example
. Его можно запустить следующим образом: Терминал 1:
./launch_gym_server.py
Терминал 2:
build/example/gym_server
Обучение агента до 200 среднего вознаграждения на моем ноутбуке (процессор i7-8550U) занимает около 60 секунд.
Среду и гиперпараметры можно установить в example/gym_client.cpp
.
Примечание. Сервер и клиент Gym не очень хорошо оптимизированы, особенно когда речь идет о средах с наблюдением за изображениями. Есть несколько дополнительных копий, необходимых для использования системы межпроцессного взаимодействия, а затем у gym_client.cpp
есть одна или две дополнительные копии, чтобы превратить наблюдения в тензоры PyTorch. Вот почему производительность не так хороша по сравнению с библиотеками Python, работающими в средах Gym.
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 на данный момент составляет около 75% от производительности Linux. Я ищу, как ускорить процесс.
Вы можете запустить тесты с помощью build/cpprl_tests
( build/Release/cpprl_tests.exe
в Windows).