MPIrigen: Geração de Código MPI por meio de Modelos de Linguagem Específicos de Domínio
MPIrigen: MPI Code Generation through Domain-Specific Language Models
February 14, 2024
Autores: 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
Resumo
A necessidade imperativa de escalar a computação em diversos nós destaca a importância da computação paralela eficiente, particularmente no âmbito da integração da Interface de Passagem de Mensagens (MPI). A tarefa desafiadora de programação paralela de gerar programas paralelos baseados em MPI permaneceu inexplorada. Este estudo investiga inicialmente o desempenho de modelos de linguagem state-of-the-art na geração de programas paralelos baseados em MPI. Os resultados revelam que modelos amplamente utilizados, como GPT-3.5 e PolyCoder (modelos especializados em código multilíngue), apresentam uma degradação significativa de desempenho ao gerar programas baseados em MPI em comparação com programas de propósito geral. Em contraste, modelos específicos de domínio, como o MonoCoder, que são pré-treinados em linguagens de programação relacionadas a MPI, como C e C++, superam modelos maiores. Posteriormente, introduzimos uma tarefa dedicada de geração de programas baseados em MPI, ajustando o MonoCoder no HPCorpusMPI. Chamamos o modelo resultante de MPIrigen. Propomos um pré-processamento inovador para completar o código apenas após observar todo o contexto, permitindo uma melhor conclusão com um contexto mais amplo. A análise comparativa com o desempenho zero-shot do GPT-3.5, utilizando um novo método de avaliação orientado para HPC, demonstra que o MPIrigen se destaca na geração de funções MPI precisas, com até 0,8 de precisão em previsões de localização e função, e mais de 0,9 de precisão para previsões de argumentos. O sucesso dessa solução personalizada ressalta a importância do ajuste fino específico do domínio na otimização de modelos de linguagem para geração de código de computação paralela, abrindo caminho para uma nova geração de ferramentas de paralelização automática. As fontes deste trabalho estão disponíveis em nosso repositório 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-rigen