免费POC, 零成本试错
FDE知识库

FDE知识库

学习大模型的前沿技术与行业落地应用


收藏

让AI读懂代码需求:模块化大模型微调助力高效代码理解与迁移

发布日期:2025-08-11 19:14:15 浏览次数: 2871
作者:阿里云开发者

微信搜一搜,关注“阿里云开发者”

推荐语

阿里团队创新提出模块化大模型微调方案,有效解决代码需求与实现间的理解鸿沟,提升开发效率。

核心内容:
1. 传统代码理解工具在召回率、准确率和稳定性上的不足
2. 领域"黑话"和代码风格差异带来的特殊挑战
3. 模块化大模型微调方案的设计原理与实施效果

杨芳贤
53AI创始人/腾讯云(TVP)最具价值专家


一、项目背景


高德终端技术团队进行开源项目仓库代码升级期间,由于主版本跨度大,代码量更新变化也很大,过往在低版本上的经验知识不足以支持升级,如果依赖个人读懂整体仓库代码耗时过长。为研发提效,使用了阿里内部代码平台工具,发现暂不能满足一些定制化的知识问答,同时使用上也存在一些限制,外部类似deepwiki工具又存在代码安全问题,因此,基于code RAG和code Agent技术开发了研发提效工具,一定程度上满足了对仓库代码的定制理解,查询和修改需求。

在使用过程中依然存在如下问题:

1.code RAG

把代码知识图谱,分片存入向量数据库,通过RAG进行匹配查找,会存在召回率和准确率的问题,在实际过程中,LLM基于查询结果会存在不稳定的输出;即使把这些知识,通过预置到prompt上下文中,LLM也会因为上下文过长,而导致性能下降,输出准确率变差。

2.code Agent

通过AI Agent利用代码查询工具,加上Agent的思考过程,会使查询结果进一步准确,但是,一旦一次查询的结果不够更好,基于这次查询结果的下一次迭代思考,会造成结果的不确定性,而且,也取决于代码查询工具的准确性,以致于不能够稳定输出正确的推理结果。

除了上述稳定性问题之外,在这个过程中我们发现,有以下问题也是难以解决的:一个是领域“黑话”,譬如专业术语,模块人为定的名称等,这些是研发人员在业务开发过程中,形成的约定俗成的“知识”;另外一个就是代码风格,通用的代码风格以及函数并不是当前模块所需要的,尽管功能基本相同,但是也需要采用符合仓库模块的代码风格及函数设计。综上所述,需要采用大模型微调的方式,对专业领域知识图谱进行学习,来解决这些问题,在本文中,重点解决的就是“用户需求关联相应代码的稳定性问题”

代码需求理解

根据用户需求找到仓库内相应关联的代码,在业界LLM编程提效领域也是一个重要的课题,类似cursor通过对仓库做向量语义检索加上IDE内文件查找匹配,获取最接近的若干个代码片段,像aider更是通过建立庞大的仓库地图repo map,包含仓库内重要的代码符号和定义, 来给到LLM上下文里,但是,这些都建立在一个假设的基础上,就是给到LLM全部所需的仓库代码内容,在上下文窗口也满足的情况下,LLM就能够实现对仓库的全面准确的理解,显然不是这样的,因为代码是程序员根据产品需求的二次加工,理解了代码并不能等同理解仓库的业务架构设计,用户需求的自然语言描述同代码逻辑理解是存在gap的。

仓库的业务架构设计,体现在代码“模块”里,而不是在代码片段,而且越高层级的“模块”一般来说越稳定不变,而模块说明的信息,是密切跟产品需求的自然语言描述相关的,包含了领域知识和代码风格,形成了一张仓库的“模块缩略图”。因此,大模型微调学习的方向重点在代码模块学习,来实现代码需求理解。

  • 把业界直接进行仓库代码检索学习,转化为“对仓库知识图谱代码模块”的学习,简化了学习任务,实现了低成本小参数量模型训练且能获得更准确更稳定的推理结果。

  • 结合全仓库的代码知识图谱进行解析,获取高质量的训练/验证数据集,而不是直接基于代码构建数据集。

  • 对模型输出的结果,推理时进行了模块列表范围控制,确保模型只生成符合模块ID格式的输出。

二、微调准备

下面是微调的一般过程,基础模型由专业的大模型公司提供,在微调(SFT)之前,要进行基础模型选型和微调框架选择,做好微调前准备工作。

基础模型选型

选择哪个基座模型,主要考虑以下因素:

1.任务复杂度

为了降低任务复杂度,我们把“用户需求关联出相应代码”任务,简化成了“用户需求匹配相关模块”的模块匹配任务。通过LLM匹配出对应的代码模块,模块内的代码是确定的,也就找到了用户需求关联的相应代码。

从模型性能角度,匹配任务需要大模型具备足够强的“语义理解”能力,能够理解用户的需求,并通过领域知识,找到相应的关联模块;但通常不需要复杂的逻辑推理。

2.易于部署

从做研发工具来讲,“用户需求关联相应代码”这个步骤属于代码生成的前置环节,期望大模型能够在端侧运行,即在mac端能够运行,不部署在服务端,这样能够降低成本,同时具备灵活性。

