Mevcut tüketici sınıfı GPU'larda ne büyüklükte sinir ağları eğitilebilir? (1060,1070,1080)


9

yaygın tüketici sınıfı GPU'larda eğitilebilir sinir ağlarının büyüklüğü hakkında genel bir tahmin yapmak mümkün müdür ? Örneğin:

Hareketin Ortaya Çıkışı (Takviye) makalesi nöronların tanh aktivasyonunu kullanarak bir ağı eğitir. Düzlemsel Yürüteç için 300.200.100 adet olan 3 katmanlı bir NN'ye sahiptirler . Ama donanımı ve zamanı bildirmiyorlar ...

Ancak genel bir kural geliştirilebilir mi? Ayrıca sadece mevcut ampirik sonuçlara dayanmaktadır, örneğin:

X Sigmoid aktivasyonu kullanan birimler, 1060'da saatte bir Y öğrenme tekrarını çalıştırabilir.

Veya b yerine a etkinleştirme işlevinin kullanılması performansta zamanın düşmesine neden olur.

Bir öğrenci / araştırmacı / meraklı zihin bu ağlarla oynamak için bir GPU satın alacaksa, ne elde edeceğinize nasıl karar verirsiniz? Görünüşe göre giriş seviyesi bütçe seçeneği 1060, ancak yüksek güçlü bir masaüstü oluşturmak ve tasarruflu $ isteğe bağlı bulut altyapısı yerine sadece berbat bir netbook almanın daha akıllı olmadığını nasıl değerlendirebilirsiniz.

Soru için motivasyon: Sadece 1060 satın aldım ve (zekice, daha sonra soruyu sormak için ha ha) $ 'ı tutup korumamı ve bir Google Cloud hesabı oluşturmamı merak ettim. Ve eğer yüksek lisans tez simülasyonumu GPU'da çalıştırabilirsem.

Yanıtlar:


5

Genellikle sorun modeli video RAM'e sığdırmaktır. Değilse, büyük çaba harcamadan modelinizi hiç eğitemezsiniz (modelin parçalarını ayrı ayrı eğitmek gibi). Eğer öyleyse, zaman senin tek sorunun. Ancak Nvidia 1080 gibi tüketici GPU'ları ile Nvidia K80 gibi çok daha pahalı GPU hızlandırıcıları arasındaki eğitim süresindeki fark çok büyük değil. Aslında en iyi tüketici kartları GPU hızlandırıcılarından daha hızlıdır, ancak VRAM gibi diğer özelliklerden yoksundur. Rastgele karşılaştırmalar ve karşılaştırmalar: http://timdettmers.com/2017/04/09/which-gpu-for-deep-learning/ , https://medium.com/@alexbaldo/a-comparison-between-nvidias-geforce -gtx-1080-ve-tesla-p100-için-derin-öğrenme-81a918d5b2c7

Modellerinizin VRAM'a uyup uymadığını hesaplamak için, ne kadar veriye ve hangi hiperparametrelere (girişler, çıkışlar, ağırlıklar, katmanlar, parti boyutu, hangi veri türü vb.)


1
İyi cevap, ama 6 / 8GB Bellek'e ne tür bir model uymuyor? Her bir eğitim verisi grubu + modeli diyelim. Modelin boyutunu nasıl hesaplayacağımı bilmiyorum ama birkaç bin nöronu hayal edemiyorum ve ağırlıkları Gigabyte Bellek'i doldurabiliyor. Google'ın Önizleme yapılan görüntü tanıma modeli birkaç yüz Megs tensorflow.org/tutorials/image_recognition'dır ve buradaki diğerlerinden daha fazlasını tanıyabilir. Apple, iPhone'daki çip üzerinde çalışıyor, böylece modelin kendisi T verilerinden çok daha küçük olmalı. Ve bunların hepsi RAM'de olmak zorunda değil mi?
pascalwhoop

Çoğunlukla NLP modelleri, çoğunlukla çok katmanlı RNN'lerle çalışıyorum ve kelime bilgisi büyükse, 8 GB bile yeterli olmayabilir. Eğitimin genellikle tahminlerden daha fazla alana ihtiyacı olduğunu unutmayın (degradeler de yer kaplar).
C. Yduqoli

3

Bir uyarı olarak, temel teknolojik sınırlara karşı baskı yapmadığınız sürece, hesaplama hızı ve kaynaklarının bir sinir ağı mimarisi geliştirirken tasarım mantığına ikincil olması gerektiğini öneririm.

Bununla birlikte, bu yılın başlarında biyoenformatik analitik boru hatlarını tüm genom dizileme verileriyle kapsayan MS tezimi bitirdim - bu projenin kümeler iş yöneticimize göre geliştirilmesi 100.000 saatten fazla işlem süresi aldı. Süre bitiminde, kaynaklar gerçek bir kısıtlama olabilir ve hız kritik olabilir.

Sorularınızı anladığım gibi cevaplamak için:

Parayı bulutta zaman satın almak için kullanmak daha iyi olur muydu?

Muhtemelen. 1060 için harcadığınız birkaç yüz dolar sizi bulutlarınızdaki model (ler) inizi eğitmeye götürür. Dahası, anlayabildiğim kadarıyla, GPU'nun% 100 oranında krank etmesini istemiyorsunuz (örneğin, kripto para madenciliği yapsaydınız). Son olarak, bulut örnekleriyle ölçeklendirebilirsiniz, aynı anda birden fazla modeli eğiterek yerleştiğiniz mimarinin keşfini ve onaylanmasını hızlandırabilirsiniz.

Belirli bir GPU'da bir sinir ağının işlem süresini ölçmenin bir yolu var mı

Eh, Büyük O bir tahmincisi, ancak daha kesin bir yöntem istiyorum gibi geliyor. Eminim varlar, ama tahminlerinizi iş parçacıkları, bellek, kod yinelemeleri, vb. 1060? Kodunuz ve metal arasındaki her şeyi anlayarak çok iyi bir tahmin yapabilirsiniz, ancak sonuçta muhtemelen zaman ve çabaya değmez; büyük O gösteriminin (eğer yapacaksanız basit model) hesaplama süresindeki değişimin çoğunu yakaladığını doğrulayacaktır. Darboğazlar fark ederseniz yapabileceğiniz bir şey performans profili oluşturmaktır.


2

İhtiyacınız olan şeye bağlıdır. Herhangi bir kaynak üzerinde herhangi bir boyutta ağ eğitebilirsiniz. Sorun eğitim zamanıdır. Inception'ı ortalama bir CPU'da eğitmek istiyorsanız, birleşmesi aylar alacaktır. Dolayısıyla, her şey sonuçlarınızı ağınıza göre görmek için ne kadar bekleyebileceğinize bağlıdır. Sinir ağlarında olduğu gibi, sadece bir işlemimiz yoktur, ancak birçoğu (birleştirme, maksimum havuzlama, dolgu vb.), Aradığınız gibi bir tahmin yapmak imkansızdır. Sadece kötü şöhretli ağları eğitmeye başlayın ve zamanı ölçün. Ardından, aradığınız ağları eğitmenin ne kadar süreceğini enterpolasyon edebilirsiniz.


Farklı NN işleri için bilgi toplayan bir kaynağın farkında mısınız? Öyleyse aşağıdakilerin bir listesi: NN tipi, birim sayısı, hiperparametreler, veri seti boyutu, Kullanılan donanım, geçen zaman? Bu bir başparmak sezgi kuralı geliştirmeye yardımcı olacaktır
pascalwhoop
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.