中国科技核心期刊      中国指挥与控制学会会刊     军事装备类重点期刊
Command & Control

Code summarization based on large model knowledge distillation

  • YOU Gang ,
  • LIU Wenjie ,
  • LI Meipeng ,
  • SUN Liqun ,
  • WANG Lian ,
  • TIAN Tieku
Expand
  • Unit 96941 of PLA, Beijing 100085, China

Received date: 2024-11-05

  Revised date: 2024-12-08

  Online published: 2025-07-28

Abstract

Code summarization is a short natural language description of source code. Summaries are usually only one sentence long, but they are the primary way for developers to understand code. Recently, products based on large language models (such as ChatGPT) have demonstrated a strong ability to generate these descriptions. However, to use these tools, programmers must send their code to an untrusted third party for processing (for example, through API calls), but this method is unacceptable to many organizations. This paper presents an alternative: we use the example output generated by GPT-3.5 to train an open source model through a process related to knowledge distillation. Enabling small models (with 350 million parameters) to also be comparable to GPT-3.5 in code summarization tasks.

Cite this article

YOU Gang , LIU Wenjie , LI Meipeng , SUN Liqun , WANG Lian , TIAN Tieku . Code summarization based on large model knowledge distillation[J]. Command Control and Simulation, 2025 , 47(4) : 27 -33 . DOI: 10.3969/j.issn.1673-3819.2025.04.005

代码摘要是源代码的简短自然语言描述。摘要通常只有一句话。例如,当阅读一个Java方法时,程序员可能会从Javadoc句子“将所有可见的多边形更改为蓝色”开始。摘要为程序员提供了一种快速了解代码功能的方法。软件工程(software engineering,SE)长期以来一直致力于自动化生成摘要的过程,以减少程序员的工作量,支持文档不足的遗留程序,并构建可访问性工具[1]。代码摘要构成了这些工具的基础。
像许多研究领域一样,随着大语言模型的快速崛起,实现自动代码摘要这一数十年的目标似乎即将实现。本文通过蒸馏GPT-3.5的能力来生成源代码摘要,比较了由GPT-3.5生成的源代码摘要与人类程序员编写的摘要,以确定GPT-3.5生成的摘要是否可以替代人类编写的摘要。本文使用funcom-java-long数据集来获得主要源代码,并使用GPT-3.5为215万个Java方法生成了摘要。结果表明,GPT-3.5在准确性、完整性、简洁性和有用性方面的质量高于人类编写的参考摘要。这一结果令人惊讶,因为人类编写的参考摘要长期以来一直被视为评估软件文档生成质量的标准[2]
本文使用GPT-3.5生成的摘要作为训练样本,对预训练的语言模型进行微调以生成源代码摘要,使用了Su等人[3]2023提出的微调方法,该方法使用了一种特定形式的训练提示,并比较了由3.5亿参数版本的Jam模型(使用215万个示例数据集进行训练)生成的摘要与GPT-3.5生成的摘要。结果表明,Jam模型能够很好地复制GPT-3.5的源代码摘要生成能力,尽管在整体性能方面GPT-3.5略胜一筹。
本文在三个方面推动了代码摘要自动生成技术的发展:
(1)本文进行了一项研究,比较了GPT-3.5生成的代码摘要和随代码本身提供的参考摘要。我们发现,人们更喜欢GPT-3.5生成的摘要,这一结果有两个重要含义。第一,它支持了研究对按需开发人员文档的愿景。第二,学界可能会重新研究代码摘要工具的新标准,因为基于AI的模型有时可能更加符合需求。
(2)为大模型的垂直应用提供一种新思路,本文蒸馏了GPT-3.5的代码摘要生成能力,并且发现一个成本较低的模型(如3.5亿参数的Jam模型)在提供足够示例的情况下,可以复制一个非常大的模型(如GPT-3.5)在代码摘要方面的能力。
(3)本文提出方案的关键优势在于它们可以在本地运行,这意味着模型资源消耗更小,成本更低(例如,单个16GB消费者级GPU)。同时,这也意味着本地数据的安全性更有保障。

1 相关工作

1.1 源代码摘要

