Benchmark results for an algorithm requires running it for a number of environments. This can easily be done in SLM Lab by parametrizing the spec file, which is similar to how it was done in Experiment and Search Spec: PPO on Breakout. Running benchmark in SLM Lab is easy by using spec_params in the spec file, which uses the same underlying function as experiment search.
Let's run a benchmark for A2C on 4 Atari environments. We can look at an example spec from slm_lab/spec/benchmark/a2c/a2c_gae_atari.json
slm_lab/spec/benchmark/a2c/a2c_gae_atari.json{"a2c_gae_atari": {"agent": [{"name": "A2C","algorithm": {"name": "ActorCritic",...},...}}],"env": [{"name": "${env}","frame_op": "concat","frame_op_len": 4,"reward_scale": "sign","num_envs": 16,"max_t": null,"max_frame": 1e7}],..."spec_params": {"env": ["BreakoutNoFrameskip-v4", "PongNoFrameskip-v4", "QbertNoFrameskip-v4", "SeaquestNoFrameskip-v4"]}}}
Spec param uses template string replacement to modify the spec and append to the spec name. Replace the value of the environment name with "${env}"
.
This benchmark will run 4 trials in total. The command to run it is familiar:
python run_lab.py slm_lab/spec/benchmark/a2c/a2c_gae_atari.json a2c_gae_atari train
The spec name will be replaced with each value of the spec param, so the resulting trials will be named "a2c_gae_atari_BreakoutNoFrameskip-v4", "a2c_gae_atari_PongNoFrameskip-v4", "a2c_gae_atari_QbertNoFrameskip-v4", and "a2c_gae_atari_SeaquestNoFrameskip-v4".
All the SLM Lab benchmark results are run from files in slm_lab/spec/benchmark/.
Refer to the following pages for benchmark results in SLM Lab.