ACL 2025 | GALLa:用图结构增强代码大模型,让代码理解更精准!

本文涉及的产品
NLP自然语言处理_高级版,每接口累计50万次
NLP 自学习平台,3个模型定制额度 1个月
NLP自然语言处理_基础版,每接口每天50万次
简介: 通过级联多模态架构将代码结构图对齐到大模型表征中

编程语言中蕴含着丰富的语义信息。与自然语言不同,这些信息通常以精确的图结构(如抽象语法树 AST、数据流图 DFG)的形式存在。传统代码大模型仅将代码视为文本处理,忽略了这些关键结构。我们创新性地通过图神经网络(GNN)与跨模态对齐技术,将这些代码结构信息在微调阶段以迁移学习的方式注入大语言模型,既提升了模型的代码理解能力、又不改变模型的原始架构,成为一种即插即用的代码大模型能力提升方式。

TLDR

我们通过多模态对齐技术将代码的图结构信息引入代码大模型的微调过程中,在不改变大模型推理方式的前提下有效提升大模型对代码的理解。

简介

本文源于蚂蚁集团与上海交通大学的校企合作项目,目前已被 ACL 2025 主会接收。ACL(Annual Meeting of the Association for Computational Linguistics)是自然语言处理(NLP)领域的顶级国际会议,也是自然语言处理领域唯一的 CCF-A 类会议。

arXiv: https://arxiv.org/abs/2409.04183

Github: https://github.com/codefuse-ai/GALLa

Hugging Face: https://huggingface.co/datasets/codefuse-ai/GALLa

image.png

与自然语言不同,编程语言具有精确的语义。这些语义通过抽象语法树(AST)、数据流图(DFG)、控制流图(CFG)等图结构表示。可是,现有的代码大模型大都忽略了这些图结构,将代码直接作为文本处理(如 DeepSeek-Coder、Qwen-Coder)。仅有少部分工作将这些图结构通过各种方式注入模型中,大致可分为三类:

1. 第一类将这些图结构线性化后作为文本 token 输入模型,如 SPT-Code、UniXcoder、SynCoBERT。
2. 第二类工作将图中的每个结点视作一个 token 送入模型,并通过修改模型中的注意力掩码来表征不同结点间的连接关系,代表有 GraphCodeBERT、StructCoder。
3. 第三类工作同样将图中的每个结点视作一个 token,但通过修改位置编码的方式来表征结点间的连接关系 [1,2]。

以上三类现有方法中,第一类并不能充分利用图的复杂结构,且只适用于语法树、依赖树等能够线性化的树状图,不适用于数据流、控制流等存在环的图。第二、三类方法的共同缺陷是修改了语言模型的原有架构,不仅损害模型预训练阶段获得的知识,同时也极大限制了这些方法的可扩展性。

与以上三类方法不同,GALLa 借鉴了 NLP 与计算机视觉中现有的多模态对齐技术,通过图模态编码器+适配器+大语言模型级联的方式将代码结构图引入大模型的微调过程中,既能处理复杂的带环图结构,又保持了大语言模型原有结构的完整性。此外,GALLa 仅在微调阶段引入图信息,在推理阶段和基座模型一样只接受原始代码文本作为输入,避免了额外的部署开销。在七个不同家族、参数量的模型以及五个下游任务上的实验结果表明,GALLa 能有效提升大模型对代码的理解能力,全面提升下游任务性能。


[1] Han Peng et al. Integrating tree path in transformer for code representation. NeurIPS 2021.
[2] Han Peng et al. Rethinking positional encoding in tree transformer for code representation. EMNLP 2022.

算法

image.png

图1:GALLa整体框架

模型架构

我们的模型架构如图1所示,由图神经网络(GNN)、适配器(Adapter)、大语言模型(LLM)三部分组成,且每一部分都可以单独选择具体实现方式,具有极大的灵活性。

GNN

image.png

在具体实现中,我们使用代码嵌入模型 CodeT5+ 编码每个结点所对应代的码片段来提取结点特征$ V $。

适配器

适配器是连接 GNN 与 LLM 不同语义空间的桥梁。参考 Qwen-VL、LLaVA 等跨模态工作,适配器可以用注意力(Cross Attention)或多层感知机(MLP)。以注意力为例:

image.png

