Suchen

Definition Was ist die Nvidia Collective Communications Library (NCCL)?

| Autor / Redakteur: Dipl.-Ing. (FH) Stefan Luber / Nico Litzel

Die Nvidia Collective Communications Library (NCCL) ist eine Bibliothek für die Multi-GPU-Kommunikation. Sie ist im Deep-Learning-Umfeld einsetzbar und stellt für Nvidia-Grafikprozessoren optimierte Standardroutinen zur Kommunikation zur Verfügung. NCCL arbeitet mit zahlreichen Deep Learning Frameworks zusammen.

Firma zum Thema

(Bild: © aga7ta - stock.adobe.com)

Bei der Nvidia Collective Communications Library (NCCL) handelt es sich um eine von Nvidia bereitgestellte Bibliothek, die für das Deep Learning einsetzbar ist. Sie stellt Standardroutinen zur Verfügung, die für die Kommunikation von Nvidia-Grafikprozessoren (GPUs) optimiert sind. Die Routinen lassen sich einfach in Applikationen integrieren und sorgen für eine hohe Performance von Berechnungen im Multi-GPU-Umfeld.

Die Bibliothek unterstützt verschiedene Topologien und Kommunikationsschnittstellen wie PCIe oder NVLink. NCCL beschleunigt Trainingsprozesse von neuronalen Netzwerken, indem viele GPUs gemeinsam an der Aufgabe arbeiten und sich untereinander austauschen. Die Nvidia Collective Communications Library ist mit vielen gängigen Deep-Learning-Frameworks kompatibel. Unter anderem kann sie mit Frameworks wie TensorFlow, Caffe, Caffe2, MxNet, Chainer oder PyTorch eingesetzt werden. NCCL ist mit dem MPI (Message Passing Interface) kompatibel, berücksichtigt diverse GPU-Topologien und nutzt die Rechenleistung der Grafikprozessoren verschiedener Nodes effizient. Unterstützt werden Funktionen wie:

  • Reduce
  • AllReduce
  • ReduceScatter
  • Broadcast
  • AllGather

Der Source Code der Nvidia Collective Communications Library ist auf GitHub frei verfügbar. Die NCCL-Binaries können zudem von der NVIDIA Developer Zone heruntergeladen werden. Die aktuellste Version der Library ist NCCL 2.4 /Stand März 2019).

Designziele der Nvidia Collective Communications Library

In der Entwicklung der Nvidia Collective Communications Library stehen folgende Designziele im Vordergrund. Wichtigstes Ziel ist es, eine hohe Performance für das Training neuronaler Netzwerke durch die optimale Nutzung der Rechenleistung von Multi-GPU- und Multi-Node-Umgebungen bereitzustellen. Darüber hinaus soll NCCL einfach zu programmieren und zu verwenden sein. Hierfür basiert die Nvidia Collective Communications Library auf C++ und den CUDA-Bibliotheken. NCCL soll durch eine transparente Interprozess-Kommunikation sowohl für Single-Prozess- als auch für Multi-Prozess-Applikationen nutzbar sein. Durch die Bereitstellung einer einfachen API, die über verschiedene Programmiersprachen ansteuerbar ist, ist der Einstieg für Programmierer erleichtert. Jeder, der mit dem Message Passing Interface (MPI) vertraut ist, ist schnell in die NVIDIA Collective Communications Library eingearbeitet. Schließlich soll NCCL mit verschiedensten Multi-GPU-Architekturen und -Modellen wie Single-Threaded-, Multi-Threaded- oder Multi-Prozess-Modellen zusammenarbeiten.

Vorteile durch den Einsatz der NVIDIA Collective Communications Library

Der Einsatz der NVIDIA Collective Communications Library im Multi-GPU-Umfeld bietet für das Deep Learning zahlreiche Vorteile. Das Training neuronaler Netze wird durch die effiziente Zusammenarbeit mehrerer GPUs stark beschleunigt. Hierfür stellt NCCL die Multi-GPU- und Multi-Node-Kommunikationsroutinen zur Verfügung. Die Architektur ist einfach zu skalieren und lässt sich den Anforderungen an die Rechenleistung flexibel anpassen. Die beteiligten Prozessoren erreichen große Kommunikationsbandbreiten und synchronisieren sich mit hoher Geschwindigkeit.

Für Entwickler bietet sich der Vorteil, dass Applikationen nicht mehr für spezifische Maschinen und Prozessoren optimiert werden müssen. NCCL ist für unterschiedlichste Multi-GPU-Architekturen und Grafikprozessoren bereits optimiert. Es werden zahlreiche Verbindungstechnologien wie PCIe, NVLink, IP-Sockets oder InfiniBand Verbs unterstützt. Durch die Zusammenarbeit mit den gängigen Frameworks aus dem Deep-Learning-Umfeld erschließt sich ein breites Anwendungsfeld.

Neuheiten und Verbesserungen in NCCL 2.4

Die aktuellste Version der NVIDIA Collective Communications Library ist NCCL 2.4. Gegenüber den Vorgängerversionen sind zahlreiche Verbesserungen und neue Funktionen enthalten. Zu diesen zählen:

  • performanteres Training durch optimierte Inter-GPU-Operationen
  • Unterstützung verschiedener Ring-Architekturen für eine hohe Auslastung des Kommunikationsbusses
  • Implementierung des Baum-Algorithmus für das Training mit geringer Latenz auf großen Multi-GPU- und Multi-Node-Umgebungen
  • Unterstützung von InfiniBand Verbs, libfabric, RoCE und IP-Socket Internode-Kommunikation
  • Unterstützung von Multi-Threaded- und Multi-Prozess-Anwendungen

(ID:45781873)

Über den Autor