查看原文
其他

思码逸任晶磊:ChatGPT时代的软件研发数据与效能提升 | 星科技•AI及AI应用

思码逸研发效能 联想之星 2023-10-20


前沿科技

AI及AI应用



近日,思码逸创始人&CEO任晶磊出席LeaTech全球CTO领导力峰会并以“ChatGPT 时代的软件研发数据与效能提升”为题做了演讲。


思码逸专注为企业研发团队提供效能分析平台及解决方案,基于深度代码分析技术,思码逸产品从代码和DevOps工具链中提取数据,呈现研发效率、软件工程质量、组织与人才发展等多视角数据洞察,提高研发过程可见性,辅助团队决策,推动开发者自驱成长。


任晶磊拥有清华大学计算机系博士学位,曾任微软亚洲研究院研究员,并在斯坦福大学、卡内基梅隆大学担任访问学者。任晶磊在软件系统、软件工程领域具备多年前沿研究经验,多篇论文发表在FSE、OSDI 等软件工程领域顶尖国际学术会议上。任晶磊在担任Microsoft Research研究员期间,参与过微软下一代服务器架构的设计与实施,负责设计高级软件和硬件系统,并取得4项美国发明专利。任晶磊还是一位积极的开源贡献者,曾于2018年创立了Persper基金会,该基金会旨在将“知识产权”引入开源项目。


以下为任晶磊分享:


01

ChatGPT给软件工程带来了什么?


我在清华大学获得博士学位后,加入了微软亚洲研究院,从事软件系统程序分析的研究。同时一直在关注机器学习领域的发展。现在,ChatGPT技术确实让几乎所有人都大为震撼。


接下来我们将进入这项技术的干货内容,今天的演讲将分为四个部分展开。


第一部分,我们将概述ChatGPT对软件工程的影响,不会局限于程序员如何提高工作效率,更会探讨对软件工程整体的影响。


首先,第一个方面是让大家写代码变得更快、更容易了,我认为这个话题无需赘述,因为我相信在座的很多人都有体验。在ChatGPT出现之后,另外一个新产品也是值得关注的——代码搜索领域的头部公司Sourcegraph正在推出一款产品Cody(尽管还没有公测),它在后ChatGPT时代提供了问答功能。Cody会结合你的领域知识、基于现有代码给出回答。我认为这个产品是值得大家关注的。


Sourcegraph Cody编程助手


但综合来看,我们现在能看到的落地能力还不能够做到生成复杂项目级别的代码,只能帮助你写一些微观的代码。至于生成工程性的代码,我们可能还需要等待一段时间,像在《流浪地球》中机器人能够为你重写整个操作系统。我认为这种幻想目前仍然只存在于小说中。至于这种能力何时能够实现,我无法预测,因为任何预测都有可能被打脸。不太悲观地讲,我们的饭碗应该还是能够再保持几年的。这是第一个维度的影响。


但ChatGPT对软件工程的影响,不仅是让个人写代码的速度变快这么简单。我们可以问一个问题:如果你的团队中每个人的速度都快了10倍,项目进度会变快10倍吗?在座的都是技术管理者,很明显这个答案是否定的。因为在从创建到最后交付的整个过程中,写代码的时间可能只占10%-20%,软件工程中还有许多复杂的组织和流程因素。


因此,我们还需要看看ChatGPT是否能够解决软件工程中的信息不对称问题。因为当人数增加时,信息不对称就会存在,流程摩擦也会增加。想想我们每天要开多少会议,花费了百分之多少的时间。AI能否在这方面发挥价值呢?这是和前面同样重要的维度。


如果在你的组织中有一个ChatGPT研发效能顾问,能够回答你有关项目和公司中各种问题,它就能够帮助我们减少信息不对称,并消除组织中流程摩擦。当然,有些会议需要与真人交流,但如果有些问题可以由ChatGPT直接解答,可能能减少20%的会议时间,这也是一种效率。因此,这个价值也是一个非常重要的维度。我们的许多客户都非常期待这样的能力。


02

从研发数据角度看ChatGPT


第二部分,我们将从研发数据的角度探讨ChatGPT,因为任何人工智能技术的训练和使用都需要数据作为原材料。因此,我们必须从数据的角度去思考这个问题。


ChatGPT的基石大型模型,是基于公共数据中巨大的参数训练而成的,规模达到了千亿级别。但是,它并不了解私域信息、组织、团队和其他相关知识。那么,如何将这些知识传递给它,是我们当前所面临的最大瓶颈。


