reaver
Reaver 是一个模块化的深度强化学习框架,最初专为《星际争霸 II》的高难度策略任务设计,同时也全面支持 Atari 游戏和 MuJoCo 物理仿真等经典环境。它旨在解决复杂游戏中智能体训练的挑战,让 AI 能够像人类玩家一样,基于视觉观察和有限的操作选项来学习决策,从而复现并验证前沿的强化学习算法(如 PPO)。
Reaver 的核心优势在于其高度解耦的架构设计。它将智能体、模型和环境分离开来,用户可以根据需要灵活替换各个组件。这种设计既照顾了初学者,也满足了资深专家的需求:编程爱好者只需调整少量超参数即可快速上手训练 AI;而研究人员则能利用其性能优化的代码库,轻松进行自定义算法的实验与验证。
需要注意的是,该项目目前已停止维护,不再提供新的功能开发或技术支持。尽管如此,Reaver 依然适合那些希望研究《星际争霸 II》AI 策略、复现经典强化学习论文结果,或需要模块化框架进行教学演示的开发者与科研人员使用。对于想要深入理解深度强化学习在复杂即时战略游戏中应用的用户来说,Reaver 仍是一份极具参考价值的开源资源。
使用场景
某高校人工智能实验室的研究团队正致力于复现 DeepMind 在《星际争霸 II》中的强化学习成果,并尝试将算法迁移至复杂的即时战略游戏环境中。
没有 reaver 时
- 环境适配繁琐:研究人员需花费数周时间手动编写代码,将游戏原始的视觉特征和动作空间转换为强化学习模型可识别的格式。
- 架构耦合严重:代理逻辑、神经网络模型与游戏环境紧密耦合,一旦需要更换算法(如从 DQN 切换至 PPO),往往需要重构大量底层代码。
- 基线验证困难:缺乏标准化的参考实现,难以确认自研算法的性能下降是源于策略缺陷还是环境交互逻辑的错误。
- 扩展性差:若想将训练好的模型快速测试于 Atari 或 MuJoCo 等其他基准环境,几乎需要重新搭建整套实验框架。
使用 reaver 后
- 开箱即用:reaver 内置了针对《星际争霸 II》的高度模块化接口,团队仅需修改少量配置文件即可启动训练,大幅缩短环境准备周期。
- 模块自由替换:得益于其解耦架构,研究人员可以像搭积木一样独立替换代理、模型或环境组件,轻松在不同算法间进行对比实验。
- 结果可信度高:reaver 提供的 PPO 等算法已通过与论文一致的基准验证,团队可直接以其为标尺,精准定位自身改进点的实际效果。
- 多环境支持:同一套代码库无缝支持 Gym、Atari 及 MuJoCo 环境,便于团队将游戏中学到的策略快速迁移验证到其他物理仿真场景中。
reaver 通过高度模块化设计和标准化的基准实现,让研究人员从繁琐的工程基建中解放出来,专注于核心算法的创新与突破。
运行环境要求
- Linux
- Windows
需要 GPU(日志示例使用 GTX 1050),具体显存和 CUDA 版本未说明
未说明

