概要
- LightGBMの4.0.0のメジャーアップデートからGPU (CUDA)で実行できるようになった
- しかし、Google Colaboratory環境から実行しようとすると、学習段階で以下のエラーが出て詰んだ
LightGBMError: No OpenCL device found
いろいろ調べた結果、以下のコマンドを一発打てば解決した。
!mkdir -p /etc/OpenCL/vendors && echo "libnvidia-opencl.so.1" > /etc/OpenCL/vendors/nvidia.icd
以下で詳細について述べる。
環境
2024.04.14時点でのGolab環境で回している
- LightGBMのバージョン: 4.1.0
今回の問題と直接関係あるかはわからないが、他には
- polars==0.20.05
- pandas==2.2.0
- numpy==1.26
のバージョンを使っている。
Golab環境ではCPUに加えてランタイムからV100, A100, T4などのGPUを選ぶことができる。
Pro, Pro+などに課金することでより良いGPUを長い時間使うことができる。
自分の場合はPro+を使っている。
どんなエラーが出たか
ランタイムから適当なGPU選択してlightGBMをimportする。
gpuを使うためにパラメータの設定を
- "device": "gpu"
と指定しいざ学習を回そうと思ったら最初に書いたエラーに遭遇した。
必要な設定は全部できてそうだけどなぜ?
原因と解決策
エラーメッセージの通り、OpenCLの設定がうまくできておらず、GPUを正常に認識できていないのが問題のようだ。
調べたところ、似たようなエラーに対処している記事が複数あった。
↑LightGBMをアンインストールしてビルドし直している。
↑Dockerfileを書いて環境構築
どっちもめんどくさそうだなーと思っていたところ、以下の公式リポジトリのissueを見つけた。
↑最初に貼ったコマンドを一行実行すれば良いと書いてあったので、それで解決。
一応実行した後にnotebookを起動し直す必要があったものの、面倒なビルドや環境構築などは特にやらずに済んだ。
まとめ
- 結局公式のissueが一番役にたった
- こういう環境構築的な部分って思わぬところで詰まりがち。。
- とりあえず実行できるようになってよかった