Yazılım Geliştirme

Google Cloud’da Derin Öğrenme Ortamı Oluşturmak

25 Ağustos 2018

Google Cloud’da Derin Öğrenme Ortamı Oluşturmak

Derin öğrenme ve görüntü işleme çalışmalarım için daha önceden Crestle kullanıyordum. Saatlik $0.59 ücret talep ediyordu ve alt yapısında Nvidia Tesla K80 vardı. Malum dolar yükseldikçe(bu yazıyı yazarken 6.01) saatlik maliyeti de o oranda artıyor. Fiziksel GPU fiyatları da aynı şekilde arttığı için kısa vadede en iyi çözümün hala bulut olduğunu düşünüyorum. Bundan dolayı da daha ucuz bir bulut sistemi araştırmaya başladım.

Zaten bulut GPU diyince akla ilk gelenler AWS ve Google Cloud. Bu ikisinin fiyatlarını araştırdım ve Crestle’dan daha ucuz olduğunu gördüm. Şöyle ki aslında Crestle da kendi GPU data centerı yerine bunları kullanıyor, üzerine biraz kar ekleyip son kullanıcıya hazır Jupyter notebook olarak satıyor. Dolayısıyla ortam kurulumunu kendimiz yaparak çok daha ucuza mal etmiş oluyoruz. Ek olarak , Google Cloud’da sürekli kullanım indirimi diye bir indirim türü var. Ne kadar uzun kullanırsanız o kadar indirim yapılıyor. Bu da ciddi düşünenler için bir avantaj olabilir. AWS’da var mı bilmiyorum, bilen biri beni de aydınlatırsa sevinirim.

Bir de Google Cloud’da preemptible GPU’ların saatlik fiyatları diğerlerine göre çok daha ucuz. Tabi ki normal GPU servisine göre de farklılıkları var.

Preemptible GPU’lar

Preemptible GPU’lar normal GPU’lardan çok daha ucuz. Örneğin Nvidia Tesla K80 içeren bir örneğin(instance) saatlik ücreti normalde $0.349 iken preemptible olduğunda $0.146 oluyor. İki katından daha da az bir ücret.

Normal GPU’larda herhangi bir kesinti söz konusu değilken başka bir yerde GPU ihtiyacı doğarsa sizin GPU’nuz terminate edilebilir. Google Cloud dökümantasyonunda böyle bir şeyin olma ihtimalinin az olduğunu söylese de yine de bölge yoğunluklarına bağlı olarak gerçekleşmesi ihtimal dahilinde. Eğer böyle bir kesinti çalıştırdığınız şeyleri sekteye uğratacaksa veya production ortamı kuracaksanız bu preemptible örnekleri kullanmanızı tavsiye etmem.

Preemptible GPU’ların maksimum kullanım süresi 24 saat. Yani açtığınız GPU’yu 24 saat içerisinde siz kendiniz kapatmazsanız otomatik olarak kapatıyor kendisi. Yine bu da production ortamı için sıkıntı ama benim gibi derin öğrenme çalışmaları yapacak olanlar için bir sorun teşkil etmeyecektir.

Preemptible GPU’larla ilgili daha fazla bilgi için dökümantasyonu inceleyebilirsiniz.

Bu ön bilgilendirmelerden sonra nasıl bir ortam kuracağımıza karar verdiysek ortamımızı kurmaya başlayalım.

Proje Oluşturmak ve Google Cloud Ayarları

  1. Oluşturacağımız örnekler bir Google Cloud projesinin parçası olacağı için öncelikle bir proje oluşturmamız gerekiyor. Daha önceden oluşturduğunuz bir proje üzerinden de devam edebilirsiniz. Google Cloud Console’a girip projemizi oluşturalım veya daha önceden oluşturduğumuz projemizi seçelim.
  2. Projeyi oluşturduktan sonra GPU ekleyebilmemiz için faturalandırmayı etkinleştirmemiz gerekiyor. Deneme süresindeki 300 dolarlık hediye ile GPU servisleri maalesef kullanılamıyor. Faturalandırmayı etkinleştirmek için soldaki Faturalandırma sekmesinden faturalandırmayı etkinleştirelim.
  3. Faturalandırmayı etkinleştirmek yetmiyor maalesef. Buna ek olarak varsayılan olarak 0 tanımlanan GPU kotasını artırmamız gerekiyor. Bunun için soldaki menüden IAM ve Yönetici > Kotalar sekmesini açıyoruz. Metriklerden istediğimiz GPU modellerini, konumdan da istediğimiz sunucu lokasyonlarını seçip kotaları düzenleye tıklıyoruz.
  4. Kotaları düzenle’ye tıkladıktan sonra karşımıza iletişim bilgileri ekranı geliyor. İletişim bilgilerimizi doğru girip devam ediyoruz. Gelen ekranda istediğimiz GPU miktarlarını ve bunları kullanış amacımızı girerek başvuruyu tamamlıyoruz. İstediğimiz miktarlara uçuk sayılar yazmamaya dikkat edelim. Kullanış amacı kısmına tek cümleyle ‘Derin öğrenme için kullanacağım.’ yazabilirsiniz. Ben hep böyle yazıyorum bir sıkıntı çıkmadı şimdiye kadar 🙂
  5. Bir çay suyu koyup çay demleyelim ve kota artırımı ile ilgili onay mailini bekleyelim. Başvuru sonrasında yaklaşık 1 saat içinde kota ile ilgili onaylandı veya reddedildi mesajı gelecektir. Bu e-posta geldikten sonra GPU kullanmaya başlayabiliriz.

