dmlc/ps-lite

Name: ps-lite

Owner: Distributed (Deep) Machine Learning Community

Description: A lightweight parameter server interface

Created: 2015-04-26 19:29:30.0

Updated: 2018-05-24 06:14:33.0

Pushed: 2018-05-02 06:44:09.0

Homepage: http://ps-lite.readthedocs.org

Size: 632

Language: C++

GitHub Committers

UserMost Recent Commit# Commits

Other Committers

UserEmailMost Recent Commit# Commits

README

Build Status GitHub license

A light and efficient implementation of the parameter server framework. It provides clean yet powerful APIs. For example, a worker node can communicate with the server nodes by

A simple example:

d::vector<uint64_t> key = {1, 3, 5};
d::vector<float> val = {1, 1, 1};
d::vector<float> recv_val;
::KVWorker<float> w;
Wait(w.Push(key, val));
Wait(w.Pull(key, &recv_val));

More features:

Build

ps-lite requires a C++11 compiler such as g++ >= 4.8. On Ubuntu >= 13.10, we can install it by

 apt-get update && sudo apt-get install -y build-essential git

Instructions for older Ubuntu, Centos, and Mac Os X.

Then clone and build

clone https://github.com/dmlc/ps-lite
s-lite && make -j4
How to use

ps-lite provides asynchronous communication for other projects:

History

We started to work on the parameter server framework since 2010.

  1. The first generation was designed and optimized for specific algorithms, such as logistic regression and LDA, to serve the sheer size industrial machine learning tasks (hundreds billions of examples and features with 10-100TB data size) .

  2. Later we tried to build a open-source general purpose framework for machine learning algorithms. The project is available at dmlc/parameter_server.

  3. Given the growing demands from other projects, we created ps-lite, which provides a clean data communication API and a lightweight implementation. The implementation is based on dmlc/parameter_server, but we refactored the job launchers, file I/O and machine learning algorithms codes into different projects such as dmlc-core and wormhole.

  4. From the experience we learned during developing dmlc/mxnet, we further refactored the API and implementation from v1. The main changes include

  5. less library dependencies

  6. more flexible user-defined callbacks, which facilitate other language bindings

  7. let the users, such as the dependency engine of mxnet, manage the data consistency

Research papers
  1. Mu Li, Dave Andersen, Alex Smola, Junwoo Park, Amr Ahmed, Vanja Josifovski, James Long, Eugene Shekita, Bor-Yiing Su. Scaling Distributed Machine Learning with the Parameter Server. In Operating Systems Design and Implementation (OSDI), 2014
  2. Mu Li, Dave Andersen, Alex Smola, and Kai Yu. Communication Efficient Distributed Machine Learning with the Parameter Server. In Neural Information Processing Systems (NIPS), 2014

This work is supported by the National Institutes of Health's National Center for Advancing Translational Sciences, Grant Number U24TR002306. This work is solely the responsibility of the creators and does not necessarily represent the official views of the National Institutes of Health.