تحذير: لم يعد يتم الحفاظ على هذا المستودع ، يرجى استخدام حديقة حيوانات RL-Baselines3 للحصول على نسخة حديثة ، مدعومة بواسطة baselines3 مستقرة

مجموعة من عوامل التعلم التعزيز المدربين (RL) ، مع فرط الممتلكات المضبوطة ، باستخدام خطوط الأساس المستقرة.
نحن نبحث عن مساهمين لإكمال المجموعة!
أهداف هذا المستودع:
إذا كان الوكيل المدرب موجودًا ، فيمكنك رؤيته في العمل باستخدام:
python enjoy.py --algo algo_name --env env_id
على سبيل المثال ، استمتع بـ A2C على الاختراق خلال 5000 طوابع زمنية:
python enjoy.py --algo a2c --env BreakoutNoFrameskip-v4 --folder trained_agents/ -n 5000
إذا كنت قد قمت بتدريب وكيل بنفسك ، فأنت بحاجة إلى القيام بذلك:
# exp-id 0 corresponds to the last experiment, otherwise, you can specify another ID
python enjoy.py --algo algo_name --env env_id -f logs/ --exp-id 0
لتحميل أفضل نموذج (عند استخدام بيئة التقييم):
python enjoy.py --algo algo_name --env env_id -f logs/ --exp-id 1 --load-best
يتم تعريف المفرطات المفرطة لكل بيئة في hyperparameters/algo_name.yml .
إذا كانت البيئة موجودة في هذا الملف ، فيمكنك تدريب وكيل باستخدام:
python train.py --algo algo_name --env env_id
على سبيل المثال (بدعم من Tensorboard):
python train.py --algo ppo2 --env CartPole-v1 --tensorboard-log /tmp/stable-baselines/
تقييم الوكيل كل 10000 خطوة باستخدام 10 حلقات للتقييم:
python train.py --algo sac --env HalfCheetahBulletEnv-v0 --eval-freq 10000 --eval-episodes 10
احفظ نقطة تفتيش للوكيل كل 100000 خطوة:
python train.py --algo td3 --env HalfCheetahBulletEnv-v0 --save-freq 100000
مواصلة التدريب (هنا ، تحميل وكيل pretrained للاختراق ومواصلة التدريب لمدة 5000 خطوة):
python train.py --algo a2c --env BreakoutNoFrameskip-v4 -i trained_agents/a2c/BreakoutNoFrameskip-v4.pkl -n 5000
ملاحظة: عند تدريب TRPO ، يجب عليك استخدام mpirun لتمكين المعالجة المتعددة:
mpirun -n 16 python train.py --algo trpo --env BreakoutNoFrameskip-v4
نحن نستخدم Optuna لتحسين المقاطع الزائدة.
ملاحظة: لا يتم تنفيذ البحث عن فرطمي في Acer و DQN في الوقت الحالي. عند استخدام DovershalvingPruner ("النصف") ، يجب عليك تحديد- --n-jobs > 1
ميزانية 1000 تجربة بحد أقصى 50000 خطوة:
python train.py --algo ppo2 --env MountainCar-v0 -n 50000 -optimize --n-trials 1000 --n-jobs 2
--sampler tpe --pruner median
يمكنك تحديد في تكوين Hyperparameter واحد أو أكثر من غلاف لاستخدامه حول البيئة:
لفسل واحد:
env_wrapper: gym_minigrid.wrappers.FlatObsWrapper
للعديد ، حدد قائمة:
env_wrapper:
- utils.wrappers.DoneOnSuccessWrapper:
reward_offset: 1.0
- utils.wrappers.TimeFeatureWrapper
لاحظ أنه يمكنك بسهولة تحديد المعلمات أيضًا.
يمكنك تحديد وسيطات الكلمات الرئيسية لتمريرها إلى مُنشئ ENV في سطر الأوامر ، باستخدام- --env-kwargs :
python enjoy.py --algo ppo2 --env MountainCar-v0 --env-kwargs goal_velocity:10
يمكنك بسهولة كتابة فرطاميرامترات في سطر الأوامر ، باستخدام --hyperparams :
python train.py --algo a2c --env MountainCarContinuous-v0 --hyperparams learning_rate:0.001 policy_kwargs:"dict(net_arch=[64, 64])"
سجل 1000 خطوة:
python -m utils.record_video --algo ppo2 --env BipedalWalkerHardcore-v2 -n 1000
يمكن العثور على الدرجات في benchmark.md . لحسابها ، ما عليك سوى تشغيل python -m utils.benchmark .
7 ألعاب Atari من Openai Benchmark (إصدارات Noframeskip-V4).
| RL algo | شعاع | انطلق | إندورو | بونغ | Qbert | Seaquest | SpaceInvaders |
|---|---|---|---|---|---|---|---|
| A2C | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ |
| أيسر | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | |
| Acktr | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ |
| PPO2 | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ |
| DQN | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ |
| trpo |
ألعاب Atari إضافية (ليتم إكمالها):
| RL algo | Mspacman |
|---|---|
| A2C | ✔ |
| أيسر | ✔ |
| Acktr | ✔ |
| PPO2 | ✔ |
| DQN | ✔ |
| RL algo | Cartpole-V1 | MountainCar-V0 | Acrobot-V1 | البندول-V0 | MountainCarcontinuous-V0 |
|---|---|---|---|---|---|
| A2C | ✔ | ✔ | ✔ | ✔ | ✔ |
| أيسر | ✔ | ✔ | ✔ | ن/أ | ن/أ |
| Acktr | ✔ | ✔ | ✔ | ✔ | ✔ |
| PPO2 | ✔ | ✔ | ✔ | ✔ | ✔ |
| DQN | ✔ | ✔ | ✔ | ن/أ | ن/أ |
| DDPG | ن/أ | ن/أ | ن/أ | ✔ | ✔ |
| كيس | ن/أ | ن/أ | ن/أ | ✔ | ✔ |
| TD3 | ن/أ | ن/أ | ن/أ | ✔ | ✔ |
| trpo | ✔ | ✔ | ✔ | ✔ |
| RL algo | Bipedalwalker-V2 | Lunarlander-V2 | LunarlanderContinuous-V2 | bipedalwalkerhardcore-v2 | Carracing-V0 |
|---|---|---|---|---|---|
| A2C | ✔ | ✔ | ✔ | ✔ | |
| أيسر | ن/أ | ✔ | ن/أ | ن/أ | ن/أ |
| Acktr | ✔ | ✔ | ✔ | ✔ | |
| PPO2 | ✔ | ✔ | ✔ | ✔ | |
| DQN | ن/أ | ✔ | ن/أ | ن/أ | ن/أ |
| DDPG | ✔ | ن/أ | ✔ | ||
| كيس | ✔ | ن/أ | ✔ | ✔ | |
| TD3 | ✔ | ن/أ | ✔ | ||
| trpo | ✔ | ✔ | ✔ |
راجع https://github.com/bulletphysics/bullet3/tree/master/pulles/pybullet/gym/pybullet_envs. على غرار Mujoco Envs ولكن مع محاكاة مجانية: Pybullet. نحن نستخدم إصدار BulletEnv-v0 .
ملاحظة: هذه البيئات مستمدة من Roboschool وأصعب بكثير من إصدار Mujoco (انظر مشكلة Pybullet)
| RL algo | Walker2d | Halfchetah | النملة | Reacher | قادوب | الإنسان |
|---|---|---|---|---|---|---|
| A2C | ✔ | ✔ | ✔ | ✔ | ||
| Acktr | ✔ | |||||
| PPO2 | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ |
| DDPG | ✔ | ✔ | ✔ | |||
| كيس | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ |
| TD3 | ✔ | ✔ | ✔ | ✔ | ✔ | |
| trpo | ✔ | ✔ | ✔ | ✔ |
بيبوليت بيئة (تابع)
| RL algo | مينيتور | Minitaurduck | مقلوب | InvertedPendulumswingup |
|---|---|---|---|---|
| A2C | ||||
| Acktr | ||||
| PPO2 | ✔ | ✔ | ✔ | ✔ |
| DDPG | ||||
| كيس | ✔ | ✔ | ||
| TD3 | ✔ | ✔ | ||
| trpo |
راجع https://github.com/maximecb/gym-minigrid تنفيذ بيئات صالة رياضية بسيطة وخفيفة الوزن وسريع للعالم الشهير.
| RL algo | فارغ | أربع غرف | Doorkey | متعددة | أحضر |
|---|---|---|---|---|---|
| A2C | |||||
| PPO2 | ✔ | ✔ | |||
| DDPG | |||||
| كيس | |||||
| trpo |
هناك 19 مجموعة بيئة (اختلافات لكل منها) في المجموع.
لاحظ أنك تحتاج إلى تحديد-GAMIMAGES GAM_MINIGRID مع استمتع .py و Train.py لأنها ليست بيئة صالة رياضية قياسية ، بالإضافة إلى تثبيت وحدة حزمة الصالة الرياضية المخصصة أو وضعها في مسار Python.
pip install gym-minigrid
python train.py --algo ppo2 --env MiniGrid-DoorKey-5x5-v0 --gym-packages gym_minigrid
هذا يفعل نفس الشيء:
import gym_minigridأيضًا ، قد تحتاج إلى تحديد غلاف بيئة صالة الألعاب الرياضية في أجهزة التمييز المفرطة ، حيث أن البيئات Minigrid لديها مساحة مراقبة DICT ، والتي لا تدعمها مستقرة في الوقت الحالي.
MiniGrid-DoorKey-5x5-v0:
env_wrapper: gym_minigrid.wrappers.FlatObsWrapper
يمكنك تدريب الوكلاء عبر الإنترنت باستخدام دفتر كولاب.
إصدار MIN: Baselines مستقر [MPI]> = 2.10.0
apt-get install swig cmake libopenmpi-dev zlib1g-dev ffmpeg
pip install -r requirements.txt
يرجى الاطلاع على خطوط الأساس المستقرة للبدائل.
بناء صورة Docker (وحدة المعالجة المركزية):
./scripts/build_docker.sh
GPU:
USE_GPU=True ./scripts/build_docker.sh
سحب صورة Docker المدمجة (وحدة المعالجة المركزية):
docker pull stablebaselines/rl-baselines-zoo-cpu
صورة GPU:
docker pull stablebaselines/rl-baselines-zoo
قم بتشغيل البرنامج النصي في صورة Docker:
./scripts/run_docker_cpu.sh python train.py --algo ppo2 --env CartPole-v1
لتشغيل الاختبارات ، قم أولاً بتثبيت Pytest ، ثم:
python -m pytest -v tests/
للذكر هذا المستودع في المنشورات:
@misc { rl-zoo ,
author = { Raffin, Antonin } ,
title = { RL Baselines Zoo } ,
year = { 2018 } ,
publisher = { GitHub } ,
journal = { GitHub repository } ,
howpublished = { url{https://github.com/araffin/rl-baselines-zoo} } ,
}إذا قمت بتدريب وكيل غير موجود في حديقة حيوانات RL ، فيرجى إرسال طلب سحب (يحتوي على أجهزة بارامترات والنتيجة أيضًا).
نود أن نشكر مساهمينا: @ @ @ @tatsubori @shade5