We provide the necessary commands to reproduce the entire evaluation of the paper. The evaluation is built using the DoE-Suite, making it the most straightforward way to reproduce the results. However, it is also possible to obtain the individual commands used to invoke the dp-planner and run them manually.
Warning
Executing experiments on your AWS infrastructure involves the creation of EC2 instances, resulting in associated costs. It is important to manually check that any created machines are terminated afterward.
To get a local copy up and running follow these simple steps.
-
curl -sSL https://install.python-poetry.org | python3 -
-
Local clone of the repository (with submodules)
git clone --recurse-submodules [email protected]:pps-lab/cohere.git
-
TeX Live: Only required for reproducing the plots (see e.g.,
make plot-all
).sudo apt install texlive-full
-
Setup environment variables for the Doe-Suite:
# root project directory (expects the doe-suite-config dir in this folder) export DOES_PROJECT_DIR=<PATH> # Your unique short name, such as your organization's acronym or your initials. export DOES_PROJECT_ID_SUFFIX=<SUFFIX>
For AWS EC2:
export DOES_CLOUD=aws # name of ssh key used for setting up access to aws machines (name of key not path) export DOES_SSH_KEY_NAME=<YOUR-PRIVATE-SSH-KEY-FOR-AWS>
For ETHZ Euler (Slurm-based Scientific Compute Cluster):
export DOES_CLOUD=euler # Replace <YOUR-NETHZ> with your NETHZ username export DOES_EULER_USER=<YOUR-NETHZ>
-
Set up SSH Config and for AWS setup AWS CLI. Currently, the
doe-suite
is configured to use the AWS regioneu-central-1
. For more details refer to the doe-suite documentation.
[!Tip]
To debug problems it can be helpful to comment out the line stdout_callback = community.general.selective
in doe-suite/ansible.cfg.
-
Download the raw results of the Cohere evaluation: Download (3.5 GB)
-
Unarchive the file:
sp24-results-reduced.zip
-
Move the result folders to doe-suite-results:
# the directory should look like: doe-suite-results/ ├─ sp_sub_1690826136 ├─ sp_unlock_1690743687 └─ sp_workloads_1690805680
-
The
sp24-results-reduced.zip
includes also an archive labeledapplications.zip
, containing the original workloads. Alternatively, these workloads can be newly sampled with the workload-simulator. -
The doe-suite-config/roles/data-setup Ansible role is responsible for making the
applications.zip
accessible within the remote experiment environment. The role supports two options to obtain theapplications.zip
:-
Download from your AWS S3:
-
Ensure that the AWS CLI is installed. (The data-setup role uses the AWS CLI to create a temporary download link.)
-
Create an S3 bucket named
privacy-management
within your AWS S3 account (ineu-central-1
region). -
Upload the
applications.zip
file into this bucket. -
Ensure that the
download_data_from_aws
variable in doe-suite-config/group_vars/all/main.yml is set toTrue
to enable the download from AWS.
-
-
Manual Placement (only for Euler):
-
Copy the
applications.zip
file to the designated{{ data_dir }}
folder as specified in doe-suite-config/group_vars/all/main.yml. -
Set the
download_data_from_aws
variable in doe-suite-config/group_vars/all/main.yml is set toFalse
to use the already availableapplications.zip
rather than trying to download it from S3.
-
-
The dp-planner relies on Gurobi for solving resource allocation problems, which requires a Gurobi license. Free academic licenses can be obtained from the following link: https://www.gurobi.com/downloads/end-user-license-agreement-academic/
The acquired license keys still need to be activated on the designated machine. To facilitate this process, we provide the Ansible role doe-suite-config/roles/setup-gurobi, which installs a valid Gurobi license on the remote experiment environment. While ETH Euler already possesses a valid license, specific actions are required for AWS instances due to the necessity of individual licenses per EC2 instance (see additional info).
For AWS EC2:
-
Set the desired license keys in doe-suite-config/group_vars/all/gurobi_license.yml:
gurobi_license_grbgetkey: - <license_key_1> - <license_key_2>
Note, that we provide a gurobi_license.md template file in the same folder which should then be filled in and renamed to
gurobi_license.yml
. -
To activate an academic license, the license request must originate from within an academic domain list. To facilitate this, the
doe-suite
needs to establish a temporary VPN connection for license acquisition. We use the OpenConnect VPN client to establish a connection to the ETH Zurich VPN. For other domains, you may need to adjust the responsible task in doe-suite-config/roles/setup-gurobi/tasks/aws.yml:- name: Connect to VPN (if this fails, check credentials) expect: command: "sudo openconnect sslvpn.ethz.ch -s '/usr/local/bin/vpn-slice gurobi.com apps.gurobi.com portal.gurobi.com'" responses: GROUP: - "student-net" Username: - "{{ vpn_username }}" Password: - "{{ vpn_password }}" async: 600 poll: 0 no_log: true when: lic_1.stat.islnk is not defined
This task references
{{ vpn_username }}
and{{ vpn_password }}
, both of which are part of the template doe-suite-config/group_vars/all/gurobi_license.yml:vpn_username: <vpn_username> vpn_password: <vpn_password>
After the installation, the original experiment outcomes referenced in the paper will be accessible at doe-suite-results. Any additional experiments conducted will also be stored in the same location.
For simplifying the reproduction of results, we provide a custom Makefile to simplify the interface.
All further commands available within the doe-suite
can be accessed via the Makefile located in doe-suite.
For further details, please refer to the doe-suite documentation.
We can reconstruct all evaluation figures in the paper with:
make plot-all
The suite design doe-suite-config/designs/sp_sub.yml defines the experiment.
To obtain all individual commands, use:
make cmd-subsampling
For rerunning all the experiments, execute:
make run-subsampling
The generation of the subsampling plot (Figure 5) relies on the super ETL config doe-suite-config/super_etl/sp_sub.yml.
To regenerate the plot, use:
make plot-subsampling
By default, the figure is derived from the experiment results shown in the paper.
However, it is possible to provide a custom results directory obtained from run-subsampling
.
The suite designs doe-suite-config/designs/sp_unlock.yml and doe-suite-config/designs/sp_workloads.yml define the experiments.
To obtain all individual commands, use:
make cmd-unlocking
For rerunning all the experiments, execute:
make run-unlocking
The generation of the unlocking plot (Figure 6) relies on the super ETL config doe-suite-config/super_etl/sp_workloads.yml.
To regenerate the plot, use:
make plot-unlocking
By default, the figure is derived from the experiment results shown in the paper.
However, it is possible to provide a custom results directory obtained from run-unlocking
.
The suite design doe-suite-config/designs/sp_workloads.yml defines the experiment.
To obtain all individual commands, use:
make cmd-comparison
For rerunning all the experiments, execute:
make run-comparison
The generation of the comparison plot (Figure 7) relies on the super ETL config doe-suite-config/super_etl/sp_workloads.yml.
To regenerate the plot, use:
make plot-comparison
By default, the figure is derived from the experiment results shown in the paper.
However, it is possible to provide a custom results directory obtained from run-comparison
.