Windows 10 で GPU(CUDA)を利用するLightGBM のR-packageをセットアップする
基本的には公式サイトのガイドに従ってセットアップするだけ。だけなのだが、ちょこちょこ入れ忘れとか落とし穴があったりして、次から手間取らないように備忘録にしておく。
全体の準備
32bit 版のRをインストールしない
わりと嵌まったポイント。LightGBMは64bit版しかサポートしないが、32bit 版のRが入っているとビルドの際に32bit版をビルドしようとして失敗するとのことで、解決方法は、Rのインストール時に32bit版を入れないようにする(ホントにそう書いてある)。

Install CMake
公式サイト からダウンロードアイコンをクリック → インストーラーのダウンロード → セットアップ

Install Rtools
公式サイト からRtools35.exeをダウンロードしてインストール。

環境変数Pathに、Rtools\binとRtools\mingw_64\binを設定しておく。

Install Visual Studio
公式サイト からダウンロード。
インストールは、とりあえずC++だけでよい。

Install MS-API
MS-MPI SDK と setup.exe を両方公式サイトからダウンロード
msmpisdk.msi と msmpisetup.exe を実行してインストール。

Install git
公式サイト からダウンロード。
設定は適当に。
Install OpenCL
インストールガイドの
- For running on Intel, get Intel SDK for OpenCL.
- For running on AMD, get AMD APP SDK.
- For running on NVIDIA, get CUDA Toolkit.
に従って、今回はCUDA Toolkitをインストール。

今回は、特にカスタマイズしなくてもよかった。
Install Boost Binary
sourceforgeからダウンロード。
Visual Studio 2017 をインストールしたので、 msvc-14.1-64.exeをインストールする。

Boostの環境設定
BOOST_ROOTとBOOST_LIBRALYDIRのパスの設定を行う

環境変数の確認
「コントロール パネル > システムとセキュリティ > システム(Win+Pause/Break)」から「システムの詳細設定→環境変数」をチェック

以下の項目を確認:
- CMake関連のパスがPath変数に追加されている
- Rtools関連のパスがPath変数に追加されている
- MSAPI関連の環境変数がが登録されている
- openCL(CUDA)関連の環境変数が追加されている
- boost関連の環境変数が追加されている

Windows を再起動する
超重要。忘れる。
LightGBMのインストール
lgbdlを使ってインストールする。
lgbdlのインストール
devtools::install_github("Laurae2/lgbdl")
## Downloading GitHub repo Laurae2/lgbdl@master ## from URL https://api.github.com/repos/Laurae2/lgbdl/zipball/master ## Installing lgbdl
## "C:/PROGRA~1/R/R-35~1.1/bin/x64/R" --no-site-file --no-environ --no-save \ ## --no-restore --quiet CMD INSTALL \ ## "C:/Users/MyName/AppData/Local/Temp/Rtmp0SHyaL/devtools43c0670829ab/Laurae2-lgbdl-afff103" \ ## --library="C:/Users/MyName/Documents/R/win-library/3.5" \ ## --install-tests --no-multiarch
インストール
use_gpu = TRUEを指定する。R 3.5以降のバージョンではR35 = TRUEをセットするとご利益があるらしい(ビルドの際の最適化に関する警告が違う)。
lgbdl::lgb.dl(commit = "master", compiler = "vs", # Remove this for MinGW + GPU installation repo = "https://github.com/Microsoft/LightGBM", cores = 4, R35 = TRUE, use_gpu = TRUE)
## Installing package into 'C:/Users/MyName/Documents/R/win-library/3.5' ## (as 'lib' is unspecified)
インストール中のメッセージが大量に表示される。
## [1] TRUE
当初、LoadLibrary failure: %1 is not a valid Win32 application.というエラーが出て、インストールに失敗したので調べたら、Rのインストールの際に32bit版を入れてしまうと、両方でビルドしようとしてこける(64bit版しかサポートしない)とのこと。
このほか、ビルド中にどこかで止まる場合、チェックポイントのどれかが不十分と思われるので、再確認。
動作確認
library(lightgbm)
## Loading required package: R6
data(agaricus.train, package='lightgbm') train <- agaricus.train dtrain <- lgb.Dataset(train$data, label=train$label)
## Loading required package: Matrix
params <- list(objective="regression", metric="l2") model <- lgb.cv(params, dtrain, 10, nfold=5, min_data=1, learning_rate=1, early_stopping_rounds=10)
## [1]: valid's l2:1.43524e-16+9.92589e-17 ## [2]: valid's l2:6.30955e-32+5.75747e-32 ## [3]: valid's l2:7.50672e-35+1.33422e-34 ## [4]: valid's l2:7.03798e-35+1.35156e-34 ## [5]: valid's l2:6.93275e-35+1.35631e-34 ## [6]: valid's l2:6.91914e-35+1.35695e-34 ## [7]: valid's l2:6.91914e-35+1.35695e-34 ## [8]: valid's l2:6.91914e-35+1.35695e-34 ## [9]: valid's l2:6.91914e-35+1.35695e-34 ## [10]: valid's l2:6.91914e-35+1.35695e-34
(おまけ)install_github()を使って、非GPU版のインストール
GPU使わない場合はOpenCLとBoostの準備が不要なので、こちらの方が楽。
library(devtools)
options(devtools.install.args = "--no-multiarch") # if you have 64-bit R only, you can skip this
install_github("Microsoft/LightGBM", subdir = "R-package")
## Downloading GitHub repo Microsoft/LightGBM@master ## from URL https://api.github.com/repos/Microsoft/LightGBM/zipball/master ## Warning: GitHub repo contains submodules, may not function as expected! ## Installing lightgbm ## "C:/PROGRA~1/R/R-35~1.1/bin/x64/R" --no-site-file --no-environ --no-save \ ## --no-restore --quiet CMD INSTALL \ ## "C:/Users/MyName/AppData/Local/Temp/Rtmp0SHyaL/devtools43c039486000/Microsoft-LightGBM-aac8e8f/R-package" \ ## --library="C:/Users/MyName/Documents/R/win-library/3.5" \ ## --install-tests --no-multiarch ##
本当は、ビルド中にシステムメッセージが大量に表示される 。