JasperSnoek/spearmint — pull request #4 by rosejn (2013-08-13 08:53:49+00:00)
Title: Libstyle

Hi Jasper,
These commits implement the changes I outlined previously:

* The same code is now used for local or SGE based execution, and new runtime drivers can be added easily. (I'll be creating one for Apache Mesos soon.) These can be found in the spearmint.driver.* modules.

* The project as been refactored a bit so that it can be more easily treated as a normal python package. All of the code is now under the spearmint.* namespace, which allows it to be imported as a python library from other projects.

* To coincide with typical unix utilities and servers you now point to a config file (e.g. config.pb) rather than a directory.

* I added a simple web based experiment view so that an experiment can be monitored in real-time as it executes. (You will need to install the flask library for this to work: pip install flask) If you pass the -w or --web-status flag, it will start the single page web app on an available port (allowing multiple people to host cluster experiments from one server) which at the moment just shows you the number of candidates and completed executions as well as a chart showing the results. (Currently sorted worst to best, since from the experiment grid there is no way to get the order that experiments were run in.) I need to work on some other things, but in the somewhat near future I'd like to add a bit more parameter exploration to this view so we can see how parameter settings are effecting the objective function.

* I've added some more examples for testing and debugging. The faker example sleeps a random time less than 2 seconds, and then returns a random result. My lap was getting warm from testing with real functions ;-) The other functions are typical examples used in optimization that might be interesting for people to get a sense for how the GP choosers work.

Please let me know if you run into any problems, or if you have any thoughts for modifications or improvements. Thanks again for providing such a useful tool!