fbpx

Ubuntu 16.04 CUDA, Cudnn, Caffe, Torch, jupyter, Dıgıts Kurulumu

Aşağıdaki kurulum 22 Temmuz 2018 tarihinde Microsoft Azure K80 GPU’lu makine üzerinde denenmiştir. Aşağıdaki komutların hepsi terminal penceresinde çalıştırılmalıdır. Ubuntu kullanıcı ismi “openzeka” olarak belirlenerek kurulmuştur.

# Uzak sunucuda karakter kaynaklı hataları gidermek için aşağıdaki komutları çalıştırınız.
echo 'export LC_CTYPE=en_US.UTF-8' >> ~/.bashrc
echo 'export LC_ALL=en_US.UTF-8' >> ~/.bashrc
source ~/.bashrc

# Sistem güncelleme
sudo apt-get update
sudo apt-get -y upgrade

# K80 için son sürüm NVIDIA Sürücülerinin kurulması.
# DİKKAT: Bu sürücülerin, kendi bilgisayarınızın ekran kartına uygun olması gerekmektedir!
wget http://us.download.nvidia.com/tesla/384.145/nvidia-diag-driver-local-repo-ubuntu1604-384.145_1.0-1_amd64.deb
sudo dpkg -i nvidia-diag-driver-local-repo-ubuntu1604-384.145_1.0-1_amd64.deb
sudo apt-key add /var/nvidia-diag-driver-local-repo-384.145/7fa2af80.pub
sudo apt-get update
sudo apt-get install cuda-drivers
sudo reboot

# CUDA kurulumu
wget https://developer.nvidia.com/compute/cuda/9.0/Prod/local_installers/cuda-repo-ubuntu1604-9-0-local_9.0.176-1_amd64-deb
sudo mv cuda-repo-ubuntu1604-9-0-local_9.0.176-1_amd64-deb cuda-repo-ubuntu1604-9-0-local_9.0.176-1_amd64.deb
sudo dpkg -i cuda-repo-ubuntu1604-9-0-local_9.0.176-1_amd64.deb
sudo apt-key add /var/cuda-repo-9-0-local/7fa2af80.pub
sudo apt-get update
sudo apt-get install cuda

#CUDA dizinlerini .bashrc dosyasına eklemek aşağıdaki satırları çalıştırın.
echo 'export PATH=/usr/local/cuda-9.0/bin${PATH:+:${PATH}}' >> ~/.bashrc
echo 'export LD_LIBRARY_PATH=/usr/local/cuda-9.0/lib64\
${LD_LIBRARY_PATH:+:${LD_LIBRARY_PATH}}' >> ~/.bashrc

# Cudnn Kurulumu cudnn-8.0-linux-x64-v6.0.tgz dosyasını aşağıdaki adresden indiriniz.
wget https://developer.download.nvidia.com/compute/machine-learning/repos/ubuntu1604/x86_64/libcudnn7_7.0.5.15-1+cuda9.0_amd64.deb

sudo dpkg -i libcudnn7_7.0.5.15-1+cuda9.0_amd64.deb


# Aşağıdaki iki satırda olduğu gibi bir hata mesajı alırsanız aşağıda belirtilen 4 satırdaki işlemi yapınız
# /sbin/ldconfig.real: /usr/lib/nvidia-375/libEGL.so.1 is not a symbolic link
# /sbin/ldconfig.real: /usr/lib32/nvidia-375/libEGL.so.1 is not a symbolic link
sudo mv /usr/lib/nvidia-375/libEGL.so.1 /usr/lib/nvidia-375/libEGL.so.1.org
sudo mv /usr/lib32/nvidia-375/libEGL.so.1 /usr/lib32/nvidia-375/libEGL.so.1.org
sudo ln -s /usr/lib/nvidia-375/libEGL.so.375.39 /usr/lib/nvidia-375/libEGL.so.1
sudo ln -s /usr/lib32/nvidia-375/libEGL.so.375.39 /usr/lib32/nvidia-375/libEGL.so.1


##Cuda test
# cd /usr/local/cuda-8.0/samples/1_Utilities/deviceQuery
# sudo make
# ./deviceQuery
##Cuda test

cd ~
##NCLL-birden fazla GPU varsa http://docs.nvidia.com/deeplearning/sdk/nccl-install-guide/index.html ##
#wget http://developer.download.nvidia.com/compute/machine-learning/repos/ubuntu1604/x86_64/nvidia-machine-learning-repo-ubuntu1604_1.0.0-1_amd64.deb
#sudo dpkg -i nvidia-machine-learning-repo-ubuntu1604_1.0.0-1_amd64.deb
#sudo apt-get update
#sudo apt-get install libnccl2=2.1.4-1+cuda8.0 libnccl-dev=2.1.4-1+cuda8.0
##NCLL son##

