Robomimic使用集中式配置系统来指定所有级别的(超)参数

本文介绍了配置(推荐)和启动训练运行的两种方法

目录

一、使用config json(推荐)

二、在代码中构造一个配置对象

三、查看运行结果

1. 实验结果会存在一个固定文件夹中,可以设置存储位置:

2. 可以设置展示方式:

3. 可以设置存储方式:

4. 可以设置评估执行过程及视频存储:

5. 可以设置Tensorboard可视化:

6. 设置wandb可视化


一、使用config json(推荐)

指定训练参数的首选方法是通过--config参数将config json传递给主训练脚本train.py

数据集可以通过设置config json的train部分的data属性来指定,也可以通过--dataset参数来指定

下面的示例为BC算法运行一个默认模板json。这是开展训练的首选方式

python train.py --config ../exps/templates/bc.json --dataset ../../tests/assets/test_v141.hdf5

生成json配置以启动训练运行,可参考超参数助手教程

更多实战过程可参考Dexcap运行逻辑专题内容

二、在代码中构造一个配置对象

启动训练运行的另一种方法是创建默认配置,例如config = config_factory(algo_name="bc")

在python代码中修改配置,然后调用训练函数,就像在examples/train_bc_rnn.py脚本中一样。

import robomimic
import robomimic.utils.torch_utils as TorchUtils
from robomimic.config import config_factory
from robomimic.scripts.train import train

# make default BC config
config = config_factory(algo_name="bc")

# set config attributes here that you would like to update
config.experiment.name = "bc_rnn_example"
config.train.data = "/path/to/dataset.hdf5"
config.train.output_dir = "/path/to/desired/output_dir"
config.train.batch_size = 256
config.train.num_epochs = 500
config.algo.gmm.enabled = False

# get torch device
device = TorchUtils.get_torch_device(try_to_use_cuda=True)

# launch training run
train(config, device=device)

三、查看运行结果

使用第一种方法指定训练参数,就可以在config.json脚本文件中配置相关设置,定义及查看训练运行的结果

1. 实验结果会存在一个固定文件夹中,可以设置存储位置:

data

robomimic应用教程(一)——模型训练-LMLPHP

robomimic应用教程(一)——模型训练-LMLPHP

可以在<train.output_dir>/<experiment.name>/<date>实验目录文件夹下查看训练结果:

实验目录文件夹内部格式是固定的:

config.json               # config used for this experiment
logs/                     # experiment log files
  log.txt                    # terminal output
  tb/                        # tensorboard logs
  wandb/                     # wandb logs
videos/                   # videos of robot rollouts during training
models/                   # saved model checkpoints

robomimic应用教程(一)——模型训练-LMLPHP

2. 可以设置展示方式:

logging

"logging": {
    # save terminal outputs under `logs/log.txt` in experiment folder
    "terminal_output_to_txt": true,
    
    # save tensorboard logs under `logs/tb` in experiment folder
    "log_tb": true

    # save wandb logs under `logs/wandb` in experiment folder
    "log_wandb": true
},

robomimic应用教程(一)——模型训练-LMLPHP

3. 可以设置存储方式:

save

比如every_n_epochs定义了每多少轮存储一次

"save": {
    # enable saving model checkpoints
    "enabled": true,
    
    # controlling frequency of checkpoints
    "every_n_seconds": null,
    "every_n_epochs": 50,
    "epochs": [],
    
    # saving the best checkpoints
    "on_best_validation": false,
    "on_best_rollout_return": false,
    "on_best_rollout_success_rate": true
},

robomimic应用教程(一)——模型训练-LMLPHP

4. 可以设置评估执行过程及视频存储:

rollout
"rollout": {
    "enabled": true,              # enable evaluation rollouts
    "n": 50,                      # number of rollouts per evaluation
    "horizon": 400,               # number of timesteps per rollout
    "rate": 50,                   # frequency of evaluation (in epochs)
    "terminate_on_success": true  # terminating rollouts upon task success
}

视频存储配置模块:

render_video

要存储视频,则设置为true

5. 可以设置Tensorboard可视化:

在实验目录文件夹中、打开终端、激活环境、并输入:

tensorboard --logdir logs --bind_all

robomimic应用教程(一)——模型训练-LMLPHP

实验结果(y轴)是根据epochs(x轴)记录的。关键的日志指标包括:

Rollout/:评估的任务成功率、奖励等,Rollout/Success_Rate/{envname}-max:最大成功率随时间变化

Timing_Stats/:算法执行加载、训练和回滚等操作所消耗的时间

Train/:训练数据

Validation/:验证数据

System/RAM Usage (MB):系统内存使用情况

6. 设置wandb可视化

此外,可以通过wandb查看结果,类似于tensorboard(UMI中使用的wandb),需配置log_wandb为True

首次登录wandb,需要登录账号(自己提前注册)

robomimic/macros_private.py中将WANDB_ENTITY设置为wandb账户名

Note:如果该文件不存在,运行python robomimic/scripts/setup_macros.py来设置private macros file

默认情况下,所有结果将记录在名为default的wandb项目下

可以通过设置配置文件中的wandb_proj_name更改

robomimic应用教程(一)——模型训练-LMLPHP

09-22 10:24