Örnek Oluşturmak

Projemiz, faturalandırmamız ve kotalarımız hazır olduğuna göre artık örneğimizi oluşturabiliriz.

  1. Yine soldaki menüden Compute Engine > Sanal Makine Örnekleri sekmesini açıp mavi Oluşturun butonuna tıklayalım.
  2. Örnek ismi için istediğiniz herhangi bir ismi seçebilirsiniz. Ör: server1, trabzonlu, eFQaRLi_SeRSeRi, etc…
  3. Bölge olarak seçtiğiniz bölgede GPU olması gerekmektedir. Her bölgede GPU yok, GPU olan bölgelerde de bütün GPU modelleri yok. Genelde K80, v100, P100’den 2 tanesi oluyor. Ben europe-west-1b(Belçika) tercih ediyorum genelde, K80 ve P100 var.
  4. Çekirdek ve bellekte düzenlemeye ihtiyaç duymuyorum ben. Siz kendinize göre düzenleyebilirsiniz.
  5. GPU eklemek için ise Özelleştir’e tıklıyoruz ve gelişmiş seçenekler karşımıza geliyor. GPU’lar kısmından GPU sayısına 1 veya istediğiniz adeti, GPU türünden de istediğiniz modeli seçebilirsiniz. Ben daha ucuz ve bana yeterli geldiği için 1 tane K80 seçiyorum.
  6. CPU, bellek ve GPU’muzu seçtik. Şimdi işletim sistemi ve harici diskimizi seçelim. Bunun için Önyükleme diski bölümündeki değiştire tıklayalım. Buradan Ubuntu 16.04 LTS seçelim. 18.04 de seçebilirsiniz ama bütün kütüphanelerin uyumlu sürümleri henüz çıkmadı. Önyükleme diski türünü SSD veya standart(HDD) seçebilirsiniz. Boyut olarak 10-20GB yeterli gelir başlangıç için. Ben 20GB SSD tercih ediyorum.
  7. Hem HTTP hem de HTTPS trafiğine izin ver seçeneklerini işaretleyelim.
  8. (Opsiyonel) Güvenlik duvarı kısmının altında Management, security, disks, networking, sole tenancy yazısına tıklayalım. Yukarıda bahsettiğimiz preemptible olarak oluşturmak için Yönetim sekmesindeki Önceliklendirebilirlik seçeceğini Açık olarak seçelim.
  9. (Opsiyonel) Eğer sunucuyu kontrol etmek için browser’a ek olarak SSH bağlantısı kullanmak isterseniz Güvenlik sekmesinden SSH anahtarınızı ekleyebilirsiniz.
  10. Bu bahsettiğim yerler dışındaki alanları değiştirmenize gerek yok. İhtiyacınıza göre düzenleyebilirsiniz eğer isterseniz.
  11. Oluştur butonuna basıp örneğimizi oluşturalım.

Oluştur butonuna bastıktan sonra artık sayaç dönmeye başlayacağı için işimiz bittikten sonra kapatmayı unutmayalım. Yoksa ay sonunda yüksek faturalarla karşılaşabiliriz.

Özet

Google Cloud GPU sistemleri ile ilgili bilgiler vermeye, preemptible ile normali karşılaştırmaya çalıştık. Sonrasında GPU içeren örnekleri oluşturmak için gerekli ön ayarları yaptık. Sonrasında da örneğimizi oluşturduk.

Normalde gerekli Python kütüphanelerin kurulumu ve çalıştırılmasını da bu yazıda anlatmayı düşünüyordum ama sandığımdan çok daha uzun oldu 😀 Bir sonraki yazıda da onlardan bahsedeyim.

Leave a comment

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