Google Colab ile Ücretsiz GPU Kullanımı

fuat
Deep Learning Türkiye
6 min readJan 24, 2018

Google Colaboratory ile -ücretsiz Tesla K80 GPU üzerinde- Keras, Tensorflow ve PyTorch kullanarak derin öğrenme uygulamaları geliştirebilirsiniz.

Read this in English: https://medium.com/deep-learning-turkey/google-colab-free-gpu-tutorial-e113627b9f5d

Merhaba! Bu yazıda sizlere Google’ın geliştiricilere sunduğu ücretsiz bulut servisi olan Google Colab’ın kullanımını göstereceğim. Colab ile ücretsiz bir şekilde GPU üzerinde derin öğrenme uygulamaları geliştirebilirsiniz.

Aşağıdaki videoda, bu yazıda anlatılanları izleyebilirsiniz.

Google Colab ile Ne Yapabilirim?

  • Python programlama dilinde uygulama geliştirebilirsiniz.
  • Keras, TensorFlow, PyTorch ve OpenCV gibi kütüphaneleri kullanarak derin öğrenme (deep learning) uygulamaları geliştirebilirsiniz. Colab’ı diğer ücretsiz bulut servislerinden ayıran en önemli özellik; Colab’ın ücretsiz GPU sağlamasıdır.

Servis hakkında detaylı bilgiye sıkça sorulan sorular sayfalarından ulaşabilirsiniz.

Google Colab’ı Kullanıma Hazır Hale Getirme

Google Colab’ın kullanımıyla ilgili aşağıdaki adımları takip edebilirsiniz.

1. Google Drive’da Klasör Oluşturma

Colab kendi Google Drive’ınız üzerinde çalıştığı için öncelikle Drive’da kullanılacak klasör yapısını belirlememiz gerekiyor. Ben kendi Google Drive’ımda “uygulama” isminde bir klasör oluşturdum.

2. Dosyaları Yükleme

Daha önce oluşturduğumuz uygulama isimli klasörün içerisine çalıştırmak istediğimiz Python dosyalarımızı yükleyelim. Ben Deep Learning Türkiye topluluğu tarafından hazırlanan Pratik Derin Öğrenme Uygulamaları içerisinde bulunan rakam_tanima_CNN_MNIST.py dosyasını yükledim.

Colab üzerinde Python dosyalarını direkt olarak çalıştırabileceğiniz bir terminal olmadığı için .py uzantılı dosyaları notebook içerisinde çalıştırmak zorundayız.

3. Yeni Notebook Oluşturma

Google Drive üzerinde yeni bir notebook oluşturamadığımız için Google Colab’a giriş yapıyoruz. Colab’a giriş yaptığınızda ilk olarak Recent notebooks adında bir pencere karşılıyor bizi. Hemen sağ altta bulunan NEW NOTEBOOK’a tıklıyoruz.

Açılan pencerede NEW PYTHON 3 NOTEBOOK seçeneğini seçiyoruz.

Açılan sayfada ilk olarak notebook dosya ismini değiştirebilirsiniz. Ben ismini calistir.ipynb şeklinde değiştirdim.

Google Drive’da uygulama adında bir klasörde çalışma yapmak istediğim için öncelikle yeni oluşturduğum calistir.ipynb notebook’unu bu klasöre taşımam gerekiyor. Notebook’ta File >>Locate in Drive yolunu izleyerek Google Drive’da calistir.ipynb dosyasının nerede olduğunu buluyorum.

Aşağıdaki resimde de görebileceğiniz üzere Colab’ı kullanmaya başladığınızda Google Drive üzerinde Colab Notebooks isimli bir klasör oluşturuluyor; yeni oluşturduğunuz notebook’lar da bu klasörde tutuluyor.

Dosyaya sağ tıkladığımda açılan menüde Şuraya taşı seçeneği ile dosyayı Google Drive üzerinde oluşturduğum uygulama isimli klasöre taşıyorum.

