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.
źródło
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.
źródło
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.
źródło