智能研发的点与面:蚂蚁代码大模型落地实践
如果无法正常显示,请先停止浏览器的去广告插件。
1. 智能研发的点与面:蚂蚁代
码大模型落地实践
演讲人:肖斌
2. 目录
01 研发提效探索 02 智能研发发展路线
03 04 未来方案思考
关键技术与难点
3. 01
研发提效探索
CodeFuse在蚂蚁研发全生命周期提效的探索
4.
5. 代码大模型探索
开发者最耗时活动
各功能使用占比
在CLI中执行操作
编写提交消息
了解最近代码变更
在代码库中搜索…
重构代码
执行代码审查
编写测试
编写代码注释或…
调试代码
互联网搜索
理解代码
编写代码
0.00%
20.00%
40.00%
60.00%
80.00%
100.00%
比例
注:数据来源JetBrains 2023年开发者生态报告
代码补全 代码问答 解释代码
添加注释 生成测试
6. 蚂蚁大模型发展路线
CodeFuse 3.0
CodeFuse 1.0
GPT-3 模型落地
• 0.25B模型
• 代码行补全
• 全蚂蚁落地
2023 Q1
2022
• 发布CodeFuse1.0
• 支持多种模型
• 蚂蚁内公测,大客户使用
2023 Q3
2023 Q2
• IDE插件对外放量
• 支持蚂蚁内部数十种研发下游任务
• 支持蚂蚁内部效能平台
2024
2023 Q4
CodeFuse 持续升级
CodeFuse 2.0 • BigCode第一名
CodeFuse 立项 • 发布IDE插件,支持多语言,多IDE • 仓库级代码问答&需求
• 发布1.3B模型 • CodeFuse开源,登顶开源代码大 • 仓库级代码补全优化
• 多语言代码补全 • 发布编程开发助手
模型HunabEval榜单(74.4%)
7. 大模型的能力演进
集成平台知识库或平台特定数 人类仅需设定目标,提供资源,设置
据对模型进行加训,通过对话 流程,监督结果。通过SOP方式根据
方式提供研发平台知识问答。 特定流程编排多领域Agent,完成特
定复杂任务或跨平台任务。
Chat模式
Agent模式
单纯问答形式无法满足智能化需求,
需要结合平台的能力进行智能化改造,
集成研发平台能力(工具)供AI调度。
Sop 多Agent编排
8. 大模型背景下效能平台产品演进
工具化
智能化
AI Native
传统效能平台 效能平台+ Copilot AI Native效能平台
工具化平台 智能化平台 AI原生平台
通过程序,工具等传统方式满足用 通过效能平台Copilot完成AI能力 以AI技术为核心,能够自主进行复
户各种明确且特定的功能。用户一 的使用,用户一般通过侧边栏进 杂的任务处理和决策。AI能力嵌入
般在产品上通过界面和特定操作流 行平台知识库问答或直接通过AI调 到用户每个操作中,通常能通过更
程完成任务。 度效能平台能力。 简单的操作完成更复杂的事情。
9. CodeFuse代码大模型落地现状
需求分析
编码自测
升级
演进
AI 升级研发链路
个人生产力释放、研发环节智能化、人工参与率降低
产品矩阵
领域 Agent
Analysis
底层依赖
Run
需求智能拆解 代码补全 代码生成 编译问题自动修复
需求 to 系分 代码优化 缺陷修复 启动问题自动修复
需求 to 测分 添加注释 代码解释 部署问题自动修复
系分 to 研发计划 代码评审 变更总结 智能 Debug
研发辅助
核心能力
Coding
仓库理解与问题
意图识别
超级会话及管理
项目解析与问答
领域 Agent 开发
CodeFuse AI Assistant Platform
数据/模型/部署/推理/评测等
监控运维
AI Native R&D
全新研发范式,AI 原生的研发交付
CodeFuse VAT
CodeFuse APIs
CodeFuse IDE
CodeFuse Copilot
部署发布
联调测试
Agent 调度与执行
CICD Ops
流水线智能执行 监控时序分析
执行问题定位域排
查 监控日志解读
Quality
Text to 测试用例
单测用例生成
接口用例生成
测试覆盖率提升
监控语义搜索
CICD config
智能变更&应急
测试资产选取
智能 CLI
技术知识问题
RAG
IDE 能力
评测体系
其他
蚂蚁大模型基础设施
大模型/Agent 建设平台等
数据体系
10. 02
智能研发发展路线
蚂蚁智能研发发展路线
11. Copilot+Chat模式
传统效能平台快速集成AI能力
传统效能平台
提取效能平台特征加训语料
模型加训
特定效能平台模型
CodeFuse大模型
效能Copilot+Chat
在现有产品功能上做智能化升级是 AI 应用的重要方式。一些适合的场景:
1. 生成式,如 自然语言生成用例、根据变更代码补齐测试用例等;
2. 总结类,如 对 PR 标题和描述的总结、基于文档的总结与问答;
3. 推理类,如 代码冲突解决、问题的诊断与修复、异常日志分析等;
12. Copilot+Agent模式
传统效能平台工具与AI能力升入结合
自定义工具(API)
传统效能平台
提供知识库
RAG检索
工具调用
CodeFuse大模型
效能Copilot +Agent
全量数据
单纯问答形式无法满足智能化需求,需要结合平台的能力进行智能化改造。
以领域 Agent 为核心,对效能平台进行全面升级,增加超级会话及 Agent 调度与执行能力
13. AI Native 模式
AI原生:用户无需主动触发AI功能,任何原有功能都能友好嵌入AI能力至用户操作中。
03 解释代码 04 代码分析
准确解释代码,历史 智能生成优化、简化建议,
代码 so easy 帮助写出更好的代码
02 生成注释 05 生成测试
代码编辑区域快捷 快速生成测试用例,单测/
添加注释 集测一键搞定
01 代码补全
智能补全,一键采纳
06 智能问答
AI 协助解决研发问题,
无需离开编码环境
14. 03
关键技术与难点
CodeFuse研发助手关键技术以及难点突破
15. 算法关键技术与难点
代码底座大模型
≠
产品落地
代码补全模型
代码底座大模型 模型填空 自适应语法粒度 仓库级感知 推理部署
挑战 1 挑战2 挑战 3 挑战4 挑战5
• 自回归训练从左
到右
• 无法利用上下文 • 常规训练无代码
语法
• 无法自动停止 • 单文件感知范围
有限
• 业务逻辑不准 FIM : fill in the
middle BlockFim:程序
分析 RepoFuse仓库
级补全
• 代码能力
• 生成代码符合
预期
预训练+MFT微
调
• 响应速度敏感
• 代码补全耗时
600ms
ModelOps加速
16. 工程关键技术与难点
算法模型 ≠ 产品落地
触发时机 上下文边界 实时+耗时 效果优化 多模型/多策略
挑战1 挑战2 挑战3 挑战4 挑战5
• 上下文边界导致
可用信息少
• 无法利用代码引
用链路相关信息
• 无法参考其他相
似代码 • 全量代码计算量
大
• 实时代码难被计
算
• 服务端OR本地存
储
• RAG检索时间长
• 耗时敏感 • 纯模型能力存在
幻觉问题
• 生成结果括号不
匹配
• 模型能力存在某
些领域上限 触发时机优化 RAG+程序分析 本地存储/索引 PE/前后处理 AB平台
HPF抢占式队列
上下文太少不触发
上下文感知缓存
动态delay •库内检索召回
•个性化业务独立扩
展
•引用链路追踪
•代码解析/压缩 •本地轻量向量/索引
库
•严格限制资源的低
侵入构建
•20ms以下仓库检索 •低收益判断
•业务语义Prompt增
强
•Few-Shot 学习
•多种校验后处理 •多场景多样化分语
言AB实验
• 什么时候触发
(立即 or 等待
or 动态delay)
• 全部触发 or 部分
触发(队列机制)
• 要不要触发:缓
存复用
• 同时运行多个模
型进行效果验证
• 单个模型同时用
多种策略进行效
果验证
17. 如何对高频场景进行触发时机优化(代码补全为例)
敲击键盘
提取Prompt
LRU缓存
上下文hash
提取Prompt
边界判断
绝大部分请求为无效请求,浪费GPU资源
发起请求
缓存
动态Delay
HPF抢占式队列
发起请求
40+用户特
征抽取
触发事件
上下文长短
光标位置
线性模型
决策树模型
相对节省80%+ GPU资源
18. 什么是模型幻觉问题
生成效果
模型“虚假认知”
由于无法感知SortUtils中bubbleSort方
法,所以模型根据有限的上下文猜测
了可能的insertionSort方法,并生成对
应调用代码,导致生成代码的编译错
仓库内其他相关文件内容
误。
19. 基于上下文感知学习 ( ICL ) 能力,解决模型幻觉问题
Context-Aware感知边界
无上下文
当前文件
光标前内
容
当前文件
光标前后
内容
(FIM)
所有打开
的文件
所有的语
义相关元
素
本地仓库
所有相关
的元素
整个本地
仓库
CY23 里程碑 CY24 里程碑
文件级感知范围 仓库级感知范围
公司所有
仓库
其他非代
码信息
20. 上下文感知学习 ( ICL ) 能力预处理 – 本地索引构建
文本索引库
File
函数过滤/代码摘要
Code
AST分析/代码切分
函数
向量化/Embedding
KV索引库
Chuck
21. 基于上下文感知学习 ( ICL ) 能力,解决模型幻觉问题
结合RAG+程序分析能力强化上下文。
感知本地仓库中预处理构建的文本库/向量库做相似度检索寻找相似代码。通过AST解析,
引用链路等追踪手段,找到对应相关代码并压缩
测试集 EM:40.9% -> 59.75%
相似代码
文件上下文
• 文本检索
• 向量检索
• 滑动窗口
•
•
•
•
•
相关代码 重要性排序
AST解析
动态类型推导
应用链路追踪
代码结构分析
二方/三方包 • 相关相似混排
• 结构压缩,无效
信息去除
• token计算/占比
分析
Prompt构造
• 多结构构造
• AB Test
远程能力增强 跨库引用链路检索 知识库检索能力 重要性排序 Embedding服务
本地核心能力 轻量级K-V索引库 本地文本索引库 本地文本检索引擎 本地向量检索引擎
相关文章:《RepoFuse》 https://arxiv.org/abs/2402.14323
22. 基于上下文感知学习 ( ICL ) 能力,解决模型幻觉问题
Context-Aware扩展边界的意义
Generate HTML with
python syntax
highlighting for
Generator
“print(‘reading docs’)”
<pre><code
class="language-
python">print(“reading
docs”;) </code></pre>
• 单文件代码补全 • 仓库内多文件代码补全
• 无法利用仓库内其他文件信息 • 70%的代码编写会用到仓库内其他文件信息
• 仅能完成30%的场景 • 更加关注仓库整体依赖关系
• 补全不准,出现严重的幻觉 • 更加关注与目标代码相似的代码段
23. 基于上下文感知学习 ( ICL ) 能力,解决模型幻觉问题
生成效果
仓库内其他相关文件内容
优化前
优化后
24. 基于Block-FIM能力,解决代码生成不完整问题
•
Motivation
• 大模型自回归训练,仅适合Chat任务,不支持代码补全。
• 代码补全需要根据代码的上下文预测代码缺失部分,此模式无法
结合上下文进行完型填空。
•
FIM(Fill in the middle)
• 将训练的文本序列一部分移动到结尾,自回归重新排序进行训练。
• Character:字符粒度随机切分样本,生成结果无法保证语法准确性,工程
需要复杂后处理保证预发准确性。
•
Block-FIM
•
Block:结合程序分析技术构建Block数据,将样本进行Block粒度切,模型
生成完整Block停止。
Block-FIM 效果展示
25. 04
未来方向思考
未来软件研发领域发展方向思考
26. 人工智能应用阶段
Intelligence 完全无需人类监督,AI完成全部工
作,人类只需给出初始目标
Agent AI完成绝大部分工作,人类设定目
标,提供资源,监督结果
Copilot 人类与AI协同完成工作,AI一般提
供初稿
Chat Bot 人类完成绝大部分工作,AI提供建
议或信息
TOOL
人类利用工具完成工作,没有任
何明显AI辅助
27. AI程序员(Multi-Agent技术路线)
需求拆解Agent
用户需求
系分Agent
编码Agent
测试Agent
调度Agent
AI程序员
发布Agent
运维Agent
监控Agent
需求交付
更多领域Agent
28. 技术普惠
AI让技术更加人性化:AI不是替代我们研发人员,是让更多人成为我们
29.
30. THANKS
大模型正在重新定义软件
Large Language Model Is Redefining
The Software