Derin Öğrenmede GPU Gerekli Mi?

Son zamanlarda derin öğrenme konularda çalışma yapan insan sayısında artış bulunmakta. Bununla orantılı olarak sorular da artmakta. Bugün sizi aydınlatmaya çalışacağım soru "Derin öğrenmede GPU gerekli mi?"

Kısa cevap: Hayır

Uzun cevabı merak edenlerle devam edelim biz. Başlık başlık irdeleyerek gitmek istiyorum.

Donanım Olarak

Öncelikle son zamanlarda yapılan çoğu derin öğrenme sunumunda "Neden son zamanlarda veri bilimi coştu?" sorusunun 3 cevabından biri olan "Performans artışı"nı inceleyelim. Merak edip inceleyenlerin bileceği üzere aslında makineyi eğitme kavramı o kadar da soyut değil. Arka planda sürekli olarak değişik ihtimalleri deneyerek istenilen sonuca ulaşılmaya çalışılıyor (supervised learning). Her yanlış tahminde elindeki değerlerin katsayılarını değiştirerek en tutarlı katsayıları bulmaya çalışıyor. Ayrıca her bir veri içinde bir daha kontrol edip, ona göre bazılarını artırıp bazılarını azaltıyor. Son zamanların teknolojileri ile artık çok fazla veriyi (nam-ı diğer Big Data) işleyip daha doğru ve daha tutarlı modeller kurabilir haldeyiz. Tabii eğer halen elinizde dinazor bir makinanız varsa veya işlem gücünüzün kaldırabileceği yükten daha fazla yükün altına girmişseniz uzun süreler bilgisayar başında beklemeniz çok muhtemel.

Algoritmik Olarak

 

Genel olarak yukarıda anlatmaya çalıştığım işlem bu şekilde ilerliyor. Bu işlemin her bir veri için tek tek tekrarlanması gerekmekte. Fakat bu kadarlık bir işlemin firmalar tarafından "Süper Bilgisayarlar" üretmesine varacak düzeyde nasıl bir performans gücü gerektiğini sorabilirsiniz. Cevabı ise yukarıda hazırlamış olduğum görselde sadece bir tane ara katman bulunmakta. Örnek bir görüntü işleme projesinin işleme mantığı incelerseniz ne demek istediğimi daha rahat anlayacaksınız:

Kaynak: https://www.mathworks.com/solutions/deep-learning/convolutional-neural-network.html

 

Geri besleme için bir çıktı alındıktan sonra değişkenlerin ağırlıklarını değiştirmek amacıyla tüm işlemlerin tekrardan yapıldığını ve bunun her bir katman için yapıldığını hayal edin. Evet işte bu gerçekten "süper bilgisayarlık" bir işti.

GPU vs CPU

Stanford Üniversitesindeki akademisyenler Google'ın 5.5 milyar dolar harcayarak yapmış olduğu süper bilgisayarla aynı performansa sahip bir bilgisayarı sadece 33 bin dolara mal etmiş durumdalar.

Aynı veri setinde eğitilmeleri ikisinde de 1 hafta sürüyor ve işte yazımızın konusu olan GPU lar da burada devreye giriyor. Stanford üniversitesi akademisyenlerinin süreçte değiştirdiği şey ise hesaplama işlemlerini CPU ile değil GPU ile yapmaları. İkisi arasındaki farkı açıklayan çok güzel bir video bulunmakta. Mythbusters ekibinin Nvdia için yapmış olduğu özel bir şov. Kısa ama gerçekten çok etkili ve kafa açıcı. Daha fazla uzatmadan videoyu paylaşayım:

 

Görmüş olabileceğiniz üzere GPU lar aynı anda bir sürü işlem yapabilmenize olanak sağlıyorlar yapıları gereği.

Yazımızın uzun cevabını bir yere bağlamak gerekirse:

GPU gerekli değil. Eğer küçük veri setleri ile uğraşacaksanız ve hiç görüntü işleme veya big data işlerine girişmeyecekseniz gerek yok. İlla GPU gücü düşük bir bilgisayar almak istiyorsanız da internet üzerinden kısa bir araştırma ile bulabileceğiniz servislerden işlem gücü satın alarak modelinizi eğitebilirsiniz. Tabii bu şekilde düzenli bir harcama yapmak istemiyorsanız bilgisayarınızı alırken GPU gücü yüksek bir bilgisayar tercih edebilirsiniz.

Okuduğunuz için teşekkür ederim. Bir konuda bir şey sormak isterseniz yorumlar kısmını veya "iletişim" kısmını kullanabilirsiniz. İyi çalışmalar.

Comments (6) -

  • Supervised learning tam olarak arka planda birşeyler deneyerek istenen sonuca ulaşmaktan ziyade label li veri ile yapılan cinsine deniyor diye biliyorum
    • Label'li veriden kasıt aslında sonucu belli olan veri. Bu yüzden arka planda bir şeyler deneyerek aslında bu işaretlenmiş olan veriye ulaşmaya çalışıyor. Bunu yaparken de sürekli olarak katsayıları değiştiriyor.

      Unsupervised learning'de ise elinizde herhangi bir işaretlenmiş veri olmadan, verileri birbirine benzetmeye çalışıyorsunuz. Benzeyen örnekleri de kümeleyerek kendi çıktılarınızı oluşturmuş oluyorsunuz.

      Biraz daha açıklayıcı olmak için bunu da açıklayan bir yazı yazmayı düşünüyordum. Yazma konusunda hızlanmam için iyi bir sebep buldum. Yorum için teşekkürler 🙂
  • Belki alakasız yere yazıyorum ama, C++ dilinin öğrenilmesi üzerine de detaylı bir eğitim paketi hazırlayabilir misiniz? teşekkürler. Ben fen edebiyat kimya ve iktisat mezunuyum ancak yazılımcılığa ilgim çok. Belki bir gün ilerde ek gelir bile elde edebileceğim bir kulvar. Emekleriniz için teşekkürler.
    • Alper Bey merhaba,
      C++ diliyle ilgili bir planımız bulunmuyor açıkçası. Eski bir dil olmasından dolayı her türlü yerli ve yabancı kaynak fazlasıyla bulunmakta.
      Ayrıca günümüz şartlarında da kullanımının azalması pek tercih edilmemesine neden oluyor. Biz de yazarken Python ve C# dillerinde, bu dilleri kullanabildiğimiz alanlarda yazıyoruz makalelerimizi. Yakın zamanda da farklı bir dil düşünmüyoruz.
      Teşekkürler Smile

Add comment