“源代码摘要”一词是由Haiduc等人[4]在2010年提出的,指的是编写代码的自然语言描述的任务。2017年以前,大多数研究都集中在基于信息检索(information retrieval,IR)和基于模板的方法上。2017年至今,用于代码摘要的神经模型成为最主要的研究方向。神经模型有不同的类别,包括对代码本身进行更好的建模以及使用更多的上下文。例如,LeClair等人[5]将抽象语法树(AST)与源代码相结合,Allamanis等人[6]将AST建模为神经模型的图,Haque等人[7]将注意力机制应用于文件上下文,Bansal等人[8]结合了不同软件项目的信息。
最近,像OpenAI的ChatGPT大语言模型(LLM)在程序理解方面展示出了强大的能力。然而,一些训练数据是不公开的,在研究中使用这些模型容易出现数据泄露问题。由于本文通过使用公开且可控的数据集训练小模型,并模仿GPT-3.5的代码摘要能力,从GPT-3.5中提取知识。

1.2 知识蒸馏

知识蒸馏是指教导一个小型机器学习模型在特定任务上表现得像一个大型模型[9]。在大型模型执行某些特定任务过于昂贵或安全性要求过高的场景中,知识蒸馏是很有用的。最近,通用模型如GPT-3.5被用来教导较小的模型执行问答任务[10],评估学生答案[11],遵循特定类型的指令[12]以及提高现有小型聊天机器人的输出[13]
知识蒸馏的一个难点是,为了缩小模型规模需要面对很多困难。Gudibande等人[14]指出,试图复制ChatGPT所有能力的小模型可能会面临对训练样本中未出现的提示进行泛化的问题。在训练小模型执行特定任务时不应该期望小模型能把所有任务都做好,但小模型可以通过专注于单个任务来模仿大型模型的部分能力。在本文中,我们专注于代码摘要任务,并展示一个小模型如何在这个特定任务上与大型模型表现相当。

2 GPT-3.5摘要和人工编写摘要的比较

本节讨论对GPT-3.5生成的源代码摘要与程序员编写的摘要的比较。目的是确定GPT-3.5生成的摘要是否能够替代人工。并衡量GPT-3.5生成的摘要的质量。如果GPT-3.5生成的质量较差,那么它就不适合用于蒸馏。因此,本文提出研究问题(research question, RQ):根据相关文献中确立的关键质量标准,GPT-3.5生成的摘要和人工撰写的摘要相比效果如何?

2.1 研究方法

我们组织了一项调查,通过向程序员展示不同的代码以及该代码的摘要,并要求他们针对四个问题对摘要进行排序。本文设计的调查遵循Sridhara等人[15]的方法,每份调查有四个问题。第一页展示一个Java方法以及该方法的一个摘要,同时还有以下三个问题:(1)独立于其他因素,我觉得这个摘要是准确的;(2)这个摘要遗漏了重要信息,这可能会妨碍对该方法的理解;(3)这个摘要包含大量不必要的信息。第一个问题旨在衡量准确性,第二个问题衡量完整性,第三个问题衡量简洁性。每个问题后面都有四个单选按钮,用于选择以下之一:“非常同意”“同意”“不同意”和“非常不同意”。
在第二页上,要求程序员选出相同方法之间不同的摘要哪个更好。两个摘要的位置随机生成。同时提供一个问题:总体而言,你觉得哪个摘要更好?这个问题后面有三个选项:“摘要1”“摘要2”和“我无法决定”。为了质量控制(见第3.3节),我们还要求参与者为他们对这个问题的回答提供理由。

2.2 主要源代码、摘要、参与者

本文使用了Su等人[3]提供的funcom-java-long数据集。这个数据集是对LeClair和McMillan[2]提供的数据集的修订。该数据集包含一个约17万个Java方法的训练集,这些方法带有专家编写的摘要,以及一个约8千个Java方法的测试集。
为了获得GPT-3.5编写的摘要,本文使用了以下格式的提示:“为这个Java方法编写一个一句话的描述:”后面跟着该方法的源代码。本文使用这个提示从GPT-3.5收集了总共215万个Java方法的数据集,其中包括来自funcom-java-long训练集的17万个方法,来自funcom-java-long测试集的8千个方法。同时,并过滤掉了一些质量很差的摘要(这些摘要几乎不成句子)。
我们通过招募了15名志愿者(公司开发人员),他们都是Java领域的程序员,并且从8千个测试集中随机选择30个Java方法展示给他们。本文收集了450个Java方法的反馈。

