Çıkarım için GPU veya CPU kullanmalı mıyım?


13

Bir GPU tarafından eğitilmiş derin bir öğrenme sinir ağı çalıştırıyorum. Şimdi bunu çıkarsama için birden çok ana bilgisayara dağıtmak istiyorum. Soru, çıkarım için GPU'ları mı yoksa CPU'ları mı kullanmam gerektiğine karar vermenin koşulları nelerdir?


Aşağıdaki yorumlardan daha fazla ayrıntı ekleniyor.

Ben bu konuda yeniyim, bu yüzden rehberlik takdir edilmektedir.

  • Bellek : GPU K80

  • Çerçeve : Cuda ve cuDNN

  • İş yükü başına veri boyutu : 20G

  • Kullanılacak bilgi işlem düğümleri : her bir ölçek için bir seçenek olsa da

  • Maliyet : Sebepler mantıklıysa bir GPU seçeneği alabilirim

  • Dağıtım : Bulutta değil, kendi barındırılan çıplak metal sunucularında çalışıyor.

Şu anda CPU üzerinde çalışıyorum çünkü uygulama iyi çalışıyor. Ama bu sebepten ötürü, neden GPU'yu bile dikkate alacağından emin değilim.


İki potansiyel yaklaşım arasındaki karşılaştırmayı tavsiye etmek için, başkalarının görevinizin bazı ayrıntılarını bilmesi yararlı olacaktır. Örneğin, verilerinizin boyutu nedir, GPU'nuzun bellek kapasitesi nedir, kullanmayı planladığınız bilgi işlem düğümü sayısı ve belki de aklınızda hangi harita azaltma çerçevesine sahip olursunuz.
Dinamik Yıldız Tozu

@DynamicStardust ... ve maliyeti. Ucuz EC2 CPU düğümleri veya pahalı ECW GPU düğümleri? Bu çok belirsiz bir soru.
Spacedman

Yanıtlar:


8

@Dan @SmallChess, tamamen katılmıyorum. Antrenman için birçok parallalizasyondan GPU'lar tarafından faydalanılabilir ve bu da çok daha hızlı bir eğitim ile sonuçlanabilir. Çıkarım için, bu parallalizasyon çok daha az olabilir, ancak CNN'ler yine de bundan daha hızlı çıkarımla sonuçlanan bir avantaj elde edecektir. Şimdi sadece kendinize sormalısınız: daha hızlı çıkarım önemli mi? Bu ek bağımlılıkları (iyi bir GPU, doğru dosyalar yüklendi vb.) İstiyorum?

Hız bir sorun değilse, CPU'ya gidin. Bununla birlikte, GPU'ların deneyimimde daha hızlı bir büyüklük sırası yapabileceğini unutmayın.


İlginç bir noktaya değindin, CNN çıkarsama sırasında neden paralel işlemeden faydalanacak?
Dan

1
Eğitim ile paralel hesaplamalar açık olabilir: her birinin birbirinden tamamen ileriye doğru beslenmesi gereken birden fazla girdiniz vardır. Bir evrişim için, çekirdek çoklu giriş 'yamaları' üzerinde çoğaltılır. Bunlar da paralel olarak yapılabilir. CNN'yi bu kadar güçlü yapan da budur: sadece eğitim almak için daha az parametreye ihtiyaç duymakla kalmaz, aynı zamanda daha paralel hale gelir, böylece GPU'ları çok güçlü kılar. Ne üzerinde çalıştığınızı bilmiyorum, ancak görüntülerin segmentasyonu (piksel olarak sınıflandırma) üzerinde çalışıyorum ve çıkarım için GPU'ları kullanırken büyük bir hız artışı elde ediyorum (> x10).
Laurens Meeus

@LaurensMeeus Ben de bu spektrumda yeniyim ve bulut sanal makinelerinin maliyet analizini yapıyorum. Görüntü analizini değil, sadece metin analizini yapıyorsam, eğitim için hala GPU kullanabilir miyim?
Squ1rr3lz

2
@ Squ1rr3lz% 95 yapmalıyım. Her türlü paralel bilgi işlem GPU'lara avantaj sağlamalıdır. Bu alanda uzman değilim, ancak metin analizinin de evrişimsel katmanlarla (2D yerine 1D olsun) olduğu göz önüne alındığında, bu zaten daha hızlı olabilir / olmalı. Mümkünse, GPU'yu etkinleştirmenin / devre dışı bırakmanın ne gibi bir etkisi olduğunu kendiniz deneyin.
Laurens Meeus

6

CPU yerine bir GPU üzerinde çıkarım yapmak, eğitimde olduğu gibi hızlanmaya daha az, hafızaya biraz daha az bir hız kazandırır.

Ancak, dediğin gibi, uygulama CPU'da iyi çalışıyor. Çıkarım hızının uygulamada bir darboğaz olduğu noktaya gelirseniz, bir GPU'ya yükseltmek bu darboğazı hafifletir.


Tamamen katılıyorum. CPU mesajının neden tepesinde olduğunu hala anlamıyorum.
Laurens Meeus

1
GeForce GTX Titan X, NVidia'nın
seanhalle

4

GPU'yu sadece eğitim için kullanırsınız çünkü derin öğrenme en uygun çözüme ulaşmak için büyük hesaplama gerektirir. Ancak, dağıtım için GPU makinelerine ihtiyacınız yoktur .

Örnek olarak Apple'ın yeni iPhone X'ini ele alalım. Yeni iPhone X, yüz tanıma için gelişmiş bir makine öğrenme algoritmasına sahiptir. Apple çalışanlarının eğitim ve validasyon için bir makine kümesine sahip olması gerekir. Ancak iPhone X'inizin sadece modeli çalıştırmak için bir GPU'ya ihtiyacı yoktur.


Bu açıklama için teşekkürler. O zaman anlamadığım şey, Nvidia'nın CPU iyi yapabiliyorsa, çıkarım için en iyi çözüm olarak GPU'ların kullanımını teşvik etmesidir. Ayrıca Google, CPU'yu yapıyorsa neden TPU'yu çıkarım için zorluyor? Paralel hesaplama ile bir ilgisi var mı?
Dan

3
@SmallChess IPhone X'in içinde sadece çıkarım için gelişmiş TPU benzeri bir işlemci yoktu? extremetech.com/mobile/…
Laurens Meeus

3
@SmallChess Ama neden olamaz? Belki de tam olarak anlamıyorum. Hâlâ hızda iyileşme görmeyecek misiniz?
Laurens Meeus

2
Dürüst olmak gerekirse, NVidia'nın harika bir pazarlama departmanı var ve NVidia GPU'larını çıkarsama için kullanmayı teşvik etmek onların yararınadır. Sizin değil onların çıkarları içindedir.
seanhalle

1
NVidia'nın blogundan: Çıkarım yaparken NVIDIA Tegra X1 vs i7 6700K CPU için "258 - 242 görüntü / saniye": devblogs.nvidia.com/…
seanhalle 4:18
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.