/Willump

Willump Is a Low-Latency Useful Machine learning Platform.

Primary LanguagePythonMIT LicenseMIT

Willump

Update: We've released a new and simpler rewrite of Willump available here. We'd recommend anyone interested in experimenting with the project to check out that version first!

Willump is unstable and under active development! Please report any bugs or unusual behavior.

Willump is an optimizer for machine learning inference. It speeds up ML inference pipelines written as Python functions whose performance is bottlenecked by feature computation. For a high-level summary of Willump, please see this blog post. For a full description, please see our paper, published at MLSys 2020.

Installation

Willump requires Python version 3.6 or later. These instructions were tested on a clean installation of Ubuntu 18.04 with Python 3.6.8.

First, install dependency packages:

sudo apt update
sudo apt install build-essential curl python3-pip
pip3 install setuptools

Then install the llvm-st branch of our Weld fork, weld-willump. Its repository and installation instructions are available here.

Copy the weld-willump libraries to /usr/lib so clang can find them:

sudo cp $WELD_HOME/target/release/libweld.so /usr/lib/libweld.so

Install the weld-willump Python libraries:

cd $WELD_HOME/python/pyweld
sudo -E python3 setup.py install

Finally, clone Willump, set the WILLUMP_HOME environment variable to point at the package root, and include the package root in your PYTHONPATH:

git clone https://github.com/stanford-futuredata/Willump.git
cd Willump
pip3 install -r requirements.txt
export WILLUMP_HOME=`pwd`
python3 setup.py install --user

To confirm Willump works, run the Willump unit tests:

python3 setup.py test

For information on reproducing the experiments run in the Willump paper, please see our benchmarks guide.

Docker

You can also experiment with Willump using Docker with the Dockerfile we provide. To clone our repository and build our container, run:

git clone https://github.com/stanford-futuredata/Willump.git
cd Willump
export WILLUMP_HOME=`pwd`
docker build -t willump .

Then, to verify the container built successfully, run our unit tests:

docker run -t willump python setup.py test