2.3 有效性影响

本研究中有效性的关键影响因素在于:(1)参与者;(2)GPT-3.5版本和提示。参与者群体可能对其有效性构成影响,因为参与者的主观喜好可能不同,并且参与者的认真程度也决定了这项研究的有效性。因此,我们手动检查每个参与者的调查结果,筛选出不符合要求的结果。我们过滤了一些在不到十五分钟内(即每个方法三十秒)完成调查的参与者。
GPT-3.5版本和提示也会对有效性构成影响,因为GPT-3.5是一款商业产品,可能会在不通知的情况下发生变化,并且不同的提示可能会给出不同的答案。

2.4 RQ1结果

本文发现GPT-3.5生成的代码摘要质量要高于数据集参考摘要(数据集参考摘要为人工撰写)。这一发现的证据主要有两种,如图1所示。第一,志愿者对准确性和完整性给出的评分,GPT-3.5比参考的摘要更好。GPT-3.5准确性平均值高于参考摘要,GPT-3.5的值有90%在3到4范围内。参考摘要只有74%在这个范围内。同样,对于完整性,人们对GPT-3.5的评分更高。第二,在比较两个摘要时,志愿者更喜欢GPT-3.5的摘要。但人们认为参考摘要更简洁,这可能是参考摘要更短,而GPT-3.5生成的摘要句子更长。
图1 人工摘要与GPT-3.5摘要对比,四张图分别对应3.1节中四个问题

Fig.1 Comparison between manual summary and GPT-3.5 summary,the four images correspond to the four questions in section 3.1 respectively

结果表明,GPT-3.5生成的摘要得到了更多人的偏爱。图2中的结果说明了GPT-3.5在准确性和完整性方面表现更优,只是在简洁性方面较差。简而言之,本文发现在实际应用中,GPT-3.5在编写软件文档方面要强于人类。
图2 Jam模型和GPT-3.5效果比较

Fig.2 Comparison of Jam model and GPT-3.5 performance

3 提取GPT-3.5的知识

本节讨论知识蒸馏过程和评估。本文主要研究用于代码摘要的大型语言模型的知识蒸馏,因此,本文提出以下研究问题:RQ2:在不同的模型和不同大小数据集下,语言模型在代码摘要方面对GPT-3.5的模仿程度如何?
本文不同模型大小指的是根据参数数量来衡量的模型。当前的研究前沿大多集中在类似生成式预训练Transformer(GPT)的模型上,模型大小被认为是影响模型输出质量和资源成本的主要因素[16]。RQ2的目标是帮助人们在平衡模型输出质量和成本方面做出决策。同样,本文不同大小的数据集指的是根据样本数量来衡量的大小。因为额外的样本会增加训练成本,所以本文尽可能使用更少的样本。

3.1 蒸馏过程

本文的蒸馏过程如下:使用GPT-3.5生成的摘要作为训练样本,对一个预训练的语言模型进行微调,以训练模型的代码摘要生成能力。本文使用Su等人[3]2023年提出的微调过程,即以下形式的训练提示:TDAT:<Java方法代码>,COM:<Java方法的摘要>。本文为第3节中从GPT-3.5收集的全部样本创建这种形式的训练提示。在微调过程中,本文使用标准的自回归训练,模型根据之前的所有标记来生成提示中的每个标记。模型将学习在TDAT之后逐个生成代码标记地,然后学习在COM之后生成一个代码摘要。

3.2 主要语言模型和数据集大小

