Robomimic使用集中式配置系统来指定所有级别的(超)参数
本文介绍了配置(推荐)和启动训练运行的两种方法
目录
一、使用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
可以在<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
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
},
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
},
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
实验结果(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更改