Yazılım Geliştirme

Google Compute Engine’e Derin Öğrenme Kütüphaneleri Kurulumu

1 Eylül 2018

Google Compute Engine’e Derin Öğrenme Kütüphaneleri Kurulumu

Önceki yazıda Google Cloud’da GPU içeren derin öğrenme için kullanılabilecek örnek oluşturmadan bahsetmiştik. Şimdi oluşturduğumuz örneğe CUDA, cuDNN ve derin öğrenme kütüphanelerinin kurulumundan bahsedeceğiz.

Kurulum için öncelikle oluşturduğumuz örneğe SSH ile bağlanmamız gerekiyor. Eğer örneği oluştururken SSH anahtarı eklediyseniz kendi bilgisayarınızdan, eklemediyseniz düzenleye tıkladıktan sonra SSH anahtarınızı ekleyerek aynı şekilde bağlanabilirsiniz. Örneğe dosya upload edeceğimiz için kendi SSH anahtarınızı eklemenizi öneririm. Aksi taktirde fazladan upload ve download işlemi yapmanız gerekir.

CUDA Kurulumu

SSH ile bağlantı sağlandıktan sonra CUDA’yı kurmak için wget ile kurulum dosyasını çekiyoruz. Arşivi açıyoruz, anahtarı ekliyoruz. Kaynakları güncelliyoruz ve son olarak CUDA kurulumunu yapıyoruz.

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

cuDNN Kurulumu

cuDNN kurulumu için NVIDIA developer hesabınızın olması gerekiyor. Bunun için buraya tıklayıp hesap açabilirsiniz. Hesabınızı açtıktan sonra cuDNN sayfasına gidip birkaç soruluk anketi doldurup ardından şartları kabul ettikten sonra uygun CUDA sürümüne göre kurulum dosyasını indirebiliriz. Biz yukarıda CUDA 9.0 kurduğumuz için onun alt sekmesinde bulunan cuDNN v7.2.1 Library for Linux’e tıklayıp kendi bilgisyarımıza indiriyoruz.

Eğer linki kopyalayıp örnek üzerinden wget ile indirmeye çalışırsanız 403 hatası alırsınız. Bu yüzden kendi bilgisayarımıza indirip yine SSH üzerinden örneğimize upload edeceğiz. Kendi bilgisayarımıza indirdiğimiz dosyayı SSH ile karşıya yükelemek için aşağıdaki komut satırı kodu yapısını kullanacağız.

scp <bizim bilgisayarımızdaki dosya yolu> user@ip:<örnekteki dosya yolu>
scp ~/Downloads/cudnn-9.0-linux-x64-v7.2.1.38.tar aaslan@55.55.55.55:~/cudnn-9.0-linux-x64-v7.2.1.38.tar

İlk satırda yapacağımız işi ikinci satırda da örnek olarak nasıl kullanacağımızı göstermeye çalıştım. Burada aaslan benim SSH anahtarını eklediğim kullanıcı, 55.55.55.55 ise örneğimizin IP adresi. İlk kısım karşıya yüklemek istediğimiz dosyanın yolu, ikinci kısımda iki noktadan sonraki kısımsa örnekde nasıl kaydedileceği. Yüklenecek dosya ismi zaman içinde değişebilir, siz hangi dosyayı indirdiyseniz onu yazabilirsiniz.

Bu komutu yazdıktan sonra dosya karşıya yüklenecek ve Google Compute Engine örneğimiz cuDNN kurulumu için hazır hale gelecek.

Upload işlemi bittikten sonra yüklediğimiz dosyayı arşivden çıkartıp gerekli yerlere kopyalıyoruz.

tar -xf cudnn-9.0-linux-x64-v7.2.1.38.tar
sudo cp cuda/include/cudnn.h /usr/local/cuda/include
sudo cp cuda/lib64/libcudnn* /usr/local/cuda/lib64
sudo chmod a+r /usr/local/cuda/include/cudnn.h

CUDA ve cuDNN artık hazır. Şimdi gerekli Python kütüphanelerini kuralım.

Keras, Tensorflow ve Diğer Kütüphanelerin Kurulumu

Ben kurulumları Python 3’e göre yapacağım. Siz isteğinize göre Python 2’yi de kullanabilirsiniz. Python paketlerini kurmak için pip’i kuralım.

sudo apt-get install -y python3-pip python-pip

