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

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


                    (6) 计算模型性能期望以选择最优模型
                    最后, CodeLLMTuner 使用梯度采样为各个候选模型收集大量参数配置, 并基于加权性能预测器预测其性能,
                 然后为每个模型计算该性能的平均值作为该模型的性能期望, 以此选择最优模型.
                  2.3   获选模型的解码参数调优阶段
                    由于独立采样阶段采用了参数调优方法的采样策略, 因此                   CodeLLMTuner 可直接利用该样本数据完成解码参
                 数的选择. 然而为进一步探索性能空间以选择更优的解码参数, 本文在选择最优模型后继续进行参数调优. 参数调
                 优方法通常采用“采样-评估-再采样”的迭代流程, 因此虽然此类算法难以重用其他分布的样本数据, 但是可以重用
                 相同采样算法收集的样本数据, 即          CodeLLMTuner 可通过重用第     1  阶段的样本数据与采样策略继续探索获选模型
                 的性能空间.
                    从模型的角度来看, CodeLLMTuner 实际上是将完整的参数调优过程切分为两个阶段: 在第                        1  阶段为每个模
                 型执行参数调优, 然后终止非最优模型上的参数调优过程; 在第                   2  阶段, CodeLLMTuner 在获选模型上继续进行参
                 数调优. 具体而言, CodeLLMTuner 首先在参数调优第          1  阶段采用例如贝叶斯优化的采样策略, 以迭代方式为每个
                 模型采样和评估      K  个配置点. 随后, 使用这些模型间不同分布样本数据来估计每个模型的性能期望, 从而选择最
                 优模型. 最后, CodeLLMTuner 在参数调优第       2  阶段重用第   1  步中的采样策略与样本数据继续迭代采样和评估配
                 置  N  次, 以确定最优配置. 由于该方法仅要求参数调优策略采用“采样-评估-再采样”的迭代流程, 因此有较强的适
                 用性.
                    经实验验证     (见第  3.4  节), 当总成本固定时, 不同的    K、N  比值会导致一定的性能差异. 而考虑到模型选择仅
                 需要对性能期望进行排序, 对性能预测精度的要求不高, 导致模型选择成本增加带来的性能收益不如参数调优. 因
                 此在实际使用中, 用户可以先在第           1  阶段为不同代码大模型并行分配采样成本进行模型选择以收集样本数据, 以
                 此预测不同成本下的获选模型, 当该变量收敛, 即模型选择成本的增加不会改变模型选择的结果时, 停止非获选模
                 型上的参数调优过程, 并将剩余的成本用于探索获选模型上的最优配置.
                  3   实验分析


                  3.1   实验数据
                    为全面评估     CodeLLMTuner 的效果, 本文构建代码大模型选择与解码参数空间.
                                      [7]
                                                              [3]
                    本文选择    WizardCoder 、PhindCoder [36] 和  Code Llama 作为候选大语言模型, 参数规模覆盖    7B、13B、34B.
                 如此选择的原因在于: 首先, 这些模型是当前代码生成领域中最具代表性和广泛使用的模型, 能够覆盖不同的技术
                 路线和优化策略; 其次, 这些模型的开源代码和预训练权重易于获取, 便于复现实验和进行比较; 最后, 这些模型在
                 公开基准测试中表现优异, 能够为本文的研究提供可靠的基线.
                    对于解码参数空间的构建, 本文选择对代码任务完成质量有明显影响的解码参数进行实验: temperature 会影
                 响各  token  的候选概率; top-p、top-k 会直接决定   token  的采样范围; repeatition_penalty  和  length_penalty  在代码摘
                 要中可以有效提高生成结果的可读性, 但在代码生成与测试用例生成时却可能反向影响大模型生成正确的代码.
                 因此本文选择     temperature、top-p [37] 、top-k [38] 、repeatition_penalty  和  length_penalty  参与实验, 这些参数是生成任
                 务中最常用的解码参数, 能够全面控制生成文本的质量、多样性、流畅性和长度. 具体参数取值范围如表                                  2  所示.

                                             表 2 解码参数空间中各参数取值范围

                        解码参数                 取值范围                               描述
                       temperature          uniform(0, 1)          通过调整候选概率影响解码策略的随机性
                          top-p             uniform(0, 1)              通过影响token list影响生成结果
                          top-k           lograndint(2, 1 024)         通过影响token list影响生成结果
                     repeatition_penalty    uniform(0, 1)         通过调整候选概率以避免重复生成多个token
                      length_penalty        uniform(0, 1)      通过对句子进行归一化处理鼓励模型生成更长的句子
   255   256   257   258   259   260   261   262   263   264   265