GPU-beschleunigte RNNs: Eine CUDA-Implementierung von minGRU und minLSTM
Dieser Blogbeitrag beschreibt ein Abschlussprojekt für den Kurs CS179: GPU-Programmierung am Caltech, das die Behauptungen des Artikels „Were RNNs All We Needed?“ von Feng et al. überprüft. Das Projekt implementierte vereinfachte minGRU- und minLSTM-Modelle und einen benutzerdefinierten CUDA-Parallel-Scan-Algorithmus. Die Ergebnisse zeigten signifikante GPU-Beschleunigungen für lange Sequenzen und bestätigten die zentrale Erkenntnis des Artikels, dass RNN-Rekurrenz parallelisiert werden kann. Bei kurzen Sequenzen jedoch hob die Überlastung des Starts von CUDA-Kerneln einige Leistungsgewinne auf. Das Profiling des GPU-Kernels ergab, dass die letzte Projektionsschicht der Hauptengpass ist, was auf eine weitere Optimierung durch einen einzigen cuBLAS-GEMM-Aufruf hindeutet.