Page 262 - 《软件学报》2026年第5期
P. 262

曲慕子 等: CodeLLMTuner: 基于样本重用的代码大模型选择与解码参数调优框架                                    2141



                 用贝叶斯优化选择最优模型与解码参数. 该方法在每次迭代中为                     |M| 个模型分别采样一组样本数据. 在完成           I/|M|
                 次迭代后, 选择最佳模型和解码参数.
                    EcoOptiGen [15] : 该方法将模型  id  序列化为一维参数, 将代码大模型选择与解码参数调优转换为单模型参数调
                 优问题. 该方法在新的参数空间上使用贝叶斯优化迭代                 I 次以选择最佳模型和解码参数.
                    Transfer learning [31] : 该方法随机选择某模型作为源环境, 其他模型作为目标环境. 该方法在源环境上通过贝叶
                 斯优化方法迭代采样       K  次并由此构建性能模型, 然后在每个目标环境上采样                (I − K×|M|)/(|M|−1) 次以迁移性能模
                 型. 之后, 该方法基于各个性能模型选择最优模型与解码参数.
                    AutoRAG-HP  [17] : 该方法首先为每个模型随机采样      K  次, 计算它们的期望值以确定最佳模型. 然后在获选模型
                                       I −|M|×K  次, 以选择最优解码参数.
                 上使用贝叶斯优化迭代采样
                  3.3   实验结果
                    为了评估    CodeLLMTuner 与其他基线方法的性能差异, 本文提出了以下研究问题                 (RQ).
                    ● RQ1: 成本相同的情况下, CodeLLMTuner 与基线方法在不同种类的代码任务上的性能差异有多大?
                    ● RQ2: 成本相同的情况下, CodeLLMTuner 与基线方法在组合代码任务上的性能差异有多大?
                    ● RQ3: 为达到相同的性能, CodeLLMTuner 相较于基线方法可以节省多少成本?
                    RQ1: 成本相同的情况下, CodeLLMTuner 与基线方法在不同种类的代码任务上的性能差异有多大?
                    代码大模型选择与解码参数调优的首要目标是在成本一定的情况下找到性能更好的代码大模型和解码参数.
                 以代码生成、代码摘要与测试用例生成为目标任务, 本文比较了                     CodeLLMTuner 和基线方法在成本相同的情况下
                 所选择的模型和解码参数所对应性能的差距.
                    ● 代码生成任务
                    本实验选择     HumanEval 作为  Benchmark, 为测试  CodeLLMTuner 所选择的模型与参数在未经调优任务上的
                 泛化能力, 本实验从      HumanEval 中随机选择    70%  的待测任务组成     HumanEval-70%, 其余  30%  组成  HumanEval-
                 30%. 本文在  HumanEval-70%  上在一定成本下使用各基线方法进行代码大模型选择与解码参数调优并记录所选
                 择的最优模型与参数. 然后比较各基线方法所选择的模型与参数在                      HumanEval-70%  上的性能, 用以衡量各基线方
                 法进行代码大模型选择与解码参数调优时的能力; 同时比较上述模型与参数在                          HumanEval-30%  上的性能, 用以衡
                 量各基线方法在特定        Benchmark  上选择的模型与参数对其他任务的泛化能力. 考虑到即使总成本相同, 部分基线
                 方法的性能与成本分配策略有一定关系, 如迁移学习中源环境的不同选择会影响该方法的性能, 本文为此类基线
                 方法遍历不同的成本分配策略并计算其性能期望以全面表征此类方法的性能. 同时, 为全面比较                               CodeLLMTuner
                 和基线方法在不同总成本下的性能差距, 本文在不同总成本场景下进行上述实验. 实验结果如图                              7  所示, 其中横轴
                 表示总成本大小, 以采样次数进行衡量, 纵轴表示所选择的模型与参数在                       Benchmark  上的  pass@k (k=1、4、10).
                 由于参数调优结果均有随机性, 在不同的运行过程中可能会产生不同的结果, 本实验重复                             3  次并记录平均性能以
                 避免实验中的随机性误差.
                    随着   k  的增加, 各方法生成代码的成功率也有所增加; 随着成本的增加, 各基线方法在                       HumanEval-70%  与
                 HumanEval-30%  上所确定的模型与解码参数对应的性能均有提升, 这表示                HumanEval-70%  与  HumanEval-30%  的
                 性能模型有一定相似度, 因此在          HumanEval-70%  上性能更高的模型与参数在        HumanEval-30%  上同样有较好的性
                 能; 不管是在    HumanEval-70%  还是在  HumanEval-30%, CodeLLMTuner 均能达到最高的性能, 这不仅表示
                 CodeLLMTuner 相较于其他基线方法在代码大模型选择与参数调优问题上更有可能选择性能更优的模型与参数,
                 也表示   CodeLLMTuner 相较于其他基线方法在泛化能力上的优势: 在特定                Benchmark  上选择的模型与参数在处
                 理其他相似任务时同样有着更好的性能.
                    除此以外, 为评估     3  次实验间性能波动情况, 本文还以          pass@1  作为性能指标, 比较各基线方法在         3  次实验中
                 性能的方差, 如图     8  所示.
                    首先, DivBO  和  CodeLLMTuner 的方差最低, 其原因在于前者简单地将参数空间进行扩展, 后者能准确选择
                 最优模型, 因此其性能均未根据实验次数的不同而改变. 其次, transfer learning            随着成本的增加, 方差明显降低, 其
   257   258   259   260   261   262   263   264   265   266   267