Der Prozessor gilt als das Herz oder auch als Gehirn des Computers und es kann sehr faszinierend sein, wenn man überlegt welche Fähigkeiten diese kleinen elektrischen Schaltungen in unserer Zeit erlangt haben. Auch im Bereich des maschinellen Lernens ist der Prozessor ein wichtiger Akteur, da sich das Training von Modellen als besonders zeitaufwändige Prozedur erweisen kann.
Die wohl bekannteste Form des Prozessors ist der Hauptprozessor von Computern, auch CPU (Central Processing Unit) genannt. Es finden jedoch auch andere Prozessoren Anwendung in Computern und die Art des Prozessors ist ein wichtiger Faktor dafür, wie schnell der Computer verschiedene Aufgabe bewältigen kann.
Herausforderungen beim Deep Learning
Wenn man nun Modelle im Bereich des Deep Learning trainieren möchte, können, natürlich stark abhängig von gewählten Ausprägungen des Modells, große Rechenaufgaben auf Einen zukommen. Google stellte beispielsweise im Januar 2020 einen neuen Chatbot mit dem Namen Meena vor, der auf einem neuronalen Netz mit 2,6 Milliarden Parametern basiert. Diese Parameter sind die Variablen, die beim Trainingsprozess über Berechnungen durch Prozessoren angepasst werden und damit das Verhalten des Modells bestimmen. Und Meena ist dabei noch gar nicht das größte Modell in diesem Bereich. Aber auch diese Anzahl an Modellparametern lässt selbst für den Laien erahnen, dass einiges an Rechenpower für solch ein Training notwendig ist.
Warum GPUs
Glücklicherweise lässt sich der hohe Aufwand beim Trainieren von Modellen durch die Art des mathematischen Problems, welches dieses darstellt, relativieren. Das Training ist nämlich ein gut parallelisierbarer Prozess, d. h. man kann den Prozess in einzelne Teilprozess aufteilen und parallel bearbeiten.
Ein ähnliches Problem ist das Rendern von Grafiken am Computer, bei dem auch parallel die Farbausprägungen mehrerer Pixel gleichzeitig berechnet werden kann, um am Ende ein vollständiges Bild zu erzeugen. Dementsprechend lässt sich auch die dafür spezialisierte Prozessorart, also die Grafikkarte (auch: GPU, Graphics Processing Unit), für das Training von neuronalen Netzen nutzen.
Während CPUs dafür optimiert sind einzelne Aufgaben möglichst schnell abzuarbeiten (latency-oriented), sind GPUs für die Anzahl der bearbeiteten Aufgaben pro Zeiteinheit optimiert (throughput-oriented). Unter der Bezeichnung GPGPU (General Purpose Computation on GPU) werden dieser und andere Fälle für die Verwendung von GPUs für andere Probleme zusammengefasst.
Ein anderes solcher Probleme ist zum Beispiel das Mining von Bitcoins (ein zentrales Element für die Funktionsweise der Kryptowährung), wofür sich GPUs ebenfalls besser eignen als herkömmliche CPUs. GPUs sind optimiert für solche parallelen Durchführungen von Aufgaben. Dafür haben sie andere Nachteile gegenüber CPUs, weshalb diese auch für die meisten Aufgaben verwendet werden.
NVIDIA, als einer der wichtigsten Entwickler von GPUs, bietet neben den Prozessoren selber auch CUDA an. CUDA (Compute Unified Device Architecture) ist ein Werkzeug, mit dem es Nutzern ermöglicht wird, die Rechenfähigkeit der eigenen GPU, sofern sie kompatibel ist, für Berechnungen zu nutzen. Außerdem bietet NVIDIA mit CUDA-X eine Reihe von weiteren Programmierwerkzeugen für die Arbeit mit KI und Data Science. Mit ihrer Rolle als einem der zentralen Entwickler von GPUs und der Bereitstellung dieser und weiterer Werkzeuge für die entsprechende Nutzung der GPUs ist NVIDIA ein wichtiger Akteur in der Entwicklung von künstlicher Intelligenz.
Ein sehr anschauliches Video zur Stärke von GPUs von NVIDIA und den Mythbusters findet man hier (die Vorzüge einer CPU werden hier natürlich etwas vernachlässigt):
Artikel zum Chatbot von Google:
- Adiwardana, D., Luong, M. T., So, D. R., Hall, J., Fiedel, N., Thoppilan, R., … & Le, Q. V. (2020). Towards a human-like open-domain chatbot. arXiv preprint arXiv:2001.09977. https://arxiv.org/pdf/2001.09977.pdf
- https://ai.googleblog.com/2020/01/towards-conversational-agent-that-can.html
Artikel zum Unterschied zwischen GPUs und CPUs von NVIDIA: