前言
Lightgbm是使用Leaf-wise決策樹策略的機(jī)器學(xué)習(xí)算法众旗,由于其準(zhǔn)確性和快速(都是相對(duì)的)的優(yōu)點(diǎn),被很多人用于數(shù)據(jù)競賽等領(lǐng)域趟畏。
CPU版本的Lightgbm安裝較簡單贡歧,GPU版本的安裝需要一些前提,下面以安裝文檔和自己安裝的經(jīng)歷簡單介紹下GPU版本lightgbm的安裝過程赋秀。先附上官方的安裝文檔地址:https://lightgbm.readthedocs.io/en/latest/Installation-Guide.html#id18
運(yùn)行環(huán)境
-
操作系統(tǒng):Windows 10 家庭版 i7-7700HQ 16GB
操作系統(tǒng)信息 GPU:GTX 1050 4GB(筆記本版本)
Python 3.6.6(Annaconda 2 下的Python3環(huán)境)
安裝
- 安裝OPENCL SDK
對(duì)于N家顯卡來說利朵,就是安裝CUDA。INTEL和AMD也有各自對(duì)應(yīng)的SDK猎莲。
我的顯卡時(shí)N家的绍弟,所以安裝CUDA。注意版本著洼,并不是越高越好晌柬,要匹配自己的GPU姥份。
比如GTX 1050要安裝9.0版本,而最新的是10.0版本年碘,并不可用。
支持CUDA的顯卡列表:
https://developer.nvidia.com/cuda-gpus
CUDA官方的安裝說明:
https://docs.nvidia.com/cuda/cuda-installation-guide-microsoft-windows/index.html
下載地址:
https://developer.nvidia.com/cuda-downloads
安裝完成后可以展鸡,可以用nvcc --version打印版本信息:
(py36) C:\Users\ZHANG JIZHONG>nvcc --version
nvcc: NVIDIA (R) Cuda compiler driver
Copyright (c) 2005-2017 NVIDIA Corporation
Built on Fri_Sep__1_21:08:32_Central_Daylight_Time_2017
Cuda compilation tools, release 9.0, V9.0.176
安裝編譯器
編譯器可以選擇VS或MinGW屿衅,這里我選擇了VS。
VS需要2015或以上版本莹弊,這里我安裝了VS 2017 社區(qū)版涤久,地址:
https://visualstudio.microsoft.com/zh-hans/vs/community/安裝boost庫
注意匹配VS版本:
Visual Studio 2015 -> msvc-14.0-64.exe,
Visual Studio 2017 -> msvc-14.1-64.exe.
VS2017對(duì)應(yīng)安裝boost 1.64,可以從sourceforge下載:
https://sourceforge.net/projects/boost/files/boost-binaries/
- 安裝CMake
安裝CMake 3.8以上版本忍弛,地址:https://cmake.org/download/
(py36) C:\Users\ZHANG JIZHONG>cmake -version
cmake version 3.13.2
- pip安裝lightgbm
pip install lightgbm --install-option=--gpu
通過參數(shù)指定GPU版本响迂。至此,GPU版本的lightgbm安裝完成细疚。
使用
當(dāng)要指定使用GPU訓(xùn)練時(shí)蔗彤,需給定參數(shù)device='gpu'。如果有多個(gè)GPU的(比如還有核顯)疯兼,可以通過GPUCapsViewer查看GPU ID然遏,如下圖:
右上角的“2: NVIDIA CUDA”和稍稍下方的“1: GeForce GTX 1050”分別對(duì)應(yīng)lightgbm中的gpu_platform_id和gpu_device_id。但要注意吧彪,GPUCapsViewer中的ID計(jì)數(shù)從1開始待侵,而python中則從0開始,因此這兩個(gè)數(shù)字都要減去1姨裸。也就是說秧倾,對(duì)于該環(huán)境,lightgbm的參數(shù)需設(shè)置為:
device='gpu', gpu_platform_id=1, gpu_device_id=0
結(jié)語
- GPU訓(xùn)練未必一定比CPU快傀缩,這取決于訓(xùn)練集大小那先、CPU和GPU能力等客觀因素。
- lightgbm GPU訓(xùn)練不支持過大的max_bin扑毡,我試過max_bin=512時(shí)報(bào)錯(cuò)胃榕,但默認(rèn)255沒有問題。