Ben Python ile çalışırken virtualenv kullanıyorum. Kullanılmasını da öneririm. Bu yüzden virtualenv kurup yeni bir environment oluşturalım ve bu environmenti aktifleştirelim. Daha önce hiç virtualenv kullanmadıysanız ne olduğu ile ilgili ayrıntılı bilgiyi dökümanyasyonda bulabilirsiniz.

sudo pip install virtualenv
cd ~
virtualenv -p python3 venv3 
source ~/venv3/bin/activate

Bundan sonra yapacağımız işlemler direk ana ortamı değil kullandığımız venv3 environmentında olacak. Jupyter notebooku çalıştırmak için de yine bu environmentı aktifleştirdikten sonra yapacağız. Yani “source ~/venv3/bin/activate” kodunu çalıştırdıktan sonra.

Gerekli kütüphaneleri pip ile kuralım.

pip install numpy scipy matplotlib ipython jupyter pandas sympy nose h5py
pip install -U scikit-learn
pip install  tensorflow-gpu
pip install keras

Bunlar benim sık kullandığım kütüphaneler. Başka kütüphanelere de ihtiyacınız varsa aynı şekilde environmentı aktif ettikten sonra kurabilirsiniz sonradan.

Jupyter Notebook Ayarları

Jupyter’i kurduk ama kullanmamız için çeşitli ayarları yapmamız gerekiyor. Öncelikle bir Jupyter config dosyası oluşturmamız gerek. Sonrasında oluşturduğumuz config dosyasıan bütün IP adreslerine izin verecek şekilde ve seçtiğimiz porttan erişebilecek şekilde ayarları confige eklememiz gerekiyor.

jupyter notebook --generate-config
echo -e "c = get_config()" >> ~/.jupyter/jupyter_notebook_config.py
echo -e "c.NotebookApp.ip = '*'" >> ~/.jupyter/jupyter_notebook_config.py
echo -e "c.NotebookApp.open_browser = False" >> ~/.jupyter/jupyter_notebook_config.py
echo -e "c.NotebookApp.port = 8888" >> ~/.jupyter/jupyter_notebook_config.py

Config dosyasını oluşturduktan sonra ihtiyacımız olan ayarları ekledik. Ben burada 8888 portunu seçtim ama siz boşta olan başka bir portu da seçebilirsiniz.

Jupyterin iç ayarlarını yaptık. Şimdi sıra seçtiğimiz port ile ilgili ağ ayarlarını yapmada. Bunun için örneği oluşturduğumuz gibi Cloud Console üzerinden sol taraftaki menüde bulunan VPC Ağı > Güvenlik duvarı kuralları sekmesini açıyoruz. Güvenlik duvarı kuralı oluştura tıklıyoruz ve yeni kuralımızın kurallarını  resimdeki gibi giriyoruz. Yine 8888 yazdığımız port numarası Jupyter confige girdiğimizle aynı olmalı.

Oluştura tıkladıktan sonra artık notebook da kullanılabilir hale gelmiş oldu. Artık “jupyter notebook” komutuyla notebooku çalıştırıp verillen linkin sonundaki token ile birlikte http://<örnek IP adresi>:<seçtiğiniz port>/?token=<verdiği token> şeklinde link ile notebooka erişebilirsiniz.

Burada dikkat etmeniz gereken nokta jupyter notebook komutunu girmeden önce yukarıda bahsettiğim environment aktifleştirme işini yapmanız. Aksi halde notebook yanlış environment ile çalışır ve kurduğumuz kütüphaneleri kullanamazsınız.

Özet

Daha önceden kurduğumuz örneğe CUDA, cuDNN ve derin öğrenme kütüphanelerini kurduk. Sonrasında ise Jupyter ayarlamalarını yaparak örneğimizin IP adresi üzerinden notebookları çalıştırma imkanı sağlamış olduk.

Sürüm farklılıklarına göre hatalar ve ufak değişiklikler olabilir. Bunlarla ilgili değişiklikleri elimden geldiğince yazıp burayı sürekli güncel tutmaya çalışacağım. Hata aldığınız yerleri yorum olarak yazabilirsiniz. İşiniz bittiğinde örneği kapatmayı unutmayın 🙂

Yakın zamanda bütün kurulum aşamalarını otomatize eden küçük bir Shell scripti hazırlamayı düşünüyorum. Hazırlayınca onu da yazıya dahil edeceğim.

Leave a comment

E-posta hesabınız yayımlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir