2023年5月14日至20日,第45届国际软件工程会议(The 45th International Conference on Software Engineering,ICSE 2023)在澳大利亚墨尔本召开。大数据与软件学院院长张洪宇教授参加了本次会议并做报告。
ICSE是软件工程领域公认的权威国际学术顶会,也被中国计算机学会(CCF)推荐为A类会议。自1975年创办以来,ICSE大会一直体现了软件工程领域中的理论创新和技术趋势。在本年度的ICSE大会中,来自世界各地的一千多名学者分享了他们在软件开发,软件维护,质量保证、人工智能和软件大数据等领域的研究成果,并探讨了如何应对当前软件工程领域面临的诸多挑战。
在本次ICSE大会中,张洪宇是技术报告系列的组织者(Co-Chair, Technical Briefings Track)。他在智能运维(Cloud Intelligence/AIOps)研讨会上做了题为《Automated Fault Detection for Software Systems through Log Intelligence》的特邀报告。
在此次大会中,张洪宇共参与发表了10篇全文论文,包括了7篇研究论文和3篇工业实践论文。他也做了其中3篇论文的报告。本次发表的论文主要是关于智能化软件开发,智能运维,和软件工程技术在人工智能系统中的运用。一些论文的简介如下。
1)基于小样本学习的日志解析
随着软件技术的发展,软件系统变得愈发复杂并难以维护。自动化日志分析是提升系统故障发现、故障诊断、性能监测等任务的效率的重要手段。大多数自动化日志分析技术都建立在日志解析(log parsing)这一关键的前置步骤之上。现有的日志解析器使用统计特征将公共部分提取为日志模板。然而,这些日志解析器经常无法识别正确的模板和参数,因为:(1)它们经常忽略日志信息的语义含义,(2)它们需要针对不同的日志数据集的特定领域知识。为了解决现有方法的局限性,在本文中,我们提出了LogPPT,一个使用基于提示的少样本学习技术来捕获日志模板的方法。LogPPT利用提示调整方法来识别日志数据中的关键字和参数。此外,LogPPT使用了一种自适应随机抽样算法来选择一个小而多样的训练集。我们在16个公共日志数据集上进行了广泛的实验。实验结果表明,LogPPT对于日志解析是有效且高效的。
2)代码智能模型的持续学习
目前的代码智能模型通常是在离线模式下对固定数据集进行深度学习模型训练。然而,在现实场景中,新的代码仓库不断涌现。本工作旨在解决以下问题:如何能使代码智能模型从不断增长的数据中学习?一个主要的难点在于“灾难性遗忘”,即当从新数据集中进行学习时,模型很容易忘记从以前数据集中学到的知识。为了解决这个问题,我们提出了一种新的代码智能模型连续学习方法REPEAT。REPEAT通过代表性样本回放和自适应参数正则化来解决灾难性遗忘的问题。代表性样本回放模块在每个数据集中选择信息量大和多样性强的范例,并使用它们定期重新训练模型。自适应参数正则化模块识别模型中的重要参数,并自动调整他们的变化惩罚因子以保留以前学到过的知识。我们在三个典型的代码智能任务(代码摘要,软件漏洞检测,和代码克隆检测)上评估了所提出的方法,实验结果表明REPEAT在这些任务中优于目前的基线方法。
3)基于图神经网络的深度学习模型运行时性能预测
与很多传统软件系统一样,深度学习模型也可以通过一组超参数配置选项(如Batch Size)和神经网络架构选项(如网络层数)进行灵活配置。在深度学习模型的开发过程中,人们通常会运行大量的训练作业来探索不同的模型配置。不同的配置可能导致不同的运行时性能(例如GPU显存消耗和作业训练时间)。不合适的配置会降低运行性能,甚至会导致运行失败或产出不满足需求的模型。我们认为,预测深度学习模型的运行时性能对于提高开发生产力和减少资源浪费非常重要。我们提出了DNNPerf,一个基于图神经网络的深度学习模型运行时性能预测技术。我们将一个深度学习模型表示为一个有向无环计算图;每个节点代表一个计算操作(如矩阵乘法);边传递张量并指定两个节点之间的执行依赖关系。我们使用图神经网络编码节点和边的特征,并预测模型运行时的性能。我们设计了多项实验来验证DNNPerf的预测效果,以及对未曾训练过的模型的通用性。实验结果显示DNNPerf的效果优于基准模型并具有良好的通用性。