Czy do wnioskowania należy użyć procesora graficznego lub procesora?

13

Prowadzę głęboko uczącą się sieć neuronową, która została przeszkolona przez procesor graficzny. Chcę teraz wdrożyć to na wielu hostach w celu wnioskowania. Pytanie brzmi, jakie są warunki, aby zdecydować, czy należy używać procesorów graficznych, czy procesorów do wnioskowania?


Dodając więcej szczegółów z komentarzy poniżej.

Jestem nowy w tym, więc wskazówki są mile widziane.

  • Pamięć : GPU to K80

  • Framework : Cuda i cuDNN

  • Rozmiar danych na obciążenie : 20G

  • Węzły obliczeniowe do zużycia : jeden na zadanie, choć chciałby rozważyć opcję skalowania

  • Koszt : mogę sobie pozwolić na opcję GPU, jeśli przyczyny są uzasadnione

  • Wdrożenie : działa na własnych hostowanych serwerach bez systemu operacyjnego, a nie w chmurze.

Obecnie korzystam z procesora, ponieważ aplikacja działa poprawnie. Ale poza tym powodem nie jestem pewien, dlaczego w ogóle rozważa się GPU.

Dan
źródło
Aby uzyskać porady na temat porównania między dwoma potencjalnymi podejściami, inni będą mogli poznać niektóre szczegóły twojego zadania. Na przykład, jaki jest rozmiar twoich danych, jaka jest pojemność pamięci twojego GPU, liczba węzłów obliczeniowych, których planujesz używać, a być może także to, jaką strukturę zmniejszania mapy masz na myśli.
Dynamic Stardust
@DynamicStardust ... i koszt. Tanie węzły CPU EC2 czy drogie węzły GPW ECW? To pytanie jest zbyt niejasne.
Spacedman

Odpowiedzi:

8

@Dan @SmallChess, nie do końca się zgadzam. Prawdą jest, że do treningu duża część paraliżu może zostać wykorzystana przez procesory graficzne, co powoduje znacznie szybsze szkolenie. W przypadku wnioskowania ta paraliżacja może być znacznie mniejsza, jednak CNN nadal będą czerpać z tego korzyść, co spowoduje szybsze wnioskowanie. Teraz musisz tylko zadać sobie pytanie: czy szybsze wnioskowanie jest ważne? Czy chcę mieć te dodatkowe zależności (dobry procesor graficzny, zainstalowane odpowiednie pliki itp.)?

Jeśli prędkość nie stanowi problemu, wybierz procesor. Zauważ jednak, że GPU może sprawić, że z mojego doświadczenia będzie o rząd wielkości szybszy.

Laurens Meeus
źródło
Interesująca kwestia, którą poruszasz, dlaczego CNN miałby korzystać z przetwarzania równoległego podczas wnioskowania?
Dan
1
W przypadku szkolenia równoległe obliczenia mogą być oczywiste: masz wiele danych wejściowych, z których każdy musi być przekazywany, całkowicie niezależny od siebie. W celu splotu jądro jest mnożone przez wiele „poprawek” wejściowych. Można to zrobić również równolegle. To sprawia, że ​​CNN jest tak potężny: nie tylko potrzebują mniej parametrów, aby trenować, ale także bardziej równolegle, dzięki czemu GPU jest tak potężny. Nie wiem, nad czym pracujesz, ale pracuję nad segmentacją (klasyfikacją pikselową) obrazów, a gdy używam procesorów graficznych do wnioskowania, uzyskuję ogromną poprawę prędkości (> x10).
Laurens Meeus,
@LaurensMeeus Jestem również nowy w tym spektrum i przeprowadzam analizę kosztów maszyn wirtualnych w chmurze. Czy nadal używałbym GPU do treningu, jeśli tylko analizuję tekst, a nie obrazy?
Squ1rr3lz
2
@ Squ1rr3lz Jestem 95% powinieneś. Każda forma przetwarzania równoległego powinna mieć przewagę na GPU. Nie jestem ekspertem w tej dziedzinie, ale biorąc pod uwagę, że analiza tekstu ma również warstwy splotowe (czy to 1D zamiast 2D), jest to już jeden z powodów, dla których mógłby / powinien być szybszy. Jeśli to możliwe, po prostu spróbuj sam, jaki wpływ ma włączanie / wyłączanie GPU.
Laurens Meeus,
6

Uruchamianie wnioskowania na procesorze graficznym zamiast na procesorze pozwoli na uzyskanie takiego samego przyspieszenia, jak w przypadku treningu, przy mniejszym obciążeniu pamięci.

Jednak, jak powiedziałeś, aplikacja działa poprawnie na procesorze. Jeśli dojdziesz do punktu, w którym prędkość wnioskowania jest wąskim gardłem w aplikacji, uaktualnienie do GPU złagodzi to wąskie gardło.

mpotma
źródło
Kompletnie się zgadzam. Nadal nie rozumiem, dlaczego post procesora jest na szczycie.
Laurens Meeus
1
GeForce GTX Titan X zapewnia wydajność od 5,3 do 6,7 razy wyższą niż 16-rdzeniowy procesor Intel Xeon E5 - czyli znacznie mniej niż przyśpieszenie osiągnięte podczas szkolenia - z własnego bloga NVidia: devblogs.nvidia.com/…
seanhalle
4

Używałbyś GPU tylko do szkolenia, ponieważ głębokie uczenie się wymaga ogromnych obliczeń, aby znaleźć optymalne rozwiązanie. Jednak do wdrożenia nie potrzebujesz maszyn GPU .

Weźmy za przykład nowego iPhone'a X firmy Apple. Nowy iPhone X ma zaawansowany algorytm uczenia maszynowego do wykrywania twarzy. Pracownicy Apple muszą mieć zestaw maszyn do szkolenia i sprawdzania poprawności. Ale twój iPhone X nie potrzebuje procesora graficznego do samego uruchomienia modelu.

Witaj świecie
źródło
Dzięki za wyjaśnienie. Nie rozumiem zatem, dlaczego Nvidia promuje użycie procesorów graficznych, ponieważ jest to najlepsze rozwiązanie do wnioskowania, jeśli procesor może to zrobić dobrze. Również dlaczego Google naciska również TPU na wnioskowanie, jeśli robią to wszystko z procesorem? Czy ma to coś wspólnego z obliczeniami równoległymi?
Dan
3
@SmallChess czy iPhone X nie miał w sobie jakiegoś zaawansowanego procesora podobnego do TPU wyłącznie do wnioskowania? extremetech.com/mobile/…
Laurens Meeus
3
@SmallChess Ale dlaczego tak nie jest? Może po prostu nie do końca rozumiem. Czy nadal nie poprawisz prędkości?
Laurens Meeus,
2
Szczerze mówiąc, NVidia ma fantastyczny dział marketingu i w ich najlepszym interesie leży promowanie wykorzystania procesorów graficznych NVidia do wnioskowania. Leży to w ich najlepszym interesie, a nie w twoim.
seanhalle
1
Z bloga NVidii: „258 vs. 242 obrazy / sekundę” dla procesora NVIDIA Tegra X1 vs i7 6700K podczas wnioskowania: devblogs.nvidia.com/…
seanhalle