[PYTHON] Installez LightGBM compatible GPU (Ubuntu 16.04)

Contexte

Le flux. Ce qui suit est la solution dans mon environnement, mais ce problème semble se produire lorsqu'une version différente d'OpenCL est installée, il est donc recommandé d'essayer d'abord la méthode décrite dans l'URL ci-dessus.

De plus, cet article n'explique pas comment utiliser LightGBM. Qiita a déjà Un excellent commentaire sur LightGBM, veuillez donc vous y référer.

Environnement d'installation

J'ai installé CUDA selon la méthode officielle.

Flux de l'installation manuelle à l'erreur de compilation

Tout d'abord, essayez d'installer LightGBM en utilisant la méthode du lien ci-dessus.

# http://yutori-datascience.hatenablog.com/entry/2017/07/07/162509 tel quel
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 ..

Ainsi, la compilation de LightGBM elle-même est terminée ici. Alors, vérifiez le fonctionnement

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

Après l'exécution, si Journal comme celui-ci est sorti, il réussit.

Jusqu'à présent, tout s'est bien passé, mais quand j'ai essayé de compiler un module Python,

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

J'ai rencontré une situation où la compilation s'est arrêtée avec l'erreur suivante

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

Solution

À la suite de divers googles, j'ai trouvé une personne signalant un problème similaire sur le forum officiel de github.

À la suite de la discussion, il semble que ce soit parce que deux types de pilotes OpenCL sont installés (normal Version 2.0 et version 1.2 faite par Nvidia). Cependant, il semble que le paramètre de LD_LIBRARY_PATH soit différent de la version liée à ** LightGBM, et une erreur se produit car le pilote Nvidia est chargé en premier **.

Cela peut être résolu des manières suivantes:

Désinstaller le LightGBM installé

** Désinstaller avec pip **

pip uninstall lightgbm 

** Ou désinstaller manuellement ** (Ce qui suit n'est qu'un exemple)

# 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

Recompilez LightGBM en liant la version correcte (Nvidia) d'OpenCL

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

Au fait, je pense que cmake est différent selon votre environnement, veuillez donc le réécrire comme il convient. Il est également important ici que la dernière ligne se compile sans l'option ** --gpu ** (car la mauvaise version d'OpenCL est liée).

Contrôle de fonctionnement

S'il semble être installé sans aucun problème, vérifiez le fonctionnement avec Python. Par exemple, essayez d'emprunter le code de test de ce commentaire.

# https://analyticsai.wordpress.com/2017/04/04/lightgbm/Emprunter plus
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)))

Si le journal suivant est généré ici, l'installation est réussie.

[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
 .... 

Veuillez consulter cet article pour une comparaison du temps d'apprentissage lors de l'utilisation du GPU et du CPU.

en conclusion

Happy Machine Learning!

Recommended Posts

Installez LightGBM compatible GPU (Ubuntu 16.04)
Installez TensorFlow sur Ubuntu
Installez PySide2 sur Ubuntu
Installer Docker (Ubuntu 18.04 LTS)
Installez JModelica sur Ubuntu
Installez Python 3.3 sur Ubuntu 12.04
Installez Theano sur Ubuntu 12.04
Installez angr sur Ubuntu 18.04
Installez pip / pip3 sur Ubuntu
Installez OpenCV sur Ubuntu + python
wsl Installer PostgreSQL sur Ubuntu 18.04
[ROS] Installer ROS (mélodique) sur Ubuntu (18.04)
Installez Caffe sur Ubuntu 14.04 (GPU)
Installer Docker sur WSL Ubuntu 18.04
Installez CUDA10.1 + cuDNN7.6.5 + tensorflow-2.3.0 sur Ubuntu 18.04
Installez Python 3.8 sur Ubuntu 18.04 (norme du système d'exploitation)
Installez Caffe sur Ubuntu 14.04 (mode CPU)
Installez Mecab et mecab-python3 sur Ubuntu 14.04
Installez et exécutez Dropbox sur Ubuntu 20.04
Installez OpenCV et Chainer sur Ubuntu
Installez CUDA 8.0 et Chainer sur Ubuntu 16.04
Installez Python 3.8 sur Ubuntu 20.04 (norme du système d'exploitation)
Étapes pour installer Ubuntu sur VirtualBox
Comment installer MBDyn (Linux Ubuntu)
Installez le fabric sur Ubuntu et essayez
Installez Python 3.9 sur Ubuntu 20.04 (norme du système d'exploitation?)
Installez confluent-kafka pour Python sur Ubuntu
Installez Python 2.7 sur Ubuntu 20.04 (norme du système d'exploitation?)
Etude ROS # 1 Installation de ros-noetic sur Ubuntu 20.04
Installez Pleasant sur Ubuntu 20.04 (version .NetCore3.1 / PostgreSQL)
Installez ubuntu sur un ordinateur portable UEFI Ultra 32 bits
Installez Caffe exécutant 3D-CNN sur un Ubuntu 14.04 propre
Installez Puppet Master and Client sur Ubuntu 16.04
Comment installer php7.4 sur Linux (Ubuntu)
Installez pyenv et Python 3.6.8 sur Ubuntu 18.04 LTS