MPIrigen: Генерация MPI-кода с использованием предметно-ориентированных языковых моделей
MPIrigen: MPI Code Generation through Domain-Specific Language Models
February 14, 2024
Авторы: 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
Аннотация
Необходимость масштабирования вычислений на множество узлов подчеркивает важность эффективных параллельных вычислений, особенно в области интеграции интерфейса передачи сообщений (Message Passing Interface, MPI). Сложная задача параллельного программирования, связанная с генерацией MPI-ориентированных параллельных программ, до сих пор оставалась малоизученной. В данном исследовании впервые изучается производительность современных языковых моделей в генерации MPI-ориентированных параллельных программ. Результаты показывают, что широко используемые модели, такие как GPT-3.5 и PolyCoder (специализированные многоязыковые модели для кода), демонстрируют значительное снижение производительности при генерации MPI-программ по сравнению с программами общего назначения. В то же время специализированные модели, такие как MonoCoder, предварительно обученные на языках программирования C и C++, связанных с MPI, превосходят более крупные модели. Далее мы представляем специализированную задачу генерации MPI-программ путем тонкой настройки MonoCoder на корпусе HPCorpusMPI. Полученную модель мы называем MPIrigen. Мы предлагаем инновационный метод предварительной обработки, при котором завершение кода происходит только после анализа всего кода, что позволяет улучшить завершение с учетом более широкого контекста. Сравнительный анализ с нулевой производительностью GPT-3.5, проведенный с использованием нового метода оценки, ориентированного на высокопроизводительные вычисления (HPC), демонстрирует, что MPIrigen превосходит в генерации точных MPI-функций с точностью до 0,8 в предсказании местоположения и функций и более 0,9 в предсказании аргументов. Успех этого специализированного решения подчеркивает важность тонкой настройки для конкретной области в оптимизации языковых моделей для генерации кода параллельных вычислений, открывая путь к новому поколению инструментов автоматической параллелизации. Исходные материалы этой работы доступны в нашем репозитории MPIrigen на GitHub: 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