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

2144                                                       软件学报  2026  年第  37  卷第  5  期


                 BLEU_1 与行覆盖率进行正则化处理. 之后使用此            3 项的加权和作为组合任务的评价指标, 其公式如下, 其中               α、β、
                 (1−α−β) 分别表示代码生成, 代码摘要与测试用例生成任务性能指标的权重.

                            Score multi = α×pass@10+β×BLEU_1+(1−α−β)×Coverage line (α > 0, β > 0, α+β < 1).

                        46                                       12
                        44
                                                                 10
                        42                                        8
                       行覆盖率 (%)  38                             分支覆盖率 (%)  6
                        40


                        36
                        34                                        4
                                                                  2
                        32
                        30                                        0
                          0  20  40  60  80  100  120  140  160   0   20  40  60  80  100  120  140  160
                                      总成本大小                                    总成本大小
                                      (a) 行覆盖率                                (b) 分支覆盖率
                            DivBO      EcoOptiGen     Transfer learning  AutoRAG-HP      CodeLLMTuner
                           图 10 各基线方法针对测试用例生成任务在              Benchmark  上的最优模型与参数性能对比

                    本实验将    HumanEval-70%、CodeXGLUE-70%  与  CodaMosa 这  3  个  Benchmark  组合成  MultiTask-70%, 同时
                 将  HumanEval-30%、CodeXGLUE-30%  与  CodaMosa 组合成  MultiTask-30%. 本实验设定以下场景以确定     α、β 组
                 合的值: 平均组合     ( α = β = 1/3)、关注代码生成任务    ( α = 0.6, β = 0.2) 或关注测试用例生成  ( α = 0.2, β = 0.2). 对
                 于不同的   α、β 组合, 本实验在     MultiTask-70%  上使用各基线方法进行代码大模型选择与解码参数调优, 然后比较
                 各基线方法所选择的模型与参数在            MultiTask-70%  上的性能, 用以衡量各基线方法进行代码大模型选择与解码参
                 数调优时的能力; 同时比较上述模型与参数在               MultiTask-30%  上的性能, 用以衡量各基线方法在特定          Benchmark
                 上选择的模型与参数对其他任务的泛化能力. 本实验同样重复                     3  次且遍历不同成本分配策略并计算性能期望, 实
                 验结果如图    11  所示.
                    对于模型选择与参数调优性能的比较, 随着成本的增加, 大多数基线方法在                        MultiTask-70%  上的性能都有所
                 增加, 然而该增加过程存在一定波动, 其原因在于不同代码任务的性能模型分布不同, 导致组合任务的性能模型存
                 在较多的局部最优点; 组合权重的变化会影响整个组合任务性能模型的分布, 导致各基线方法的模型选择与参数
                 调优结果出现变化, 而      CodeLLMTuner 在各个场景下均能达到最高的参数调优性能.
                    对于泛化能力的比较, CodeLLMTuner 在平均组合场景下的泛化能力不强, 而在关注特定任务                        (代码生成或测
                 试用例生成) 时的泛化能力较强. 其原因在于不同任务的最优模型不同, 平均组合场景下                              MultiTask-70%  与
                 MultiTask-30%  上的最优模型不一致, 导致     CodeLLMTuner 在  MultiTask-70%  上选择的最优模型在   MultiTask-30%
                 上性能表现不佳; 而在关注特定任务时, MultiTask-70%         与  MultiTask-30%  上的最优模型都是所关注任务的最优模
                 型, 因此  CodeLLMTuner 对其的泛化能力较强.
                    RQ3: 为达到相同的性能, CodeLLMTuner 相较于基线方法可以节省多少成本?
                    代码大模型选择与解码参数调优的第              2  个目标是以尽可能低的成本为代码任务找到满足性能需求的模型和
                 解码参数. 为了比较      CodeLLMTuner 相较于基线方法为达到相同的性能要求所消耗的成本, 本实验选择代码生成
                 任务作为目标任务, HumanEval 作为       Benchmark, pass@10  作为性能指标以构建性能空间, 并使用相对性能             (RP)
                 来衡量代码大模型选择与解码参数调优过程是否满足性能要求, 其公式为:

                                                           Y max −Y pred
                                                      RP =        .
                                                             Y max
                    该指标表征调优选择的模型与参数所对应的性能相较于真实最优性能的差距, 其中                            Y pred  为代码大模型选择与
   260   261   262   263   264   265   266   267   268   269   270