Project Icon

pgx

JAX原生并行游戏模拟器库用于强化学习研究

Pgx是一个基于JAX的游戏模拟器库,专注于离散状态空间的强化学习研究。该库支持多种经典和现代棋牌游戏,包括国际象棋、围棋、将棋等。Pgx利用GPU/TPU实现高效并行计算,提供丰富的游戏环境和SVG可视化功能。其兼容PettingZoo API,方便研究人员进行实验。Pgx的设计旨在为强化学习研究提供高性能、多样化的仿真环境。

python pypi license ci codecov arxiv

用于强化学习(RL)的GPU/TPU加速并行游戏模拟器集合

为什么选择Pgx?

Brax,一个JAX原生的物理引擎,为连续状态空间的RL提供了极高速的并行模拟。那么,对于像国际象棋、将棋和围棋这样的离散状态空间的RL呢?Pgx提供了各种JAX原生的游戏模拟器!主要特点包括:

  • ⚡ 在加速器上进行并行执行时超级快速
  • 🎲 支持多种游戏,包括西洋双陆棋国际象棋将棋围棋
  • 🖼️ SVG格式的精美可视化

快速开始

训练示例

使用方法

Pgx可在PyPI上获取。请注意,您的Python环境需要根据硬件规格安装jaxjaxlib

$ pip install pgx

以下代码片段展示了使用Pgx的简单示例。 您可以在这个Colab中尝试。 请注意,Pgx环境中的所有step函数都是JAX原生的,即它们都是可JIT编译的。 更多详情请参阅文档

import jax
import pgx

env = pgx.make("go_19x19")
init = jax.jit(jax.vmap(env.init))
step = jax.jit(jax.vmap(env.step))

batch_size = 1024 keys = jax.random.split(jax.random.PRNGKey(42), batch_size) state = init(keys) # 向量化状态 while not (state.terminated | state.truncated).all(): action = model(state.current_player, state.observation, state.legal_action_mask) # 对于随机环境使用 step(state, action, keys) state = step(state, action) # state.rewards 形状为 (1024, 2)

Pgx 是一个专注于更快实现而非仅仅关注 API 本身的库。 然而,其 API 本身也足够通用。例如,Pgx 中的所有环境都可以转换为 PettingZoo 的 AEC API,您可以通过 PettingZoo API 运行 Pgx 环境。 您可以在这个 Colab 中查看演示。

📣 API v2 (v2.0.0)

Pgx 已于 2023 年 11 月 8 日从 API v1 更新至 v2(发布版本 v2.0.0)。因此,Env.step 的签名发生了如下变化:

  • v1: step(state: State, action: Array)
  • v2: step(state: State, action: Array, key: Optional[PRNGKey] = None)

此外,pgx.experimental.auto_reset 也改为将 key 指定为第三个参数。

更新目的: 在 API v1 中,即使在具有随机状态转换的环境中,状态转换也是由 state 内部的 _rng_key 决定的确定性转换。这是有意为之,目的是提高可重现性。然而,在这种环境中使用规划算法时,存在底层真实随机性信息可能"泄露"的风险。为了让用户更容易进行正确的实验,Env.step 已更改为显式指定 key。

更新影响: 由于 key 是可选的,在像围棋和国际象棋这样的确定性环境中,仍然可以像 API v1 那样执行 env.step(state, action),所以这些游戏不受影响。截至 v2.0.0只有 2048、双陆棋和 MinAtar 套件受此更改影响。

支持的游戏

双陆棋国际象棋将棋围棋

使用 pgx.available_envs() -> Tuple[EnvId] 可以查看当前可用游戏的列表。给定一个 <EnvId>,您可以通过以下方式创建环境:

>>> env = pgx.make(<EnvId>)
游戏/环境ID可视化版本ChatGPT给出的五字描述
2048
"2048"
v2合并方块创建2048。
动物将棋
"animal_shogi"
v0适合儿童的动物主题将棋。
西洋双陆棋
"backgammon"
v2运气助力移除棋子获胜。
桥牌叫牌
"bridge_bidding"
v1搭档通过叫牌交换信息。
国际象棋
"chess"
v2将死对手国王获胜。
四子棋
"connect_four"
v0连接棋子,四子成线。
加德纳象棋
"gardner_chess"
v05x5变体象棋,无王车易位。
围棋
"go_9x9" "go_19x19"
v0策略性布子占领领地。
六角棋
"hex"
v0连接对面,阻挡对手。
库恩扑克
"kuhn_poker"
v1三张牌的下注和虚张声势游戏。
勒杜克扑克
"leduc_holdem"
v0两种花色,限制牌数的扑克。
MinAtar/阿斯特里克斯
"minatar-asterix"
v1躲避敌人,收集宝藏,生存。
MinAtar/打砖块
"minatar-breakout"
v1球拍,球,砖块,反弹,清除。
MinAtar/过马路
"minatar-freeway"
v1躲避汽车,爬上高速公路。
MinAtar/海底探险
"minatar-seaquest"
v1水下潜艇救援和战斗。
MinAtar/太空侵略者
"minatar-space_invaders"
v1外星人射击游戏,躲避子弹。
黑白棋
"othello"
v0翻转并征服对手的棋子。
将棋
"shogi"
v0日本象棋,可使用被俘棋子。
雀麻将
"sparrow_mahjong"
v1一种简化的、适合儿童的麻将游戏。
井字棋
"tic_tac_toe"
v0连成一行三个即可获胜。
版本控制策略

