您当前的位置:首页 > 新闻资讯 > 科技

谷歌正在用人工智能增强程序员写代码的能力,亦或者是革命

时间:2022-07-28 11:36:23  来源:  作者:锋哥爱学习

原标题ML 增强的代码完成提高了开发人员的工作效率

作者:google Research 高级软件工程师 Maxim Tabachnyk 和高级工程经理 Stoyan Nikolov

代码复杂性的增加对软件工程的生产力提出了关键挑战。代码完成一直是一个必不可少的工具,它有助于减轻集成开发环境(IDE) 中的这种复杂性。通常,代码完成建议是使用基于规则的语义引擎(SE) 实现的,这些引擎通常可以访问完整的存储库并了解其语义结构。最近的研究表明,大型语言模型(例如,Codex和PaLM)可以实现更长、更复杂的代码建议,因此出现了有用的产品(例如,Copilot)。然而,机器学习 (ML) 支持的代码完成如何影响开发人员的生产力,除了感知的生产力和接受的建议,这个问题仍然悬而未决。

今天我们描述了我们如何结合 ML 和 SE 来开发一种新颖的Transformer- 基于混合语义 ML 代码完成,现在可供 Google 内部开发人员使用。我们讨论如何通过以下方式组合 ML 和 SE:(1)使用 ML 重新排列 SE 单标记建议,(2)使用 ML 应用单行和多行完成并使用 SE 检查正确性,或(3)使用单和通过 ML 对单标记语义建议进行多行延续。我们将 10k+ 名 Google 员工(超过 3 个月的八种编程语言)的混合语义 ML 代码完成与对照组进行比较,发现编码迭代时间(构建和测试之间的时间)减少了 6%,上下文切换减少了 7%(即,离开 IDE)当暴露于单行 ML 完成时。这些结果表明,ML 和 SE 的结合可以提高开发人员的生产力。目前,

Transformers for Completion
代码完成的一种常见方法是训练 Transformer 模型,该模型使用自注意力机制进行语言理解,以实现代码理解和完成预测。我们处理类似于语言的代码,用子词标记和SentencePiece词汇表表示,并使用在TPU上运行的编码器-解码器转换器模型进行完成预测。输入是光标周围的代码(~1000-2000 个标记),输出是一组完成当前行或多行的建议。序列是通过解码器上的波束搜索(或树探索)生成的。

在 Google 的monorepo培训期间,我们屏蔽了一行的其余部分和一些后续行,以模仿正在积极开发的代码。我们在八种语言(C++、JAVAPython/ target=_blank class=infotextkey>Python、Go、Typescript、Proto、Kotlin 和 Dart)上训练了一个模型,并观察到所有语言的性能改进或相同,无需专用模型。此外,我们发现约 0.5B 参数的模型大小可以很好地权衡高预测精度、低延迟和资源成本。该模型极大地受益于 monorepo 的质量,该质量由指南和审查强制执行。对于多行建议,我们迭代地应用具有学习阈值的单行模型来决定是否开始预测下一行的完成情况。

使用 ML 重新排列单个令牌建议
当用户在 IDE 中键入时,ML 模型和 SE 同时在后端以交互方式请求代码完成。SE 通常只预测单个令牌。我们使用的 ML 模型预测多个标记直到行尾,但我们只考虑第一个标记来匹配来自 SE 的预测。我们确定了 SE 建议中也包含的前三个 ML 建议,并将它们的排名提升到了首位。然后,重新排序的结果会在 IDE 中显示为用户的建议。

在实践中,我们的 SE 在云中运行,提供开发人员熟悉的语言服务(例如,语义完成、诊断等),因此我们将 SE 配置在与执行 ML 推理的 TPU 相同的位置上运行。SE 基于一个内部库,该库提供类似编译器的低延迟特性。由于设计设置,请求是并行完成的,而 ML 通常可以更快地提供服务(中位数约为 40 毫秒),我们不会为完成添加任何延迟。我们观察到实际使用中的质量显着提高。对于 28% 的接受完成,完成的排名由于提升而更高,在 0.4% 的情况下更差。此外,我们发现用户在接受完成建议之前输入的字符数减少了 10% 以上。

检查单行/多行 ML 完成的语义正确性
在推理时,ML 模型通常不知道其输入窗口之外的代码,并且在训练期间看到的代码可能会错过最近在积极变化的存储库中完成所需的添加。这导致了 ML 驱动的代码完成的一个常见缺点,即模型可能会建议看起来正确但无法编译的代码。根据内部用户体验研究,随着时间的推移,此问题可能会导致用户信任度下降,同时降低生产力收益。

