??LightGBM是一种基于梯度提升决策树(Gradient Boosting Decision Tree)的机器学习算法,它由微软亚洲研究院开发。与传统的梯度提升决策树相比,LightGBM采用了一些优化技术,使其在训练速度和模型性能上具有更好的表现。LightGBM的主要特点包括:
??总之,LightGBM是一种快速、高效、准确的机器学习算法,适用于处理大规模数据集和高维特征的问题。它在许多机器学习竞赛中取得了优秀的成绩,并被广泛应用于实际的数据科学项目中。
??安装要求见官网文档,可以看到linux环境安装lightgbm-gpu版本要求:
??检查当前系统环境,可以看到OpenCL、libboost、cuda、glibc版本都满足要求,只有cmake版本不满足要求。
(base) ubuntu@test:~$ ldd --version
ldd (Ubuntu GLIBC 2.27-3ubuntu1.5) 2.27
??当前系统cmake已经安装,如果安装到默认路径下会有冲突需要先卸载,为了避免不影响现有系统运行,建议安装到其他目录,通过绝对路径调用此版本的cmake。我们这里安装在/opt/cmake目录下,安装完成后验证版本显示为3.24.2。
root@test:/opt# wget https://github.com/Kitware/CMake/releases/download/v3.24.2/cmake-3.24.2.tar.gz
root@test:/opt# tar -zxvf cmake-3.24.2.tar.gz
root@test:/opt# cd cmake-3.24.2
root@test:/opt/cmake# ./configure --prefix=/opt/cmake
root@test:/opt/cmake# make -j8
root@test:/opt/cmake# make install
…
root@test:/opt/cmake# ./bin/cmake --version
cmake version 3.24.2
??我们可以使用anconda3管理python虚拟环境,关于anconda3安装见博文Ubuntu之Anaconda3安装。
ubuntu@test:~/anaconda3$ conda create -n py38 python=3.8
…
(base) ubuntu@test:~$ conda activate py38
(py38) ubuntu@test:~$ git clone --recursive https://github.com/microsoft/LightGBM
??构建的时候记得使用满足版本要求的cmake,为了不影响全局我们可以不添加环境变量,使用绝对路径cmake命令进行构建。
(py38) ubuntu@test:~$ cd LightGBM/
(py38) ubuntu@test:~/LightGBM$ mkdir build
(py38) ubuntu@test:~/LightGBM$ cd build/
(py38) ubuntu@test:~/LightGBM/build$ /opt/cmake/bin/cmake -DUSE_GPU=1 -DOpenCL_LIBRARY=/usr/local/cuda/lib64/libOpenCL.so -DOpenCL_INCLUDE_DIR=/usr/local/cuda/include/ …
…
– Build files have been written to: /home/ubuntu/LightGBM/build
(py38) ubuntu@test:~/LightGBM/build$ make -j8
…
[100%] Linking CXX executable /home/ubuntu/LightGBM/lightgbm
[100%] Built target lightgbm
??官网提供的编译步骤到第6步就结束了,第6步完成后会生产lightgbm二进制可执行文件,执行make install可以安装到系统中。如果我们需要安装到python虚拟环境,在LightGBM目录下有一个build-python.sh脚本,可以查看使用说明,执行如下命令可以安装到python虚拟环境中,记得要先切换到你需要安装的虚拟环境哦。
(py38) ubuntu@test:~/LightGBM/build$ cd …
(py38) ubuntu@test:~/LightGBM$ sh ./build-python.sh install --precompile
…
Successfully installed lightgbm-4.1.0.99 numpy-1.24.4 scipy-1.10.1
cleaning up
??我们直接pip install lightgbm可以安装CPU版本,版本号是4.1.0,编译安装GPU版本号是4.1.0.99。python交互模式下引入lightgbm模块不报错,说明安装成功。
??是否真的执行GPU,我们编写一个简单测试代码,然后执行该python代码,执行结果可以看到程序正常执行,使用到了GPU,说明安装成功。
(py38) ubuntu@test:~/LightGBM$ cat test.py
import lightgbm as lgb
import numpy as np
# 创建一个示例数据集
X_train = np.random.rand(100, 10)
y_train = np.random.randint(2, size=100)
# 将数据集加载到LightGBM的Dataset对象中
train_data = lgb.Dataset(X_train, label=y_train)
# 设置LightGBM的参数,包括使用GPU加速
params = {'boosting_type': 'gbdt',
'objective': 'binary',
'metric': 'binary_logloss',
'device': 'gpu'}
# 在GPU上训练模型
model = lgb.train(params, train_data, num_boost_round=10)
# 打印模型的预测结果
print(model.predict(X_train))
## 10、总结
??博主安装过程中主要遇到了两个问题,一个就是使用系统当前cmake版本构建的时候一直报错,安装cmake3.24版本后构建成功。另一个就是编译完成后不知道如何安装到python虚拟环境中,回头看结构目录、README文档,发现有一个专门的build-python.sh脚本。所以安装软件的时候一个是多找官方文档,多角度对比评估,仔细阅读README文档,查看软件包下的可读文件,也许你需要的答案就在其中。