记录在ubuntu(AutoDL)上安装lightgbm gpu(cuda)版本的方法
1 踩坑过程
刚开始,依照下面博客安装了几次,都没有成功
https://codeleading.com/article/30812601605/
安装很慢,且运行时会报各种错误:
[LightGBM] [Fatal] GPU Tree Learner was not enabled in this build. Please recompile with CMake optio
LightGBMError: No OpenCL device found
原因可能是博客年代比较久远
后来看到这篇博客,于是想到去github clone,然后安装最新的lgb
https://blog.csdn.net/CallMeYunzi/article/details/106363191
2 安装方法
2.1 命令行安装依赖
sudo apt-get install libboost-all-dev
sudo apt install ocl-icd-opencl-dev
2.2 安装cmake
sudo apt-get install cmake
2.3 更新所有包
使用--fix-missing
更新所有包
apt-get update --fix-missing
2.4 检查目录
检查这两个目录是否存在,一会会用到
/usr/local/cuda/lib64/libOpenCL.so.1
/usr/local/cuda/include/
2.5 设置环境变量
export CC=/usr/bin/gcc
export CXX=/usr/bin/g++
2.6 下载并构建
git clone --recursive https://github.com/microsoft/LightGBM
cd LightGBM
# rm -r build # 如果已经建立了build目录,则需要删除
mkdir build
cd build
cmake -DUSE_GPU=1 -DOpenCL_LIBRARY=/usr/local/cuda/lib64/libOpenCL.so.1 -DOpenCL_INCLUDE_DIR=/usr/local/cuda/include/ ..
make -j$(nproc)
想在python中导入lgb,还要执行下一步
2.7 安装python包
根据github上的lgb官方文档,
https://github.com/microsoft/LightGBM/tree/master/python-package
还需要在LightGBM
目录下执行脚本,不然无法在python中使用lgb
sh ./build-python.sh install --cuda
注意不能执行下面的代码,对于安装了cuda
的机器,只能执行上面的,不然会保存,具体是为什么还不清楚
sh ./build-python.sh install --gpu
此外,安装过程也可参考官方文档
https://lightgbm.readthedocs.io/en/latest/Installation-Guide.html#id17
除了官方文档,这篇文章说的也比较详细
https://medium.com/@vipulgote4/how-to-build-and-install-lightgbm-for-gpu-acceleration-2b53f0066c02
3 测试代码
安装后,可使用下面代码测试是否安装成功
import lightgbm
import numpy as np
def check_gpu_support():
data = np.random.rand(50, 2)
label = np.random.randint(2, size=50)
print(label)
train_data = lightgbm.Dataset(data, label=label)
params = {'num_iterations': 1, 'device': 'cuda'}
try:
gbm = lightgbm.train(params, train_set=train_data)
print("GPU True !!!")
except Exception as e:
print("GPU False !!!")
if __name__ == '__main__':
check_gpu_support()
4 安装后可能出现的问题
- 运行时如果报错
LightGBMError: No OpenCL device found
尝试命令行输入
mkdir -p /etc/OpenCL/vendors && echo "libnvidia-opencl.so.1" > /etc/OpenCL/vendors/nvidia.icd
- 运行时如果报错
LightGBMError: GPU Tree Learner was not enabled in this build. Please recompile with CMake option -DUSE_GPU=1
这个错误是安装了cuda版本,但是lgb的参数中却设置成了{"device": "gpu"}
,解决办法:应修改为{"device": "cuda"}
- 一些其他的问题可以参考这篇文章
https://zhuanlan.zhihu.com/p/668817682
其他的参考
https://github.com/microsoft/LightGBM/issues/4497
https://blog.csdn.net/zwqjoy/article/details/100579892