作为本文研究的一部分,本文对两种语言模型架构进行微调,设置不同的模型和数据集大小。
第一个模型叫做Jam,是一个类似于GPT-2的模型,使用520万个Java方法进行预训练。Jam模型是由Su等人[3]2023年发布的用于处理Java代码的语言模型。预训练数据集已经清理掉了来自funcom-java-long测试集的8千个样本,本文在第3节的研究中以及本节后面都使用了这个测试集。本文使用表1中的关键配置参数,在像Jam这样的类似于GPT-2的架构中,这些参数导致总的网络参数大小为350 m、110 m和38 m。Jam的输入是一个词序列,每个词首先被转换为一个固定维度的词向量(word embedding)。词向量可以捕捉到词的语义信息,使得模型能够在向量空间中对词进行操作和计算。除了词向量,输入还包含位置编码(position encoding)。由于 Transformer 本身不具有对序列顺序的天然感知能力,位置编码被添加到词向量中,以向模型提供每个词在序列中的位置信息。位置编码的公式如下:
PE(pos,2i)=sin( p o s 10   000 2 i d m o d e l)
PE(pos,2i+1)=cos( p o s 10   000 2 i d m o d e l)
其中,pos表示词在序列中的位置,i表示向量的维度索引,dmodel是模型的隐藏层维度。通过这种正弦和余弦函数的组合方式,可以为不同位置的词生成独特的位置表示,并且能够捕捉到相对位置关系。多头注意力机制是Jam中的核心组件之一。它允许模型同时关注输入序列的不同部分,从不同的表示子空间中学习信息,从而增强模型对文本语义的理解能力。多头注意力机制首先将输入的查询(query)、键(key)和值(value)线性投影到不同的子空间,得到多个头(head)。对于每个头i,计算注意力权重ai和对应的输出zi:
ai= Q i K T i d k,zi=softmax(ai)Vi
其中,QiKiVi分别是第i个头的查询、键和值矩阵,dk是键向量的维度。然后,将各个头的输出拼接在一起,并通过一个线性投影得到最终的多头注意力输出:
$z=\boldsymbol{W}_{o}\left[z_{1} ; z_{2} ; \cdots ; z_{n}\right]$
其中,Wo是线性投影的权重矩阵。在多头注意力机制之后,Jam使用了一个两层的前馈神经网络(feed-forward neural network,FFN)来进一步处理信息。每层前馈神经网络都包含一个线性变换和一个非线性激活函数(通常是 GELU 激活函数)。其公式表示为
${FFN}(x)=\max \left(0, x W_{1}+b_{1}\right) W_{2}+b_{2}$
其中,x是多头注意力机制的输出,W1、b1、W2、b2分别是第一层和第二层线性变换的权重和偏置。
表1 模型参数设置和参数量

Tab.1 Model parameter setting and parameter quantity

Jam Jam Jam Starcoder
嵌入维度 512 768 1024 6144
层数 4 10 24 40
注意力头数 4 8 16 48
参数总量 38 m 110 m 350 m 15.5b
为了加速模型的训练和提高模型的稳定性,GPT-2 在每个子层(多头注意力机制和前馈神经网络)的输入和输出都添加了层归一化(layer normalization)操作。层归一化的作用是将输入的特征向量归一化到均值为 0、方差为 1 的分布,使得模型更容易学习到数据的内在规律。其公式表示为
LN(x)= x - u σ 2 + δγ+β
其中,x是输入的特征向量,uσ2分别是输入特征向量在批次维度上的均值和方差,δ是一个很小的常数(通常为10-8),防止分母为 0,γβ是可学习的参数,用于调整归一化后的特征向量的尺度和偏移。Jam将多个相同的解码器层(包含多头注意力机制、前馈神经网络和层归一化)堆叠在一起,以逐步提取和处理输入文本信息,从而生成更高质量的语言表示。随着层数的增加,模型可以捕获更高级的语义和语法信息,以及更长远的依赖关系。GPT-2 采用无监督的预训练方式,其训练目标是最大化下一个词的预测概率。具体来说,给定一个长度为n的文本序列x=(x1,x2,…,xn),模型的目标是预测下一个词xn+1的概率分布P x n + 1 | x 1 , x 2 , , x n。在训练过程中,模型通过在大规模文本语料库上进行自回归训练来学习语言的统计规律和语义信息。
第二个模型,本文使用Starcoder[17],这是一个15.5B参数的类似于GPT-2的模型。Starcoder模型使用“TheStack”进行预训练,“TheStack”是一个包含超过350种编程语言的6TB源代码的集合。这个模型是Jam的一个强有力的替代方案,因为它代表了一种最先进的语言模型,拥有数十亿个参数和一个互联网规模的预训练数据集大小。与Jam相比,Jam是一个成本较低且实验变量控制严格的模型,而Starcoder是一个工业级别的模型,因为其预训练数据更大且更难搜索。
本文在微调过程中使用四种数据集大小:215万、125万、62万和17万。17万数据集大小使用来自funcom-java-long训练集的相同Java方法,以保持与先前研究的一致性,并能够进行与人工编写参考进行比较的实验(funcom-java-long中的所有17万个Java方法都有人工编写的摘要,本文在微调之前将其移除,并替换为GPT-3.5生成的摘要)。然后本文从第3节中创建的215万个GPT-3.5生成的摘要数据集中随机子采样,并将这些样本添加到17万数据集中,以创建125万和62万数据集。