快速开始
Reaver:模块化深度强化学习框架
项目状态: 已停止维护!
很遗憾,我目前无法继续开发或为该项目提供支持。
简介
Reaver 是一个模块化的深度强化学习框架,专注于各种基于《星际争霸II》的任务。它追随 DeepMind 的脚步,通过模拟人类玩家的操作界面和限制条件来推动该领域的前沿发展。这包括观察与人类玩家相似(尽管不完全相同)的视觉特征,并从与人类玩家类似的可选动作中进行选择。更多细节请参阅论文 《星际争霸II:强化学习的新挑战》。
尽管 Reaver 的开发以研究为导向,但其 API 的设计理念却与《星际争霸II》本身如出一辙——无论你是该领域的初学者还是资深研究人员,都能从中受益。对于业余程序员来说,Reaver 提供了所有必要的工具,只需修改智能体的一小部分(例如超参数)即可训练深度强化学习智能体。而对于经验丰富的研究人员,Reaver 则提供了一个简单但性能优化的模块化代码库:智能体、模型和环境彼此解耦,可以随意互换。
虽然 Reaver 的重点是《星际争霸II》,但它也完全支持其他流行的游戏环境,尤其是 Atari 和 MuJoCo。Reaver 的智能体算法已经过参考结果的验证,例如 PPO 智能体能够达到 近端策略优化算法 的水平。更多详情请参见下文(#but-wait-theres-more)。
安装
PIP 包
安装 Reaver 最简单的方式是通过 PIP 包管理器:
pip install reaver
你还可以通过附加标志安装额外的功能(例如 gym 支持):
pip install reaver[gym,atari,mujoco]
手动安装
如果你计划修改 Reaver 的代码库,可以通过源码安装来保持其模块功能:
$ git clone https://github.com/inoryy/reaver-pysc2
$ pip install -e reaver-pysc2/
使用 -e 标志安装后,Python 将会在指定的文件夹中查找 reaver,而不是在 site-packages 目录中。
Windows
请参阅 wiki 页面,获取在 Windows 上设置 Reaver 的详细说明。
不过,如果可能的话,请考虑使用 Linux OS —— 这主要是出于性能和稳定性方面的考虑。如果你想让智能体在开启完整图形的情况下运行,可以在 Linux 上保存智能体的回放录像,然后在 Windows 上打开。下面列出的视频录制就是通过这种方式完成的。
需求
- PySC2 >= 3.0.0
- 星际争霸II >= 4.1.2(安装说明)
- gin-config >= 0.3.0
- TensorFlow >= 2.0.0
- TensorFlow Probability >= 0.9
可选扩展
如果你想将 Reaver 与其他支持的环境一起使用,还需要安装相应的包:
- gym >= 0.10.0
- atari-py >= 0.1.5
- mujoco-py >= 1.50.0
- roboschool >= 1.0(替代方案)
快速入门
只需四行代码,您就可以在多个并行运行的《星际争霸II》环境中训练一个强化学习智能体!
import reaver as rvr
env = rvr.envs.SC2Env(map_name='MoveToBeacon')
agent = rvr.agents.A2C(env.obs_spec(), env.act_spec(), rvr.models.build_fully_conv, rvr.models.SC2MultiPolicy, n_envs=4)
agent.run(env)
此外,Reaver 提供高度可配置的命令行工具,因此这项任务可以简化为一行短命令!
python -m reaver.run --env MoveToBeacon --agent a2c --n_envs 4 2> stderr.log
使用上述命令,Reaver 将以一组预定义的超参数初始化训练过程,这些超参数是专门为给定环境和智能体优化的。过一段时间后,您将在终端屏幕上看到包含各种有用统计信息的日志。
| T 118 | Fr 51200 | Ep 212 | Up 100 | RMe 0.14 | RSd 0.49 | RMa 3.00 | RMi 0.00 | Pl 0.017 | Vl 0.008 | El 0.0225 | Gr 3.493 | Fps 433 |
| T 238 | Fr 102400 | Ep 424 | Up 200 | RMe 0.92 | RSd 0.97 | RMa 4.00 | RMi 0.00 | Pl -0.196 | Vl 0.012 | El 0.0249 | Gr 1.791 | Fps 430 |
| T 359 | Fr 153600 | Ep 640 | Up 300 | RMe 1.80 | RSd 1.30 | RMa 6.00 | RMi 0.00 | Pl -0.035 | Vl 0.041 | El 0.0253 | Gr 1.832 | Fps 427 |
...
| T 1578 | Fr 665600 | Ep 2772 | Up 1300 | RMe 24.26 | RSd 3.19 | RMa 29.00 | RMi 0.00 | Pl 0.050 | Vl 1.242 | El 0.0174 | Gr 4.814 | Fps 421 |
| T 1695 | Fr 716800 | Ep 2984 | Up 1400 | RMe 24.31 | RSd 2.55 | RMa 30.00 | RMi 16.00 | Pl 0.005 | Vl 0.202 | El 0.0178 | Gr 56.385 | Fps 422 |
| T 1812 | Fr 768000 | Ep 3200 | Up 1500 | RMe 24.97 | RSd 1.89 | RMa 31.00 | RMi 21.00 | Pl -0.075 | Vl 1.385 | El 0.0176 | Gr 17.619 | Fps 423 |
Reaver 应该会迅速收敛到大约 25-26 的 RMe(每集平均奖励),这与 DeepMind 在该环境下的结果一致。具体的训练时间取决于您的硬件。以上日志是在一台配备 Intel i5-7300HQ CPU(4 核)和 GTX 1050 GPU 的笔记本电脑上生成的,训练耗时约 30 分钟。
当 Reaver 完成训练后,您可以通过在单行命令中添加 --test 和 --render 标志来查看其表现。
python -m reaver.run --env MoveToBeacon --agent a2c --test --render 2> stderr.log
Google Colab
我们提供了一个配套的 Google Colab 笔记本,您可以在网上试用 Reaver。
核心特性
性能
许多现代强化学习算法依赖于同时在多个环境中并行执行。由于 Python 具有 GIL,这一功能必须通过多进程实现。大多数开源实现采用基于消息的方法(例如 Python 的 multiprocessing.Pipe 或 MPI),其中各个进程通过 IPC 发送数据进行通信。对于像 DeepMind 和 OpenAI 这样的公司在大规模分布式系统上开展的工作来说,这是一种合理且可能是唯一可行的方式。
然而,对于一般的科研人员或爱好者来说,更常见的情况是只能访问单机环境,无论是笔记本电脑还是 HPC 集群上的节点。Reaver 专门针对这种情况进行了优化,通过无锁方式利用共享内存。这种方法显著提升了性能,使《星际争霸II》的采样率最高可提升 1.5 倍(在一般情况下甚至可提升至 100 倍),几乎完全消除了 GPU 输入/输出管道的瓶颈。
扩展性
Reaver 的三个核心模块——envs、models 和 agents——几乎完全相互独立。这确保了在一个模块中扩展功能时,能够无缝地集成到其他模块中。
可配置性
所有配置都通过 gin-config 处理,并且可以轻松地以 .gin 文件的形式共享。这包括所有的超参数、环境参数以及模型定义。
已实现的智能体
- 优势演员-评论家(A2C)
- 局部策略优化(PPO)
其他强化学习特性
- 广义优势估计(GAE)
- 奖励裁剪
- 梯度范数裁剪
- 优势归一化
- 基线(评论家)自举
- 独立的基线网络
还不止这些!
在尝试新想法时,快速获得反馈非常重要,而这一点在像《星际争霸II》这样复杂的环境中往往难以实现。由于 Reaver 采用了模块化架构,其智能体实现实际上并不局限于《星际争霸II》。您可以直接替换为许多流行的游戏环境(例如 openAI gym),并先验证实现是否有效:
python -m reaver.run --env CartPole-v0 --agent a2c 2> stderr.log
import reaver as rvr
env = rvr.envs.GymEnv('CartPole-v0')
agent = rvr.agents.A2C(env.obs_spec(), env.act_spec())
agent.run(env)
支持的环境
目前 Reaver 支持以下环境:
- 《星际争霸II》通过 PySC2(已在所有小游戏上测试)
- openAI Gym(已在
CartPole-v0上测试) - Atari(已在
PongNoFrameskip-v0上测试) - Mujoco(已在
InvertedPendulum-v2和HalfCheetah-v2上测试)
结果
| 地图 | Reaver (A2C) | DeepMind SC2LE | DeepMind ReDRL | 人类专家 |
|---|---|---|---|---|
| 前往信标 | 26.3 (1.8) [21, 31] |
26 | 27 | 28 |
| 收集矿物碎片 | 102.8 (10.8) [81, 135] |
103 | 196 | 177 |
| 击败蟑螂 | 72.5 (43.5) [21, 283] |
100 | 303 | 215 |
| 找到并击败泽格幼虫 | 22.1 (3.6) [12, 40] |
45 | 62 | 61 |
| 击败泽格幼虫和狂暴者 | 56.8 (20.8) [21, 154] |
62 | 736 | 727 |
| 收集矿物和气体 | 2267.5 (488.8) [0, 3320] |
3,978 | 5,055 | 7,566 |
| 建造陆战队员 | -- | 3 | 123 | 133 |
人类专家的结果由DeepMind从一位大师级玩家那里收集而来。DeepMind ReDRL指的是当前最先进的结果,详见论文《关系型深度强化学习》(https://arxiv.org/abs/1806.01830)。DeepMind SC2LE是发表在论文《星际争霸II:强化学习的新挑战》(https://arxiv.org/abs/1708.04782)中的结果。Reaver (A2C)是在现有硬件上尽可能复现SC2LE架构,训练reaver.agents.A2C智能体所得到的结果。 结果通过让训练好的智能体以--test模式运行100个episode,并计算每个episode的总奖励来获得。列出的是平均值、标准差(括号内)以及最小值和最大值(方括号内)。
训练详情
| 地图 | 样本数 | episode数 | 大约时间(小时) |
|---|---|---|---|
| 前往信标 | 563,200 | 2,304 | 0.5 |
| 收集矿物碎片 | 74,752,000 | 311,426 | 50 |
| 击败蟑螂 | 172,800,000 | 1,609,211 | 150 |
| 找到并击败泽格幼虫 | 29,760,000 | 89,654 | 20 |
| 击败泽格幼虫和狂暴者 | 10,496,000 | 273,463 | 15 |
| 收集矿物和气体 | 16,864,000 | 20,544 | 10 |
| 建造陆战队员 | - | - | - |
样本数指在一个环境中observe -> step -> reward链条的总数。episode数指PySC2返回的StepType.LAST标志的总数。大约时间是在配备Intel i5-7300HQ四核CPU和GTX 1050显卡的笔记本电脑上的大致训练时间。
需要注意的是,我没有花太多时间进行超参数调优,而是主要关注验证智能体是否能够学习,而不是最大化样本效率。例如,在MoveToBeacon任务上,最初的尝试大约需要400万个样本,但经过一些调整后,我最终使用PPO智能体将所需样本数减少到10.2万个左右(约40倍的减少)。
视频记录
智能体在所有六个小游戏上表现的视频录制已在线发布:https://youtu.be/gEyBzcPU5-w。视频左侧显示的是智能体在随机初始化权重且未经过训练时的表现,而右侧则是经过训练达到目标分数后的表现。
可重复性
近年来,研究的可重复性问题已成为科学界广泛讨论的话题,总体而言,强化学习也不例外,如这篇论文所述。作为一项科学项目,Reaver的目标之一就是促进可重复性研究。为此,Reaver附带了多种简化流程的工具:
- 所有实验都会保存到独立的文件夹中,默认启用自动模型检查点功能。
- 所有配置都通过Python库gin-config管理,并保存到实验结果目录中。
- 在训练过程中,各种统计指标会被复制到实验结果目录中。
- 结果目录的结构便于分享包含完整信息的单个实验。
预训练权重与摘要日志
为推动可重复性研究,Reaver附带了所有六个小游戏的预训练权重和完整的TensorBoard摘要日志。只需从release页面下载实验存档,并解压到results/目录即可。
你可以通过在reaver.run命令中添加--experiment标志来使用预训练权重:
python reaver.run --map <map_name> --experiment <map_name>_reaver --test 2> stderr.log
TensorBoard日志可以通过运行tensorboard --logdir=results/summaries查看。你也可以通过Aughie Boards直接在线查看这些日志:https://boards.aughie.org/board/HWi4xmuvuOSuw09QBfyDD-oNF1U。
为什么叫“Reaver”?
Reaver是星际争霸游戏宇宙中一种非常特别且颇具萌感的星灵单位。在《星际争霸:母巢之战》版本中,Reaver因行动迟缓、笨拙,且由于游戏内AI存在诸多漏洞,单独使用时往往几乎毫无用处而闻名。然而,对于那些愿意投入时间掌握该单位的资深玩家来说,Reaver却成为了游戏中最强大的资产之一,常常在锦标赛冠军比赛中发挥关键作用。
致谢
Reaver的前身名为pysc2-rl-agent,它是塔尔图大学一篇学士论文的实践部分,由Ilya Kuzovkin和Tambet Matiisen指导完成。你仍然可以在v1.0分支中找到它。
支持
如果你遇到与代码库相关的问题,请在GitHub上提交一个issue,并尽可能详细地描述问题。如果你有更一般性的疑问或只是想寻求建议,欢迎随时给我发送电子邮件。
我也是活跃友好的SC2AI在线社区的一员,我们主要使用Discord进行交流。欢迎来自不同背景和具有不同专业水平的人加入!
引用
如果您在研究中使用了 Reaver,请考虑使用以下 BibTeX 格式对其进行引用:
@misc{reaver,
author = {Ring, Roman},
title = {Reaver:模块化的深度强化学习框架},
year = {2018},
publisher = {GitHub},
journal = {GitHub 代码库},
howpublished = {\url{https://github.com/inoryy/reaver}},
}
版本历史
v2.0.02018/11/25v1.0.02018/11/20常见问题
相似工具推荐
openclaw
OpenClaw 是一款专为个人打造的本地化 AI 助手,旨在让你在自己的设备上拥有完全可控的智能伙伴。它打破了传统 AI 助手局限于特定网页或应用的束缚,能够直接接入你日常使用的各类通讯渠道,包括微信、WhatsApp、Telegram、Discord、iMessage 等数十种平台。无论你在哪个聊天软件中发送消息,OpenClaw 都能即时响应,甚至支持在 macOS、iOS 和 Android 设备上进行语音交互,并提供实时的画布渲染功能供你操控。 这款工具主要解决了用户对数据隐私、响应速度以及“始终在线”体验的需求。通过将 AI 部署在本地,用户无需依赖云端服务即可享受快速、私密的智能辅助,真正实现了“你的数据,你做主”。其独特的技术亮点在于强大的网关架构,将控制平面与核心助手分离,确保跨平台通信的流畅性与扩展性。 OpenClaw 非常适合希望构建个性化工作流的技术爱好者、开发者,以及注重隐私保护且不愿被单一生态绑定的普通用户。只要具备基础的终端操作能力(支持 macOS、Linux 及 Windows WSL2),即可通过简单的命令行引导完成部署。如果你渴望拥有一个懂你
stable-diffusion-webui
stable-diffusion-webui 是一个基于 Gradio 构建的网页版操作界面,旨在让用户能够轻松地在本地运行和使用强大的 Stable Diffusion 图像生成模型。它解决了原始模型依赖命令行、操作门槛高且功能分散的痛点,将复杂的 AI 绘图流程整合进一个直观易用的图形化平台。 无论是希望快速上手的普通创作者、需要精细控制画面细节的设计师,还是想要深入探索模型潜力的开发者与研究人员,都能从中获益。其核心亮点在于极高的功能丰富度:不仅支持文生图、图生图、局部重绘(Inpainting)和外绘(Outpainting)等基础模式,还独创了注意力机制调整、提示词矩阵、负向提示词以及“高清修复”等高级功能。此外,它内置了 GFPGAN 和 CodeFormer 等人脸修复工具,支持多种神经网络放大算法,并允许用户通过插件系统无限扩展能力。即使是显存有限的设备,stable-diffusion-webui 也提供了相应的优化选项,让高质量的 AI 艺术创作变得触手可及。
everything-claude-code
everything-claude-code 是一套专为 AI 编程助手(如 Claude Code、Codex、Cursor 等)打造的高性能优化系统。它不仅仅是一组配置文件,而是一个经过长期实战打磨的完整框架,旨在解决 AI 代理在实际开发中面临的效率低下、记忆丢失、安全隐患及缺乏持续学习能力等核心痛点。 通过引入技能模块化、直觉增强、记忆持久化机制以及内置的安全扫描功能,everything-claude-code 能显著提升 AI 在复杂任务中的表现,帮助开发者构建更稳定、更智能的生产级 AI 代理。其独特的“研究优先”开发理念和针对 Token 消耗的优化策略,使得模型响应更快、成本更低,同时有效防御潜在的攻击向量。 这套工具特别适合软件开发者、AI 研究人员以及希望深度定制 AI 工作流的技术团队使用。无论您是在构建大型代码库,还是需要 AI 协助进行安全审计与自动化测试,everything-claude-code 都能提供强大的底层支持。作为一个曾荣获 Anthropic 黑客大奖的开源项目,它融合了多语言支持与丰富的实战钩子(hooks),让 AI 真正成长为懂上
ComfyUI
ComfyUI 是一款功能强大且高度模块化的视觉 AI 引擎,专为设计和执行复杂的 Stable Diffusion 图像生成流程而打造。它摒弃了传统的代码编写模式,采用直观的节点式流程图界面,让用户通过连接不同的功能模块即可构建个性化的生成管线。 这一设计巧妙解决了高级 AI 绘图工作流配置复杂、灵活性不足的痛点。用户无需具备编程背景,也能自由组合模型、调整参数并实时预览效果,轻松实现从基础文生图到多步骤高清修复等各类复杂任务。ComfyUI 拥有极佳的兼容性,不仅支持 Windows、macOS 和 Linux 全平台,还广泛适配 NVIDIA、AMD、Intel 及苹果 Silicon 等多种硬件架构,并率先支持 SDXL、Flux、SD3 等前沿模型。 无论是希望深入探索算法潜力的研究人员和开发者,还是追求极致创作自由度的设计师与资深 AI 绘画爱好者,ComfyUI 都能提供强大的支持。其独特的模块化架构允许社区不断扩展新功能,使其成为当前最灵活、生态最丰富的开源扩散模型工具之一,帮助用户将创意高效转化为现实。
markitdown
MarkItDown 是一款由微软 AutoGen 团队打造的轻量级 Python 工具,专为将各类文件高效转换为 Markdown 格式而设计。它支持 PDF、Word、Excel、PPT、图片(含 OCR)、音频(含语音转录)、HTML 乃至 YouTube 链接等多种格式的解析,能够精准提取文档中的标题、列表、表格和链接等关键结构信息。 在人工智能应用日益普及的今天,大语言模型(LLM)虽擅长处理文本,却难以直接读取复杂的二进制办公文档。MarkItDown 恰好解决了这一痛点,它将非结构化或半结构化的文件转化为模型“原生理解”且 Token 效率极高的 Markdown 格式,成为连接本地文件与 AI 分析 pipeline 的理想桥梁。此外,它还提供了 MCP(模型上下文协议)服务器,可无缝集成到 Claude Desktop 等 LLM 应用中。 这款工具特别适合开发者、数据科学家及 AI 研究人员使用,尤其是那些需要构建文档检索增强生成(RAG)系统、进行批量文本分析或希望让 AI 助手直接“阅读”本地文件的用户。虽然生成的内容也具备一定可读性,但其核心优势在于为机器
LLMs-from-scratch
LLMs-from-scratch 是一个基于 PyTorch 的开源教育项目,旨在引导用户从零开始一步步构建一个类似 ChatGPT 的大型语言模型(LLM)。它不仅是同名技术著作的官方代码库,更提供了一套完整的实践方案,涵盖模型开发、预训练及微调的全过程。 该项目主要解决了大模型领域“黑盒化”的学习痛点。许多开发者虽能调用现成模型,却难以深入理解其内部架构与训练机制。通过亲手编写每一行核心代码,用户能够透彻掌握 Transformer 架构、注意力机制等关键原理,从而真正理解大模型是如何“思考”的。此外,项目还包含了加载大型预训练权重进行微调的代码,帮助用户将理论知识延伸至实际应用。 LLMs-from-scratch 特别适合希望深入底层原理的 AI 开发者、研究人员以及计算机专业的学生。对于不满足于仅使用 API,而是渴望探究模型构建细节的技术人员而言,这是极佳的学习资源。其独特的技术亮点在于“循序渐进”的教学设计:将复杂的系统工程拆解为清晰的步骤,配合详细的图表与示例,让构建一个虽小但功能完备的大模型变得触手可及。无论你是想夯实理论基础,还是为未来研发更大规模的模型做准备












