a16289b2047a7c2ec36667f6031dbb648e4d2caa
e81a11dMerge pull request #25 from daiyl0320/master35c3b37add retry mechanism to ConnectTracker and modify Listen backlog to 128 in rabit_traker.pyc71ed6ftry deply doxygen62e5647try deply doxygen732f1c6try2fa6e02ok0537665minor7b59dcbminor5934950new docf538187ok44b6049new doc387339badd more9d4397achg2879a48chg30e3110ok9ff0301add link translation6b629c2k32e1955ok8f4839dfix93137b2ok7eeeb79reload recommonmarka8f00ccminor19b0f01okdd01184minorc1cdc19minorfcf0f43try rstcbc21aetry62ddfa7tinyaefc05cfinal change2aee9b4minorfe4e7c2ok8001983change to subtitle5ca33e4ok88f7d24update guide29d43abadd codefe8bb3bminor hack for readthedocs229c71dMerge branch 'master' of ssh://github.com/dmlc/rabit7424218okd1d45bbUpdate README.md1e8813fUpdate README.md1ccc990Update README.md0323e06remove readme679a835remove theme7ea5b7cremove numpydoc to napoleonb73e2beMerge branch 'master' of ssh://github.com/dmlc/rabit1742283ok1838e25Update python-requirements.txtbc4e957okfba6fc2ok0251101okd50b905okd4f2509okcdf401aokfef0ef2new doccef360dokc125d2aok270a49eadd requirments744f901get the basic doc1cb5cadMerge branch 'master' of ssh://github.com/dmlc/rabit8cc07baminord74f126Update .travis.yml52b3dcdUpdate .travis.yml099581bUpdate .travis.yml1258046Update .travis.yml7addac9Update Makefile0ea7adfUpdate .travis.ymlf858856Update travis_script.shd8eac4aUpdate README.md3cc49adlint and travisceedf4efixfd8920cfix win328bbed35modify9520b90Merge pull request #14 from dmlc/hjk41df14bb1fix typef441dc7replace tab with blankspace2467942remove unnecessary include181ef47defined long long and ulonglong1582180use int32_t to define int and int64_t to define long. in VC long is 32bite0b7da0fix git-subtree-dir: subtree/rabit git-subtree-split:e81a11dd7e
rabit: Reliable Allreduce and Broadcast Interface
rabit is a light weight library that provides a fault tolerant interface of Allreduce and Broadcast. It is designed to support easy implementations of distributed machine learning programs, many of which fall naturally under the Allreduce abstraction. The goal of rabit is to support portable , scalable and reliable distributed machine learning programs.
- Tutorial
- API Documentation
- You can also directly read the interface header
- Distributed Machine Learning Tools
- Rabit is one of the backbone library to support wormhole machine learning tools
Features
All these features comes from the facts about small rabbit:)
- Portable: rabit is light weight and runs everywhere
- Rabit is a library instead of a framework, a program only needs to link the library to run
- Rabit only replies on a mechanism to start program, which was provided by most framework
- You can run rabit programs on many platforms, including Yarn(Hadoop), MPI using the same code
- Scalable and Flexible: rabit runs fast
- Rabit program use Allreduce to communicate, and do not suffer the cost between iterations of MapReduce abstraction.
- Programs can call rabit functions in any order, as opposed to frameworks where callbacks are offered and called by the framework, i.e. inversion of control principle.
- Programs persist over all the iterations, unless they fail and recover.
- Reliable: rabit dig burrows to avoid disasters
- Rabit programs can recover the model and results using synchronous function calls.
Use Rabit
- Type make in the root folder will compile the rabit library in lib folder
- Add lib to the library path and include to the include path of compiler
- Languages: You can use rabit in C++ and python
- It is also possible to port the library to other languages
Contributing
Rabit is an open-source library, contributions are welcomed, including:
- The rabit core library.
- Customized tracker script for new platforms and interface of new languages.
- Tutorial and examples about the library.
Description
Scalable, Portable and Distributed Gradient Boosting (GBDT, GBRT or GBM) Library, for Python, R, Java, Scala, C++ and more. Runs on single machine, Hadoop, Spark, Dask, Flink and DataFlow
Languages
C++
45.5%
Python
20.3%
Cuda
15.2%
R
6.8%
Scala
6.4%
Other
5.6%