3.3 评估指标

本文使用两个指标进行评估:METEOR和USE。METEOR[18]是一种考虑每个词之间的相似性和词重叠性来进行评估的指标。USE[19]是一种通过使用通用编码器将参考摘要和预测摘要编码为固定长度向量,并计算两个摘要之间的相似性得分的指标。

3.4 RQ2结果

自动评估指标METEOR和USE表明,随着训练数据集和模型参数数量的增加,对GPT-3.5的匹配度总体上呈上升趋势,如表2表3所示。使用38m参数的Jam模型对170k数据集的METEOR得分是33.88,对于350 m参数的Jam模型,该得分上升到40.73,对于Starcoder则为44.8。同样,350 m的Jam模型的40.73分随着数据集从170k增加到2.15 m个样本,上升到44.77。USE得分也呈现相同的模式,随着数据集大小的增加,350 m的Jam模型的得分在68.21到70.85之间。
表2 RQ2的METEOR得分

Tab.2 Meteor score for RQ2

数据集
大小
Jam Starcoder
38 m 110 m 350 m 15.5 b
17万 33.88 36.71 40.73 44.8
62万 28.29 33.98 41.57 45.59
125万 30.19 35.58 42.63 46.38
215万 32.11 37.18 44.77
表3 RQ2的USE得分

Tab.3 Use score for RQ2

数据集
大小
Jam Starcoder
38 m 110 m 350 m 15.5 b
17万 62.52 64.88 68.21 71.55
62万 57.78 62.84 69.24 72.15
125万 59.67 64.28 70.08 72.74
215万 60.43 64.82 70.85
从训练成本和效果来看,使用350 m的Jam模型更有性价比。表4显示,Starcoder的成本是350 m的Jam模型的28倍,但METEOR得分仅高出10%,USE得分仅高出5%。由于估算需要14天的时间成本,并且之前数据量的增长对模型提升较小,本文放弃了Starcoder模型对于215万数据集的微调工作。相比之下,350 m的Jam模型的成本仅略高于较小的模型,并且可以在单个16GBGPU上运行。总之,350 m的Jam模型在成本和性能之间提供了一种平衡。
表4 训练所需时间(小时)

Tab.4 Training time required (h)

数据集
大小
Jam Starcoder
38 m 110 m 350 m 15.5 b
17万 0.2 0.3 1.0 28
62万 0.5 1.5 3.5 97
125万 0.9 2.5 6.5 195
215万 2.0 4.0 10.5

4 GPT-3.5与蒸馏模型生成摘要的比较

