[PYTHON] Installieren Sie GPU-fähiges LightGBM (Ubuntu 16.04)

Hintergrund

Der Fluss. Das Folgende ist die Lösung in meiner Umgebung, aber dieses Problem scheint aufzutreten, wenn eine andere Version von OpenCL installiert ist. Es wird daher empfohlen, zuerst die in der obigen URL beschriebene Methode auszuprobieren.

In diesem Artikel wird auch nicht erläutert, wie LightGBM verwendet wird. Qiita hat bereits Ein großartiger Kommentar zu LightGBM. Bitte beziehen Sie sich dort darauf.

Installationsumgebung

Ich habe CUDA nach der offiziellen Methode installiert.

Ablauf von der manuellen Installation zum Kompilierungsfehler

Versuchen Sie zunächst, LightGBM mithilfe der im obigen Link beschriebenen Methode zu installieren.

# http://yutori-datascience.hatenablog.com/entry/2017/07/07/162509 wie es ist
sudo apt-get update
sudo apt-get install --no-install-recommends nvidia-375
sudo apt-get install --no-install-recommends nvidia-opencl-icd-375 nvidia-opencl-dev opencl-headers

sudo init 6

sudo apt-get install --no-install-recommends git cmake build-essential libboost-dev libboost-system-dev libboost-filesystem-dev

cd ~/tmp/
git clone --recursive https://github.com/Microsoft/LightGBM
cd LightGBM
mkdir build ; cd build
cmake -DUSE_GPU=1 .. 
make -j$(nproc)
cd ..

Damit ist die Kompilierung von LightGBM selbst hier abgeschlossen. Überprüfen Sie also den Betrieb

~/tmp/LightGBM/examples/binary_classification
../../lightgbm config=train.conf data=binary.train valid=binary.test device=gpu

Wenn nach der Ausführung So protokollieren ausgegeben wird, ist dies erfolgreich.

Bisher lief alles gut, aber als ich versuchte, ein Python-Modul zu kompilieren,

cd python-package/
python setup.py install --gpu

Ich bin auf eine Situation gestoßen, in der die Kompilierung mit dem folgenden Fehler gestoppt wurde

OSError: /usr/local/lib/python3.5/dist-packages/lightgbm/lib_lightgbm.so: symbol clCreateCommandQueueWithProperties, version OPENCL_2.0 not defined in file libOpenCL.so.1 with link time reference

Lösungen

Aufgrund verschiedener Googles fand ich eine Person, die ein ähnliches Problem im offiziellen Forum von github meldete.

Nach der Diskussion dort scheint dies daran zu liegen, dass zwei Arten von OpenCL-Treiber installiert sind (normal) Version 2.0 und Version 1.2 von Nvidia). Es scheint jedoch, dass sich die Einstellung von "LD_LIBRARY_PATH" von der mit ** LightGBM verknüpften Version unterscheidet und ein Fehler auftritt, weil der Nvidia-Treiber zuerst geladen wird **.

Dies kann auf folgende Arten gelöst werden:

Deinstallieren Sie das installierte LightGBM

** Mit pip deinstallieren **

pip uninstall lightgbm 

** Oder manuell deinstallieren ** (Das Folgende ist nur ein Beispiel)

# remove manually installed LightGBM
rm -rf /home/so1/.pyenv/versions/anaconda3-4.3.0/lib/python3.6/site-packages/lightgbm
rm -rf /home/so1/.pyenv/versions/anaconda3-4.3.0/lightgbm
# also remove downloaded LightGBM source, just in case
rm -rf ~/tmp/LightGBM

Kompilieren Sie LightGBM neu, indem Sie die richtige Version (Nvidia) von OpenCL verknüpfen

git clone --recursive https://github.com/Microsoft/LightGBM
cd ./LightGBM
mkdir build; cd build
sudo cmake -DUSE_GPU=1 -DOpenCL_LIBRARY=/usr/local/cuda-8.0/lib64/libOpenCL.so -DOpenCL_INCLUDE_DIR=/usr/local/cuda-8.0/include/ ..
sudo make -j$(nproc)
cd ../python-package/
python setup.py install --precompile

Übrigens denke ich, dass "cmake" je nach Umgebung unterschiedlich ist. Schreiben Sie es daher bitte entsprechend um. Wichtig ist hier auch, dass die letzte Zeile ohne die Option ** --gpu ** kompiliert wird (da die falsche Version von OpenCL verknüpft ist).

Funktionsprüfung

