Page 117 - 《软件学报》2026年第6期
P. 117
2436 软件学报 2026 年第 37 卷第 6 期
知识蒸馏通过教师模型生成的输出分布概率, 帮助学生模型学习代码的细节. 代码生成对结构化语法和逻辑
关系有着严格的要求. 知识蒸馏在逐步捕捉各步骤中的语法与逻辑关系方面表现出色, 使学生模型能够精确地模
仿教师模型在特定数据上的生成方式, 生成符合严格代码规范的输出. 知识蒸馏技术通过大参数模型 (教师模型)
指导小参数模型 (学生模型) 训练, 在减小模型规模的同时降低生成精度损失. 其核心是最小化教师模型与学生模
型生成概率分布的损失函数, 使学生模型在参数减少的情况下依然具备较强的代码生成能力. 优化函数如下:
[ ]
minL KD (p,q θ ) = minE x∼data D(p(x)|q θ (x)) (1)
θ θ
其中, L KD (p,q θ ) 表示知识蒸馏的损失函数, D(·|·) 是散度度量, p(x) 是教师模型生成的概率分布, q θ (x) 是学生模型
生成的概率分布, θ 是学生模型的参数.
本文面临的挑战是如何在降低模型参数规模的情况下, 充分保持代码生成的精度和质量. 尽管知识蒸馏技术
在自然语言处理 [42] 和图像分类 [43] 等领域取得了显著效果, 但将其直接应用于代码生成任务时存在一些困难. 代码
生成具有高度结构化和严格语法要求, 生成的代码需要严格遵循编程语言的语法规则和逻辑结构. 相较于自然语
言, 代码中的微小错误 (如缺少一个括号或拼写错误) 都会导致编译失败和运行错误; 其次, 教师模型和学生模型
在参数规模上的巨大差异会导致知识蒸馏过程中存在信息传递瓶颈. 大参数的教师模型能够捕获更复杂的代码模
式和语义信息, 而小参数的学生模型无法有效学习和表示这些复杂的信息; 此外, prompt 的选取对代码生成模型
的生成效果有重要影响, 如何选取 prompt 模板以发挥教师模型的能力, 是代码生成领域内亟待解决的挑战. 综上
所述, 如果不针对代码生成任务的特点进行改进, 知识蒸馏将无法充分发挥其作用, 导致学生模型的性能大幅
下降.
针对代码生成任务的特殊性, 本文在知识蒸馏的框架下, 选择适当的 prompt 模板, 构造任务提示明确的
prompt 以提高教师模型的生成质量. 本文通过设计有效的蒸馏策略和损失函数, 确保学生模型在减少参数量的同
时, 学习教师模型的代码生成能力, 生成符合语法和逻辑要求的高质量代码.
3 自适应知识蒸馏方法
3.1 Prompt 选取
在代码生成任务中, 知识蒸馏的效果很大程度上取决于教师模型输出的质量. 学生模型依赖于教师模型提供
的概率分布来学习代码生成的细节, 因此确保教师模型输出的准确性和一致性至关重要. 教师模型输出的概率分
布不仅由其自身的参数决定, 还受到输入 prompt 的影响. 指令内容明确的模板能够构造好的 prompt, 引导教师模
型生成更高质量的代码, 如更准确的语法、更规范的格式等. 本文讨论的 3 种模板如表 1 所示, 需要在模板的
{instruction}中填写数据集的指令内容, 在{input}中填写数据集的输入内容, 若为空则不填写, 构造后的内容是
prompt, 即输入至模型的内容. 模板 1 来源于 Li 等人 [34] 的模板, 未提供额外的生成指导, 引导性较弱; 模板 2 来源
于 Chia 等人 [45] 的模板, 告知模型在生成代码时应避免不必要的任务 (如测试或解释), 为生成过程增加了一定的限
制和方向; 模板 3 来源于 Stanford-Alpaca 的模板 (https://github.com/tatsu-lab/stanford_alpaca), 是更结构化的指令,
明确告诉模型应该完成的任务及输入信息.
表 1 模板类别及其描述
模板类别 来源 模板描述
模板1 StarCoder <fim_prefix>{instruction}\n{input}<fim_suffix><fim_middle>
Please complete the following Python code without providing any additional tasks such
模板2 Instruct-Eval
as testing or explanations.\n{instruction}\n{input}
Below is an instruction that describes a task. Write a response that appropriately completes the
模板3 Stanford-Alpaca
request.### Instruction:\n{instruction}\n### Input:{input}\n### Response:
因此, 自适应知识蒸馏方法旨在使学生模型学习教师模型的生成分布, 而高质量的 prompt 模板可以提高教师
模型的生成质量, 使学生模型学到更精准的答案. 随着学生模型质量的提升, 其与教师模型之间的差距得以缩小,