本节我们将讨论GPT-3.5生成的代码摘要与使用215万数据集训练的350m参数版本的Jam模型生成的代码摘要之间的比较。本文的目的是衡量Jam模型在代码摘要任务中对GPT-3.5的复制程度。本文选择比较350 m参数版本的Jam模型是因为350 m的Jam模型在性能和成本之间取得了平衡。就METEOR和USE分数而言,该模型与Starcoder模型的差距在10%以内,同时只需要单个16GB的GPU训练较短时间。Starcoder模型虽然性能更高,但成本也高得多。同时,350 m参数的Jam模型在METEOR和USE分数上比110 m参数模型的提升超过10%,在实际中成本相对较低。
图2展示了比较的结果。我们可以看到,350 m参数的Jam模型和GPT-3.5在准确性、完整性或简洁性方面并不存在显著差异。GPT-3.5的准确性和完整性的平均值比Jam更好,但是差异并不明显。同样,简洁性的平均值Jam略好一些,但是也不显著。总体而言,参与者在52%的情况下更喜欢GPT-3.5的摘要,在46%的情况下喜欢Jam的摘要(2%未决定)。综合来看,Jam复制了GPT-3.5的源代码摘要,尽管在总体偏好方面GPT-3.5略占优势。
然而,这些结果并不意味着Jam和GPT-3.5的摘要是完全相同的。表5给出了一些生成摘要的示例。参与者更喜欢GPT-3.5的前两个样本和Jam的后两个样本。由于篇幅限制本文无法包含完整代码,但这些样本说明了模型如何提供大致相似的内容,尽管它们在文本的表面呈现或关于压缩哪些信息的决策上有所不同。作为一个一般性的观察,本文注意到GPT-3.5往往更冗长,尽管这种冗长是否更受欢迎并不清楚。例如,第二个例子展示了GPT-3.5如何写“从缓冲区读取下一个字节并返回相应的字符”,而Jam写的是“从缓冲区读取一个字符”来表达相同的信息。Jam的摘要更简洁但不太完整,然而GPT-3.5的摘要更受青睐。同样,第三个样本展示了Jam如何写“带有指定参数”摘要,而不是像GPT-3.5那样列出它们,尽管在这个例子中Jam更受青睐。
表5 GPT-3.5和Jam生成的摘要示例, 偏好表示志愿者的选择

Tab.5 Summary examples generated by GPT-3.5 and Jam, preference representing volunteer choices

偏好 模型 摘要
GPT-3.5 为给定索引回收一个视图,检查索引是否在项目范围内,以及视图是否需要添加到空项目或项目列表中。
Jam 接收一个View对象和一个索引,如果索引超出范围,将视图添加到轮中,并将emptyItems标志设置为true。
GPT-3.5 从缓冲区读取下一个字节并返回相应的字符,如果没有足够的数据则抛出异常。
Jam 从缓冲区读取一个字符,如果没有足够的数据可用,则抛出异常。
GPT-3.5 使用给定的属性(如用户ID、类别、描述、开始/结束日期、最低出价和名称)将一个新项插入数据库中。
Jam 使用指定参数将一个新条目插入数据库表中。
GPT-3.5 根据其ID在Physical2DEnvironment中搜索特定的Physical2DObject并返回它。
Jam 根据给定的ID从ArrayList中检索一个Physical2DObject。

5 结束语

本文从三个关键方面推动了技术前沿研究。
(1)本文将GPT-3.5生成的源代码摘要与作为代码参考提供的摘要进行比较,发现人们明显更喜欢GPT-3.5生成的摘要。这个结果表明:第一,基于AI的模型可能是用于增强甚至替代人工编写文档的有用工具。第二,作为训练和评估源代码摘要工具的标准可能被更改,AI模型有时可能表现更好。
(2)本文将GPT-3.5的代码摘要能力蒸馏到几个较小的模型中,在使用自动评估指标METEOR和USE衡量时,一些比GPT-3.5小几个数量级的模型能够在很多情况下取得类似结果。同时,这些模型还有一个关键优势,就是它们很轻松地可以在本地运行,成本可控(例如,一个单个的16GB消费级GPU),并且,本地模型执行意味着对数据的本地保管,这提高了数据的安全性。
(3)本文将GPT-3.5与一个蒸馏模型(350 m参数的Jam)进行比较,展示了Jam如何能够在代码摘要方面媲美GPT-3.5,两个模型生成的摘要在准确性、完整性或简洁性方面并没有显著差异。总体而言,当提供足够的数据集时,一个像350m的Jam这样的低成本模型能够在代码摘要任务中复制一个像GPT-3.5这样的非常大的模型。
[1]
Robillard M P, Marcus A, Treude C, et al. On-demand developer documentation[C]// 2017 IEEE International conference on software maintenance and evolution (ICSME). IEEE, 2017: 479-483.

