Jaki rozmiar sieci neuronowych można wyszkolić na obecnych procesorach graficznych klasy konsumenckiej? (1060,1070,1080)

9

czy można podać ogólną zasadę dotyczącą wielkości sieci neuronowych, które można trenować na zwykłych procesorach graficznych klasy konsumenckiej ? Na przykład:

Pojawienie lokomocji (wzmocnienie) papieru pociągi do sieci przez aktywację tanh neuronów. Mają trójwarstwowy NN z 300 200 100 jednostkami dla Planar Walker . Ale nie zgłaszają sprzętu i czasu ...

Ale czy można opracować ogólną zasadę? Również na podstawie bieżących wyników empirycznych, na przykład:

Jednostki X używające aktywacji sigmoidalnej mogą wykonywać iteracje uczenia Y na godzinę na 1060.

Lub użycie funkcji aktywacji a zamiast b powoduje zmniejszenie wydajności razy.

Jeśli student / badacz / ciekawy umysł zamierza kupić procesor graficzny do zabawy z tymi sieciami, jak zdecydujesz, co otrzymasz? 1060 jest najwyraźniej opcją budżetową na poziomie podstawowym, ale jak można ocenić, czy nie jest mądrzejsze, aby po prostu zdobyć głupiego netbooka zamiast budować komputer stacjonarny o dużej mocy i wydać zaoszczędzone $ na infrastrukturę chmury na żądanie.

Motywacja do pytania: właśnie kupiłem 1060 i (sprytnie, zadając pytanie, huh) zastanawiam się, czy nie powinienem był zatrzymać $ i założyć konto Google Cloud. A jeśli mogę uruchomić moją symulację pracy magisterskiej na GPU.

pascalwhoop
źródło

Odpowiedzi:

5

Zwykle problemem jest dopasowanie modelu do wideo RAM. Jeśli tak nie jest, nie możesz w ogóle trenować swojego modelu bez dużego wysiłku (np. Osobno trenować części modelu). Jeśli tak, czas jest twoim jedynym problemem. Ale różnica w czasie szkolenia między konsolami GPU takimi jak Nvidia 1080 a znacznie droższymi akceleratorami GPU, takimi jak Nvidia K80, nie jest bardzo duża. W rzeczywistości najlepsze karty konsumenckie są szybsze niż akceleratory GPU, ale brakuje im innych właściwości, takich jak VRAM. Losowe porównania i testy porównawcze: http://timdettmers.com/2017/04/09/which-gpu-for-deep-learning/ , https://medium.com/@alexbaldo/a-comparison-between-nvidias-geforce -gtx-1080-and-tesla-p100-for-deep-learning-81a918d5b2c7

Aby obliczyć, czy twoje modele pasują do VRAM, po prostu przybliż przybliżoną liczbę danych i posiadane hiperparametry (dane wejściowe, wyjściowe, wagi, warstwy, wielkość partii, typ danych itd.).

C. Yduqoli
źródło
1
Dobra odpowiedź, ale jaki model nie pasuje do pamięci 6 / 8GB? Powiedzmy, że każda partia danych treningowych + model. Nie mam pojęcia, jak obliczyć rozmiar modelu, ale nie wyobrażam sobie kilku tysięcy neuronów, a ich waga może wypełnić gigabajty pamięci. Model Pretrained rozpoznawania obrazów od Google to kilkaset megabajtów tensorflow.org/tutorials/image_recognition i który może rozpoznać więcej niż większość innych. Apple obsługuje go na chipie w iPhonie, więc sam model musi być znacznie mniejszy niż dane T. A to nie musi być wszystko w pamięci RAM, prawda?
pascalwhoop
Często pracuję z modelami NLP, głównie wielowarstwowymi RNN, a jeśli rozmiar słownictwa jest duży, nawet 8 GB może nie wystarczyć. Pamiętaj, że trening zwykle wymaga więcej miejsca niż przewidywanie (gradienty również zajmują miejsce).
C. Yduqoli,
3

Jako ostrzeżenie sugeruję, że o ile nie przekraczasz podstawowych ograniczeń technologicznych, szybkość obliczeń i zasoby powinny mieć drugorzędne znaczenie dla uzasadnienia projektu przy opracowywaniu architektury sieci neuronowej.

To powiedziawszy, na początku tego roku ukończyłem pracę magisterską, która dotyczyła potoków analityki bioinformatycznej z danymi sekwencjonowania całego genomu - projekt ten zajął ponad 100 000 godzin obliczeniowych, zgodnie z rozwojem naszego menedżera zadań w klastrach. Kiedy dotrzymujesz terminu, zasoby mogą być prawdziwym ograniczeniem, a szybkość może być krytyczna.

Więc, aby odpowiedzieć na twoje pytania, tak jak je rozumiem:

Czy lepiej byłoby wykorzystać pieniądze na zakup czasu w chmurze?

Prawdopodobnie. Kilkaset dolarów, które wydałeś na 1060, zabrałoby cię daleko na szkolenie modeli w chmurze. Co więcej, o ile mogę stwierdzić, nie wymaga się, aby procesor graficzny uruchamiał się przez 100% czasu (zrobiłbyś to, powiedzmy, wydobywając kryptowaluty). Wreszcie za pomocą instancji chmury można skalować, trenując wiele modeli jednocześnie, co może przyspieszyć eksplorację i weryfikację dowolnej architektury, na której się osadzasz.

Czy istnieje sposób na zmierzenie czasu obliczeń sieci neuronowej na danym GPU

Cóż, Big O jest jednym estymatorem, ale wygląda na to, że chcesz bardziej precyzyjnej metody. Jestem pewien, że istnieją, ale przeciwdziałam, że możesz dokonać oszacowania za pomocą prostych obliczeń koperty uwzględniających wątki, pamięć, iteracje kodu itp. Czy naprawdę chcesz zagłębić się w procesor przetwarzania GPU w 1060? Możesz być w stanie podać bardzo dobre oszacowanie, rozumiejąc wszystko, co dzieje się między twoim kodem a metalem, ale ostatecznie nie jest to warte czasu i wysiłku; prawdopodobnie potwierdzi, że notacja Big O (model prosty, jeśli wolisz) przechwytuje większość zmian w czasie obliczeń. Jedną z rzeczy, które możesz zrobić, jeśli zauważysz wąskie gardła, jest profilowanie wydajności.

Greenstick
źródło
2

To zależy od tego, czego potrzebujesz. Możesz trenować dowolną wielkość sieci na dowolnym zasobie. Problemem jest czas treningu. Jeśli chcesz trenować Incepcję na przeciętnym procesorze, konwergencja zajmie miesiące. Wszystko zależy więc od tego, jak długo możesz czekać na wyniki w oparciu o sieć. Ponieważ w sieciach neuronowych nie mamy tylko jednej operacji, ale wiele (takich jak konkatenacja, maksymalne łączenie, wypełnianie itp.), Nie można dokonać oszacowania podczas wyszukiwania. Wystarczy rozpocząć szkolenie niektórych niesławnych sieci i zmierzyć czas. Następnie możesz interpolować, ile czasu zajmie wyszkolenie szukanych sieci.

Deniz Beker
źródło
Czy znasz zasób, który zbiera informacje dla różnych zadań NN? Więc lista: typ NN, liczba jednostek, hiperparametry, rozmiar zestawu danych, używany sprzęt, czas potrzebny? Pomogłoby to wypracować regułę intuicyjną
pascalwhoop,