Package: dave
🔥 💥Now ``Dave`` supports both python ``3.5`` and ``3.6``!🌟 ✨ ⚡️Daveis a command line utility for your experiments. It manages
concurrent runs, command line arguments and other stuff nicely for you!The things it manages include:generating run-specific variables, like{time}and{cwd}that
you can access as template keys in your string.maximum numbers of concurrent runs (via pythonmultiprocess.Pool)environment variables (env) such asDISPLAY=:1. You can also
passing a filedefault argumentsbatch argumentsfor multiple experimentspre-launchscripts that is ran only once for each batchat-launchscript that is run at the launch time of each
experimentpost-launchscript that is as soon as each experiment launchespost-runscripts that happens after each experiment is done.Daveworks with all of your current work flow and it doesn’t lock
you into a specific way of doing things. You still get to use bash
scripts or Makefile’s.Why do we use YAML (with JSON planned as well)? My bash script is just fine!Because YAML(and json) are humanandmachine readable whereas base
arguments arenot. When is the last time you looked at a bash script
looking for hyper-parameters, only to realized that some key parameters
are missing? WithDaveyou won’t have this problem. You can save all
of the past and current runs as nicely readable YAML files(or json,
Hjson Cson if you speak coffee script, whatever).if you are writing a report, you can include these YAML/json/cson
files directly into markdown or latex.To see what you ran last night, you cangloball of the
configurations withruns/**/experiment.ymland make nice tables
in an instant.To run a full batch of experiments, you can typedefault_argsjust ones, and then only repeat the fields that is different between
each run.Most importantly,Davewants to establish a standard command line
tool for machine learning work, and having a standardrun.config.ymlis just the first step!Why isDavenamed “Dave”?It started out as an inside joke. Dave is my beloved adviser, and I
thought it would be funny todave--config-file"load_electrons.yml".How shall I useDave?First thing first, you shouldaliasDavewith whoever you want
to call to run your experiments 😀 Recommended names include but not
limited toMichaelFei-feiAnnaSashaMichaelMichaelMichael (k. only if you are in med school…)but I recommend lower-case only since it is after all… a command line
app.After aliasing this after your favorite person, you can follow the
examples bellow :)Note that**batteries are
included**,
and your mileage will vary.Example UsageFirst install viapip(it’s that simple!!)pipinstalldaveSuppose you have the following folder structure├── your_thesis
└── MAML_tensorflow
    ├── README.md
    ├── experiment.yml
    ├── maml.py
    └── models
        ├── __init__.py
        └── mlp.pywhere the experiment.yml file looks like this:%YAML1.2---config:max_concurrent:10env:PYTHONPATH:test_directoryrun:|{env} python maml_bradly.py {args}default_args:npts:100num_epochs:70000num_tasks:10num_grad_steps:1num_points_sampled:10fix_amp:Falsebatch_args:# use good typing convention here-num_tasks:10num_grad_steps:1num_points_sampled:10-num_tasks:10num_grad_steps:4num_points_sampled:20tmp:-last_run:10Now under the project root, you can just rundave--config-file"experiment.yml"and it will automatically run the experiment twice, using the arguments
in thebatch_argsfield of the Yaml configuration file. ## To
Developfirst download from github. Then under project folder, run (you also
need to install the packages).makedevtestBucket List[ ] Allow extensions[ ] work on windows[ ] allow env files[ ] daemon modeHappy Doing Science!one-more-experiment