在经过适配器后,GNN 输出的结点特征被变换到大模型的输入空间中,成为一系列“图 token”,便能与其余文本 token 拼接在一起被大模型处理。

LLM

image.png

训练方式

image.png

图2:GALLa训练流程

GALLa 训练分为两阶段,如图2所示。

第一阶段

第一阶段固定 LLM 的参数,仅更新随机初始化的 GNN 与适配器参数。此阶段训练任务为图生代码(Graph2Code),即根据代码图重构源代码。代码图在经过 GNN、适配器后形成图 token,与源代码拼接后送入 LLM。训练过程中损失函数仅在源代码对应 token 上进行计算。

第二阶段

第二阶段解锁 LLM 参数,同时更新三个模块。此阶段混合三个训练任务:

  • 图生代码(Graph2Code):同第一阶段。
  • 图问答(GraphQA):根据代码图回答特定问题。此任务中 LLM 的输入由图 token、问题、答案三部分拼接而成,损失函数仅在答案上进行计算。具体问题包含边预测、父结点预测、子结点预测三类。
  • 下游任务:如代码翻译、代码总结、漏洞检测等,由问题与答案两部分拼接而成,直接输入 LLM,不使用 GNN 与适配器。

推理

在训练完成后,GNN、适配器模块将不再被使用,而只有 LLM 被单独用于测试、部署。因此,GALLa 训练所得的模型使用方式与基座 LLM 或其他指令微调所得模型完全相同,可无缝适配 vllm 等主流推理框架。这个设计有两方面的考虑:

  • 推理效率:若为每个请求实时构建代码图,推理延时将大幅度增加;
  • 代码完整性:构建代码图需要完整且无语法错误的代码输入,但在实际应用中许多任务(如漏洞检测、代码修复)的输入代码存在问题,无法构建代码图。

实验

我们使用包括 Qwen2.5-Coder 14B、LLaMA3 8B 在内的7个不同家族与大小的模型,在代码翻译、克隆检测、漏洞检测、代码总结、代码修复5个下游任务上验证了 GALLa 的效果。实验结果表明 GALLa 能有效提高所有模型在代码相关下游任务上的性能:

在以上主实验中,我们使用一层注意力作为适配器、DUPLEX 作为 GNN 模块。以 Phi-1 基座为例,我们也尝试了使用 MLP 作为适配器或使用 MagNet 作为 GNN,实验表明同样能提高模型性能:

后续工作

在 GALLa 基础之上,我们团队开发了更加强大的代码图模型(Code Graph Model),首创性地在仓库级别融合图结构与语言模型,截止2025年5月在仓库问题修复数据集 SWE-bench Lite 和 SWE-Bench Verified 榜单基于开源模型的方法中排名第一。

想了解更多代码大模型方向最新进展,也欢迎关注我们的代码大模型综述:

关于我们

我们是蚂蚁集团的全模态代码算法团队,负责蚂蚁蚂蚁集团平台工程的智能化,团队成立3年以来,在 ACL、ICLR、NeurIPS、KDD 等顶级会论发表论文20余篇,参与获得两次蚂蚁技术最高奖 T-Star,1次蚂蚁集团最高奖 SuperMA。团队常年招聘研究型实习生,有做NLP、大模型、多模态、图神经网络的同学欢迎联系 hyu.hugo@antgroup.com。

如果您想更快地获取到最新信息,欢迎关注并加入我们~

