MPIrigen: MPI-Codegenerierung durch domänenspezifische Sprachmodelle
MPIrigen: MPI Code Generation through Domain-Specific Language Models
February 14, 2024
papers.authors: Nadav Schneider, Niranjan Hasabnis, Vy A. Vo, Tal Kadosh, Neva Krien, Mihai Capotă, Abdul Wasay, Guy Tamir, Ted Willke, Nesreen Ahmed, Yuval Pinter, Timothy Mattson, Gal Oren
cs.AI
papers.abstract
Die dringende Notwendigkeit, Berechnungen über zahlreiche Knoten zu skalieren, unterstreicht die Bedeutung effizienten parallelen Rechnens, insbesondere im Bereich der Integration von Message Passing Interface (MPI). Die anspruchsvolle Aufgabe der parallelen Programmierung, MPI-basierte parallele Programme zu generieren, ist bisher unerforscht geblieben. Diese Studie untersucht zunächst die Leistung modernster Sprachmodelle bei der Generierung von MPI-basierten parallelen Programmen. Die Ergebnisse zeigen, dass weit verbreitete Modelle wie GPT-3.5 und PolyCoder (spezialisierte mehrsprachige Codemodelle) eine deutliche Leistungsverschlechterung aufweisen, wenn sie MPI-basierte Programme im Vergleich zu allgemeinen Programmen generieren. Im Gegensatz dazu übertreffen domänenspezifische Modelle wie MonoCoder, die auf MPI-bezogenen Programmiersprachen wie C und C++ vortrainiert sind, größere Modelle. Anschließend führen wir eine spezielle Downstream-Aufgabe zur Generierung von MPI-basierten Programmen ein, indem wir MonoCoder auf HPCorpusMPI feinabstimmen. Das resultierende Modell nennen wir MPIrigen. Wir schlagen eine innovative Vorverarbeitung vor, die die Vervollständigung erst nach Betrachtung des gesamten Codes ermöglicht, wodurch eine bessere Vervollständigung mit einem breiteren Kontext erreicht wird. Eine vergleichende Analyse gegenüber der Zero-Shot-Leistung von GPT-3.5, unter Verwendung einer neuartigen HPC-orientierten Evaluierungsmethode, zeigt, dass MPIrigen bei der Generierung präziser MPI-Funktionen mit einer Genauigkeit von bis zu 0,8 bei Standort- und Funktionsvorhersagen und mehr als 0,9 bei Argumentvorhersagen überzeugt. Der Erfolg dieser maßgeschneiderten Lösung unterstreicht die Bedeutung domänenspezifischer Feinabstimmung bei der Optimierung von Sprachmodellen für die Generierung von parallelem Computercode und ebnet den Weg für eine neue Generation automatischer Parallelisierungstools. Die Quellen dieser Arbeit sind in unserem GitHub MPIrigen-Repository verfügbar: https://github.com/Scientific-Computing-Lab-NRCN/MPI-rigen.
English
The imperative need to scale computation across numerous nodes highlights the
significance of efficient parallel computing, particularly in the realm of
Message Passing Interface (MPI) integration. The challenging parallel
programming task of generating MPI-based parallel programs has remained
unexplored. This study first investigates the performance of state-of-the-art
language models in generating MPI-based parallel programs. Findings reveal that
widely used models such as GPT-3.5 and PolyCoder (specialized multi-lingual
code models) exhibit notable performance degradation, when generating MPI-based
programs compared to general-purpose programs. In contrast, domain-specific
models such as MonoCoder, which are pretrained on MPI-related programming
languages of C and C++, outperform larger models. Subsequently, we introduce a
dedicated downstream task of MPI-based program generation by fine-tuning
MonoCoder on HPCorpusMPI. We call the resulting model as MPIrigen. We propose
an innovative preprocessing for completion only after observing the whole code,
thus enabling better completion with a wider context. Comparative analysis
against GPT-3.5 zero-shot performance, using a novel HPC-oriented evaluation
method, demonstrates that MPIrigen excels in generating accurate MPI functions
up to 0.8 accuracy in location and function predictions, and with more than 0.9
accuracy for argument predictions. The success of this tailored solution
underscores the importance of domain-specific fine-tuning in optimizing
language models for parallel computing code generation, paving the way for a
new generation of automatic parallelization tools. The sources of this work are
available at our GitHub MPIrigen repository:
https://github.com/Scientific-Computing-Lab-NRCN/MPI-rigen