基于这方面考虑,满足端侧部署需要小参数量的基础模型。

3.训练资源

训练资源上使用单机单卡16GB显存,资源比较受限,需要在性能和资源之间要达到理想的平衡点。

综合上述几点考虑,以Qwen3-4B 作为基准模型支持Chain-of-Thought(CoT)思维链式推理,结合领域数据进行微调,以最大化提升在特定任务上的效果,同时采用量化技术优化部署,尤其适合大多数场景下的匹配任务。

微调框架选择

集团内部有多个微调训练的平台,譬如openLM, 魔搭平台的SWIFT等,集团外部有LLaMA-Factory,利用服务端共享的GPU集群进行训练,支持多种先进的微调算法和模型,适用于参数量大的复杂模型训练任务,但是对简单模型训练任务,希望在单机有限GPU资源下完成,并且缩短训练周期,基于这个考虑,选择了unsloth高性能训练框架。


三、微调过程

数据集构建


构建领域特定的训练数据集,需要基于全仓库的代码知识图谱进行解析,高质量的训练/验证数据集,是微调 (Fine-tuning)的基础。

以下是MNN仓库的部分代码知识图谱:

从代码知识图谱中,进行实体关系抽取:

  • 节点信息:模块节点

  • 边关系:模块间关系

  • 属性信息:功能描述等

然后根据节点生成模块内容,按关系生成层次结构,按属性生成功能描述,最终生成如下的结构化的训练数据格式。模块ID有固定结构,父模块-子模块,增强可解释性;关键词增强标注描述中的关键动词或者名词,构建关键词-模块ID的映射词典,辅助模型注意力。

最终,数据集里的数据格式如下:

数据预处理

为了提高模型的训练效率和性能,需要对上述结构化数据进行处理,确保输入给LLM的数据格式统一、上下文明确、监督信号清晰。以下是训练数据的输入的Prompt模板和标签Label:

从上述可以看出,明确了给到大模型的指令,清晰说明任务要求,并进行了上下文限定,聚焦模块匹配场景;同时,标签Label中包含思考的过程和最终的模块输出,结构化的输出格式方便解析,其中的thinking字段包含高质量的思考过程,包括:关键技术点的详细分析功能领域的准确归类,以及模块层级的清晰划分。

在预处理过程中,也应用了如下数据增强,扩充了训练数据的多样性,防止过拟合:

  • 模块描述创建多个变体;

  • 增强Prompt上下文信息;

  • 同义词替换,添加/删除非关键信息,句子句式重组等,同时需要保持核心语义不变。

Qwen3-4B既支持普通模式推理,也支持CoT思考方式推理,在数据预处理时,把这两部分数据按1:1比例进行处理。使用带有Chain of Thought (CoT)的训练数据, 让模型学会分步骤思考,提高推理过程的可解释性,增强泛化能力,降低直接匹配的难度。输出如下:

微调策略

1.Lora微调

LoRA(Low-Rank Adaptation)是一种参数高效的微调技术(Parameter-Efficient Fine-Tuning, PEFT),旨在通过低秩分解减少大模型微调的计算和存储成本。其核心思想是假设模型权重的变化可以用低秩矩阵近似表示,在微调过程中,冻结预训练模型的原始权重,仅训练这些低秩矩阵,从而大幅降低可训练参数量。LoRA 具有显存占用低、计算效率高、性能接近全量微调等优势,特别适合大规模语言模型的适配任务。此外,LoRA 可与其他技术(如量化)结合,进一步优化资源利用,广泛应用于多任务学习和边缘设备部署场景。

可以通过unsloth的FastLanguageModel.get_peft_model方式,进行Lora微调配置,其中的配置参数,主要考虑以下几方面:

  • 任务复杂度

  • 可用显存大小

  • 训练数据量

  • 实际文本长度需求

  • 训练任务类型

2.SFT训练参数


最终通过merge方式,保存最终的完整模型。

输出如下:

工程处理

对模型输出的结果,推理时进行了模块列表范围控制,和数据清洗,确保模型只生成符合模块ID格式的输出。


四、实验结果

在测试集上测试,综合准确率78%,达到预期效果。


五、端侧部署

在mac端通过mps进行部署sft模型,使用CPU或Metal Performance Shaders (MPS)后端并运行,主要修改包括设备检测和内存管理部分。测试推理代码如下:

以下测试case输出,处理耗时在mac端达到秒级。


六、总结

通过微调,大模型能快速适应领域知识以及术语,生成更加准确,专业,稳定的回复;同时,低成本进行大模型微调,且能够在端侧部署和使用,也是业界一直在解决的问题,上述方案在落地过程中,也遇到了数据集单一,梯度不收敛,基座模型选型等问题,最终通过算法加工程方法进行了解决,未来结合强化学习,小参数量模型的微调在解决垂直领域问题上将会发挥越来越来越重要的作用。

53AI,企业落地大模型首选服务商

产品:场景落地咨询+大模型应用平台+行业解决方案

承诺:免费POC验证,效果达标后再合作。零风险落地应用大模型,已交付160+中大型企业