目录
相关文章
|
1月前
|
机器学习/深度学习 人工智能 搜索推荐
Deep Search 如何理解业务仓库代码?
本文系统地介绍了 Deep Search 和 Deep Research 的概念、与传统 RAG 的区别、当前主流的商业产品与开源方案、在代码领域的应用(如 Deep Search for 仓库问答)以及未来的发展规划。
243 21
Deep Search 如何理解业务仓库代码?
|
18天前
|
人工智能 IDE 定位技术
通义灵码 AI IDE 上线,第一时间测评体验
通义灵码 AI IDE 重磅上线,开启智能编程新纪元!无需插件,开箱即用,依托通义千问大模型,实现高效、智能的编程体验。支持 MCP 工具链,可快速调用多种服务(如12306余票查询、高德地图标注等),大幅提升开发效率。结合 Qwen3 强大的 Agent 能力,开发者可通过自然语言快速构建功能,如智能选票系统、地图可视化页面等。行间代码预测、AI 规则定制、记忆能力等功能,让 AI 更懂你的编码习惯。Lingma IDE 不仅是工具,更是开发者身边的智能助手,助力 AI 编程落地实践。立即下载体验,感受未来编程的魅力!
164 17
|
22天前
|
人工智能 移动开发 IDE
AI + 低代码技术揭秘(十):平台实施
VTJ 提供多平台部署支持,涵盖 Web、移动及跨平台环境。通过专用适配器和低代码优化,实现统一开发体验,并支持 Element Plus、Vant UI 等框架,提升开发效率与应用性能。
109 57
|
2月前
|
存储 JSON PyTorch
Multimodal LLM训练-模型文件\训练数据加载逻辑源码分析
Multimodal LLM训练-模型文件\训练数据加载逻辑源码分析
122 17
|
4月前
|
监控 Ubuntu Linux
Windows11 WSL2 Ubuntu编译安装perf工具
通过以上步骤,你已经在Windows 11的WSL2中成功编译并安装了 `perf`工具。尽管在WSL2中可能会遇到一些限制,但大部分基本性能分析功能应当可以正常使用。使用 `perf`进行性能分析,可以帮助你更好地理解和优化系统及应用程序的性能。
263 14
|
7月前
|
存储 Windows
U盘格式化工具合集:6个免费的U盘格式化工具
在日常使用中,U盘可能会因为文件系统不兼容、数据损坏或使用需求发生改变而需要进行格式化。一个合适的格式化工具不仅可以清理存储空间,还能解决部分存储问题。本文为大家精选了6款免费的U盘格式化工具,并详细介绍它们的功能、使用方法、优缺点,帮助你轻松完成U盘格式化操作。
U盘格式化工具合集:6个免费的U盘格式化工具
|
7月前
|
机器学习/深度学习 人工智能 安全
阿里云先知安全沙龙(武汉站) ——AI赋能软件漏洞检测,机遇, 挑战与展望
本文介绍了漏洞检测的发展历程、现状及未来展望。2023年全球披露的漏洞数量达26447个,同比增长5.2%,其中超过7000个具有利用代码,115个已被广泛利用,涉及多个知名软件和系统。文章探讨了从人工审计到AI技术的应用,强调了数据集质量对模型性能的重要性,并展示了不同检测模型的工作原理与实现方法。此外,还讨论了对抗攻击对模型的影响及提高模型可解释性的多种方法,展望了未来通过任务大模型实现自动化漏洞检测与修复的趋势。
|
8月前
|
搜索推荐 数据可视化 持续交付
喷泉模型在项目管理中的实际应用与优势
喷泉模型是一种迭代开发方法,强调阶段性交付和动态调整,适合需求不明确或变化频繁的项目。通过持续反馈优化产品,不仅能紧跟需求变化,还能为客户创造早期价值。结合看板工具,可进一步提升团队协作和项目管理效率。
140 4
喷泉模型在项目管理中的实际应用与优势
|
9月前
|
人工智能 搜索推荐 API
用于企业AI搜索的Bocha Web Search API,给LLM提供联网搜索能力和长文本上下文
博查Web Search API是由博查提供的企业级互联网网页搜索API接口,允许开发者通过编程访问博查搜索引擎的搜索结果和相关信息,实现在应用程序或网站中集成搜索功能。该API支持近亿级网页内容搜索,适用于各类AI应用、RAG应用和AI Agent智能体的开发,解决数据安全、价格高昂和内容合规等问题。通过注册博查开发者账户、获取API KEY并调用API,开发者可以轻松集成搜索功能。
|
机器学习/深度学习 人工智能 自然语言处理
LLM性能最高60%提升!谷歌ICLR 2024力作:让大语言模型学会“图的语言”
【5月更文挑战第1天】谷歌在ICLR 2024提出新方法,使大语言模型(LLM)性能提升高达60%,通过结合图神经网络(GNN),LLM学会理解与生成“图的语言”,打破处理复杂任务的局限。此创新模型适用于社交网络分析等领域,但面临计算资源需求大和模型解释性问题。研究强调需确保LLM在道德和法律框架内使用。论文链接:https://openreview.net/pdf?id=IuXR1CCrSi
395 3

热门文章

最新文章