一种基于LLM的OpenCL程序性能优化方法及系统与流程

xiaoxiao6月前  50


本发明涉及计算机,尤其涉及一种基于llm的opencl程序性能优化方法及系统。


背景技术:

1、opencl(opencomputinglanguage,开放设计语言)是一个为异构平台(cpu、gpu、dsp、fpga等)编程设计的框架,相比于一般的语言编写的程序(如python、java等),这种框架下编程的程序的优化,需要经验丰富的程序员和大量专业知识,极具有挑战性和难度。

2、随着transformer架构的出现,大型语言模型(llm)已成为在自然语言处理(nlp)中执行任务的默认技术。

3、现有的传统llm能够产生表面上看起来正确的代码,但是无法在没有任何外部帮助的情况下检查其逻辑和句法有效性,因此,生成的代码片段并不总是保证如预期的那样工作,特别是在生成优化opencl程序时,可能会出现浮点精度误差、数值不稳定等问题;且通用llm代码大模型的训练语料往往大部分为单纯的代码片段和自然语言,缺乏代码优化的专业知识,缺乏代码结构化的理解和生成能力,导致传统llm在进行代码优化任务时无法充分考虑到代码的逻辑关系、数据依赖性以及算法复杂度等因素,导致优化效果不佳。


技术实现思路

1、本发明公开的一种基于llm的opencl程序性能优化方法及系统,解决了传统llm在生成优化opencl程序时,可能会出现浮点精度误差、数值不稳定;在进行代码优化任务时无法充分考虑到代码的逻辑关系、数据依赖性以及算法复杂度等因素,导致优化效果不佳的问题,有效提高了llm根据原始输入代码生成高性能opencl程序的能力,且能保证这些程序代码在逻辑和语法上的正确性。

2、为达到上述目的,本发明的技术方案具体是这样实现的:

3、本发明一方面公开一种基于llm的opencl程序性能优化方法,包括以下步骤:

4、s1:在给定的强化学习架构选择空间中自动搜索,并根据训练基准样本给出最佳结果的强化学习架构及其参数,并将最佳强化学习架构存储为序列化对象;

5、s2:使用整个训练数据集微调作为状态函数的llm模型;

6、s3:将opencl程序的内核代码、主程序的tokens、线性化的ast和自然语言作为输入,传递给微调后的llm,为每个输入代码生成预定义数量的优化样本;

7、s4:为每个优化样本分配一个分数值,并使用奖励模型计算其奖励,利用分数值和奖励值来计算损失值;

8、s5:利用计算得到的损失值重新训练模型;

9、s6:为llm提供一个代码优化框架,将一组数据作为代码优化框架的输入,并概述预期结果;

10、s7:设计一组测试用例,并根据测试评估生成代码的性能;如果执行引发错误,llm将重新生成代码函数以迭代并相应地改进代码。

11、进一步地,所述强化学习架构包括状态函数、转换函数、奖励函数、强化学习算法。

12、进一步地,步骤s1的实现是通过优化器来实现,所述优化器包括两个强化学习模型,其中一个是用于输出优质动作的策略强化学习模型actor,另一个为用于评估奖励值的值强化学习模型critic。

13、进一步地,步骤s7的具体实现为:

14、llm制定一组测试用例;

15、利用制定的测试用例对llm生成的代码进行测试,并根据测试情况对生成的代码进行评分;

16、如果出现代码不满足测试用例或代码分数过低,结合错误报告,llm给出修改建议;

17、将错误报告和修改建议作为样本代码的上下文重新作为输入,使llm根据新输入对opencl代码进行修订。

18、进一步地,所述奖励函数根据测量接口给出的opencl单元测试的反馈来计算奖励。

19、本发明另一方面公开一种基于llm的opencl程序性能优化系统,包括强化学习架构自动搜索单元、强化学习结构化理解代码单元和思维链技术迭代推理单元,具体地,强化学习架构自动搜索单元在给定的强化学习架构选择空间中自动搜索,并根据训练基准样本给出最佳结果的强化学习架构及其参数,并将最佳强化学习架构存储为序列化对象;强化学习结构化理解代码单元利用线性化的ast,引导模型结构化的理解代码;

20、思维链技术迭代推理单元,所述思维链技术迭代推理单元包括:

21、基本代码思维链部分,所述基本代码思维链部分通过设定上下文、提供初步数据,为llm提供一个从示例输入开始的代码优化框架;随后提供一组新数据作为llm要处理的输入,并概述预期结果;并同步生成测试用例;

22、自我检查代码思维链部分,根据测试用例测试评估生成代码的性能;如果执行引发错误或程序性能没有得到提升,llm根据错误报告和生成的代码给出修改建议的根据,并将修改建议将加入llm重新生成代码的上下文,以迭代并相应地改进代码。

23、进一步地,所述基本代码思维链部分包括思维链提示、测试用例生成和代码生成三个组件。

