Page 116 - 《软件学报》2026年第6期
P. 116
舒善富 等: 基于自适应知识蒸馏的代码大模型轻量化 2435
生成分布不足以保证模型生成的全局一致性和语义连贯性. 基于序列级 KL 散度的知识蒸馏方法通过优化学生模
型, 使其生成的序列分布接近教师模型生成的序列分布, 提升模型在复杂生成任务中的表现. 因此, Kim 等人 [42] 提
出了 SeqKD 的概念, 并将其应用于神经机器翻译 (NMT) 任务. 该研究展示了标准知识蒸馏在词级预测上的有效
性, 引入两种新颖的序列级知识蒸馏方法, 进一步改善翻译性能. 这两种方法通过最小化学生模型和教师模型输出
序列之间的 KL 散度, 使学生模型能够更准确地捕捉教师模型生成的序列分布.
以上知识蒸馏技术被广泛应用于计算机视觉、自然语言处理等任务中. 基于 KL 散度、RKL 散度损失函数的
知识蒸馏方法以及 SeqKD 方法在其他领域显示出一定的有效性, 如在自然语言处理领域, SeqKD 方法 [42] 使模型
规模减小了 77.8%–82.98%, 降低了 19.23%–21.43% 的精度损失; 在计算机视觉领域中, 基于 KL 散度的知识蒸馏
方法 [43] 使模型规模减小了 38.46%–81.82%, 降低了 2.9%–4.8% 的精度损失; 在通用大语言模型领域, 基于 RKL 散
度的知识蒸馏方法 [9] 使模型规模减小了 46.1%–92%, 降低了 4.3%–10.45% 的精度损失.
尽管知识蒸馏技术在通用模型的压缩和性能提升方面取得了显著成果, 但该方法的有效性未在代码生成任务
中应用与验证. 不同于通用自然语言生成任务, 代码生成任务要求生成结果具备语法正确性和语义一致性等. 因
此, 本文重点探讨知识蒸馏技术在代码生成领域的适用性, 针对代码生成任务的特殊性研究改进方案.
2 研究问题定义
本文将代码生成任务中的知识蒸馏问题定义为: 通过模仿教师模型优化学生模型的学习过程, 在减小模型参
数规模的同时, 降低代码生成精度损失.
代码生成是指根据输入的自然语言描述或提示 (prompt), 生成对应的代码片段或完整的代码实现. 随着大语
言模型的进步, 代码生成技术显著提升. 然而, 代码大模型由于参数量庞大, 对计算资源需求高, 在实际应用中面临
部署难和推理慢等问题. 如何在保持大参数大模型生成能力的前提下实现轻量化是亟待解决的问题.
在代码生成任务中, 任务提示明确的 prompt 能够引导教师模型生成更高质量的代码, 生成的词正确性更高并
更具可靠性, 任务提示不明确的 prompt 会导致生成的代码不符合预期, 确定性降低, 且内容质量下降 [44] . 如图 1(a)
所示, 直接输入原始文本无法生成正确内容, 图 1(b) 则能生成正确内容. 因此, 任务提示明确的 prompt 可以提升教
师模型的生成质量, 使教师模型的输出更具指导性, 为学生模型的学习提供更好的参考.
有提示模板
直接输入 文本
文本
生成内容
生成内容
(a) 直接输入原始文本的生成内容 (b) 有提示模板的生成内容
图 1 模板对生成质量的影响

