English | 简体中文
PARL是一个灵活高效的强化学习框架。
关于PARL
特点
可复现性。我们提供的算法能稳定地复现许多有影响力的强化学习算法的结果。
大规模。能够支持使用数千个CPU和多个GPU进行高性能并行训练。
可重用性。通过定义前向网络,仓库中提供的算法可以直接适用于新任务,训练机制将自动构建。
可扩展性。通过继承框架中的抽象类可以快速构建新算法。
抽象概念
PARL旨在构建一个agent来训练算法执行复杂任务。 PARL引入的用于递归构建agent的主要抽象概念如下:Model
Model
被抽象用于构建前向网络,该网络根据输入状态定义策略网络或评价网络。
Algorithm
Algorithm
描述了更新Model
中参数的机制,通常至少包含一个模型。
Agent
Agent
作为环境和算法之间的数据桥梁,负责与外部环境进行数据I/O,并描述在将数据输入训练过程之前的数据预处理。
并行化
PARL为分布式训练提供了一个简洁的API,允许用户通过简单添加一个装饰器就能将代码转换为并行版本。有关我们并行训练API的更多信息,请访问我们的文档。 这里有一个"Hello World"示例,演示了利用外部计算资源是多么容易。
#============Agent.py=================
@parl.remote_class
class Agent(object):
def say_hello(self):
print("Hello World!")
def sum(self, a, b):
return a+b
parl.connect('localhost:8037')
agent = Agent()
agent.say_hello()
ans = agent.sum(1,5) # 它在远程运行,不消耗任何本地计算资源
使用外部计算资源的两个步骤:
- 首先使用
parl.remote_class
装饰一个类,之后它会被转换为一个可以在其他CPU或机器上运行的新类。 - 在创建对象之前调用
parl.connect
来初始化并行通信。调用这些对象的任何函数不会消耗本地计算资源,因为它们是在其他地方执行的。
安装:
依赖项
- Python 3.6+(分布式训练推荐使用 Python 3.8+)
- paddlepaddle>=2.3.1(可选,如果你只想使用与并行化相关的 API)
pip install parl
快速入门
几个帮助你入门的要点:
对于对强化学习了解不多的初学者,我们还提供了入门课程:(视频 | 代码)
示例
- 快速入门
- DQN
- ES
- DDPG
- A2C
- TD3
- SAC
- QMIX
- MADDPG
- PPO
- CQL
- IMPALA
- NIPS2018:AI for Prosthetics Challenge 获胜方案
- NIPS2019:Learn to Move Challenge 获胜方案
- NIPS2020:Learning to Run a Power Network Challenge 获胜方案