Wenn es ohne Probleme installiert zu sein scheint, überprüfen Sie den Vorgang mit Python. Versuchen Sie beispielsweise, den Testcode aus [diesem Kommentar] auszuleihen (https://analyticsai.wordpress.com/2017/04/04/lightgbm/).

# https://analyticsai.wordpress.com/2017/04/04/lightgbm/Mehr ausleihen
import numpy as np
from sklearn import datasets, metrics, cross_validation
from lightgbm.sklearn import LGBMRegressor
import os
diabetes = datasets.load_diabetes()
x = diabetes.data
y = diabetes.target
clf = LGBMRegressor(max_depth=50,
                       num_leaves=21,
                       n_estimators=3000,
                       min_child_weight=1,
                       learning_rate=0.001,
                       nthread=24,
                       subsample=0.80,
                       colsample_bytree=0.80,
                       seed=42)

x_t, x_test, y_t, y_test = cross_validation.train_test_split(x, y, test_size=0.2)
clf.fit(x_t, y_t, eval_set=[(x_test, y_test)])
print("Mean Square Error: ", metrics.mean_squared_error(y_test, clf.predict(x_test)))

Wenn hier das folgende Protokoll ausgegeben wird, ist die Installation erfolgreich.

[1]	valid_0's multi_logloss: 1.83493
[2]	valid_0's multi_logloss: 1.73867
[3]	valid_0's multi_logloss: 1.6495
[4]	valid_0's multi_logloss: 1.56938
[5]	valid_0's multi_logloss: 1.49485
[6]	valid_0's multi_logloss: 1.42784
[7]	valid_0's multi_logloss: 1.36532
 .... 

Einen Vergleich der Lernzeit bei Verwendung von GPU und CPU finden Sie in diesem Artikel.

abschließend

Happy Machine Learning!

Recommended Posts

Installieren Sie GPU-fähiges LightGBM (Ubuntu 16.04)
Installieren Sie TensorFlow unter Ubuntu
Installieren Sie PySide2 unter Ubuntu
Docker installieren (Ubuntu 18.04 LTS)
Installieren Sie JModelica unter Ubuntu
Installieren Sie Python 3.3 unter Ubuntu 12.04
Installieren Sie Theano unter Ubuntu 12.04
Installiere angr unter Ubuntu 18.04
Installiere pip / pip3 unter Ubuntu
Installieren Sie OpenCV unter Ubuntu + Python
wsl Installiere PostgreSQL unter Ubuntu 18.04
[ROS] Installiere ROS (melodisch) unter Ubuntu (18.04)
Installieren Sie Caffe unter Ubuntu 14.04 (GPU)
Installieren Sie Docker unter WSL Ubuntu 18.04
Installieren Sie CUDA10.1 + cuDNN7.6.5 + tensorflow-2.3.0 unter Ubuntu 18.04
Installieren Sie Python 3.8 unter Ubuntu 18.04 (Betriebssystemstandard)
Installieren Sie Caffe unter Ubuntu 14.04 (CPU-Modus)
Installieren Sie Mecab und mecab-python3 unter Ubuntu 14.04
Installieren Sie Dropbox und führen Sie es unter Ubuntu 20.04 aus
Installieren Sie OpenCV und Chainer unter Ubuntu
Installieren Sie CUDA 8.0 und Chainer unter Ubuntu 16.04
Installieren Sie Python 3.8 unter Ubuntu 20.04 (Betriebssystemstandard)
Schritte zum Installieren von Ubuntu auf VirtualBox
So installieren Sie MBDyn (Linux Ubuntu)
Installieren Sie Fabric unter Ubuntu und versuchen Sie es
Installieren Sie Python 3.9 unter Ubuntu 20.04 (Betriebssystemstandard?)
Installieren Sie Confluent-Kafka für Python unter Ubuntu
Installieren Sie Python 2.7 unter Ubuntu 20.04 (Betriebssystemstandard?)
ROS-Studie Nr. 1 Installation von ros-noetic unter Ubuntu 20.04
Installieren Sie Pleasant unter Ubuntu 20.04 (.NetCore3.1 / PostgreSQL-Version)
Installieren Sie Ubuntu auf einem 32-Bit-UEFI-Ultra-Notebook
Installieren Sie Caffe mit 3D-CNN auf einem sauberen Ubuntu 14.04
Installieren Sie Puppet Master und Client unter Ubuntu 16.04
Wie installiere ich php7.4 unter Linux (Ubuntu)
Installieren Sie pyenv und Python 3.6.8 unter Ubuntu 18.04 LTS