我们使用 SE 在给定的延迟预算内执行快速语义正确性检查(端到端完成<100ms),并使用缓存的抽象语法树来实现“完整”的结构理解。典型的语义检查包括引用解析(即,该对象是否存在)、方法调用检查(例如,确认使用正确数量的参数调用方法)和可分配性检查(确认类型是否符合预期)。

例如,对于编码语言Go,约 8% 的建议在语义检查之前包含编译错误。然而,语义检查的应用过滤掉了 80% 的不可编译的建议。在加入该功能的前六周,单行完成的接受率提高了 1.9 倍,这可能是由于用户信任度的提高。作为比较,对于我们没有添加语义检查的语言,我们只看到接受度增加了 1.3 倍。

结果
超过 10k 的 Google 内部开发人员在他们的 IDE 中使用完成设置,我们测量了 25-34% 的用户接受率。我们确定基于转换器的混合语义 ML 代码完成完成了超过 3% 的代码,同时将 Google 员工的编码迭代时间减少了 6%(在 90% 的置信水平下)。转变的大小对应于观察到的转换特征(例如,关键框架)的典型影响,这些特征通常只影响一个子群体,而 ML 有可能推广到大多数主要语言和工程师。

在探索 API 的同时提供长补
全我们还将语义补全与全行补全紧密集成。当出现带有语义单标记补全的下拉菜单时,我们会显示从 ML 模型返回的单行补全。后者表示作为下拉焦点的项目的延续。例如,如果用户查看 API 的可能方法,则内联完整行完成显示完整的方法调用还包含调用的所有参数。

结论和未来的工作
我们展示了如何结合使用基于规则的语义引擎和大型语言模型来显着提高开发人员的工作效率并实现更好的代码完成。作为下一步,我们希望通过在推理时向 ML 模型提供额外信息来进一步利用 SE。一个例子是在 ML 和 SE 之间来回进行长预测,其中 SE 迭代地检查正确性并为 ML 模型提供所有可能的延续。在添加由 ML 提供支持的新功能时,我们要注意超越“智能”结果,但要确保对生产力产生积极影响。

致谢
本研究是 Google Core 和 Google Research, BrAIn Team 两年合作的成果。特别感谢 Marc Rasi、Yurun Shen、Vlad Pchelin、Charles Sutton、Varun Godbole、Jacob Austin、Danny Tarlow、Benjamin Lee、Satish Chandra、Ksenia Korovina、Stanislav Pyatykh、Cristopher Claeys、Petros Maniatis、Evgeny Gryaznov、Pavel Sychev、Chris Gorgolewski , Kristof Molnar, Alberto Elizondo, Ambar Murillo, Dominik Schulz, David Tattersall, Rishabh Singh, Manzil Zaheer, Ted Ying, Juanjo Carin, Alexander Froemmgen 和 Marcus Revaj 的贡献。



