5
5
6
6
[ English] ( ./README.md )
7
7
8
- ## 简介
8
+ ## 简介
9
9
10
10
[ ![ License: MIT] ( https://img.shields.io/badge/License-MIT-yellow.svg )] ( https://opensource.org/licenses/MIT )
11
11
12
- ** 刑天 (XingTian)** 是一个组件化强化学习库,用于开发、验证强化学习算法。它目前已支持包括DQN、DDPG、PPO和IMPALA等系列算法,可以在多种环境中训练智能体,如Gym、Atari、Torcs、StarCraft等 。 为了满足用户快速验证和解决RL问题的需求,刑天抽象出了四个模块:` Algorithm ` ,` Model ` ,` Agent ` ,` Environment ` 。它们的工作方式类似于"乐高"积木的组合。更详细的内容请[ 阅读架构介绍] ( ./docs/basic_arch.cn.md ) . 有关使用的问题,欢迎大家提交issue或者加入我们的QQ群(833345709)进行讨论
12
+ ** 刑天 (XingTian)** 是一个组件化强化学习库,用于开发、验证强化学习算法。它目前已支持包括DQN、DDPG、PPO和IMPALA等系列算法,可以在多种环境中训练智能体,如Gym、Atari、Torcs、StarCraftII等 。 为了满足用户快速验证和解决RL问题的需求,刑天抽象出了四个模块:` Algorithm ` ,` Model ` ,` Agent ` ,` Environment ` 。它们的工作方式类似于"乐高"积木的组合。更详细的内容请[ 阅读架构介绍] ( ./docs/basic_arch.cn.md ) .
13
13
14
14
## 系统依赖
15
15
16
16
``` shell
17
17
# ubuntu 18.04
18
- sudo apt-get install python3-pip libopencv-dev redis-server -y
18
+ sudo apt-get install python3-pip libopencv-dev -y
19
19
pip3 install opencv-python
20
20
21
- # run with tensorflow 1.15.0
22
- pip3 install zmq h5py gym[atari] tqdm imageio matplotlib==3.0.3 Ipython pyyaml tensorflow==1.15.0 pyarrow lz4 fabric2 line_profiler redis absl-py psutil
21
+ # Run with tensorflow 1.15.0 or tensorflow 2.3.1
22
+ pip3 install zmq h5py gym[atari] tqdm imageio matplotlib==3.0.3 Ipython pyyaml tensorflow==1.15.0 pyarrow lz4 fabric2 absl-py psutil tensorboardX setproctitle
23
23
```
24
24
25
25
也可使用pip 进行依赖安装 ` pip3 install -r requirements.txt `
@@ -31,17 +31,17 @@ pip3 install zmq h5py gym[atari] tqdm imageio matplotlib==3.0.3 Ipython pyyaml t
31
31
32
32
## 安装
33
33
``` zsh
34
- # cd PATH/TO/XingTian
34
+ # cd PATH/TO/XingTian
35
35
pip3 install -e .
36
36
```
37
37
38
- 可通过 ` import xt; print(xt.__Version__) ` 来确认是否已正常安装.
38
+ 可通过 ` import xt; print(xt.__Version__) ` 来确认是否已正常安装.
39
39
40
40
``` python
41
41
In [1 ]: import xt
42
42
43
43
In [2 ]: xt.__version__
44
- Out[2 ]: ' 0.2 .0'
44
+ Out[2 ]: ' 0.3 .0'
45
45
```
46
46
47
47
@@ -56,21 +56,43 @@ Out[2]: '0.2.0'
56
56
``` yaml
57
57
alg_para :
58
58
alg_name : PPO
59
+ alg_config :
60
+ process_num : 1
61
+ save_model : True # default False
62
+ save_interval : 100
63
+
59
64
env_para :
60
65
env_name : GymEnv
61
- env_info : {'name': CartPole-v0, 'vision': False}
66
+ env_info :
67
+ name : CartPole-v0
68
+ vision : False
69
+
62
70
agent_para :
63
- agent_name : CartpolePpo
71
+ agent_name : PPO
64
72
agent_num : 1
65
- agent_config : {
66
- ' max_steps ' : 200,
67
- ' complete_step ' : 500000}
73
+ agent_config :
74
+ max_steps : 200
75
+ complete_step : 1000000
76
+ complete_episode : 3550
77
+
68
78
model_para :
69
79
actor :
70
- model_name : PpoMlp
80
+ model_name : PpoMlp
71
81
state_dim : [4]
72
82
action_dim : 2
73
- summary : True
83
+ input_dtype : float32
84
+ model_config :
85
+ BATCH_SIZE : 200
86
+ CRITIC_LOSS_COEF : 1.0
87
+ ENTROPY_LOSS : 0.01
88
+ LR : 0.0003
89
+ LOSS_CLIPPING : 0.2
90
+ MAX_GRAD_NORM : 5.0
91
+ NUM_SGD_ITER : 8
92
+ SUMMARY : False
93
+ VF_SHARE_LAYERS : False
94
+ activation : tanh
95
+ hidden_sizes : [64, 64]
74
96
75
97
env_num : 10
76
98
` ` `
@@ -85,11 +107,20 @@ env_num: 10
85
107
86
108
87
109
88
- # ### 评估模型
110
+ # ### 评估本机模型
89
111
90
- 评估任务中, 在你的`.yaml`文件中,需要设置 `test_node_config` 和 `test_model_path` 参数,然后通过 `-t evaluate` 运行评估任务。
112
+ 在你的`.yaml`文件中设置 `benchmark.eval.model_path` 参数,然后通过 `-t evaluate` 运行评估任务。
91
113
92
- ` ` ` python3 xt/main.py -f examples/cartpole_ppo.yaml -t evaluate` ` `
114
+ ```
115
+ benchmark:
116
+ eval:
117
+ model_path: /YOUR/PATH/TO/EVAL/models
118
+ gap: 10 # 目录下需评估模型的间隔
119
+ evaluator_num: 1 # 启动评估实例的数量,可支持并行评估
120
+
121
+ # 运行命令
122
+ python3 xt/main.py -f examples/cartpole_ppo.yaml -t evaluate
123
+ ```
93
124
94
125
> 系统默认启动训练任务,即 -t 的默认选项是 train
95
126
@@ -98,6 +129,9 @@ env_num: 10
98
129
```zsh
99
130
# 在终端中,可直接使用xt_main 替换 python3 xt/main.py 执行命令
100
131
xt_main -f examples/cartpole_ppo.yaml -t train
132
+
133
+ # train with evaluate
134
+ xt_main -f examples/cartpole_ppo.yaml -t train_with_evaluate
101
135
```
102
136
103
137
## 自定义任务的开发
@@ -112,43 +146,66 @@ xt_main -f examples/cartpole_ppo.yaml -t train
112
146
113
147
1 . 10M step 之后的** DQN** 收敛回报 (** 40M frames** ).
114
148
115
- | env | XingTian Basic DQN | RLlib Basic DQN | Hessel et al. DQN |
116
- | ------------- | ------------------ | --------------- | ----------------- |
117
- | BeamRider | 6706 | 2869 | ~2000 |
118
- | Breakout | 352 | 287 | ~150 |
119
- | QBert | 14087 | 3921 | ~4000 |
120
- | SpaceInvaders | 947 | 650 | ~500 |
149
+ | env | XingTian Basic DQN | RLlib Basic DQN | Hessel et al. DQN |
150
+ | ------------- | ------------------ | --------------- | ----------------- |
151
+ | BeamRider | 6706 | 2869 | ~ 2000 |
152
+ | Breakout | 352 | 287 | ~ 150 |
153
+ | QBert | 14087 | 3921 | ~ 4000 |
154
+ | SpaceInvaders | 947 | 650 | ~ 500 |
121
155
122
156
2 . 10M step 之后的** PPO** 收敛回报 (** 40M frames** ).
123
157
124
- | env | XingTian PPO | RLlib PPO | Baselines PPO |
125
- | ------------- | ------------ | --------- | ------------- |
126
- | BeamRider | 4204 | 2807 | ~1800 |
127
- | Breakout | 243 | 104 | ~250 |
128
- | QBert | 12288 | 11085 | ~14000 |
129
- | SpaceInvaders | 1135 | 671 | ~800 |
158
+ | env | XingTian PPO | RLlib PPO | Baselines PPO |
159
+ | ------------- | ------------ | --------- | ------------- |
160
+ | BeamRider | 4877 | 2807 | ~ 1800 |
161
+ | Breakout | 341 | 104 | ~ 250 |
162
+ | QBert | 14771 | 11085 | ~ 14000 |
163
+ | SpaceInvaders | 1025 | 671 | ~ 800 |
164
+
165
+ 3 . 10M step 之后的** IMPALA** 收敛回报 (** 40M frames** ).
166
+
167
+ | env | XingTian IMPALA | RLlib IMPALA |
168
+ | ------------- | --------------- | ------------ |
169
+ | BeamRider | 2313 | 2071 |
170
+ | Breakout | 334 | 385 |
171
+ | QBert | 12205 | 4068 |
172
+ | SpaceInvaders | 742 | 719 |
173
+
174
+
130
175
131
176
#### 吞吐量
132
177
133
178
1 . ** DQN**
134
179
135
- | env | XingTian Basic DQN | RLlib Basic DQN |
136
- | ------------- | ------------------ | --------------- |
137
- | BeamRider | 129 | 109 |
138
- | Breakout | 117 | 113 |
139
- | QBert | 111 | 90 |
140
- | SpaceInvaders | 115 | 100 |
180
+ | env | XingTian Basic DQN | RLlib Basic DQN |
181
+ | ------------- | ------------------ | --------------- |
182
+ | BeamRider | 129 | 109 |
183
+ | Breakout | 117 | 113 |
184
+ | QBert | 111 | 90 |
185
+ | SpaceInvaders | 115 | 100 |
186
+
141
187
142
188
2 . ** PPO**
143
189
144
- | env | XingTian PPO | RLlib PPO |
145
- | ------------- | ------------ | --------- |
146
- | BeamRider | 1994 | 1618 |
147
- | Breakout | 2033 | 1535 |
148
- | QBert | 2086 | 1617 |
149
- | SpaceInvaders | 2037 | 1608 |
190
+ | env | XingTian PPO | RLlib PPO |
191
+ | ------------- | ------------ | --------- |
192
+ | BeamRider | 2422 | 1618 |
193
+ | Breakout | 2497 | 1535 |
194
+ | QBert | 2436 | 1617 |
195
+ | SpaceInvaders | 2438 | 1608 |
196
+
197
+ 3 . ** IMPALA**
198
+
199
+ | env | XingTian IMPALA | RLlib IMPALA |
200
+ | ------------- | --------------- | ------------ |
201
+ | BeamRider | 8756 | 3637 |
202
+ | Breakout | 8814 | 3525 |
203
+ | QBert | 8249 | 3471 |
204
+ | SpaceInvaders | 8463 | 3555 |
150
205
151
206
> 实验硬件环境: 72 Intel(R) Xeon(R) Gold 6154 CPU @ 3.00GHz with single Tesla V100
207
+ >
208
+ > Ray reward数据来自 [ https://github.com/ray-project/rl-experiments ] ( https://github.com/ray-project/rl-experiments ) , 吞吐量来自以上硬件设备的测试数据
152
209
153
210
## 致谢
154
211
0 commit comments