[PYTORCH] 近端策略优化(PPO)用于魂斗罗NES
介绍
这是我用于训练代理玩魂斗罗NES的Python源代码。通过使用论文 Proximal Policy Optimization Algorithms 提出的近端策略优化(PPO)算法,可以进行训练。论文。
供您参考,PPO是由OpenAI提出的算法,并用于训练OpenAI Five,这是第一个在电子竞技游戏中击败世界冠军的AI。具体来说,OpenAI Five在2018年8月与一组Dota 2玩家中的排名在99.95百分位的主播和前职业选手展开了比赛。
示例结果
动机
自从发布我的A3C实现 (A3C代码) 和PPO实现 (PPO代码) 用于训练代理玩超级马里奥兄弟以来已经有一段时间了。由于PPO在完成的关卡数上表现优于A3C,因此作为下一步,我想看看前者在另一款著名的NES游戏魂斗罗中的表现。
如何使用我的代码
使用我的代码,你可以:
- 训练模型 通过运行
python train.py
。例如:python train.py --level 1 --lr 1e-4
- 测试已训练的模型 通过运行
python test.py
。例如:python test.py --level 1
Docker
为了方便,我提供了Dockerfile,可以用于运行训练以及测试阶段。
假设docker镜像的名称是ppo。你只想使用第一个GPU。你已经克隆了这个仓库并进入了对应目录。
构建:
sudo docker build --network=host -t ppo .
运行:
docker run --runtime=nvidia -it --rm --volume="$PWD"/../Contra-PPO-pytorch:/Contra-PPO-pytorch --gpus device=0 ppo
然后在docker容器内,你可以简单运行 train.py 或 test.py 脚本,如上所述。
注意:在使用docker时渲染有个bug。因此,当使用docker进行训练或测试时,请在 src/process.py 脚本中进行训练或在 test.py 脚本中进行测试时注释掉 env.render()
行。因此,你将不能再看到窗口弹出进行可视化。但这不是大问题,因为训练过程仍会继续,并且测试过程将以输出mp4文件的形式结束以进行可视化。