联系我们

售前咨询
186 6662 7370
预约演示
185 8882 0121

微信扫码

添加专属顾问

回到顶部

加载中...

扫码咨询

扫码登录
登录即表示您同意《53AI网站服务协议》
服务协议

欢迎您使用【53AI 官方网站】(以下简称“本网站”或“我们”)。本《会员服务协议》(以下简称“本协议”)是您(以下简称“会员”或“用户”)与【深圳市博思协创网络科技有限公司】之间关于注册、登录及使用本网站会员服务所订立的法律协议。

在您注册或登录前,请务必审慎阅读、充分理解各条款内容,特别是免除或限制责任的条款、知识产权条款、争议解决条款等。此类条款将以加粗形式提示您注意。 当您通过微信公众号授权、手机验证码验证或其他方式成功登录本网站时,即视为您已完全理解并同意接受本协议的全部内容。

一、 定义

本网站:指由【深圳市博思协创网络科技有限公司】运营的,域名为【53ai.com】的网站及相关移动端页面。

会员服务:指本网站向注册会员提供的知识库文章查阅、内容检索及其他相关增值服务。

知识库内容:指本网站发布的包括但不限于文字、图表、数据、研究报告、行业分析等数字化内容资源。

二、 账号注册与登录

登录方式:本网站支持以下登录方式,您可根据实际情况选择:

微信公众号授权登录:您同意将您的微信OpenID信息授权给本网站,用于创建或关联会员账号。

手机验证码登录:您需提供真实有效的手机号码,并通过短信验证码完成身份验证与登录/注册。

账号安全:您的账号仅限您本人使用,禁止赠与、借用、租用、转让或售卖。因您保管不善导致的账号被盗、密码泄露等损失,由您自行承担。

实名认证:根据相关法律法规要求,我们可能要求您在特定功能下完成实名认证。如您拒绝提供,可能无法使用部分或全部服务。

未成年人保护:若您未满18周岁,请在法定监护人的陪同下阅读本协议,并在征得监护人同意后使用本服务。

三、 服务内容与规范

知识库查阅权限:会员登录后,有权按照其会员等级对应的权限范围,在线浏览、检索本网站知识库中的相关文章及内容。

服务变更:我们有权根据业务发展需要,调整、变更或终止部分服务内容,并将以网站公告、公众号消息等方式提前通知。

禁止行为:您在使用服务时不得实施以下行为:

利用技术手段批量爬取、下载、转存知识库内容;

将知识库内容用于商业目的或未经授权地向第三方传播;

干扰本网站正常运行或侵犯其他用户合法权益;

发布违法违规信息或从事违反公序良俗的活动。

四、 知识产权声明

权利归属:本网站知识库中的排版设计、软件代码等内容的知识产权均归【公司全称】或原权利人所有,受《中华人民共和国著作权法》等法律保护。

有限许可:本网站授予会员一项非独占、不可转让、不可转授权的普通许可,仅限于个人学习、研究之目的在线查阅知识库内容。

侵权追责:未经书面许可,任何单位或个人不得以任何形式复制、转载、摘编、镜像、汇编或以其他方式使用上述内容。一经发现,我们保留追究其法律责任的权利。

五、 个人信息保护

我们重视对您个人信息的保护。关于我们如何收集、使用、存储和保护您的个人信息,请单独阅读 《隐私政策》。

您通过微信公众号授权或手机号验证所提供的信息,我们将严格按照《个人信息保护法》的规定处理,仅用于身份识别、服务提供及安全验证等必要用途。

您可以随时通过网站设置或联系客服行使查阅、更正、删除个人信息及撤回授权同意的权利。

六、 免责声明

内容准确性:知识库内容仅供参考,不构成专业建议。我们不对其完整性、准确性、时效性作任何明示或暗示的保证,您应自行判断并承担使用风险。

不可抗力:因自然灾害、政策法规变化、网络故障、第三方平台接口异常(如微信接口维护、运营商短信通道故障)等不可抗力导致的服务中断或延迟,我们不承担违约责任。

第三方链接:本网站可能包含指向第三方网站的链接,该等网站的内容和服务不受我们控制,请您自行甄别风险。

七、 违约责任

如您违反本协议约定,我们有权视情节采取警告、限制功能、暂停服务、注销账号等措施,并保留要求赔偿损失的权利。

如因您的违约行为导致我们遭受行政处罚、第三方索赔或商誉损失,您应承担全部赔偿责任(包括但不限于罚款、赔偿金、律师费、公证费等)。

八、 法律适用与争议解决

本协议的订立、执行和解释均适用中华人民共和国大陆地区法律。

因本协议产生的或与本协议有关的任何争议,双方应友好协商解决;协商不成的,任何一方均可向【公司所在地】有管辖权的人民法院提起诉讼。

九、 其他

本协议构成双方就本服务达成的完整协议,取代此前任何口头或书面约定。

本协议任一条款被认定为无效或不可执行的,不影响其他条款的效力。

我们对本协议享有最终解释权,并在法律允许的范围内保留随时修改的权利。修改后的协议一经公布即生效,继续使用服务即视为同意修订内容。


已查阅