cd ~
##DIGITS Kurulumu
sudo apt-get install --no-install-recommends git graphviz python-dev python-flask python-flaskext.wtf python-gevent python-h5py python-numpy python-pil python-pip python-scipy -y

#Caffe Kurulumu
sudo apt-get install --no-install-recommends build-essential cmake git gfortran libatlas-base-dev libboost-filesystem-dev libboost-python-dev libboost-system-dev libboost-thread-dev libgflags-dev libgoogle-glog-dev libhdf5-serial-dev libleveldb-dev liblmdb-dev libopencv-dev libsnappy-dev python-all-dev python-dev python-h5py python-matplotlib python-numpy python-opencv python-pil python-pip python-scipy python-skimage python-sklearn python-setuptools python-tk -y

#Protobuf kurulumu (https://github.com/NVIDIA/DIGITS/blob/master/docs/BuildProtobuf.md)
#Bu kurulum protobuf 3.5.1 ile test edilmiştir.
sudo apt-get install autoconf automake libtool curl make g++ git python-dev python-setuptools unzip -y
export PROTOBUF_ROOT=~/protobuf
git clone https://github.com/google/protobuf.git $PROTOBUF_ROOT -b '3.2.x'
cd $PROTOBUF_ROOT
./autogen.sh
./configure
make "-j$(nproc)"
sudo make install
sudo ldconfig
cd python
sudo python setup.py install --cpp_implementation
#Test başarılı ise protobuf hazır

# Pip update
cd ~
pip update
wget https://bootstrap.pypa.io/get-pip.py -O ./get-pip.py
python ./get-pip.py
python3 ./get-pip.py
#########################

#Yeni eklenen kütüphaneler
# OpenBlasın ayrıca derlenmesi performans artışı sağlayabilir. hızlı kurulum için aşağıdaki komut yeterli olacaktır.
sudo apt-get install libboost-all-dev libturbojpeg libopenblas-dev -y
cd ~
export CAFFE_ROOT=~/caffe
echo 'export CAFFE_ROOT=~/caffe' >> ~/.bashrc
git clone https://github.com/NVIDIA/caffe.git $CAFFE_ROOT
sudo pip install -r $CAFFE_ROOT/python/requirements.txt

#hata alırsan https://github.com/NVIDIA/DIGITS/blob/master/docs/BuildCaffe.md adresine bak

cd $CAFFE_ROOT
cp Makefile.config.example Makefile.config
sudo sed -i 's/# USE_CUDNN := 1/USE_CUDNN := 1/' Makefile.config
#Çoklu GPU detseği istenirse
# sudo sed -i 's/# USE_NCCL := 1/USE_NCCL := 1/' Makefile.config

# Enable with python layer
sudo sed -i 's/# WITH_PYTHON_LAYER := 1/WITH_PYTHON_LAYER := 1/' Makefile.config

# Eğer hdf5 hatası alınırsa 
# Add hdf5 library path and dir
# echo 'INCLUDE_DIRS += /usr/include/hdf5/serial' >> Makefile.config
# echo 'LIBRARY_DIRS += /usr/lib/x86_64-linux-gnu /usr/lib/x86_64-linux-gnu/hdf5/serial' >> Makefile.config

mkdir build
cd build
cmake ..
make --jobs $(nproc)
make install
echo 'export PYTHONPATH=/home/openzeka/caffe/python:${PYTHONPATH:+:${PYTHONPATH}}' >> ~/.bashrc
#Caffe Kurulum bitti

#Torch Kurulumu
cd ~
sudo apt-get install --no-install-recommends git software-properties-common -y
export TORCH_ROOT=~/torch
echo 'export TORCH_ROOT=~/torch' >> ~/.bashrc
git clone https://github.com/torch/distro.git $TORCH_ROOT --recursive
cd $TORCH_ROOT
./install-deps
./install.sh -b
source ~/.bashrc

sudo apt-get install --no-install-recommends libhdf5-serial-dev liblmdb-dev -y
luarocks install tds
luarocks install dpnn
luarocks install "https://raw.github.com/deepmind/torch-hdf5/master/hdf5-0-0.rockspec"
luarocks install "https://raw.github.com/Neopallium/lua-pb/master/lua-pb-scm-0.rockspec"
luarocks install lightningmdb 0.9.18.1-1 LMDB_INCDIR=/usr/include LMDB_LIBDIR=/usr/lib/x86_64-linux-gnu
# If you have installed NCCL
# luarocks install "https://raw.githubusercontent.com/ngimel/nccl.torch/master/nccl-scm-1.rockspec"