Tags:写代码   点击:()  评论:()
声明:本站部分内容及图片来自互联网,转载是出于传递更多信息之目的,内容观点仅代表作者本人,不构成投资建议。投资者据此操作,风险自担。如有任何标注错误或版权侵犯请与我们联系,我们将及时更正、删除。
▌相关推荐
谷歌创始人亲自给Gemini写代码,很核心那种
西风 发自 凹非寺量子位 | 公众号 QbitAI身价1050亿美元,每天还在亲自动手敲代码!?就连谷歌最新大招Gemini大模型的核心贡献者名单中,也有他的名字。没错,他就是谷歌联合创始人谢...【详细内容】
2023-12-26  Search: 写代码  点击:(106)  评论:(0)  加入收藏
这样用ChatGPT写代码,省时省力又高效!
译者 | 李睿审校 | 重楼生成代码是ChatGPT和其他遵循指令运行的大型语言模型(LLM)一个功能强大的应用。如果得到正确的提示,大型语言模型(LLM)可以生成程序员可能需要数小时...【详细内容】
2023-10-10  Search: 写代码  点击:(256)  评论:(0)  加入收藏
为什么写代码注释应该是注释 Why,而不是 How 和什么 What
代码注释在软件开发过程中扮演着重要的角色,它可以提供对代码的解释、设计意图和使用方法等信息。然而,很多开发者在编写代码注释时倾向于过多地关注如何(How)和什么(What),而忽略...【详细内容】
2023-09-26  Search: 写代码  点击:(226)  评论:(0)  加入收藏
上海交大发布大模型双语编程评估基准,机器开始挑战人类写代码了?
作者:上海交通大学 APEX 实验室“Write the code. Change the world.”If computers can write code, then it is a new world.打造能自己写代码的机器,这是计算机科学和人工...【详细内容】
2023-09-06  Search: 写代码  点击:(55)  评论:(0)  加入收藏
GPT-4写代码不如ChatGPT,误用率高达62%!加州大学两位华人开源代码可靠性基准RobustAPI
新智元报道编辑:LRS【新智元导读】代码能否跑起来的不是判断可靠性的标准,用语言模型写代码还需要考虑生产环境下的预期外输入。大型语言模型(LLM)在理解自然语言和生成程序代码...【详细内容】
2023-09-05  Search: 写代码  点击:(238)  评论:(0)  加入收藏
五个IntelliJ IDEA插件,高效编写代码
人工智能AI是当前广受认可的未来趋势和发展方向。虽然有些人担心AI可能会取代所有的工作,但实际上只会取代那些重复性高、产出低的工作。因此,我们应该学会更加聪明地工作,而不...【详细内容】
2023-07-06  Search: 写代码  点击:(289)  评论:(0)  加入收藏
开始用Rust编写代码!
作者 | Ukeje译者 | 布加迪审校 | 重楼 Rust是一种强大的语言,但从哪里开始入手呢?如果您习惯使用另一种语言,就应该知道Rust如何处理这些熟悉的概念。1、梳理Rust 自2015年发...【详细内容】
2023-06-20  Search: 写代码  点击:(161)  评论:(0)  加入收藏
AI写代码准确率高达80% 离自动生成程序还有多远?
每经记者:谭玉涵 孙宇婷 每经编辑:高涵日前,全球最大开源代码托管平台GitHub的CEO托马斯&middot;多梅克(Thomas Dohmke)亲自演示了人工智能(AI)写代码。他现场仅花15分钟就制作完成...【详细内容】
2023-06-06  Search: 写代码  点击:(319)  评论:(0)  加入收藏
团队写代码,为什么要遵循coding guideline?
最近我在思考这样一个问题,顺便看一下gpt对这个问题的解释。搜索发现:团队写代码,为什么要遵循coding guideline?1. 一致性:编码准则确保整个团队的代码风格和格式是一致的,这使得...【详细内容】
2023-05-25  Search: 写代码  点击:(293)  评论:(0)  加入收藏
身为程序员,你有哪些提高写代码效率的黑科技?
首先,每个程序员都是会利用工具的人,也有自己囊里私藏的好物。独乐了不如众乐乐,今天笔者整理了3个辅助我们写代码的黑科技,仅供参考。If你有更好的工具,欢迎评论区分享。1、Goog...【详细内容】
2023-05-06  Search: 写代码  点击:(276)  评论:(0)  加入收藏
▌简易百科推荐
从大模型爆发到AI PC面世 人工智能个人化时代来了吗?
中新网上海4月18日电(记者 郑莹莹 刘育英)1981年,IBM公司推出第一台真正意义上的个人电脑,开启了PC,Personal Computer的浪潮。联想集团(简称:联想)董事长兼CEO杨元庆还记得当年...【详细内容】
2024-04-19    中国新闻网  Tags:人工智能   点击:(3)  评论:(0)  加入收藏
李彦宏新目标,押注AI原生应用
文 / 道哥“未来,自然语言将成为新的通用编程语言。你只要会说话,就可以成为一名开发者,用自己的创造力改变世界。” 4月16日,百度创始人、董事长兼首席执行官李彦宏在Create 20...【详细内容】
2024-04-18    节点财经  Tags:李彦宏   点击:(4)  评论:(0)  加入收藏
李彦宏的三个AI猛药,能让百度翻盘吗?
“你只要会说话,就可以成为一名开发者!”李彦宏在第五届百度AI开发者大会自信宣告上这样说道。过去一年,AI破圈的故事屡见不鲜, 我们不断能看见“AI让写作变成零门槛”“不会画...【详细内容】
2024-04-18    太平洋科技  Tags:李彦宏   点击:(5)  评论:(0)  加入收藏
斯坦福发布2024 AI报告:中国AI专利全球第一,顶级AI模型主要来自美国
近日,由李飞飞联合领导的斯坦福大学以人为本人工智能研究所(Stanford HAI)发布了《2024 年人工智能指数报告》(Artificial Intelligence Index Report 2024)。这份长达 300 多页...【详细内容】
2024-04-18    学术头条  Tags:AI报告   点击:(10)  评论:(0)  加入收藏
Create 2024百度AI开发者大会:李彦宏带来三大AI开发工具,让人人都是开发者
“未来,自然语言将成为新的通用编程语言,你只要会说话,就可以成为一名开发者,用自己的创造力改变世界。”4月16日,Create 2024百度AI开发者大会在深圳举办。百度创始人、董事长兼...【详细内容】
2024-04-17    每日经济新闻  Tags:AI开发   点击:(6)  评论:(0)  加入收藏
Google成了“AI界汪峰”,全都怪OpenAI?
  2016 年,Google CEO 桑达尔&middot;皮查伊在 I/O 开发者大会上豪情满怀地向全世界宣布:Google 已经成为了搜索的代名词,Alphabet 未来将成为一家 AI 优先的公司。  凭借...【详细内容】
