ACL 2025 | GALLa:给代码大模型装上“透视眼”,看懂程序的“骨架”!

发布于 2025-10-20 07:48
浏览
0收藏

  • 你的 AI 编程助手,真的“读懂”你的代码了吗?
  • 它可能只是“看”到了表面文字,却错过了代码背后真正的逻辑骨架。

今天,我们带来了一项被 ACL 2025 主会录用的创新工作——GALLa。这项由蚂蚁集团 × 上海交通大学合作的研究,通过一种巧妙的方式,让代码大模型(Code LLM)学会理解程序的深层结构,实现代码理解能力的精准跃升!

⚡ 核心亮点速览

  • 注入结构化知识代码不仅是文本,更是严谨的图结构(如 AST、DFG)。我们利用图神经网络(GNN)将这些“代码骨架”信息注入大模型,让它知其然,更知其所以然
  • 即插即用,推理无开销GALLa 只在训练阶段引入图信息,训练完成后,模型推理方式与普通 LLM完全一致不改变模型架构,不增加部署成本,堪称“无痛增强”。
  • 性能全面提升7 个不同系列、不同参数量的模型以及5 个主流代码任务上的实验证明,GALLa 能够稳定、有效地提升所有基座模型的性能

> 本文已被自然语言处理顶会 ACL 2025 主会接收。> - arXiv: https://arxiv.org/abs/2409.04183> - GitHub: https://github.com/codefuse-ai/GALLa> - Hugging Face: https://huggingface.co/datasets/codefuse-ai/GALLa

当大模型“阅读”代码时,它错过了什么?

与自然语言不同,编程语言背后是精确的语义和逻辑,这些逻辑通常通过抽象语法树(AST)数据流图(DFG)等图结构表示。它们就像建筑的蓝图,揭示了程序的真正构造。

然而,大多数代码大模型(如 DeepSeek-Coder、Qwen-Coder)都选择了一条“捷径”:把代码当成普通文本处理,这无疑丢失了大量宝贵的结构信息。

此前的尝试也存在明显缺陷:

  1. “拍扁”成文本:将图结构线性化成字符串,无法表达复杂图(如带环 DFG),信息损失严重。
  2. “大动干戈”改结构:修改注意力掩码或位置编码,破坏预训练知识,难以扩展。

> 有没有一种方法,既能利用图的强大能力,又不破坏大模型优美的原始结构?

GALLa 的“独门秘籍”:如何优雅地注入图结构?

我们的答案是:GALLa(Graph Aligned Large Language Models)

我们借鉴多模态领域的成熟经验,设计出 GALLa 框架。其核心思想是:

在微调阶段,把代码的图结构信息“教”给大模型,但不去修改它原本的“大脑结构”。

框架三大模块

模块

作用

🧠 图神经网络(GNN)

专业的“图阅读器”,读取 AST/DFG,输出节点深层语义表示。

🔗 适配器(Adapter)

跨界的“翻译官”,将图特征向量转换为 LLM 能理解的“图 Token”。

🧠 大语言模型(LLM)

学习的“最强大脑”,接收“图 Token + 文本 Token”,统一处理。

ACL 2025 | GALLa:给代码大模型装上“透视眼”,看懂程序的“骨架”!-AI.x社区

GALLa 整体框架图

两阶段训练法:让知识注入更丝滑

为了让 GNN 和适配器这两个“新兵”不干扰 LLM 这个“老将”,我们设计了两阶段训练流程

阶段一:热身与对齐(Frozen LLM)

  • 目标:让“新兵”快速成长。
  • 做法冻结 LLM 参数,只训练 GNN + 适配器。
  • 任务Graph2Code—— 给模型一张代码结构图,让它写出对应源代码。
  • 效果:GNN 学会将图信息有效“翻译”给 LLM。

阶段二:协同与升华(Full Fine-tuning)

  • 目标:三大模块协同进化,全面提升能力。
  • 做法解锁 LLM 参数,端到端联合训练。
  • 任务
  • Graph2Code:巩固图→代码生成能力。
  • GraphQA:根据图结构回答问题,如“这个节点的父节点是谁?”
  • 下游任务:用纯文本微调代码翻译、总结、Bug 检测等任务。

ACL 2025 | GALLa:给代码大模型装上“透视眼”,看懂程序的“骨架”!-AI.x社区

GALLa 训练流程图

GALLa 的“魔法”:智能训练,极简推理

GALLa 最具吸引力的一点是:

所有与图相关的复杂操作,都只发生在训练阶段。

  • 训练完成后,GNN 和适配器“退役”,只保留微调后的 LLM
  • 推理阶段,模型像普通指令微调模型一样,直接接收文本输入,输出结果

两大优势

  • 推理效率高:无需每次请求都解析代码、构建图,避免巨大延迟。
  • 适用性更广:对于不完整或有错的代码(如 Bug 修复场景),无需构建图,完美适配。

效果怎么样?让实验数据说话!

我们在 7 个不同模型家族(如 Qwen2.5-Coder 14B、LLaMA3 8B)和 5 个主流代码任务上验证 GALLa 的威力。

多任务微调结果(节选)

模型

任务

Baseline

G2C

G2C+GraphQA

提升

CodeGen-350M

翻译/克隆/修复

56.9

35.2 (+1%)

36.6 (+5%)

StarCoder-1B

同上

14.0

16.7 (+20%)

18.9 (+36%)

Qwen2.5-Coder-1.5B

同上

39.3

44.1 (+12%)

44.2 (+12%)

LLaMA3-8B

同上

44.6

45.0 (+1%)

45.4 (+2%)

Qwen2.5-Coder-14B

同上

42.3

44.2 (+4%)

46.0 (+9%)

> 注:G2C = Graph2Code,GraphQA = 图问答任务。> 所有结果均为多任务平均分数,单位:%。

ACL 2025 | GALLa:给代码大模型装上“透视眼”,看懂程序的“骨架”!-AI.x社区

多任务实验结果图

消融实验

我们还探索了不同适配器(MLP vs Attention)、不同图类型(AST vs DFG)的影响,进一步验证了 GALLa 的灵活性与有效性

ACL 2025 | GALLa:给代码大模型装上“透视眼”,看懂程序的“骨架”!-AI.x社区

消融实验结果图

未来展望:从代码片段到整个仓库

GALLa 的成功只是一个开始。我们团队进一步开发了更强大的 Code Graph Model(CGM),将图结构融合扩展到仓库级别。该模型在 SWE-bench 等权威榜单上取得了开源模型 SOTA

  • 论文(NeurIPS 2025):https://arxiv.org/abs/2505.16901
  • 开源代码:https://github.com/codefuse-ai/CodeFuse-CGM

本文转载自PaperAgent

已于2025-10-20 07:48:46修改
收藏
回复
举报
回复
相关推荐