こんにちはニコ

 

グラフィックボードをRTX3060 12Gに切り替えたので、

GPUをフル活用するため、

以下のサイトを参考に、lightgbm for GPUのインストールに取り組みました。

 

 

基本的には以下の手順ですが、それぞれ初めてなので、

意味も分からず進めました。

 

環境:

OS: Windows 11

CPU: Corei7-10700

GPU: RTX 3060 12G

Python:: Version 3.8.8

NVIDAのツールキットはインストール済。

 

Step1: Visual Studio Code 2019のインストール

 

MSストアからダウンロードしてインストールしました。

インストールの際は「C++ によるディスクトップ開発」にチェックを入れてインストールします。

忘れた場合、後でVisuall Studio Installerの「変更」ボタンをクリックし、次の画面で選択できます。

 

Step2: cmakeのインストール

 

以下のサイトから、cmake-3.25.0-rc4-windows-x86_64.msiをダウンロードし、

ダブルクリックでインストールしました。最初のダウンロードではファイルが壊れていたらしく、上手くインストールできませんでしたが、再度ダウンロードして実行したところインストール完了しました。

 

 

 

 

Step3: Boostのインストール

以下のサイトからboost_1_80_0-msvc-14.2-64.exeをダウンロードします。

 

boost_1_80_0-msvc-14.2-64.exeをダブルクリックで実行すると、

自動的にC:¥Localにboost_1_80_0フォルダが作成されその中にファイルが展開されます。

インストール完了したら、Finishをクリックして終了。

 

※最初、以下のサイトを参照しインストールしましたが、インストール先のフォルダをどこにすべきか分からず、Cドライブ直下に置いて失敗しました。とりあえずフォルダごと削除しました。C:¥Local直下にインストールすればOKだったのかもしれません。

 

 

 

Step4: LightGBM GPU版をビルドし再インストール

 

GitHubからビルドしました、以下のコマンドです。anacondaプロンプトから実行しました。

 

>git clone --recursive https://github.com/microsoft/LightGBM 

>cd LightGBM mkdir build 

>cd build 

>cmake -A x64 -DUSE_GPU=1 -DBOOST_ROOT=C:/local/boost_1_80_0 -DBOOST_LIBRARYDIR=C:/local/boost_1_80_0/lib64-msvc-14.2 .. 

>cmake --build . --target ALL_BUILD --config Release

 

その後、powershell等で以下を実行

# python-packageに移動(以下ではbuildフォルダに居ることを想定。LightGBMフォルダの直下にあります) 

cd ../python-package 

# インストール 

python setup.py install --precompile

Pythonと表示されました。

 

その後、既存のlightgbmをアンインストールし、再インストールしたところ、

GPUが動作するようになりました。

再インストールは普通に以下のコマンドです。

>pip install lightgbm

 

早速、LightGBMへ以下のパラメータを追加して実行時間を計測してみました。

max_binを300などに設定するとエラーとなります。maxは255のようです。

 

'device_type':'gpu',

'gpu_device_id':0,

'gpu_platform_id':0

'min_data_in_bin':1,

'max_bin':255

 

GPU使用率が0%~29%、CUDA使用率が0~40%で推移します。GPUが利用されているようです。CPUは常に100%になります。処理時間は5分16秒でした。

 

次に、GPUを使わず、CPUを100%使って実行すると3分43秒と、CPUの方が早い結果となりました。

この場合、GPU、CUDAの使用率はずっと0%でした。

 

ちょっとショックですが、

以下のサイトに「lightGBMはあまりGPUの利用率が高くないため、高価で高性能なGPUを利用しても処理速度の向上には寄与しないと考えれられます。コア数の少ないCPUを利用している場合は、GPU利用の恩恵があるかもしれません。」とあります。

今のCPUは16コアなので、CPUのみの方が良いのかもしれません。

 

https://qiita.com/mcakiyama/items/1c1fa21dd82d8a955b4a