专栏名称: CSDN
CSDN精彩内容每日推荐。我们关注IT产品研发背后的那些人、技术和故事。
目录
相关文章推荐
武汉大学学生会  ·  从“地板爱情”到“远方征途”,你的假期被步数 ... ·  3 天前  
兰州大学萃英在线  ·  年味寻踪——烟火气里的人间暖意 ·  4 天前  
浙江大学  ·  课堂上的知识拿来迎财神,好用! ·  4 天前  
浙江大学  ·  赏!小浙发布寻“年”启事 ·  6 天前  
重庆共青团  ·  重庆2所高校考核招聘55人,速来报名! ·  5 天前  
51好读  ›  专栏  ›  CSDN

大模型在研发效率提升方面的应用与实践 | 新程序员

CSDN  · 公众号  ·  · 2024-02-21 17:16

正文

【导读】在当今软件开发和科学研究领域,项目的复杂性日益增加,提升研发效率已成为行业迫切需求。本文深入探讨了大模型技术在研发效率提升方面的应用与实践,以实战摸索的方式,真实揭示了大模型究竟能够如何助力企业实现数智化转型。

本文精选自《新程序员 007:大模型时代的开发者》,《新程序员 007》聚焦开发者成长,其间既有图灵奖得主 Joseph Sifakis、前 OpenAI 科学家 Joel Lehman 等高瞻远瞩,又有对于开发者们至关重要的成长路径、工程实践及趟坑经验等,欢迎大家点击订阅年卡


作者 | 孟伟
责编 | 唐小引
出品 | 《新程序员》编辑部

随着软件开发和科学研究的复杂性不断增加,人们对提高编程及研发效率的需求也越来越迫切。传统的编程工具和方法已经无法满足这一需求,因此人们开始探索新的技术手段来提升编程和研发效率。大模型作为一种新兴的人工智能技术,被广泛应用于辅助编程和研发效率提升领域。

例如,美国科技巨头谷歌利用大模型技术提升内部研发效率,通过在代码自增长工具中集成大模型,辅助完成部分重复性工作(如自动导入包、自动生成构造函数等),缩短了工程师的编码时间。同时它还开源了基于大模型的代码搜索引擎,可以自动匹配代码片段并提供相关文档,大幅提高了工程师的开发效率。微软研究院则开发了基于大模型的自动测试工具,它可以自动检测代码中的 Bug,并生成相应的测试用例。经过实测,该工具在发现错误率和测试覆盖率上都能超越人工编写的测试用例。目前它正在帮助微软各产品线提升测试质量。

中兴通讯以大模型为中心赋能企业数智化转型,坚持先自用再外溢。除自研大模型之外,我们还基于开源的大模型开发微调后在研发效能领域进行应用,并分析其优势和挑战。通过对相关研究和实践案例的综述,发现大模型在辅助编程和研发效率提升方面具有巨大潜力。在本文中,我将分享我们在研发类大模型的一些应用与实践,希望对开发者们有所裨益。


研发类 AI 场景分析


研发流程非常繁多,从项目立项到需求分析,再到产品设计、研发,再进行测试,进而投产和运维,贯穿了复杂的管理流程。

基于大模型的需求管理

  • 对需求进行自动拆分,即把用户需求拆分成产品需求。

大模型能对用户提出的需求进行语义理解,识别其内在结构与逻辑关系,自动将需求拆分成独立的子需求。比如从一个用户定义的需求,自动提取出多个具体的产品需求点。

  • 自动补全

(1)对需求进行自动介绍,指出需求背景、用户痛点以及实现该需求能为用户带来的价值。

(2)将用户用简单语言说明的需求,转化为标准的产品需求格式,详细描述功能点和约束条件。

(3)根据需求类型和项目阶段自动生成验收标准与测试用例。

  • 自然语言查询/定义

具体包括:

(1)用户能通过日常话语式描述搜索到相关工作任务。例如搜索“如何实现单点登录”。

(2)用户通过在线对话的方式与系统交互,利用自然对话流程定义需求内容。

此外,大模型还可以为需求管理提供以下能力:

(1)识别需求之间的依赖关系,绘制需求关系图。

(2)利用主观概率算法为每个需求点评估重要程度与难易程度。

(3)通过对历史需求数据进行学习,提出可行性评估与风险识别。

分析设计

  • 内容生成

(1)根据需求内容自动提炼重点,生成不同层级的内容提纲供浏览。

(2)根据产品类型和功能,绘制系列设计原型图或流程图,标识主流程和交互点。

(3)通过创意思维自动编写故事情景,展现产品如何解决用户痛点。

(4)对文档内容进行翻译、注释或解释,协助设计人员更好地理解需求细节。 

  • 内容结构化

(1)将图片、表格等非文本内容引用至正文,生成文档框架。

