最近在参加数据挖掘比赛,代码中使用了LightGBM来进行建模,但是使用CPU版本来进行训练真的太慢了,五折交叉验证需要2-3个小时,效率很低,所以尝试构建GPU版本的lgb来进行建模,由于本地AMD的GPU环境,感觉也不太好搭建,所以选择使用云算力平台来进行搭建,但很多云服务器又没有root权限,即使安装了CUDA也找不到安装路径等诸如此类问题,一直找不到合适的云服务器,还好想起来了有OpenBayes,虽然不能在文件管理中直接查看系统配置文件,但是可以通过linux命令来查看,而且还安装成功了,速度提升了8倍左右,只需要10-20分钟就能完成训练。下面详细介绍一下安装流程:
OpenBayes注册使用地址:
https://openbayes.com/console/signup?r=datayouth_18uy
新用户注册完成手机号及邮箱双重验证后,即可获得4小时RTX 4090、5小时CPU免费使用时长以及免费存储空间 50 GB。
创建新容器
使用上面的链接注册登录之后,在平台的【模型训练】页面下点击【创建新容器】。
填写容器基本信息
容器名称必填,另外也可以先自己上传数据到数据仓库,然后直接绑定容器就OK,接入方式选择jupyterlab的工作空间,可设置自动关闭,当JupyterLab 页面被关闭或者CPU 使用率持续低于 2%的时候会被视为空闲,空闲状态一段时间后将被自动关闭,当容器被认定为空闲状态后容器的创建者会收到短信或者邮件提醒。
选择算力
Openbayes提供了丰富的算力资源,最高可以提供96核CPU,192GB显存,320GB内存,800GB工作空间,详细算力资源如下所示。选择好合适的算力后,再选择镜像配置,包含了现有主流的深度学习框架,如torch、tf、paddle等。
训练开始
选择好配置之后,点击【审核并执行】后再点击【执行】即可开始OpenBayes之旅。在执行记录页面可以清楚地看到CPU、内存、GPU的利用率情况,可以很好的监控训练过程。点击Jupyter的工作空间即可开始。
GPU版本LightGBM模型构建
安装sudo
apt-get update
apt-get install sudo
命令行安装
sudo apt-get install libboost-all-dev
sudo apt install ocl-icd-opencl-dev
sudo apt-get install cmake
apt-get update --fix-missing
CUDA目录检查
/usr/local/cuda/lib64/libOpenCL.so.1
/usr/local/cuda/include/
通过在命令行运行cd、ls命令可以看到这两个目录都存在。
设置环境变量
export CC=/usr/bin/gcc
export CXX=/usr/bin/g++
导入并构建
git clone --recursive https://github.com/microsoft/LightGBM
cd LightGBM
cmake -B build -S . -DUSE_GPU=1 -DOpenCL_LIBRARY=/usr/local/cuda/lib64/libOpenCL.so -DOpenCL_INCLUDE_DIR=/usr/local/cuda/include/
cmake --build build
安装python接口
sh ./build-python.sh install --cuda
检验安装是否成功
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()
此外也可以参考LightGBM官方的安装教程:
https://lightgbm.readthedocs.io/en/latest/Installation-Guide.html#build-gpu-version