琥珀色呑んだくれ備忘録

メモとか備忘録とか

Windows 10 で GPU(CUDA)を利用するLightGBM のR-packageをセットアップする

基本的には公式サイトのガイドに従ってセットアップするだけ。だけなのだが、ちょこちょこ入れ忘れとか落とし穴があったりして、次から手間取らないように備忘録にしておく。

全体の準備

32bit 版のRをインストールしない

わりと嵌まったポイント。LightGBMは64bit版しかサポートしないが、32bit 版のRが入っているとビルドの際に32bit版をビルドしようとして失敗するとのことで、解決方法は、Rのインストール時に32bit版を入れないようにする(ホントにそう書いてある)。

f:id:kato-satoshi-0:20180828234534p:plain

Install CMake

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

f:id:kato-satoshi-0:20180828234807p:plain

Install Rtools

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

f:id:kato-satoshi-0:20180828234841p:plain

環境変数Pathに、Rtools\binRtools\mingw_64\binを設定しておく。 f:id:kato-satoshi-0:20180828234915p:plain

Install Visual Studio

公式サイト からダウンロード。

インストールは、とりあえずC++だけでよい。

f:id:kato-satoshi-0:20180828235059p:plain

Install MS-API

MS-MPI SDK と setup.exe を両方公式サイトからダウンロード

msmpisdk.msimsmpisetup.exe を実行してインストール。

f:id:kato-satoshi-0:20180828235128p:plain

Install git

公式サイト からダウンロード。

設定は適当に。

Install OpenCL

インストールガイドの

に従って、今回はCUDA Toolkitをインストール。

f:id:kato-satoshi-0:20180828235410p:plain

今回は、特にカスタマイズしなくてもよかった。

Install Boost Binary

sourceforgeからダウンロード。

Visual Studio 2017 をインストールしたので、 msvc-14.1-64.exeをインストールする。

f:id:kato-satoshi-0:20180828235504p:plain

Boostの環境設定

BOOST_ROOTBOOST_LIBRALYDIRのパスの設定を行う

f:id:kato-satoshi-0:20180828235634p:plain f:id:kato-satoshi-0:20180828235640p:plain

環境変数の確認

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

f:id:kato-satoshi-0:20180829000335p:plain

以下の項目を確認:

  • CMake関連のパスがPath変数に追加されている
  • Rtools関連のパスがPath変数に追加されている
  • MSAPI関連の環境変数がが登録されている
  • openCL(CUDA)関連の環境変数が追加されている
  • boost関連の環境変数が追加されている

f:id:kato-satoshi-0:20180829000352p:plain

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使わない場合はOpenCLBoostの準備が不要なので、こちらの方が楽。

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
## 

本当は、ビルド中にシステムメッセージが大量に表示される 。