每个环境都有版本号,当有影响代理性能的变更或与API不向后兼容的变更时,版本号会递增。 如果您想追求完全的可重现性,我们建议您按以下方式检查Pgx和每个环境的版本:

>>> pgx.__version__
'1.0.0'
>>> env.version
'v0'

另请参阅

Pgx旨在通过(经典)棋类游戏套件来补充这些基于JAX的环境

将Pgx与这些基于JAX的算法/实现结合可能是一个有趣的方向:

引用

如果您在工作中使用了Pgx,请引用我们的论文

@inproceedings{koyamada2023pgx,
  title={Pgx: Hardware-Accelerated Parallel Game Simulators for Reinforcement Learning},
  author={Koyamada, Sotetsu and Okano, Shinri and Nishimori, Soichiro and Murata, Yu and Habara, Keigo and Kita, Haruka and Ishii, Shin},
  booktitle={Advances in Neural Information Processing Systems},
  pages={45716--45743},
  volume={36},
  year={2023}
}

许可证

Apache-2.0

项目侧边栏1项目侧边栏2
推荐项目
Project Cover

豆包MarsCode

豆包 MarsCode 是一款革命性的编程助手,通过AI技术提供代码补全、单测生成、代码解释和智能问答等功能,支持100+编程语言,与主流编辑器无缝集成,显著提升开发效率和代码质量。

Project Cover

AI写歌

Suno AI是一个革命性的AI音乐创作平台,能在短短30秒内帮助用户创作出一首完整的歌曲。无论是寻找创作灵感还是需要快速制作音乐,Suno AI都是音乐爱好者和专业人士的理想选择。

Project Cover

白日梦AI

白日梦AI提供专注于AI视频生成的多样化功能,包括文生视频、动态画面和形象生成等,帮助用户快速上手,创造专业级内容。

Project Cover

有言AI

有言平台提供一站式AIGC视频创作解决方案,通过智能技术简化视频制作流程。无论是企业宣传还是个人分享,有言都能帮助用户快速、轻松地制作出专业级别的视频内容。

Project Cover

Kimi

Kimi AI助手提供多语言对话支持,能够阅读和理解用户上传的文件内容,解析网页信息,并结合搜索结果为用户提供详尽的答案。无论是日常咨询还是专业问题,Kimi都能以友好、专业的方式提供帮助。

Project Cover

讯飞绘镜

讯飞绘镜是一个支持从创意到完整视频创作的智能平台,用户可以快速生成视频素材并创作独特的音乐视频和故事。平台提供多样化的主题和精选作品,帮助用户探索创意灵感。

Project Cover

讯飞文书

讯飞文书依托讯飞星火大模型,为文书写作者提供从素材筹备到稿件撰写及审稿的全程支持。通过录音智记和以稿写稿等功能,满足事务性工作的高频需求,帮助撰稿人节省精力,提高效率,优化工作与生活。

Project Cover

阿里绘蛙

绘蛙是阿里巴巴集团推出的革命性AI电商营销平台。利用尖端人工智能技术,为商家提供一键生成商品图和营销文案的服务,显著提升内容创作效率和营销效果。适用于淘宝、天猫等电商平台,让商品第一时间被种草。

Project Cover

AIWritePaper论文写作

AIWritePaper论文写作是一站式AI论文写作辅助工具,简化了选题、文献检索至论文撰写的整个过程。通过简单设定,平台可快速生成高质量论文大纲和全文,配合图表、参考文献等一应俱全,同时提供开题报告和答辩PPT等增值服务,保障数据安全,有效提升写作效率和论文质量。

投诉举报邮箱: service@vectorlightyear.com
@2024 懂AI·鲁ICP备2024100362号-6·鲁公网安备37021002001498号