MPIrigen: MPI-codegeneratie via domeinspecifieke taalmodelen
MPIrigen: MPI Code Generation through Domain-Specific Language Models
February 14, 2024
Auteurs: 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
Samenvatting
De noodzaak om berekeningen over talrijke nodes te schalen, benadrukt het belang van efficiënte parallelle verwerking, met name op het gebied van Message Passing Interface (MPI)-integratie. De uitdagende taak van parallel programmeren om MPI-gebaseerde parallelle programma's te genereren, is tot nu toe onontgonnen gebleven. Deze studie onderzoekt eerst de prestaties van state-of-the-art taalmodelen bij het genereren van MPI-gebaseerde parallelle programma's. De bevindingen tonen aan dat veelgebruikte modellen zoals GPT-3.5 en PolyCoder (gespecialiseerde meertalige codemodellen) een aanzienlijke prestatievermindering vertonen bij het genereren van MPI-gebaseerde programma's in vergelijking met algemene programma's. Daarentegen presteren domeinspecifieke modellen zoals MonoCoder, die zijn voorgetraind op MPI-gerelateerde programmeertalen zoals C en C++, beter dan grotere modellen. Vervolgens introduceren we een specifieke downstreamtaak voor het genereren van MPI-gebaseerde programma's door MonoCoder te finetunen op HPCorpusMPI. We noemen het resulterende model MPIrigen. We stellen een innovatieve preprocessing voor die pas na het observeren van de volledige code wordt uitgevoerd, waardoor betere voltooiing mogelijk is met een bredere context. Vergelijkende analyses tegen de zero-shot prestaties van GPT-3.5, met behulp van een nieuwe HPC-gerichte evaluatiemethode, tonen aan dat MPIrigen uitblinkt in het genereren van nauwkeurige MPI-functies met een nauwkeurigheid van tot 0,8 voor locatie- en functievoorspellingen, en meer dan 0,9 voor argumentvoorspellingen. Het succes van deze op maat gemaakte oplossing onderstreept het belang van domeinspecifieke finetuning bij het optimaliseren van taalmodelen voor het genereren van parallelle computercode, wat de weg vrijmaakt voor een nieuwe generatie automatische parallelisatietools. De bronnen van dit werk zijn beschikbaar in onze GitHub MPIrigen repository: 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