(2)在设计文档中自动标注待完善部分,给出改进建议或待定事项。

(3)检测文档风格与格式是否统一,给出转换建议供修改。

(4)将结构化设计文档自动生成到各类格式文档中,如 Word、PDF 等。

此外,分析设计阶段还可以利用大模型:

(1)检测设计方案创新性及可行性,给出评价建议。

(2)将历史优秀案例自动归纳提取,运用到当前设计中。

开发流水线

  • 资源智能分配

(1)根据历史任务资源使用状况,针对不同类型任务动态设置资源上下限。

(2)根据任务并发情况实时调度任务到不同规模的资源池,聚焦于提高整体利用率。

  • 故障定位

(1)通过对比历史错误日志,识别重要提示词进行分类,快速定位错误原因。

(2)调用相关开源工具分析异常快照,给出反向跟踪步骤以帮助修复。 

  • 一键生成

(1)根据用户自然语言自动创建符合用户需求的流水线。

(2)根据代码库结构,结合部门代码库和流水线规范,自动生成流水线。

(3)通过 API 调用底层工具,完成流水线的执行。

此外,开发流水线优化还可以:

(1)在不同阶段进行分支管理与合并。

(2)监控流水线状态并发送实时提醒,追踪任务进度。

(3)支持流水线模板管理和多项目重复应用。

CCA

  • 漏洞自动治理

(1)针对代码漏洞、引入组件、开源合规、安全漏洞等问题提供一站式解决方案。

(2)当前代码存在哪些漏洞/问题,推荐如何治理,无需人工搜索。

  • 组件版本依赖

即当某个组件要升级,AI 推荐建议升级版本和依赖版本,减少人工版本探索时间。

测试管理

  • 测试用例代码生成,即不同粒度的自动化测试用例代码生成,包括函数级、模块级、功能级、API 级、性能级。

  • 自动创建测试环境,即自动创建测试环境、测试执行任务并执行,最后生成测试报告。

  • 自动生成测试文档,包括:

(1)自动创建测试计划。根据接口文档自动创建基准场景和边界条件测试计划。

(2)实例化测试记录。测试通过后自动更新通过率及接口文档,实时反馈测试进度。

版本管理

实现版本发布无人化,包括文档自动生成,和版本发布审批决策智能化。


研发大模型应用平台整体架构和思路


基础模型选择思路

对于基础模型的选择,在参数上有以下一些考虑:

  • 10B 参数级别

这是目前综合性能与部署成本的平衡点。像 10B 左右的微型模型,在保留很强生成能力的同时,参数量相对较小,易于部署和精调。

  • 25B - 50B 参数级别

如果有一定预算,可以选择略大一些的模型,像 GPT-J 25B,具有更全面强大的语言理解和应用能力。若重视研发投入且需要应对更复杂任务,选择 50B 以下大模型也未尝不可。

  • 不宜超过 100B

超过 100B 的天然语言处理大模型,由于其部署和使用成本还不可控,当前尚不宜直接应用于产品。

总体而言,当前 10B - 50B 之间的模型规模是一个比较适宜的选择窗口。它可以满足大多数日常需求,同时考虑到成本和易用性的因素,超过这个范围就需要根据实际应用场景具体权衡。

其次,还需要考虑模型的开源程度。半开源模型信息不对称度高,我们优先选择完全开源的模型,可以推进后续定制和社区研发。

综上所述,对基础模型选择的标准如下:

  • 具备编程领域能力,在编程类模型评估中各类语言得分越高越好(HumanEval/Babelcode 指标)。

  • 考虑模型参数量,参数量过大,会导致精调和部署成本的提升。

  • 在编码能力基础上,最好具备一定中文能力,当然其选择的优先级低于编码能力。

当前主流的基础模型如表 1 所示,最终我们选择 Code LLaMA 作为基础模型。

表 1  主流模型对比

增强预训练

模型选好后,接下来就是对模型进行增强预训练。增强预训练的框架要解决两个问题:资源和速度。我们采用以下优化方式:

对于模型训练,我们可以采用 3D 并行训练的方式来实现。将模型参数和梯度张量划分为多个分区,分配到不同 GPU 卡上进行计算。每张卡负责自己分区的梯度和参数更新工作,间隔时同步到其他卡上。这样可以很好地利用更多计算资源,降低单卡资源需求。

同时,我们还可以采用 Distributed Data Parallel 的方式,将训练数据并行读取和样本处理工作分发到各节点,充分利用多卡资源进一步提升训练速度。对于节省 GPU 资源,我们使用 ZeRO 技术。这个技术通过对静态和动态参数/张量进行精细地分区存储,有效减少显存占用。同时它支持异步参数更新,计算和参数传输可以重叠进行,有效缩短迭代周期。





请到「今天看啥」查看全文