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".

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.

Last updated