模块化深度强化学习框架。专注于星际争霸2。支持健身房,阿塔里和mujoco。匹配引用结果。

reaver的Python项目详细描述


#Reaver:模块化深度强化学习框架

[![移动到beacon](https://user images.githubusercontent.com/195271/48730921-66b6fe00-ec44-11e8-9954-9f4891f9672.gif)(https://youtu.be/geybzcpu5-w)
[![收集矿物碎片](https://user images.githubusercontent.com/195271/48730941-70d8fc80-ec44-11e8-95ae-acff6f5a9add.gif)(https://youtu.be/geybzcpu5-w)
[![蟑螂](https://user images.githubusercontent.com/195271/48730950-78000a80-ec44-11e8-83a2-2f2bb0bf59ab.gif)(https://youtu.be/geybzcpu5-w)
[![失败的沙盘](https://user images.githubusercontent.com/195271/48731288-5fdcbb00-ec45-11e8-8826-4d5683d2c337.gif)(https://youtu.be/geybzcpu5-w)
[![查找和失败向导](https://user images.githubusercontent.com/195271/48731379-93b7e080-ec45-11e8-9375-38016ea9c9a8.gif)(https://youtu.be/geybzcpu5-w)
[![采集矿物和气体](https://user images.githubusercontent.com/195271/48730970-86e6bd00-ec44-11e8-8e8c-0181e44b351c.gif)(https://youtu.be/geybzcpu5-w)
[![建筑群](https://user images.githubusercontent.com/195271/48730972-89491700-ec44-11e8-8842-4a6b76f08563.gif)(https://youtu.be/geybzcpu5-w)

[![MoveToBeacon](https://user images.githubusercontent.com/195271/37241507-0d7418c2-2463-11e8-936c-18d08a81d2eb.gif)(https://youtu.be/geybzcpu5-w)
[![采集矿物碎片](https://user images.githubusercontent.com/195271/37241785-b8bd0b04-2467-11e8-9ff3-e4335a7c20ee.gif)(https://youtu.be/geybzcpu5-w)
[![蟑螂](https://user images.githubusercontent.com/195271/37241527-32a43ffa-2463-11e8-8e69-c39a8532c4ce.gif)(https://youtu.be/geybzcpu5-w)
[![失败的沙盘](https://user images.githubusercontent.com/195271/37241531-39f186e6-2463-11e8-8aac-79471a545cce.gif)(https://youtu.be/geybzcpu5-w)
[![查找和失败向导](https://user images.githubusercontent.com/195271/37241532-3f81fbd6-2463-11e8-8892-907b6acebd04.gif)(https://youtu.be/geybzcpu5-w)
[![采集矿物和气体](https://user images.githubusercontent.com/195271/37241521-29594b48-2463-11e8-8b43-04ad0af6ff3e.gif)(https://youtu.be/geybzcpu5-w)
[![构建海军](https://user images.githubusercontent.com/195271/37241515-1a2a5c8e-2463-11e8-8ac4-588d7826e374.gif)(https://youtu.be/geybzcpu5-w)



在DeepMind的足迹中,他们正在通过玩一款具有人性化界面和局限性的现代电子游戏的镜头,推动这一领域的最新技术。
这包括观察与人类玩家感知相似(尽管不完全相同)的视觉特征,并从人类玩家拥有的相似选项库中选择动作。
请参见[星际争霸2:强化学习的新挑战](https://arxiv.org/abs/1708.04782)文章更多细节。

虽然开发是研究驱动的,但Reaver API背后的理念类似于星际争霸II游戏本身-
它可以为新手和该领域的专家提供一些东西。对于业余程序员,Reaver提供了培训DRL代理所需的所有工具,只需修改代理的一小部分和独立的部分(例如超参数)。
对于资深研究人员,Reaver提供了简单但性能优化的代码库和模块化架构:
代理,模型,而且环境是分离的,可以随意交换。


根据参考结果验证reaver代理算法,例如ppo代理能够匹配[
最接近的策略优化算法](https://arxiv.org/abs/1707.06347)。有关详细信息,请参见[下面](但请稍候)了解更多信息。


*tensorflow>;=1.10
*tensorflow probability>;=0.4
*starcraft ii>;=4.1.2([说明](https://github.com/blizzard/s2client proto downloads))
*pysc2>;2.0.1

**nb!**自2018年11月25日起,您必须安装**pysc2**[从源代码](https://github.com/deepmind/pysc2 git),因为pip版本已过时:

`````
pip安装--升级https://github.com/deepmind/pysc2/archive/master.zip
````

其他受支持的环境中,也必须安装相关的软件包:

*gym>;=0.10.0
*atari py>;=0.1.5
*mujoco py>;=1.50.0
*roboschool>;=1.0(可选)


GER:

pip安装reaver

**nb!**PYSC2 PIP版本已过时,因此您需要按照上述说明从源代码安装它。

**nb!**reaver只将"tensorflow"指定为软依赖项,默认情况下不会安装它。这是为了避免"tensorflow"覆盖"tensorflow gpu",反之亦然。通过使用"pip install"命令指定
"tf cpu"或"tf gpu"标志,可以将"tensorflow"与reaver一起安装:

pip install reaver[tf gpu]

Tari,mujoco]

手动安装

h`-e`flag`python`现在将在指定的文件夹中查找'reaver',而不是'site packages`存储。


默认情况下禁用计时标志。例如,如果您的CPU支持"avx2"(比5年新),
强烈建议改用自定义的tensorflow。如果从源代码构建不是您的选择,
那么[这个存储库](https://github.com/inoryy/tensorflow-optimized-wheels)可能很有用-它包含最新的"tensorflow"
为最新的cuda/cudnn版本构建的版本,即使是较旧的gpu,这些版本通常也会带来性能提升。

Windows

希望看到代理在启用完整图形的情况下执行,您可以在Linux上保存代理的重播并在Windows上打开它。
下面列出的视频录制就是这样制作的。



宁并行只有四行代码!


高一氧化碳可配置的命令行工具,所以这项任务可以简化为一个简短的一行!

`` bash
python-m reaver.run--env movetobecon--agent a2c--n_envs 4 2>;strderr.log
```


一段时间后,您将开始在终端屏幕中看到包含各种有用统计信息的日志。


t 118 fr 51200 ep 212 up 100 r我0.14-124;RSD 0.49-124;RSD 0.49;RSD 0.49-124;RM3.00-124;RMI 0 0.00-124;PL0 017 124;VL 0 0.008-124;0 0225 124;GR3 493 1241;FPS 433 124;
1241;T 238创新1244;FR 102400 1244;EP424最新200创新创新;我0.92;1240 0 0 0 0 0.12400;1240 0 0 0 0 0 0.12400;12400多多多多多多多至1240 0 0 0 0 0 0 0 0 0 0 0 0 0.12400,12400;1240 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.12400多多多多多多第1244条;第1242条;第02049条;第1791条;第1244条;第43条124;
124;
124;1246 6<1246 6 6 6 6<1246 6 6 6 6 6 6>1>;RM6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 RSD 3.19.;124RMA 29.00.&1240;RM 24.26°;RSD 3.19°;124RMA 29.00°;124;PL0 0 0 0 0 0 0 0.00--124;PL0 0 0 050 0 0 0 0 0 0 0 0 0 0 242 124;0 0 0174-124;0 0 0 0174-124;GR4 814 124;FPS 421 124;
124;
124;T 1812′124;FR 76800′124;24.97<>RSD 1.89′124;124RMA 31.00′1241;RM21.00′12412;PL-0 075 124;V1 1 385 124;0 0176 124;GR17 619 124;FPS 423 124;
<>>>>>Reaver should Quickly Convery Convering about 25-26 ` ResResResResResResResResResResRestres,25-26 ` ResResResResResResResResResResResResults,包括25-26'ResResResResResResResResResResResResResResResResResResResResults,包括包括包括25-26,以期,并对我而言而言而言而言,这一点25-26 `重重重重重Environment.
SpecifIC training time depends on your hardware.Logs above are produced on a laptop with intel I5-730HQ CPU(4 cores)
and GTX 1050 GPU,the training took around 30 minutes.

after reaver has finished training,you can look at how it performs by appending `-'test'and `-render ` flags to the one-line'>2>GT;STDER.log
35;;Google Colab

a Companion[Google Colab Notebook](https://colab.research.googe.com/drive/DvcudyMQB85F5BBBBB8555BBBBBBBBBB5555BBBBBBBTTT555555BBBBTTTTTTT55555555BBBBBBBBBB55555BBBBBBB55BBTo try out reaver online.
35;>key FEATURES
35;>35;>Performance


BR/>many modern drl algorithms rely on being executed in multiple environments at the same time in parallel.
As Python has[Gil](https://wiki.python.org/moin/globalinterpreterck),this feature must be implemented through multiprocessing.
Open Source Implementations Solve this Task with Message-Based Approach(E.G.Python ` Multiprocessing.Pipe ` or ` MPI',
Where individual processes communicate by sending data through[IPC](https://en.wikipedia.or g/wiki/inter-process=-communication)
This is a valid and most lIkely only reasonable approach for large-scale distributed approaches that companies like deepmind and openai operate on.
However,for a typical researcher or hobbeist a much more common scenario is having access only to a
single machine environment,whether it is a laptop or a node on a hpc cluster.Reaver is optimized specifically
for this case by making use of shared memory in a lock-free manner.这一办法的意义在于业绩
Boost of Up to**,1.5x speed-up**,in Starcraft II sampling rate(and up to 100x speed up in general case)
being bottle-necked almost exclusively by GPU input/output pipeline.
35;>扩展性问题
3<35>.` Models'and ` agents'are almost completely detached from each other.
this ensures that extending functionality in one module is seamletsy integrated into the others.

35;>35;>configurability
BR all configration is handled through[gin config](https://git-config.com/google/config-而且可以轻松地分享作为"Gin'files。
This includes all hyperparameters,Environment Arguments,and Model Definitions.


35;>35;;执行机构
>>advantage演员-批评(A2C)
下一次政策优化(PPO)>35;>3535,并<<<35>>在这方面,在这一方面,并在这一方面,应采取更多的具体的具体行动,并在<<<<35>>>>>>>>>>>>35>>35个具体到到到到到到目前为止为止为止为止,并在这一个关键性政策性政策性性的<<<<<<<35>ED advantage estimation(GAE)
rewardsClipping
gradient norm clipping
advantage norm standalization
baseline(critic)bootstrapping
separate baseline network
35;>35;;but wait!还有更多的!当新的ID实验的时候。e as快速获得反馈是很重要的,对于像星际争霸2这样的复杂环境来说,这通常是不现实的。
因为reaver是用模块化架构构建的,所以它的代理实现实际上根本不与星际争霸2绑定。
您可以直接替换许多流行的游戏环境(例如"openai gym")并验证imp实现方法首先与这些对象一起工作:


``bash
python-m reaver.run--env cartpolepole-v0--agent a2c 2>;stderr.log
```

``python
```python
import reaver-reaver as rvr


env=rvr.envs.envs.gymenv('cartpole-v0')
agent=rvr.agents.a2c(env.obs\u spec(),env.obs.obs\u spec(),env.act\u spec())

agent.run env)
```


目前Reaver支持以下环境:

*Starcraft II Via PYSC2(在所有小游戏上测试)
*OpenAI Gym(在"Cartpole-v0"上测试)
*Atari(在"PongnoFrameSkip-v0"上测试)
*Mujoco(在"InvertedPendulum-v2"和"Halfcheetah-v2"上测试)

|Reaver(A2C)DeepMind SC2le DeepMind Redrl人类专家
:移动到beacon 26.3(1.8)<;br>;[21,31]26 27 28
收集矿物碎片102.8(10.8)<;br>;[81,135]103 196 196 177
蜚蠊72.5(43.5)<;br>;[21,283]100 303 303 215br/>征服者〈12,40;br>;[12,40][12,40]林斯| 56.8(20.8)<;br>;[21154]62 736 727
矿藏和天然气2267.5(488.8)<;br>;[0,3320]3978 5055 7566
建筑--3 123 133

*`人类专家`DeepMind从一个大师级玩家那里收集了结果。
*`DeepMind Redrl`指的是目前最先进的结果,在[关系深度强化学习](https://arxiv.org/abs/1806.01830)文章中有描述。
*`DeepMind SC2le`是在[星际争霸II:强化学习的新挑战](https://arx)中发布的结果iv.org/abs/1708.04782)文章。
*`reaver(a2c)`是通过训练"reaver.agents.a2c"代理,尽可能在可用硬件上复制"sc2le"体系结构而收集的结果。
通过以`--test`模式对"100"集运行训练的代理,计算集总回报来收集结果。
列出的是平均值,st标准偏差(括号内)和最小值和最大值(方括号内)。


04 0.5
矿物碎片收藏品74752000 311426 50
失败蟑螂17280000 1609211 150
雀科昆虫29760000 89654 20
失败沙盘10496000 273463 15
矿藏和天然气16864000 20544 10
建筑工人----

*`样品'指的是在*一个*环境中观察->;步骤->;奖励链的总数。
*`事件'指的是总数量pysc2返回的'steptype.last'标记的er。
*`approx.time'是在Intel'I5-7300HQ'CPU(4核)和'GTX'Laptop'上的大约训练时间1050`gpu.


请注意,我没有花太多时间进行超参数调整,主要集中在验证代理是否能够学习
,而不是最大化样本效率。例如,NaiveFirst Try on'MoveToBeacon'需要大约400万个样本,
不过,在玩了一段时间之后,我可以用PPO试剂将其一直减少到102000个(大约减少40倍)。

[![(https://i.imgur.com/rioc6rtl.png)](https://i.imgur.com/rioc6rt.png)
中间填上std.dev的平均情节奖励。点击放大。


\赖宁,而在右边,他被训练成目标分数。

0),
强化学习[不例外](https://arxiv.org/abs/1709.06560)。
Reaver作为一个科学项目的目标之一是帮助促进可重复的研究。
为此,Reaver提供了各种简化过程的工具:

*所有的实验NT保存到单独的文件夹中,默认情况下启用自动模型检查点
*所有配置都通过[gin config]处理(https://github.com/google/gin-config)python库并保存到实验结果目录
*在训练期间,各种统计指标都是重复的。进入实验结果目录
*结果目录结构简化了共享具有完整信息的单个实验

所有六个小游戏的摘要日志。
只需从[releases]选项卡(https://github.com/inoryy/reaver-pysc2/releases)下载一个实验存档文件,并解压缩到"results/"目录中即可。

您可以使用预先训练的权重,方法是在"reaver.run"命令中附加"--experiment"标志:

python reaver.run--map<;ma如果启动"tensorboard--logidr=results/summaries",则可以使用"tensorboard--logidr=results/summaries"日志。
您也可以[直接在线](https://boards.aughie.org/board/hwi4xmuvuosuw09qbfydd-onf1u)通过[奥吉电路板](https://boards.aughie.org/)。

您也可以在[项目选项卡](https://github.com/inoryy/reaver-pysc2/projects)中关注

假设贡献的代码库许可证匹配(mit),那么开发方面的任何帮助当然都会受到高度赞赏。

*[]文档
*[]代码库文档
*[]扩展到自定义环境
*[]扩展到自定义代理
*[x]设置在[google colab](https://colab.research.google.com)
*[]单元测试
*[x]关键特性,如优势估计
*[]代理/模型组合的一般基本聚合保证
*[]LSTM支持
*[]更简单的健身房环境
*[]完整星际争霸II环境
*[]异步多处理
*[]附加代理
*[]行为克隆/模仿学习
*[]impala+popart
*[]ape-x
*[]acktr
*[]生活质量改善
*[x]生成研究文章的绘图实用程序friendly绘图
*[]运行并比较多个随机种子的实验
*[]复制以前执行的实验
*[]starcrafT II[原始API](https://github.com/blizzard/s2client proto/blob/master/docs/protocol.md原始数据)支持
*[]支持更多环境
*[]支持VizDoom(https://github.com/mwydmany/VizDoom)
*[]支持DeepMind Lab(https://github.com/deepMind/lab)
*[[健身复古](https://git)hub.com/openai/retro)
*[][carla](https://github.com/carla simulator/carla)
*[]多代理设置支持
*[]作为通过[gym retro]实现"pong"环境的概念证明(https://github.com/openai/retro)
*[]对于星际争霸ii,通过原始api
*[]ii通过特色层api



在星际争霸游戏宇宙中,收割者是一个非常特殊且主观上可爱的神族单位。
在星际争霸:孵化战争版的游戏中,收割者因动作缓慢、笨拙而臭名昭著,
如果由于游戏中的人工智能有缺陷而独自留下来,则往往是边缘无用的。然而,在投入
时间来掌握该单位的专注玩家手中,Reaver成为游戏中最强大的资产之一,经常在赢得锦标赛的游戏中扮演关键角色。

作为塔尔图大学的
[学士学位论文](https://github.com/inoryy/bsc-thesis)的实践部分,在[ilya kuzovkin](https://github.com/kuz)和[tambet matiisen](https://github.com/tambetm)的监督下进行开发。
您仍然可以在[v1.0]上访问它(https://github.com/inoryy/reaver-pysc2/tree/v1.0)branch.



如果您有更一般的问题或只是寻求建议,请随时给我发邮件。

我也是一个活跃友好的[SC2AI](http://sc2ai.net)在线社区的骄傲成员,
我们主要使用[不和谐](https://discordapp.com/invite/emm5ztz)进行交流。欢迎各界人士加入!

r={github},
journal={github repository},
howpublished={\url{https://github.com/inoryy/reaver},
}
````


欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
java在TextView中对齐部分文本   带有iText和eTPKCS11的java PKCS#11签名。dll&SunPKCS11提供程序   java Intellij Idea找不到jar   java Chrome/Firefox和Jetty HTTPS   java我无法打包找不到的JavaFX应用程序模块   多线程Java:排序从异步任务检索的结果   java客户端/服务器socket不能与外部连接一起工作   java如何在单击“下一步”按钮时获取其他详细信息?   java组织。springframework。网状物客户RestTemplate应声明为@Bean,而plain@Autowired抛出错误   java如何绘制javax。摆动将ImageIcon转换为JavaFX。fxml呈现用户界面?   使用for循环的Java跟踪   java如何编码字符串以显示彩色文本(基于字符串中的前缀)   Java保存/打开文件对象   基于java复选框的搜索:使用尽可能多的“”动态生成准备好的语句作为选中复选框的计数   java为什么crawler4j随机挂起?