24、有益技术效果:

25、本发明公开一种基于llm的opencl程序性能优化方法,包括以下步骤s1:在给定的强化学习架构选择空间中自动搜索,并根据训练基准样本给出最佳结果的强化学习架构及其参数,并将最佳强化学习架构存储为序列化对象;s2:使用整个训练数据集微调作为状态函数的llm模型;s3:将opencl程序的内核代码、主程序的tokens、线性化的ast和自然语言作为输入,传递给微调后的llm,为每个输入代码生成预定义数量的优化样本;s4:为每个优化样本分配一个分数值,并使用奖励模型计算其奖励,利用分数值和奖励值来计算损失值;s5:利用计算得到的损失值重新训练模型;s6:为llm提供一个代码优化框架,将一组数据作为代码优化框架的输入,并概述预期结果;s7:设计一组测试用例,并根据测试评估生成代码的性能;如果执行引发错误,llm将重新生成代码函数以迭代并相应地改进代码,解决了传统llm在生成优化opencl程序时,可能会出现浮点精度误差、数值不稳定;在进行代码优化任务时无法充分考虑到代码的逻辑关系、数据依赖性以及算法复杂度等因素,导致优化效果不佳的问题,有效提高了llm根据原始输入代码生成高性能opencl程序的能力,且能保证这些程序代码在逻辑和语法上的正确性;

26、1.本发明中,自动化搜索强化学习架构和参数调优,降低了最佳强化学习的设计成本;

27、2.本发明公开的方法允许语言模型在其微调过程中考虑来自单元测试的反馈,从而引导模型生成更可靠的,可执行的,鲁棒性更强的优化代码;

28、3.本发明中ast的加入允许大语言模型利用结构信息,特别是语法信息,从而引导模型结构化的理解代码,更好的学习到代码中的信息,增强模型结构化理解代码的能力;

29、4.本发明中为llm提供一个代码优化框架,将一组数据作为代码优化框架的输入,并概述预期结果,帮助llm在生成代码时更加准确和高效;

30、5.本发明中llm的任务不仅仅局限于编写代码,还包括设计一组测试用例,并根据这些测试评估生成代码的性能,如果执行引发错误,llm将重新生成代码函数以迭代并相应地改进代码,确保了生成的代码经过了严格的测试和改进,从而提高了代码的质量和稳定性。附图说明

31、为了更清楚地说明本发明的技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍。

32、图1为本发明公开的一种基于llm的opencl程序性能优化方法的工作流程概述;

33、图2为本发明公开的一种基于llm的opencl程序性能优化系统中arcs单元单元的工作流程概述;

34、图3为本发明公开的一种基于llm的opencl程序性能优化方法中强化学习架构概述;

35、图4为本发明公开的一种基于llm的opencl程序性能优化方法中奖励模型的原理图;

36、图5为本发明公开的一种基于llm的opencl程序性能优化系统中思维链技术迭代推理单元的原理图。


技术特征:

1.一种基于llm的opencl程序性能优化方法,其特征在于,包括以下步骤:

2.根据权利要求1所述的一种基于llm的opencl程序性能优化方法,其特征在于,所述强化学习架构包括状态函数、转换函数、奖励函数、强化学习算法。

3.根据权利要求1所述的一种基于llm的opencl程序性能优化方法,其特征在于,步骤s1的实现是通过优化器来实现,所述优化器包括两个强化学习模型,其中一个是用于输出优质动作的策略强化学习模型actor,另一个为用于评估奖励值的值强化学习模型critic。

4.根据权利要求1所述的一种基于llm的opencl程序性能优化方法,其特征在于,步骤s7的具体实现为:

5.根据权利要求2所述的一种基于llm的opencl程序性能优化方法,其特征在于,所述奖励函数根据测量接口给出的opencl单元测试的反馈来计算奖励。

6.一种基于llm的opencl程序性能优化系统,其特征在于,包括:

7.根据权利要求6所述的一种基于llm的opencl程序性能优化系统,其特征在于,所述基本代码思维链部分包括思维链提示、测试用例生成和代码生成三个组件。


技术总结
本发明提供一种基于LLM的OpenCL程序性能优化方法及系统,涉及计算机技术领域,解决了传统LLM在生成优化OpenCL程序时,可能会出现浮点精度误差、数值不稳定;在进行代码优化任务时无法充分考虑到代码的逻辑关系、数据依赖性以及算法复杂度等因素,导致优化效果不佳的问题,首次将LLM(大语言模型)、代码抽象语法树(AST)和思维链技术和OpenCL程序的优化结合使用,有效提高了LLM根据原始输入代码生成高性能OpenCL程序的能力,且能保证这些程序代码在逻辑和语法上的正确性。

技术研发人员:张立华,许庆尧,杨鼎康
受保护的技术使用者:光华临港工程应用技术研发(上海)有限公司
技术研发日:
技术公布日:2024/9/23

最新回复(0)