2024-04-15    APPSO  Tags:Google   点击:(6)  评论:(0)  加入收藏
人工智能耗电凶猛,科技巨头寻求核聚变发电
第一财经 作者:朱颖人工智能(AI)是电老虎,每天在吞噬巨大的电能。据报道,OpenAI的ChatGPT每天消耗超过50万千瓦时的电力,以响应2亿个用户的请求,而美国一个家庭平均每天的用电量...【详细内容】
2024-04-15    第一财经  Tags:人工智能耗电   点击:(6)  评论:(0)  加入收藏
Meta确认5月发布Llama 3,参数量达1400亿
周二,在伦敦的一场活动上,Meta 确认计划在下个月初推出其 LLM 的最新版 Llama 3,这个模型是驱动生成式 AI 助手的核心技术。这一消息证实了《The Information》杂志周一发布的...【详细内容】
2024-04-12  视角先锋队    Tags:Meta   点击:(18)  评论:(0)  加入收藏
OpenAI 宣布向 ChatGPT 付费用户开放新 GPT-4 Turbo 模型
IT之家 4 月 12 日消息,OpenAI 今日宣布,新 GPT-4 Turbo 现已向付费 ChatGPT 用户开放。与 1 月份相比,新版本提高了写作、数学、逻辑推理和编码的能力。GPT-4 Turbo 可在 Chat...【详细内容】
2024-04-12    IT之家  Tags:GPT-4   点击:(11)  评论:(0)  加入收藏
Meta推出新版自研AI芯片:性能较上代提高三倍,降低对英伟达依赖
AI(人工智能)芯片紧缺之际,越来越多科技巨头选择自行研发。当地时间4月10日,社交巨头Meta公布了自主研发芯片MTIA的最新版本。MTIA是Meta专门为AI训练和推理工作设计的定制芯片...【详细内容】
2024-04-11    澎湃新闻  Tags:Meta   点击:(7)  评论:(0)  加入收藏
站内最新
站内热门
相关头条
  • · 斯坦福发布2024 AI报告:中国AI专利全球第一,顶级AI模型主要来自美国
  • · 谷歌搜索史上最大变革!考虑对AI搜索收费
  • · ChatGPT官宣免注册,全球互联网变天!OpenAI将取代谷歌搜索?
  • · 马斯克脑机接口再造奇迹:瘫痪小伙意念玩赛车击败正常人
  • · Kimi引燃大模型“长文本竞赛”,阿里360百度急出手
  • · 瘫痪8年小哥植入马斯克脑机接口,狂打8小时「文明6」!Neuralink首个人类植入者直播来了
  • · 英伟达“算力核弹”强在哪里?
  • · AI大模型之争远未落幕
  • · 世界首款!英伟达重磅发布人形机器人模型
  • · 全程回顾黄仁勋GTC演讲:Blackwell架构B200芯片登场
  • · 真“Open ” AI?马斯克旗下大模型Grok宣布开源:参数量全球最大
  • · 全球首位AI程序员诞生 人类程序员会失业吗?
  • · 谷歌宣布更新搜索算法:打击AI生成内容,提高搜索结果质量
  • · 英伟达、微软等巨头“抱团”,AI有望助推6G时代到来 国内产业如何接招?
  • · OpenAI Sora已开放对外申请 网友爆料:可能还有其它重磅产品发布
  • · 周鸿祎再谈Sora:真正给人工智能补上了“眼睛”
  • · Sora爆火超100小时:美国狂“卷”算力,国内则卖 AI 课程“捞金”一年5000万|钛媒体AGI
  • · 爆火Sora参数规模仅30亿?谢赛宁等大佬技术分析来了
  • · “AI女友”霸占GPT商店,OpenAI苦不堪言:开发者也难出头!
  • · 从居家到工作,CES 2024上演 AI硬件大秀
  • 站内头条