MPIrigen : Génération de code MPI via des modèles de langage spécifiques au domaine
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
Résumé
La nécessité impérative de déployer les calculs sur de nombreux nœuds met en lumière l'importance d'un calcul parallèle efficace, en particulier dans le domaine de l'intégration de l'Interface de Passage de Messages (MPI). La tâche complexe de programmation parallèle consistant à générer des programmes parallèles basés sur MPI est restée inexplorée. Cette étude examine d'abord les performances des modèles de langage les plus avancés dans la génération de programmes parallèles basés sur MPI. Les résultats révèlent que des modèles largement utilisés tels que GPT-3.5 et PolyCoder (modèles de code multilingues spécialisés) présentent une dégradation notable des performances lors de la génération de programmes basés sur MPI par rapport aux programmes à usage général. En revanche, des modèles spécifiques au domaine, tels que MonoCoder, pré-entraînés sur les langages de programmation C et C++ liés au MPI, surpassent les modèles plus volumineux. Par la suite, nous introduisons une tâche dédiée en aval de génération de programmes basés sur MPI en affinant MonoCoder sur HPCorpusMPI. Nous appelons le modèle résultant MPIrigen. Nous proposons un prétraitement innovant pour la complétion uniquement après avoir observé l'intégralité du code, permettant ainsi une meilleure complétion avec un contexte plus large. Une analyse comparative par rapport aux performances en zero-shot de GPT-3.5, en utilisant une nouvelle méthode d'évaluation orientée HPC, démontre que MPIrigen excelle dans la génération de fonctions MPI précises, atteignant jusqu'à 0,8 de précision dans les prédictions de localisation et de fonction, et plus de 0,9 de précision pour les prédictions d'arguments. Le succès de cette solution sur mesure souligne l'importance de l'affinage spécifique au domaine pour optimiser les modèles de langage dans la génération de code de calcul parallèle, ouvrant la voie à une nouvelle génération d'outils d'automatisation de la parallélisation. Les sources de ce travail sont disponibles sur notre dépôt GitHub MPIrigen : 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-rigenSummary
AI-Generated Summary