ASUSのThinker Boardを以前購入したのですが、いまいち使い道がなく、結局放置していました。最近Thinker BoardにMali-T760が搭載されていて、OpenCLが使えるということに気づきました。
勾配ブーストの機械学習で、広く使われている、LightGBMがOpenCLに対応していたので、Thinker Boardで動かしてみました。
環境:
Thinker Board
OS : Thinker OS version(/etc/versionの情報です) 2.1.1
LightGBM: 3.3.1
まず、OpenCLの情報を見ようclinfoを使います。
sudo apt-get install clinfo
clinfoで、なんか、デバイスが無いという状態
/etc/OpenCL/vendorsをみようとすると、標準でこのファイルは存在していますが、/etc/OpenCL/vendersとまさかの、スペルミスの状態になっています。。こういうのはちょっと恥ずかしいレベルですね。とりあえず、リンクを作ります。
sudo ln -s /etc/OpenCL/venders /etc/OpenCL/vendors
clinfoの出力結果です。
Platform Name ARM Platform
Number of devices 1
Device Name Mali-T760
Device Vendor ARM
Device Vendor ID 0x7500001
Device Version OpenCL 1.2 v1.r13p0-00rel0-git(a4271c9).40dbad8455f8b43d1f8fbb5a1fe733e6
Driver Version 1.2
Device OpenCL C Version OpenCL C 1.2 v1.r13p0-00rel0-git(a4271c9).40dbad8455f8b43d1f8fbb5a1fe733e6
Device Type GPU
Device Profile FULL_PROFILE
Max compute units 4
Max clock frequency 100MHz
Device Partition (core)
Max number of sub-devices 0
Supported partition types None
Max work item dimensions 3
Max work item sizes 256x256x256
Max work group size 256
Preferred work group size multiple 4
・・・
OpenCLは1.2ですね。
次にLightGBMをビルドします。
LightGBM GPU Tutorial — LightGBM 3.3.1.99 documentation
上記の流れに従います。
sudo apt-get install --no-install-recommends git cmake build-essential libboost-dev libboost-system-dev libboost-filesystem-dev
実際は、aptで配信されているcmakeが古い(cmake 3.2.0以降が必要)ので、ダウンロードしてビルドします。
cmake 3.22.1を使っています。
git clone --recursive https://github.com/microsoft/LightGBM
cd LightGBM
mkdir build
cd build
下記のように、ライブラリとヘッダを指定してビルドしないとうまくいかないです。
/usr/local/bin/cmake -DUSE_GPU=1 -DOpenCL_LIBRARY=/usr/lib/arm-linux-gnueabihf/libOpenCL.so.1 -DOpenCL_INCLUDE_DIR=/usr/include/CL ..
make -j4
これでビルドできるので、試してみます。pythonは64bitしかモジュールをインストールできないので、コマンドラインのlightgbmを使います。
cd ..
cd examples/binary_classification
../../lightgbm config=train.conf device=gpu
上記で、学習が始まります。ただなんかとっても遅い。。。30秒弱かかります。
標準ではデバイスはCPUなのですが、
../../lightgbm config=train.conf
これだと、1秒程度。。
チューニングが必要かもしれませんが、本日はこのあたりで力尽きました。