数据基本上可以分为两类:一类是你的代码,代码中保存了你的大部分软件知识;另一类是你的软件工具和开发行为的所有数据,比如你的工具中所有的交流互动流程数据,这部分数据是代码之外的。



具体来说,我们有三种途径:最右边是采用大模型的最典型方法,即提供提示(prompt)。与大模型交流时,你不仅仅需要问一个问题,还需要给它提供一些上下文和少量的样本,以解释你想要干什么以及你的情况。这里最大的挑战是你只能给出非常有限的信息,例如4K或8K。如果信息量太少,那么大模型无法回答你关于服务和知识方面的问题。这个带宽是非常小的。


最左边的方法是使用你自己的数据去训练大模型,你需要修改更新它的参数。然而,这种方法需要大量的时间和资源。中间的方式是自己训练一个小的模型去学习大模型,然后进行微调,以使其更适合你的特定任务。


在实际应用中,选择哪种方法取决于你的具体情况和需求。无论选择哪种方法,我们都需要理解大型模型的优势和局限性,并在实践中发掘其潜力。


总体来说,我们目前探索的方向是最右边的第三种路径。选择这个路径背后的逻辑是ChatGPT的核心思想,这种思路的成功在于使用全球公开的信息和1000亿参数来训练一个通用的模型,而不是针对特定领域去收集数据和优化模型。当需要解决具体问题时,只需提供一个小样本,模型就能够学习并回答问题。因此,我们仍然希望沿着这条路线前进。


03

如何打造高质量的研发数据基础?


第三部分,我们将介绍构建高质量研发数据基础的五个步骤。只有保证数据基础的高质量,ChatGPT才能可靠地解决具体领域的问题。



第一步,需要完成原始数据的积累。我们意识到在研发中,这些数据本身就是重要的资产和信息源。我们建议使用像Apache DevLake这样的开源工具,快速跨过这个初始阶段。



第二步,在获取数据后,我们会面临数据质量问题。数据的健康度很重要,因为如果向算法提供60分的数据,是不可能获得90分的结果的。因此,我们建议使用代码分析技术来校准数据,夯实数据,以确保数据的质量。



第三步,需要进行自主分析,利用BI或可视化工具,从数据中解读信息,下探洞察原因推动度量-分析-回顾-改进循环。


第四步,以目标为导向,采用GQM(目标-问题-指标)方法,基于健康的数据进行系统洞察,进一步复用和丰富模板,沉淀知识。


第五步,基于ChatGPT实现智能交互,满足灵活多样的信息需要。在ChatGPT之前,自然语言转SQL这一研究领域早已存在,而以ChatGPT为代表的新一代自然语言处理工具,将会给这个领域带来新的活力。


04

ChatGPT在实际研发效能

数据上的表现如何?


第四部分,我们深入上述的第五个步骤——智能交互,去探索ChatGPT在可靠的研发数据基础上,能够实现什么样的功能。


我们基于ApacheDevLake的真实数据表,测试了ChatGPT理解人类常识、找到正确的表、处理复杂抽象问题等方面的能力。


第一个测试显示,ChatGPT具备比较全面的人类常识,能够直接找到“打开 issue”、“issue合作”等表述对应的数据,这意味着我们不需要提供额外的数据字典,来辅助它理解某个细分领域。



第二个测试显示,ChatGPT具备处理复杂数据表的能力。我们提供了互相关联的9张表,其中有许多重复数据字段,而ChatGPT成功找到了正确的表,输出了正确的SQL查询。



第三个测试显示,当提出的问题比较模糊的时候,ChatGPT尝试理解的方向也是合理的。我们的问题中包括了“近期”“PR评审难度高”这样并不确切的表述,而ChatGPT在SQL查询中使用了“最近一周”、“PR评论长度>500”“PR评论数量>5”这些具体且合理的推测。



第四个测试不是基于研发数据做的,但也很有意思,所以和大家分享一下。我们用了自然语言处理数据集Spider里的一个超难问题来考验ChatGPT。它给出的第一个SQL查询是错误的,接下来我们不给出任何提示或反馈,只是反复提问。在后几次尝试中,ChatGPT成功给出了多种正确解法。


这说明ChatGPT可以通过多次尝试来自验证,提高数据解读的准确性



我今天的分享就到这里,谢谢大家!



END



相关阅读




您可能也对以下帖子感兴趣

文章有问题?点此查看未经处理的缓存