2016-05-17 8 views
2

Vor kurzem habe ich versucht, eine Deep-Learning-Lösung (mehrschichtiges LSTM-Netz mit zusätzlichen Schichten für statische Eingabe) auf großen CPU-Servern zu implementieren und zu implementieren. Nach vielen Versuchen habe ich im Vergleich zur Performance auf meinem PC nur 3x schneller gemacht. Ich habe gehört, dass GPUs einen besseren Job machen könnten. Können Sie mir erklären, was genau der Grund ist, warum GPUs bei tiefen neuronalen Netzwerkberechnungen so viel besser sind als CPUs?Was macht GPUs bei neuronalen Netzwerkberechnungen so effizient?

+1

Deep Learning (und AI) beruhen stark auf Matrizen und Matrixoperationen (d. H. Lineare Algebra). Matrix-Ops können stark parallelisiert werden und können Hunderte von Threads nutzen (man denke beispielsweise an die Multiplikation von zwei Matrizen) - und das ist es, wo GPUs sehr gut sind (denke auch, Memory-Bandwidth mit GPU) – rbm

Antwort

3

Die Architektur der GPUs konzentriert sich hauptsächlich auf Parallelität, während dies bei der CPU nicht der Fall ist. Das bedeutet, dass eine GPU viele einfache Operationen gleichzeitig ausführen kann. Zum Beispiel kann eine GPU die Farbe jedes Pixels Ihres Bildschirms (1920x1080 ist fast 2 Millionen Pixel) 60 Mal pro Sekunde verarbeiten. Eine Allzweck-CPU kann eine ALU pro Kern (physisch oder logisch) haben, also hat Ihre CPU möglicherweise 8/16 ALUs. Eine GPU kann thousands of them haben.

Kurz gesagt: Eine CPU kann einige komplexe Operationen sehr schnell ausführen, während eine GPU sehr schnell Tausende von sehr einfachen Operationen ausführen kann. Da eine GPU viele Daten gleichzeitig verarbeitet, ist sie normalerweise mit einem sehr schnellen RAM ausgestattet, um Engpässe zu vermeiden.

Neuronale Netze sind im Grunde viele kleine „Computer“, die parallel arbeiten, so dass die Architektur eines GPU passt besser für diese Aufgabe

2

Die de-facto-Algorithmus für die Ausbildung tief neuronalen Netze ist die Back-Propagation Algorithmus. Es beinhaltet die Berechnung von Jacobi-Matrizen auf verschiedenen Ebenen des Netzwerks und die Multiplikation dieser Matrizen. Die Matrixmultiplikation Schritt ist, wo GPUs CPUs überstrahlen, da die beteiligten Operationen strukturiert sind und die komplexe Maschinerie (wie Verzweigungsvorhersage, Out-of-Order-Planung) in CPUs nicht benötigen. Als Nebeneffekt könnte man argumentieren, dass CPUs bei der Matrixmultiplikation viel besser geworden sind, indem Techniken wie Cache-Blockierung, Prefetching und handcodierte Assemblierung verwendet wurden.

Neben dem Training nutzt der Inferenzteil für die neuronalen Netze auch eine effiziente Matrixmultiplikation aus. Dies liegt daran, dass die Eingaben für verschiedene Schichten und die Gewichtungs- (Parameter-) Vektoren üblicherweise in Tensorform gespeichert sind.

Ein weiterer Vorteil der Verwendung von Grafikprozessoren ist die bessere Speicherbandbreite. GDDR5x erreicht fast 500 GB/s, verglichen mit ~ 80-100 GB/s, die DDR4 auf dem neuesten Stand der Technik bietet. Sie erhalten also einen ca. 5-fachen Faktor der Bandbreitenverbesserung, den die speicherintensiven Neuralnetz-Berechnungen nutzen können.