/hr_edl_experiments

Experiments, data, and results for MAL and general sum game experiments with CFR.

Primary LanguageJupyter NotebookMIT LicenseMIT

Hindsight Rationality, and Efficient Deviation Types and Learning Experiments

Experiment code for Hindsight and Sequential Rationality of Correlated Play and Efficient Deviation Types and Learning for Hindsight Rationality in Extensive-Form Games conference papers (AAAI-21 and ICML 2021, respectively).

This repository has a number of different components that work together to generate the experimental results.

The pipeline begins with hr_edl. This is C++ code built over OpenSpiel that defines the experiments. See hr_edl/README.md for more information.

The hr_edl code allows us to run experiments, but experiments are run with help from the Python3 library, hr_edl_data. Run pip install . to install it. With hr_edl_data installed, you can run bin/run_experiment.py to run an experiment.

The experiment configurations used in the papers are defined in Makefile. Assuming that hr_edl_data is installed, running make should compile hr_edl and run all experiments, updating data files in data as necessary, and depositing Numpy data files in results.

Finally, the Python Jupyter notebooks in notebooks process the Numpy data files into the final results, which are also saved in results.

Virtual Machines and Containers

A Vagrant virtual machine configuration to help run these experiments is defined in Vagrantfile. If you already have Python3 installed though, you may not need to use it. Typically, the most onerous part of the installation procedure is building hr_edl and its dependencies. For this, you can use the Singularity container defined by hr_edl/Singularity.def. Once you have Singularity installed or you are using the Vagrant virtual machine, you can run

sudo singularity build ./hr_edl.sif Singularity.def

to create a Singularity image. Then you can run

singularity exec hr_edl.sif /code/build.optimized/bin/<command> [command options]

to run an hr_edl executable inside the container. bin/run_experiment.py has a --sif option so you can specify a container image in which the experiment should be run. You can set the variable SIF and HR_EDL_DIR =/code in Makefile (either in the file or in the command like make SIF=my_image.sif HR_EDL_DIR=/code) to run all experiments in a given container image.