LightGBM Ubuntu Installtion

开发机的 Ubuntu版本为16.04,假设当前账户具有sudo权限。 lightGBM 的官方文档 https://lightgbm.readthedocs.io/en/latest/GPU-Tutorial.html 给出的安装步骤经过试错后扩展如下。

下载boost

  • 推荐直接下载源码编译安装:
wget -O boost_1_69_0.tar.gz http://sourceforge.net/projects/boost/files/boost/1.69.0/boost_1_69_0.tar.gz/download

开发机连接 sf速度较慢,可以在配置了科学上网的本地机器上下载完成后 scp上传 或者借助 python Juypyter notebook的上传功能上传到制定目录。

  • 解压缩:
tar xzvf boost_1_69_0.tar.gz
  • 进入目录:
cd boost_1_69_0

安装附加依赖库

sudo apt-get install build-essential g++ python-dev autotools-dev libicu-dev build-essential libbz2-dev libboost-all-dev

安装boost

./bootstrap.sh
./b2
./b2 install

有可能会报 pyconfig.h No such file or directory, 这时候需要去修改 /boost_1_69_0/toos/build/src/tools/python.jam 文件的第 500 多行,将: includes? = (prefix)/include/python${version} 改为 includes ?= $(prefix)/include/python$(version)m

因为:python 3 版本的 include 比 python 2 版本的include 路径多了一个m: 比如, ~/.pyenv/versions/3.6.6/include/python3.6m。修改完之后,重新执行:

./bootstrap.sh --prefix=/usr/local
./b2 install --prefix=/home/chenx/local

安装 lightGBM GPU

cmake -DUSE_GPU=1 -DBOOST_ROOT=/home/chenx/boost_1_69_0 -DBOOST_LIBRARYDIR=/home/chenx/local  -DOpenCL_LIBRARY=/usr/local/cuda/lib64/libOpenCL.so -DOpenCL_INCLUDE_DIR=/usr/local/cuda/include/ ..
make -j

注意上面两个 -DBOOST_ROOT 和 -DBOOST_LIBRARYDIR 这两个路径一个对应boost的根目录,一个对应 boost的lib目录,否则会报 fatal error:boost/compute/core.hpp: No such file or directory 之类的错误。另外,DOpenCL_LIBRARY 是 CUDA 相关的库文件的目录,要确保安装正确,不再赘述。

安装 Python package

cd ../python-package
python setup.py install

测试程序

from lightgbm import LGBMClassifer
from  sklearn.datasets import make_moons
    
model = LGBMClassifier(boosting_type='gbdt', num_leaves=31, max_depth=-1, learning_rate=0.1, n_estimators=300, device="gpu")
train, label = make_moons(n_samples=300000, shuffle=True, noise=0.3, random_state=None)
model.fit(train,label)