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

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


                     独立采样: 每个模型使用             模型选择: 使用样本数据训练倾向评分与                  获选模型参数调优: 重启获选

                     所选择的参数调优算法迭               性能预测器并以此计算各模型性能期望,                 模型上的参数调优过程, 在继续
                      代采样K次并收集数据                      由此选择最优模型                     进行N次选代后选择最优参数
                                                                   数据重用
                      参数调优过程   1             参数调优过程   1                                 参数调优过程   1
                          ...      进行K次迭代        ...                获选模型      继续参数调优
                      参数调优过程   2             参数调优过程   2
                                                                                             进行N
                      参数调优过程   1             收集                                              次迭代
                    (以贝叶斯优化为例)               数据        倾向评分与性能预测器                         获选参数
                        生成                    样本数据    训练  倾向评分
                            目标代码                           预测器                              ...
                                                        对齐
                    Prompt+LLM 1  评估
                     解码参数                      同分布    训练  加权性能  推理   各模型                参数调优过程   2
                                              样本数据         预测器       性能期望
                            性能数据
                        更新
                                               图 3 CodeLLMTuner 架构示意图

                  2.1   独立采样阶段
                    如前文所述, 现有的      CASH  方法与序列化方法由于参数空间维度过高或支持调优方法有限等问题均难以满
                 足代码大模型选择与参数调优的需求, 因此本文基于多阶段组合方法, 通过独立采样阶段、模型选择阶段与获选
                 模型的解码参数调优这        3  阶段解决该问题, 其中采样阶段用于收集可供模型选择与参数调优两阶段使用的样本数
                 据. 而由于代码大模型采样成本过高, 分别为两阶段单独采样会导致成本难以接受, 因此本文期望引入数据重用策
                 略, 以提高数据利用率.
                    然而, 模型选择阶段所需的样本数据分布与参数调优方法所采样的样本数据分布不同, 使得难以直接将参数
                 调优样本数据重用于模型选择. 代码大模型选择通常采用随机采样或梯度采样的方式收集模型间同分布数据以计
                 算代码大模型性能期望; 而参数调优方法由于不同代码大模型间性能分布差异, 通常收集模型间不同分布样本数
                 据. 样本数据分布的差异使得直接重用样本数据会导致性能估计失准. 如图                        4  所示, 其中实线表示性能模型, 点表
                 示样本数据, 虚线表示各模型的性能期望. 如图              4(a) 所示, 即使对于单个模型, 由于参数调优阶段所收集的样本数
                 据具有一定的倾斜, 直接使用该样本数据计算出的性能期望与使用梯度采样或随机采样所收集的样本数据计算出
                 的真实值会存在较大差异. 而且, 在多个代码大模型场景中, 如图                  4(b) 所示, 模型间样本数据分布的差异增加了预
                 测不同模型性能期望的误差. 而对于参数调优阶段, 现有工作指出, 目前常用的参数调优方法通常在采样之后根据
                 评估结果调整后续采样策略, 而不同分布的样本数据之间不存在逻辑关联, 难以实现数据重用.

                                                                                Model 2
                                                 Estimated                             esti  esti
                                                                                       1
                                                                                    Perf  >Perf  2
                                                                                       real  real
                                                                                    Perf  <Perf  2
                                                                                       1
                              Performance            Real         Performance
                                                                                Model 1
                                      Configuration space               Configuration space
                             (a) 非随机分布下样本数据期望与真实期望的              (b) 模型间样本数据分布差异导致的性能
                                   差值 (蓝线表示真实期望)                 期望估计失准 (不同颜色表示不同模型)
                                      图 4 使用模型间不同分布样本数据估计的性能期望概览

                    因此本文期望对模型间不同分布样本数据进行处理, 使用匹配方法对齐不同分布的样本数据, 以使用参数调
                 优采样策略收集的样本数据计算模型性能期望并选择最优模型. 具体来说, CodeLLMTuner 在每个模型上使用如
                 贝叶斯优化等方法同时进行解码参数调优, 在该过程中迭代采样和评估以收集样本数据, 在                             K  次迭代后暂停参数
   252   253   254   255   256   257   258   259   260   261   262