© 2026FindAgent  · @simprr
返回列表
f

facebookresearch/Pearl

A Production-ready Reinforcement Learning AI Agent Library brought by the Applied Reinforcement Learning team at Meta.

⭐

3.0k

Stars

🔱

196

Forks

👁

41

Watchers

📋

13

Issues

Jupyter NotebookMIT创建于 2023/4/7更新于 今天
在 GitHub 上查看
README
由 Gemini 翻译整理

alt

Pearl - 面向生产环境的强化学习 AI Agent 库

由 Meta 应用强化学习团队倾情打造

  • v0.1 - Pearl 测试版现已发布!相关公告:Twitter 推文,LinkedIn 帖子
    • 入选 Meta NeurIPS 2023 官方网站亮点项目:官方网站
    • 获 Meta 官方 AI 账号在 Twitter 和 LinkedIn 专题推荐:Twitter 推文,LinkedIn 帖子。

License: MIT codecov

更多关于该库的详情,请访问我们的 官方网站。

Pearl 论文现已 发布在 Arxiv。

我们的 NeurIPS 2023 演示幻灯片可 点击此处获取。

概览

Pearl 是一个由 Meta 应用强化学习团队开源的、面向生产环境的强化学习 AI Agent 库。秉持推动 AI 创新开源的承诺,Pearl 旨在帮助研究人员和从业者开发强化学习 AI Agent。这些 AI Agent 将累积的长期反馈置于即时反馈之上,并能够适应具有有限可观测性、稀疏反馈以及高随机性的环境。我们希望 Pearl 能为社区提供一套工具,用于构建能够适应各种复杂生产环境的先进强化学习 AI Agent。

新闻

2025 年 1 月 22 日 - Pearl 组件序列化

Pearl 组件现在可以像 PyTorch 模块一样生成状态字典(state dict),这些字典可以通过 torch.save 和 torch.load 进行保存和加载!

以下是一个基本示例:

agent = PearlAgent(...)
# 保存 Agent 的状态字典
torch.save(agent.state_dict(), 'agent_state.pth')

agent2 = PearlAgent(...)  # agent2 必须与 agent 具有相同的结构
# 加载 Agent 的状态字典
agent2.load_state_dict(torch.load('agent_state.pth'))

assert agent2.compare(agent) == ""  # `compare` 是一个新引入的方法

请注意,这也适用于子组件,如 PolicyLearner、ExplorationModule 等。

如果你的组件包含非参数、非缓冲区或非子模块的属性,它们将不会被自动包含在状态字典中。在这种情况下,(参照 PyTorch 的做法)请定义 get_extra_state 和 set_extra_state 方法来手动包含这些属性(例如,参见 ActorCriticBase.get_extra_state)。

在定义自己的组件时,你现在必须实现一个 compare 方法,该方法返回一个字符串,列出两个组件之间的差异(例如,参见 PearlAgent.compare)。此方法旨在作为测试目的的通用比较工具。

入门指南

安装

要安装 Pearl,只需克隆此仓库并运行 pip install -e .(需要 pip 版本 ≥ 21.3 且 setuptools 版本 ≥ 64):

git clone https://github.com/facebookresearch/Pearl.git
cd Pearl
pip install -e .

快速开始

为了通过经典的强化学习环境启动一个 Pearl Agent,以下是一个快速示例:

from pearl.pearl_agent import PearlAgent
from pearl.action_representation_modules.one_hot_action_representation_module import (
    OneHotActionTensorRepresentationModule,
)
from pearl.policy_learners.sequential_decision_making.deep_q_learning import (
    DeepQLearning,
)
from pearl.replay_buffers import (
    BasicReplayBuffer,
)
from pearl.utils.instantiations.environments.gym_environment import GymEnvironment

env = GymEnvironment("CartPole-v1")

num_actions = env.action_space.n
agent = PearlAgent(
    policy_learner=DeepQLearning(
        state_dim=env.observation_space.shape[0],
        action_space=env.action_space,
        hidden_dims=[64, 64],
        training_rounds=20,
        action_representation_module=OneHotActionTensorRepresentationModule(
            max_number_actions=num_actions
        ),
    ),
    replay_buffer=BasicReplayBuffer(10_000),
)

observation, action_space = env.reset()
agent.reset(observation, action_space)
done = False
while not done:
贡献者
ryjfndepfv
项目信息
默认分支main
LicenseMIT License
创建时间2023/4/7
最近更新今天
GAI 中文摘要

Pearl 是由 Meta 应用强化学习团队开源的一款生产级强化学习 AI 智能体库。该项目旨在帮助研究人员和开发者构建能够优先考虑长期累计反馈,并适应观测受限、反馈稀疏及高随机性复杂环境的智能体。

提供高度模块化的强化学习组件,支持开发者快速构建和部署符合生产标准的 AI 系统。

具备优秀的模型序列化能力,支持像 PyTorch 模型一样对组件进行保存与加载。

专注于处理复杂的实际生产环境,能够有效应对长期决策任务中的各种挑战。

内置灵活的策略学习器与探索模块,方便用户进行深度定制与性能优化。

适用于需要将强化学习技术落地于复杂业务场景的算法工程师和研究人员,特别适合处理涉及长期规划、推荐系统优化或自动化决策的相关项目。