Her şey yolunda ise uygulama klasörünüze giriş yaptığınızda aşağıdaki gibi bir manzara ile karşılaşıyor olmanız gerekiyor.

4. GPU’yu Ayarlama

Google Drive üzerinde calistir.ipynb dosyasına sağ tıklayıp Birlikte aç >> Colaboratory yolunu izleyerek notebooku Colab’da açabilirsiniz.

Notebook üzerinde Edit >> Notebook settings yolunu izleyerek aşağıdaki şekilde de göreceğiniz ekrana ulaşıyoruz. Burada Hardware accelerator’u GPU olacak şekilde değiştiriyoruz. Kaydedip bu ekrandan çıkıyoruz.

Colab’da Python Programlama

Yeni oluşturduğumuz Notebook üzerinde ilk olarak Python programlama dilinde ufak bir iki çalışma yapalım.

Bunun için Stanford Üniversitesi’nde hazırlanan Python Numpy Tutorial sayfasını kullanacağım. Derin öğrenmede en çok kullanılan programlama dili olan Python’ı hiç bilmiyorsanız bu sayfayı tavsiye ederim.

Sayfada yer alan üstteki kodları Colab’a yapıştırıp çalıştırıyorum. Aşağıdaki programda sıralama yapan bir fonksiyon belirtilmektedir.

Daha sonra temel veri tipleriyle ilgili aşağıdaki örneği yapalım.

Kodları çalıştırabildik. Siz de bu sayfada yer alan örnekleri deneyerek Python programlama dilini öğrenebilirsiniz.

Şimdi ikinci aşamaya geçelim ve daha önce Drive’a attığımız .py uzantılı dosyayı Colab’da çalıştıralım.

Colab’da .py Uzantılı Dosyaları Çalıştırma

Notebook ile .py uzantılı dosya aynı klasörde olmasına rağmen Notebook’ta aşağıdaki komutu çalıştırdığınızda kötü bir sürprizle karşılaşıyorsunuz. Bu problemin ilerleyen zamanlarda aşılacağını ve başka ek işleme gerek kalmadan Python dosyalarının çalışacağını düşünüyorum.

!python rakam_tanima_CNN_MNIST.py

Sorunu Çözelim

Google Drive ile Colab’ı tam olarak bağlamak için calistir.ipynb dosyamızda aşağıdaki kodları çalıştırıyoruz.

!apt-get install -y -qq software-properties-common python-software-properties module-init-tools
!add-apt-repository -y ppa:alessandro-strada/ppa 2>&1 > /dev/null
!apt-get update -qq 2>&1 > /dev/null
!apt-get -y install -qq google-drive-ocamlfuse fuse
from google.colab import auth
auth.authenticate_user()
from oauth2client.client import GoogleCredentials
creds = GoogleCredentials.get_application_default()
import getpass
!google-drive-ocamlfuse -headless -id={creds.client_id} -secret={creds.client_secret} < /dev/null 2>&1 | grep URL
vcode = getpass.getpass()
!echo {vcode} | google-drive-ocamlfuse -headless -id={creds.client_id} -secret={creds.client_secret}

Kodları çalıştırdığınızda aşağıdaki gibi bir sonuçla karşılaşmanız gerekiyor.

Çalıştırdığımız kodun altında çıkan linke tıklayarak doğrulama kodumuzu alıyoruz. Doğrulama kodunu Enter verification code yazan yere yapıştırıp Enter’lıyoruz. Toplam 2 kere kutucuk çıkıyor. İki kutucuğa da doğrulama kodumuzu yapıştırıp Enter’a basıyoruz.

İşlemler tamamlandığında aşağıdaki gibi bir sonuçla karşılaşmanız gerekir.

Doğrulama işlemlerini tamamladıktan sonra ilk önce şunu:

!mkdir -p drive
!google-drive-ocamlfuse drive

Sonra da aşağıdaki kodu çalıştırıyoruz. uygulama değil de farklı bir klasörde çalışmak isterseniz uygulama yazan yeri değiştirmeniz gerekir.

import sys
sys.path.insert(0, 'drive/uygulama')

