Ö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> [email protected]:<örnekteki dosya yolu> scp ~/Downloads/cudnn-9.0-linux-x64-v7.2.1.38.tar [email protected]:~/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.