MPIrigen: 基于领域特定语言模型的 MPI 代码生成
内容提要
本文综述了利用大语言模型实现高性能计算代码自动并行化的进展,涵盖MPI-rical、MonoCoder、OMPGPT、OMPIfy、HPC-Coder等模型,以及Open-OMP语料库、并行代码生成基准和AI辅助生成数值内核代码的熟练度度量。
延伸解读
领域特定模型为何受关注
文章提到,针对高性能计算领域开发的MonoCoder模型,在非HPC和HPC任务中实现了类似甚至更好的性能。这提示我们,在HPC代码生成中,专门训练的较小模型可能比通用大模型更有效,且更符合HPC环境的硬件限制。OMPGPT也体现了这一思路,它体积更小,却在OpenMP任务中胜过现有大型语言模型。
自动并行化的不同技术路径
文章综述了多种自动并行化方法:MPI-rical基于转换器模型,使用25,000个串行代码片段及其并行化MPI代码进行训练;OMPIfy利用源代码的图形表示来预测OpenMP指令和共享内存属性;还有研究使用自然语言处理技术替代源代码到源代码编译器。这些方法展示了从不同角度解决并行化问题的尝试。
评估基准与熟练度度量
为了衡量语言模型生成并行代码的能力,文章提到了专门的基准测试集,用于评估多个开源和闭源模型在不同并行编程模型和计算问题类型上的表现,并引入了新的比较指标。此外,还有研究通过AI辅助生成数值内核代码,提出了衡量模型与编程模型之间关系的“熟练度度量标准”,发现OpenAI Codex的输出与编程模型的使用和发展成熟度相关。
Q&A
MPI-rical 是什么?它如何实现 MPI 代码的自动生成?
MPI-rical 是一个基于转换器的模型,使用包含 25,000 个串行代码片段及其对应并行化 MPI 代码的语料库(MPICodeCorpus)自动生成 MPI 代码,以实现分布式内存的源代码并行化。
MonoCoder 模型有什么特点?它在 HPC 任务中的表现如何?
MonoCoder 是一个针对高性能计算(HPC)领域的领域特定较小语言模型,它在非 HPC 和 HPC 任务中实现了类似甚至更好的性能,并在高性能和并行代码生成中取得出色结果。
OMPGPT 在 OpenMP 任务中相比大型语言模型有哪些优势?
OMPGPT 是一个精心设计的模型,利用语言模型的先天优势进行 OpenMP 预定义指令生成,并采用 NLP 领域的提示工程技术(如链式 OMP)提升效果。在广泛评估中,OMPGPT 在 OpenMP 任务中胜过现有的大型语言模型,且体积明显更小,更符合 HPC 环境的硬件限制。
OMPIfy 模型如何检测和预测 OpenMP Pragmas?其准确性如何?
OMPIfy 是一个基于 Transformer 的模型,利用源代码的图形表示来检测和预测并行代码中的 OpenMP Pragmas 和共享内存属性。在大型语料库上评估,OMPIfy 在 F1 得分和准确性方面均优于现有方法,特别是在常用的 OpenMP 基准测试中达到了高达 90% 的准确性。
Open-OMP 语料库是什么?它用于什么目的?
Open-OMP 是一个语料库,用于训练多个转换器模型,以替代源代码到源代码编译器,使并行共享内存更加容易。最终展现出在 OpenMP 指示符的原则上的更好性能。
如何评估语言模型在生成并行代码方面的能力?
本研究提出了一个用于评估最新语言模型在生成并行代码方面能力的基准测试集,并评估了多个开源和闭源语言模型在此基准测试集上的性能,同时引入了用于比较并行代码生成性能的新指标,旨在探讨每个语言模型在不同并行编程模型和计算问题类型上的表现。