Page 264 - 《软件学报》2026年第5期
P. 264
曲慕子 等: CodeLLMTuner: 基于样本重用的代码大模型选择与解码参数调优框架 2143
70% 还是在 CodeXGLUE-30%, CodeLLMTuner 均能达到最高的性能, 表示 CodeLLMTuner 相较于其他基线方法
在进行代码大模型选择与参数调优时有着更高的性能与更好的泛化能力.
25.0 3.0
22.5
2.5
20.0
17.5 2.0
BLEU_1 15.0 BLEU_2
12.5 1.5
10.0
1.0
7.5
5.0 0.5
0 20 40 60 80 100 120 0 20 40 60 80 100 120
总成本大小 总成本大小
(a) BLEU_1 (CodeXGLUE-70%) (b) BLEU_2 (CodeXGLUE-70%)
25.0 3.0
22.5
2.5
20.0
17.5 2.0
BLEU_1 15.0 BLEU_2
12.5 1.5
10.0
1.0
7.5
5.0 0.5
0 20 40 60 80 100 120 0 20 40 60 80 100 120
总成本大小 总成本大小
(c) BLEU_1 (CodeXGLUE-30%) (d) BLEU_2 (CodeXGLUE-30%)
DivBO EcoOptiGen Transfer learning CodeLLMTuner AutoRAG-HP
图 9 各基线方法在 CodeXGLUE-70% 和 CodeXGLUE-30% 上所选择的最优模型与参数性能
● 测试用例生成任务
本文选择 CodaMosa 所提出的针对 Flask 库的 Benchmark 上进行测试, 考虑到测试用例生成 Benchmark 中的
不同代码任务之间并非独立, 需要整合所有任务的生成结果以评估整体性能, 因此本实验并未对其进行拆分. 本实
验在测试用例生成 Benchmark 上使用各基线方法在一定成本下进行代码大模型选择与解码参数调优, 记录各基线
方法所选择的最优模型与参数在性能空间上的性能. 本实验同样重复 3 次且遍历不同成本分配策略并计算性能期
望, 实验结果如图 10 所示. 其中横轴表示总成本大小, 以采样次数进行衡量, 纵轴表示所选择的模型与参数在
Benchmark 上的代码任务性能, 以行覆盖率和分支覆盖率衡量.
随着成本增加, 各方法均会出现性能波动的情况, 其原因在于测试用例生成任务的性能受随机性影响极大, 即
使使用的模型与参数相同, 代码大模型也可能会输出完全不同的结果; 然而, 不管是在行覆盖率还是分支覆盖率,
CodeLLMTuner 均能达到最高的性能.
RQ2: 成本相同的情况下, CodeLLMTuner 与基线方法在组合代码任务上的性能差异有多大?
由于代码大模型选择与解码参数调优成本过高, 为每个代码任务都单独进行调优可能是不经济乃至不可行
的, 因此用户会将多个代码任务整合为一个代码任务进行调优以节约成本. 本节探索 CodeLLMTuner 相较于其他
基线方法在组合代码任务上进行代码大模型选择与解码参数调优的性能差距.
本文使用代码生成, 代码摘要与测试用例生成任务构建组合代码任务, 同时分别使用 pass@10、BLEU_1 与
行覆盖率评估对应代码任务. 由于上述不同任务的性能指标值域范围不同, 在计算加权和之前对 pass@10、