Nihayet Kodu Çalıştırıyoruz

İlk önce Keras’ı yükleyelim.

!pip install -q keras

Keras’ı yükledikten sonra 0‘dan 9’a el yazısı rakamların Evrişimli Sinir Ağları (Convolutional Neural Networks) ile tanınmaya çalışıldığı rakam_tanima_CNN_MNIST.py örneğini aşağıdaki gibi çalıştırabiliriz. Dosyada yer alan batch boyutu, epoch sayısı vb. hiperparametreleri istediğiniz gibi değiştirebilirsiniz. Bu konuda bilgi sahibi değilseniz Derin Öğrenme Uygulamalarında En Sık kullanılan Hiper-parametreler yazısını okuyabilirsiniz.

rakam_tanima_CNN_MNIST.py dosyasının içeriği
!python3 drive/uygulama/rakam_tanima_CNN_MNIST.py

Üstteki kodu çalıştırdığımızda bir iki dakika içerisinde aşağıdaki sonucu elde ediyoruz.

Sıkça Sorulan Sorular

Hangi Kütüphaneleri Yükleyebilirim?

Colab ile birlikte kütüphaneleri aşağıda komutlarla yükleyebilirsiniz.

Keras

!pip install -q keras
import keras

PyTorch

!pip install -q http://download.pytorch.org/whl/cu75/torch-0.2.0.post3-cp27-cp27mu-manylinux1_x86_64.whl torchvision
import torch

OpenCV

!apt-get -qq install -y libsm6 libxext6 && pip install -q -U opencv-python
import cv2

XGBoost

!pip install -q xgboost==0.4a30
import xgboost

GraphViz

!apt-get -qq install -y graphviz && pip install -q pydot
import pydot

7zip Reader

!apt-get -qq install -y libarchive-dev && pip install -q -U libarchive
import libarchive

Diğer kütüphaneler

Diğer kütüphaneleri !pip install veya !apt-get install ile yükleyebilirsiniz.

Şu anda GPU’da mı çalışıyorum?

Colab’da an itibariyle GPU kullanıp kullanmadığınızı görebilmek için aşağıdaki kodu çalıştırabilirsiniz.

import tensorflow as tf
tf.test.gpu_device_name()

Kodu çalıştırdığınızda:

  • iki nokta görüyorsanız CPU’dasınız,
  • ‘/device:GPU:0’ görüyorsanız GPU’dasınız demektir.

Hangi GPU’yu Kullanıyorum?

from tensorflow.python.client import device_lib
device_lib.list_local_devices()

Üstteki kodu çalıştırdığınızda GPU’daysanız şöyle bir ekranla karşılaşırsınız. Görebileceğiniz üzere Tesla K80 üzerinde çalışıyoruz.

Bu kodu aynı zamanda GPU kullanıp kullanmadığınız test etmek için de kullanabilirsiniz. CPU’daysanız şöyle bir ekranla karşılaşırsınız.

Kullandığım RAM’in Özelliklerini Nasıl Görebilirim?

Aşağıdaki kodu çalıştırmanız yeterli.

!cat /proc/meminfo
RAM özellikleri

Kullandığım CPU’nun Özelliklerini Nasıl Görebilirim?

Aşağıdaki kodu çalıştırmanız yeterli.

!cat /proc/cpuinfo

Sonuç

Bu sonuçlardan şu çıkarımları yapabiliriz:

  • Artık binlerce dolarlık (fiyatına internetten bakabilirsiniz) Tesla K80'i ücretsiz olarak kullanabiliyoruz.
  • %0.73 hata ile el yazısı rakamları tanıyabilen bir yapay zeka (evet derin öğrenme, makine öğrenmesi, yapay sinir ağı vb. değil yapay zeka) uygulamasını yalnızca bir-iki dakikada geliştirdik!

Ülkemizdeki yapay zeka çalışmalarına ivme kazandırması dileğiyle…

Sorunuz olursa buradan ya da LinkedIn’den bana ulaşabilirsiniz.

--

--