From c0e53e27821159c78511c72a4ee2304f52dbd83f Mon Sep 17 00:00:00 2001 From: johnjim0816 <39483938+johnjim0816@users.noreply.github.com> Date: Sun, 14 Jan 2024 20:37:47 +0800 Subject: [PATCH] update docs --- docs/figs/joyrl_docs/branch_merge.png | Bin 0 -> 69786 bytes docs/figs/joyrl_docs/tasks_dir.png | Bin 0 -> 68068 bytes docs/joyrl_docs/basic_concept.md | 2 +- docs/joyrl_docs/general_cfg.md | 2 - docs/joyrl_docs/main.md | 11 -- docs/joyrl_docs/usage.md | 156 +++++++++++++++++++++++++- 6 files changed, 154 insertions(+), 17 deletions(-) create mode 100644 docs/figs/joyrl_docs/branch_merge.png create mode 100644 docs/figs/joyrl_docs/tasks_dir.png diff --git a/docs/figs/joyrl_docs/branch_merge.png b/docs/figs/joyrl_docs/branch_merge.png new file mode 100644 index 0000000000000000000000000000000000000000..87a0769469e5bcb0af0d4c6535a7461bf56b4cc0 GIT binary patch literal 69786 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
  • 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 literal 0 HcmV?d00001 diff --git a/docs/joyrl_docs/basic_concept.md b/docs/joyrl_docs/basic_concept.md index d1b9e79..5deea21 100644 --- a/docs/joyrl_docs/basic_concept.md +++ b/docs/joyrl_docs/basic_concept.md @@ -62,7 +62,7 @@ 如图 6 所示,在线测试器更像是一个独立的模块,它并不影响训练过程,因此在图中特别将其分离出来。
    - +
    图 6 整体框架
    diff --git a/docs/joyrl_docs/general_cfg.md b/docs/joyrl_docs/general_cfg.md index fe95360..3d27543 100644 --- a/docs/joyrl_docs/general_cfg.md +++ b/docs/joyrl_docs/general_cfg.md @@ -44,8 +44,6 @@ class GeneralConfig(object): * `max_step`:每回合最大步数,当为`-1`时,则不限制每回合最大步数,直到环境返回`done=True`或者`truncate=True`,**请根据实际环境情况设置**。 * `collect_traj`:是否收集轨迹,当为`True`时,则收集轨迹,否则不收集轨迹,一般用于模仿学习、逆强化学习等。 * `n_interactors`:交互器数量,默认为`1`,请根据实际情况设置。 -* `interactor_mode`:交互器模式,当`n_interactors>1`时有效,`dummy`或`ray`,默认为`dummy`,当为`dummy`时,每次串行执行交互器,当为`ray`时,每次并行执行交互器收集样本。 -* `learner_mode`:学习器模式,`serial`或`parallel`,默认为`serial`,当为`serial`时,表示每次先执行交互器采样,然后执行学习器更新策略,当为`parallel`时,表示交互器和学习器分别同时进行采样和更新策略。 * `n_learners`:学习器数量,默认为`1`,请根据实际情况设置。 * `online_eval`:是否在线测试,当为`True`时,则在线测试,否则不在线测试。开启在线测试时,会额外输出一个名为`best`的模型,用于保存训练过程中测试效果最好的模型,但不一定是最新的模型。 * `online_eval_episode`:在线测试回合数,请根据实际情况设置。 diff --git a/docs/joyrl_docs/main.md b/docs/joyrl_docs/main.md index 5379817..043955c 100644 --- a/docs/joyrl_docs/main.md +++ b/docs/joyrl_docs/main.md @@ -73,8 +73,6 @@ class GeneralConfig: self.max_step = 200 # number of episodes for testing, set -1 means unlimited steps # multiprocessing settings self.n_interactors = 1 # number of interactors - self.interactor_mode = "dummy" # dummy, only works when learner_mode is serial - self.learner_mode = "serial" # serial, parallel, whether workers and learners are in parallel # online evaluation settings self.online_eval = True # online evaluation or not self.online_eval_episode = 10 # online eval episodes @@ -100,12 +98,3 @@ if __name__ == "__main__": ## 文档 [点击](https://datawhalechina.github.io/joyrl/)查看更详细的教程和`API`文档。 - - -## 算法列表 - -算法讲解请参考[“蘑菇书”](https://github.com/datawhalechina/easy-rl)和[JoyRL Book](https://github.com/datawhalechina/joyrl-book) - -| 名称 | 参考文献 | 作者 | 备注 | -| :--------------: | :----------------------------------------------------------: | :-------------------------------------------: | :---: | -| DQN | [DQN Paper](https://www.cs.toronto.edu/~vmnih/docs/dqn.pdf) | [johnjim0816](https://github.com/johnjim0816) | | diff --git a/docs/joyrl_docs/usage.md b/docs/joyrl_docs/usage.md index 4cd699a..ec3bde0 100644 --- a/docs/joyrl_docs/usage.md +++ b/docs/joyrl_docs/usage.md @@ -4,6 +4,8 @@ ## 快速开始 +### 参数配置简介 + `JoyRL`旨在让用户只需要通过调参就能进行相关的强化学习实践,主要的参数包括: * 通用参数(`GeneralConfig`):跟运行模式相关的参数,如算法名称`algo_name`、环境名称`env_name`、随机种子`seed`等等; @@ -39,8 +41,6 @@ class GeneralConfig: self.env_name = "gym" # name of environment self.algo_name = "DQN" # name of algorithm self.mode = "train" # train, test - self.interactor_mode = "dummy" # dummy, only works when learner_mode is serial - self.learner_mode = "serial" # serial, parallel, whether workers and learners are in parallel self.device = "cpu" # device to use self.seed = 0 # random seed self.max_episode = -1 # number of episodes for training, set -1 to keep running @@ -69,7 +69,157 @@ if __name__ == "__main__": 注意必须以准确的关键字(`kwarg`)形式传入到`joyrl.run`函数中!!! -同时,`JoyRL`自带默认的参数配置,在用户传入自定义参数时,会优先考虑`yaml`文件中的参数,其次是传入的参数类,默认的参数配置优先级最低。用户在配置参数时不需要同时配置所有参数,对于一些不关心的参数使用默认的配置即可。 +同时,`JoyRL`自带默认的参数配置,在用户传入自定义参数时,会优先考虑`yaml`文件中的参数,其次是传入的参数类,默认的参数配置优先级最低。用户在配置参数时不需要同时配置所有参数,对于一些不关心的参数使用默认的配置即可。下面部分我们将介绍几种常用的参数配置方式。 + +### 训练与测试 + +想要训练一个算法,我们首先需要把`mode`改成`train`,并且配置好算法名称`algo_name`和环境名称`env_name`,以及环境的`id`,然后设置`max_episode`和`max_step`,如下: + +```yaml +general_cfg: + algo_name: DQN + env_name: gym + device: cpu + mode: train + max_episode: -1 + max_step: 200 + load_checkpoint: false + load_path: Train_single_CartPole-v1_DQN_20230515-211721 + load_model_step: best + seed: 1 + online_eval: true + online_eval_episode: 10 + model_save_fre: 500 +env_cfg: + id: CartPole-v1 + render_mode: null +``` + +其中`max_episode`表示最大训练回合数,设置为-1时将持续训练直到手动停止,`max_step`表示每回合最大步数,设置为-1时将持续训练直到环境返回`done=True`或者`truncate=True`,**请根据实际环境情况设置,通常来讲每回合的步数过长不利于强化学习训练**。 + +配置好之后,用前面提到的任一种方式运行即可开始训练,训练过程中会在当前目录下生成一个`tasks`文件夹,里面包含了训练过程中的模型文件、日志文件等等,如下: + +
    + +
    图 1 tasks文件夹构成
    +
    + +其中`logs`文件夹下会保存终端输出的日志,`models`文件夹下会保存训练过程中的模型文件,`tb_logs`文件夹下会保存训练过程中的`tensorboard`文件,例如奖励曲线、损失曲线等等,`results`文件夹下会以`csv`的形式保存奖励、损失等,便于后续单独绘图分析。`videos`文件夹下会保存运行过程中的视频文件,主要在测试过程中使用。`config.yaml`则保存本次运行过程中的参数配置,便于复现训练结果。 + +如果想要测试一个算法,我们只需要把`mode`改成`test`,然后将`load_checkpoint`(是否加载模型文件)改成`True`,并配好模型文件路径`load_path`和模型文件步数`load_model_step`,如下: + +```yaml +mode: test +load_checkpoint: true +load_path: Train_single_CartPole-v1_DQN_20230515-211721 +load_model_step: 1000 +``` + +### 在线测试模式 + +在训练过程中,我们往往需要对策略进行定期的测试,以便于及时发现问题和保存效果最好的模型。因此,`JoyRL`提供了在线测试模式,只需要将`online_eval`设置为`True`,并设置好`online_eval_episode`(测试的回合数),即可开启在线测试模式,如下: + +```yaml +online_eval: true +online_eval_episode: 10 +model_save_fre: 500 +``` + +其中`model_save_fre`表示模型保存频率,开启在线测试模式时,每保存一次模型,就会进行一次在线测试,并且会额外输出一个名为`best`的模型,用于保存训练过程中测试效果最好的模型,但不一定是最新的模型。 + +### 多进程模式 + +`JoyRL`支持多进程模式,但与向量化环境不同,`JoyRL`的多进程模式能够同时异步运行多个交互器和学习器,这样的好处是某一个交互器和学习器出现异常了,不会影响其他交互器和学习器的运行,从而提高训练的稳定性。在`JoyRL`中开启多进程的方式非常简单,只需要将`n_interactors`和`n_learners`设置为大于1的整数即可,如下: + +```yaml +n_interactors: 2 +n_learners: 2 +``` + +注意,目前还不支持多个学习器的模式,即`n_learners`必须设置为1,未来会支持多个学习器的模式。 + +### 网络配置 + +`JoyRL`支持通过配置文件来建立网络,如下: + +```yaml +merge_layers: + - layer_type: linear + layer_size: [256] + activation: relu + - layer_type: linear + layer_size: [256] + activation: relu +``` + +该配置等价为: + +```python +class MLP(nn.Module): + def __init__(self, state_dim,action_dim): + super(MLP, self).__init__() + self.fc1 = nn.Linear(state_dim, 256) + self.fc2 = nn.Linear(256,256) + self.fc3 = nn.Linear(256, action_dim) + def forward(self, x): + x = F.relu(self.fc1(x)) + x = F.relu(self.fc2(x)) + return self.fc3(x) +``` + +其中输入的`state_dim`和`action_dim`会自动从环境中的状态动作空间中获取,用户只需要配置网络的结构即可。 + +### 多头网络 + +在上一小节配置网络中,会发现网络配置输入是`merge_layers`,这是因为`JoyRL`支持多头网络,即可以同时输入多个网络,然后将多个网络的输出进行合并。例如当状态输入同时包含图像和线性输入时,此时可以分别配置两个网络,然后将两个网络的输出进行合并,这就是多头网络的用法,如下图: + +
    + +
    图 2 branch和merge网络
    +
    + +其中`branch_layers`表示分支网络,`merge_layers`表示合并网络,`branch_layers`和`merge_layers`的配置方式与`merge_layers`相同,只是需要在每个网络的配置中加入`name`,如下: + +```yaml +branch_layers: + - name: feature_1 + layers: + - layer_type: conv2d + in_channel: 4 + out_channel: 16 + kernel_size: 4 + stride: 2 + activation: relu + - layer_type: pooling + pooling_type: max2d + kernel_size: 2 + stride: 2 + padding: 0 + - layer_type: flatten + - layer_type: norm + norm_type: LayerNorm + normalized_shape: 512 + - layer_type: linear + layer_size: [128] + activation: relu + - name: feature_2 + layers: + - layer_type: linear + layer_size: [128] + activation: relu + - layer_type: linear + layer_size: [128] + activation: relu +merge_layers: + - layer_type: linear + layer_size: [256] + activation: relu + - layer_type: linear + layer_size: [256] + activation: relu +``` + +如果只是配置简单的线性网络,则可以只配置`merge_layers`或者`branch_layers`,而如果是非线性网络例如`CNN`,则只能配置`branch_layers`,因为在逻辑上`merge_layers`只能接收线性输入。 ## 自定义策略