[2]
HE J, SHEN Y, XIE R F. Identification and optimization of illusion phenomena in large language models[J/OL]. Computer Applications,1-5[2024-11-21].http://kns.cnki.net/kcms/detail/51.1307.tp.20241119.1223.004.html.

[3]
SU C Y, BANSAL A, JAIN V, et al. A language model of java methods with train/test deduplication[C]// Proceedings of the 31st ACM Joint European Software Engineering Conference and Symposium on the Foundations of Software Engineering. 2023: 2 152-2 156.

[4]
Haiduc S, Aponte J, Moreno L, et al. On the use of automated text summarization techniques for summarizing source code[C]// 2010 17th Working conference on reverse engineering. IEEE, 2010: 35-44.

[5]
LECLAIR A, JIANG S Y, MCMILLAN C, et al. A neural model for generating natural language summaries of program subroutines[EB/OL]. 2019: 1902. 01954. https://arxiv.org/abs/1902.01954v1.

[6]
ALLAMANIS M, BROCKSCHMIDT M, KHADEMI M. Learning to represent programs with graphs[EB/OL]. 2017: 1711.00740.https://arxiv.org/abs/1711.00740v3..

[7]
HAQUE S, LECLAIR A, WU L F, et al. Improved automatic summarization of subroutines via attention to file context[EB/OL]. 2020: 2004. 04881. https://arxiv.org/abs/2004.04881v1.

[8]
Bansal A, Haque S, McMillan C. Project-level encoding for neural source code summarization of subroutines[C]// 2021 IEEE/ACM 29th International Conference on Program Comprehension (ICPC). IEEE, 2021: 253-264.

[9]
Wang L, Yoon K J. Knowledge distillation and student-teacher learning for visual intelligence: A review and new outlooks[J]. IEEE transactions on pattern analysis and machine intelligence, 2021, 44(6): 3 048-3 068.

[10]
ZHANG R R, HAN J M, LIU C, et al. LLaMA-adapter: efficient fine-tuning of language models with zero-init attention[EB/OL]. 2023: 2303.16199.https://arxiv.org/abs/2303.16199v3.

[11]
LI J Z, GUI L, ZHOU Y X, et al. Distilling ChatGPT for explainable automated student answer assessment[EB/OL]. 2023: 2305.12962.https://arxiv.org/abs/2305.12962v2.

[12]
Tang Y, Da Costa A A B, Zhang X, et al. Domain knowledge distillation from large language model: An empirical study in the autonomous driving domain[C]// 2023 IEEE 26th International Conference on Intelligent Transportation Systems (ITSC). IEEE, 2023: 3 893-3 900.

[13]
CHEN Z H, JIANG F, CHEN J Y, et al. Phoenix: democratizing ChatGPT across languages[EB/OL]. 2023: 2304.10453.https://arxiv.org/abs/2304.10453v1.

[14]
GUDIBANDE A, WALLACE E, SNELL C, et al. The false promise of imitating proprietary LLMs[EB/OL]. 2023: 2305.15717.https://arxiv.org/abs/2305.15717v1.

[15]
Sridhara G, Hill E, Muppaneni D, et al. Towards automatically generating summary comments for java methods[C]// Proceedings of the 25th IEEE/ACM international conference on Automated software engineering. 2010: 43-52.

[16]
XU C W, XU Y C, WANG S H, et al. Small models are valuable plug-ins for large language models[EB/OL]. 2023: 2305.08848.https://arxiv.org/abs/2305.08848v1.

[17]
Li R, Allal L B, Zi Y, et al. Starcoder: may the source be with you![J]. arXiv preprint arXiv:2305.06161,2023.

[18]
Banerjee S, Lavie A. METEOR: An automatic metric for MT evaluation with improved correlation with human judgements[C]// Proceedings of the ACL workshop on intrinsic and extrinsic evaluation measures for machine translation and/or summarization. 2005: 65-72.

[19]
Haque S, Eberhart Z, Bansal A, et al. Semantic similarity metrics for evaluating source code summarization[C]// Proceedings of the 30th IEEE/ACM International Conference on Program Comprehension. 2022: 36-47.

Outlines

/