أعلاه: النتائج على LunarLander-v2 بعد 60 ثانية من التدريب على الكمبيوتر المحمول الخاص بي
CppRl هو إطار عمل للتعلم المعزز، مكتوب باستخدام واجهة PyTorch C++ الأمامية.
إنه يعتمد بشكل كبير على pytorch-a2c-ppo-acktr-gail الرائع من Ikostrikov. يمكنك حتى اعتبار هذا منفذًا. واجهة برمجة التطبيقات (API) والخوارزميات الأساسية متطابقة تقريبًا (مع التغييرات الضرورية المتضمنة في الانتقال إلى C++).
ويحتوي أيضًا على تطبيق خادم OpenAI Gym البسيط الذي يتصل عبر ZeroMQ لاختبار إطار العمل في بيئات الصالة الرياضية.
يهدف CppRl إلى أن يكون إطارًا قابلاً للتوسعة ومُحسّنًا بشكل معقول وجاهزًا للإنتاج لاستخدام التعلم المعزز في المشاريع التي لا تكون فيها Python قابلة للتطبيق. يجب أن يكون جاهزًا للاستخدام في تطبيقات سطح المكتب على أجهزة كمبيوتر المستخدم مع الحد الأدنى من الإعداد المطلوب من جانب المستخدم.
في وقت كتابة هذا التقرير، لا توجد أطر تعلم معززة للاستخدام العام لـ C++. كنت بحاجة إلى واحدة لمشروع شخصي، وقد تم مؤخرًا إصدار واجهة PyTorch C++ الأمامية، لذلك فكرت في إنشاء واحدة.
يتم توفير مثال يستخدم خادم OpenAI Gym المضمن في example
. ويمكن تشغيله على النحو التالي: المحطة 1:
./launch_gym_server.py
المحطة 2:
build/example/gym_server
يستغرق الأمر حوالي 60 ثانية لتدريب الوكيل على 200 مكافأة متوسطة على الكمبيوتر المحمول الخاص بي (معالج i7-8550U).
يمكن تعيين البيئة والمعلمات الفائقة في example/gym_client.cpp
.
ملاحظة: لم يتم تحسين خادم الجيم والعميل بشكل جيد، خاصة عندما يتعلق الأمر بالبيئات التي تحتوي على ملاحظات الصور. هناك عدد قليل من النسخ الإضافية اللازمة لاستخدام نظام اتصال بين العمليات، ومن ثم لدى gym_client.cpp
نسخة إضافية أو نسختين لتحويل الملاحظات إلى موترات PyTorch. هذا هو السبب في أن الأداء ليس جيدًا مقارنةً بمكتبات 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 حوالي 75٪ من أداء Linux في الوقت الحالي. أنا أبحث في كيفية تسريع الأمور.
يمكنك إجراء الاختبارات باستخدام build/cpprl_tests
( build/Release/cpprl_tests.exe
على نظام التشغيل Windows).