Yelp / MOE

A global, black box optimization engine for real world metric optimization.

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

Create an own Python package for the REST interface

FlorianWilhelm opened this issue · comments

Currently the installation of MOE is quite hard for beginners. Although a docker image is provided which makes is easy to get it running, in order to use the provided Python REST interface one still has to install MOE somehow locally or start messing around with the PYTHONPATH variable which is just nasty.
My suggestion would be to split the whole Python REST interface into an own library called moe_api for instance. The installation for dummies would then be as easy as running the provided docker image and typing pip install moe_api in a virtuelenv or conda environment. Since moe_api would be plain Python code there is nothing to compile and even a port of that client to Python 3 would be so much easier. During this cleanup one could surely simplify the current interface.

Forked MOE and striped some code so now have the REST client with only minimal dependencies and no C++ code

Only dependancies are:

  • simplejson
  • numpy
  • colander

https://github.com/mulyoved/clientMOE

It is only quick and totally dirty hack for now

@mulyoved Yes, great! Looking forward to use it. Will you upload a package to PyPI?

published as PyPI package

pip install clientMOE

@mulyoved Nice, just installed it with pip! Thanks a bunch!
But what about a cooler name? Maybe SCHMOE, the Small & Concise Helper for MOE ;-) At least the package name itself which is moe right now should be renamed so that there is no ambiguity with MOE itself if anyone installs both packages.

My understanding is that clientMOE requires python 2.7. What are the barriers to making it python 3 compatible?

I have forked this and done a quick-and-dirty conversion to python3 (3.5.2).

https://github.com/RokoMijic/clientMOE

Due to @mulyoved 's code not including the CPP wrappers, a number of tests simply had to be deleted since they relied on that code.

There are 91 remaining tests which all pass in python 3.5.2.