Run Benchmark: A2C on Atari Games
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".
Refer to the following pages for benchmark results in SLM Lab.