cd ~
DIGITS_ROOT=~/digits
echo 'export DIGITS_ROOT=~/digits' >> ~/.bashrc
git clone https://github.com/NVIDIA/DIGITS.git $DIGITS_ROOT
sudo pip install -r $DIGITS_ROOT/requirements.txt
sudo pip install -e $DIGITS_ROOT
#Text Classification
sudo pip install $DIGITS_ROOT/plugins/data/textClassification
sudo pip install $DIGITS_ROOT/plugins/view/textClassification
#The Sunnybrook plug-in
sudo pip install $DIGITS_ROOT/plugins/data/sunnybrook/

#Jupyter Notebook kurulumu: http://blog.impiyush.com/2015/02/running-ipython-notebook-server-on-aws.html
#https://github.com/mGalarnyk/Installations_Mac_Ubuntu_Windows/blob/master/AWS/Part_4_IPython_Notebook_Server_on_AWS_EC2_Instance.ipynb
sudo apt-get -y install ipython ipython-notebook
sudo pip install jupyter

#itorch kurulumu
cd ~
sudo apt-get install -y libssl-dev
luarocks install lzmq
git clone https://github.com/facebook/iTorch.git
cd iTorch
luarocks make

# Jupyter Notebook için bazı opsiyonel konfigürasyonlar:
cd ~
jupyter notebook --generate-config

# Herhangi bir editör ile oluşturduğunuz konfigürasyon dosyasını açınız:
nano .jupyter/jupyter_notebook_config.py

# Aşağıdaki satırları, dosyanın en üstüne ekleyiniz:
###basla
c = get_config()
c.NotebookApp.password = u'sha1:e3e456ddf0a3:cc9874c0787e85b370af2cf656b1f337d96650f3' #Hashed şifre: openzeka
c.NotebookApp.ip = '*'
c.NotebookApp.open_browser = False
c.NotebookApp.port = 8888
###bitir

#cd ~/caffe/examples
#jupyter notebook
#Çalışıyorsa herşey hazır demektir.

#Crontab
#Aşağıdaki dosyayı start-digits.sh olarak kaydet
cd ~
pico start-digits.sh
#Aşağıdaki içeriği dosyaya kaydet
###basla 
#!/bin/bash
export CAFFE_ROOT=/home/openzeka/caffe
export TORCH_ROOT=/home/openzeka/torch
. /home/openzeka/torch/install/bin/torch-activate
cd /home/openzeka/digits
./digits-devserver
##bitir

chmod +x start-digits.sh
####
#Aşağıdaki dosyayı start-jupyter.sh olarak kaydet
pico start-jupyter.sh
#Aşağıdaki içeriği dosyaya kaydet
###basla 
#!/bin/bash
PATH=/sbin:/usr/sbin:/bin:/usr/bin:/usr/local/bin
cd ~/caffe/examples
jupyter notebook
##bitir

chmod +x start-jupyter.sh
crontab -e
#2 seç ve entera bas aşağıdakileri sayfa sonuna ekle
@reboot /home/openzeka/start-digits.sh &> /home/openzeka/digits.log 2>&1
@reboot /home/openzeka/start-jupyter.sh > /home/openzeka/jupyter.log 2>&1

Kurulum tamamlandı. Sunucunuzu yeniden başlatın.
NVIDIA Digits http://makine-ip-adresi:5000 portunda, https://makine-ip-adresi:8888 portunda erişilebilir olacaktır. jupyter sertifika kontrolü için güvenlik ayrıcalığı tanımlanızı isteyecektir. Bu işlemi yaptıktan sonra şifre sorduğunda “openzeka” giriniz.
Eğer digits ve jupytere erişemiyorsanız 5000 ve 8888 portu için sunucu erişim izinlerini kontrol ediniz.

Notlar:
Digits çalıştırıldığında Sunnybroke eklentisi kurulu ise aşağıdaki hatayı alabilirsiniz.
######################################
ImportError
Pydicom via ‘import dicom’ has been removed in pydicom version 1.0. Please install the `dicom` package to restore function of code relying on pydicom 0.9.9 or earlier. E.g. `pip install dicom`. Alternatively, most code can easily be converted to pydicom > 1.0 by changing import lines from ‘import dicom’ to ‘import pydicom’. See the Transition Guide at https://pydicom.github.io/pydicom/stable/transition_to_pydicom1.html.
#####################################
Bu durumda pydicom sürümünü düşürmek gerekiyor.Önce varolan sürümü kaldırıp sonrasında 0.9.9 sürümünü kurun.
sudo pip uninstall pydicom
sudo pip install pydicom==0.9.9

#Pydicom 1 sürümüyle birlikte geri dönük uyumsuzluk sorununu gidermek için pydicom yerine dicom kullanılması gerektiği belirtmektedir. Digitsin bu duruma uygun bir güncelleme yayınlaması beklenmektedir.
sudo pip install dicom

Scroll to top