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 为代码大模型选择与

