Baidu kombiniert HPC und Machine Learning für neue Bibliothek

Nachdem das chinesische Unternehmen die im HPC-Umfeld weit verbreitete Ring-Allreduce-Technik für seine neuronalen Netze entdeckt hat, möchte es durch Freigabe entsprechender Tools auch andere Projekte dafür begeistern.

 –  0 Kommentare
Baidu kombiniert HPC und Machine Learning für neue Bibliothek

Der chinesische Suchmaschinenbetreiber Baidu hat mit baidu-allreduce eine C-Bibliothek zum Einsatz der Ring-Allreduce-Technik im Kontext neuronaler Netze veröffentlicht und einen entsprechenden TensorFlow-Patch bereitgestellt. Der Algorithmus lässt sich wohl in allen Anwendungen einbetten, in denen das Message Passing Interface (MPI) aktiviert ist, und hilft, die Durchschnittsbildung von Gradienten in neuronalen Netzen über viele Maschinen und Knoten hinweg zu beschleunigen.

Aufgrund der Komplexität der Berechnung bietet sich Parallelisierung für das Training neuronaler Netze an. Bei den meisten derzeit verwendeten Vorgehen, steigen jedoch die Kommunikationskosten (Latenz und Bandbreite) für den Austausch zwischen GPUs linear mit deren Anzahl. Während des aus dem High Performance Computing bekannten Ring Allreduce spielt hingegen lediglich die langsamste Verbindung zwischen zwei GPUs eine Rolle.

Dadurch lässt sich der Ansatz gut zum Skalieren von Trainingsvorgängen über mehrere GPUs einsetzen. Während jeder Iteration führt jede GPU erst Forward Propagation zum Berechnen des Fehlers und im Anschluss Backward Propagation zum Berechnen der Gradienten der Netzparameter durch. Da die Fehlerrückführung in der Output-Schicht des Netzes beginnt, stehen deren Gradienten früher zur Verfügung als die ihrer Vorgänger. Da Allreduce auch auf Untermengen arbeiten kann, lässt er sich schon verwenden, wenn noch nicht alle Gradienten zur Verfügung stehen.

Der Algorithmus besteht aus einem sogenannten Scatter-Reduce-Schritt, bei dem die in einem logischen Kreis angeordneten GPUs Daten austauschen, sodass jede einen Teil des Endberechnung hat, und einen Allgather-Schritt, in dem alle ihre Anteile weitergeben, sodass am Ende allen GPUs das Endergebnis vorliegt. Da tiefere Netzwerkschichten früher Gradienten verfügbar haben, können sie schon Daten weitergeben, bevor die Fehlerrückführung überall abgeschlossen ist, was den Kommunikations-Overhead reduziert. Details lassen sich in der Bekanntmachung nachlesen. (jul)