谷歌AI助力软件工程的进展及未来展望

news2025/1/16 20:55:24

  每周跟踪AI热点新闻动向和震撼发展 想要探索生成式人工智能的前沿进展吗?订阅我们的简报,深入解析最新的技术突破、实际应用案例和未来的趋势。与全球数同行一同,从行业内部的深度分析和实用指南中受益。不要错过这个机会,成为AI领域的领跑者。点击订阅,与未来同行! 订阅:https://rengongzhineng.io/

回顾与现状

在2019年,无论是在谷歌还是其他地方,软件工程师们虽然听说过机器学习的进步,特别是深度学习在计算机视觉和语言翻译领域的显著效果,但他们很难想象这些技术会如何在软件开发中产生影响。仅仅五年后的2024年,AI辅助写代码已成为软件工程师中的热门话题,许多人都在使用基于机器学习的自动补全工具,无论是公司内部工具(如谷歌的内部代码补全)还是商业产品。

谷歌在这篇博客中,介绍了内部软件开发工具的最新AI改进,并讨论了未来五年的预期变化。团队负责谷歌工程师大部分时间所用的软件开发环境,包括内循环(如IDE、代码审查、代码搜索)和外循环界面(如缺陷管理、规划)。通过这些改进,直接提升了开发者的生产力和满意度,这是谷歌密切关注的两个指标。

挑战

AI技术发展迅速,预测哪些想法应该首先探索一直是个挑战。技术上可行的演示与成功产品化之间通常存在显著差距。谷歌遵循三条准则来将想法应用于产品:

  1. 优先考虑技术可行性和影响力:专注于已经确定技术可行性并对工程师工作流程有高影响力的想法。
  2. 快速学习以改进用户体验和模型质量:专注于快速迭代和提取经验教训,同时保障开发者的生产力和幸福感。用户体验与模型质量同样重要。
  3. 衡量效果:目标是提升生产力和满意度指标,因此需要广泛监控这些指标。

将LLM应用于软件开发

随着Transformer架构的出现,谷歌开始探索如何将大型语言模型(LLM)应用于软件开发。基于LLM的内联代码补全是AI在软件开发中最受欢迎的应用:使用代码本身作为训练数据是自然的应用方式。用户体验感觉自然,因为单词级自动补全已是IDE多年的核心功能。此外,可以使用一个粗略的影响衡量方法,例如由AI生成的新字符的百分比。因此,这一LLM应用成为首个部署的合理选择。

早期的博客介绍了谷歌如何通过代码补全提升用户体验及其影响测量。从那时起,企业环境中类似的快速增长也得以实现,软件工程师的接受率达到了37%,帮助完成了50%的代码字符。换句话说,现在代码中的字符有一半是由AI辅助完成的,而不是开发者手动输入的。虽然开发者仍需花时间审查建议,但他们有更多时间专注于代码设计。

关键改进

关键改进来自模型(更大的模型具有改进的编码能力,提供给模型的上下文构建的启发式方法,以及基于接受、拒绝和纠正的使用日志调整模型)和用户体验。这一循环对于从实际行为中学习,而不是从合成公式中学习至关重要。

谷歌利用多年来精心整理的跨多个工具的高质量内部软件工程活动日志。这些数据使谷歌能够表示细粒度的代码编辑、构建结果、解决构建问题的编辑、代码复制粘贴操作、修复粘贴代码、代码审查、解决审查问题的编辑以及代码提交到存储库的变更。训练数据是带有特定任务注释的代码对齐语料库。数据收集过程的设计、训练数据的形状以及基于这些数据训练的模型在DIDACT博客中进行了描述。谷歌继续利用这些强大的数据集与更新一代的基础模型进行探索。

下一个重大部署是解决代码审查评论(超过8%现在通过AI辅助完成)和自动适应周围上下文的粘贴代码(现在负责IDE中约2%的代码)。其他部署包括用自然语言指示IDE进行代码编辑和预测构建失败的修复。其他应用,例如预测代码可读性提示,遵循类似模式也是可能的。

学习成果

到目前为止,谷歌的工作教会了几件事:

  1. 用户体验的自然融合:取得最高影响的是自然融入用户工作流程的用户体验。在所有上述示例中,建议会呈现给用户,只需按一下Tab键或点击一下就可以进行下一步。需要用户记住触发功能的实验未能规模化。
  2. 平衡代码审查成本和增加值:观察到,随着AI建议的增多,代码作者越来越成为审查者,找到审查成本和增加值之间的平衡很重要。通常通过接受率目标来解决这一权衡。
  3. 快速迭代和在线A/B测试:快速迭代和在线A/B测试是关键,因为离线指标往往只是用户价值的粗略代理。通过在内部工具中展示AI功能,能够轻松发布和迭代,测量使用数据,并通过用户体验研究直接向用户询问他们的体验。
  4. 高质量数据的重要性:谷歌工程师在软件工具中的活动数据,包括与功能的互动数据,对于模型质量至关重要。
  5. 优化机会转化:观察到跨功能的优化机会转化,从机会(主要是用户活动,如下图漏斗顶部所示)到影响(应用AI辅助,如漏斗底部所示),同时通过用户体验和模型改进消除漏斗中间步骤的瓶颈。

展望未来

受到迄今成功的鼓舞,谷歌正在加倍努力,将最新的基础模型(Gemini系列)与开发者数据(如上所述的DIDACT的一部分)结合,推动现有和新的ML在谷歌软件工程中的应用。

在整个行业中,基于ML的代码补全为软件开发者提供了重大推动。虽然在代码生成方面仍有改进的机会,但预计下一波收益将来自更广泛的软件工程活动的ML辅助,例如测试、代码理解和代码维护;后者在企业环境中特别重要。这些机会为谷歌的持续工作提供了信息。谷歌还强调了两个行业趋势:

  1. 自然语言的人机交互:人机交互已转向自然语言作为常见模式,正在转向使用语言作为软件工程任务的界面以及开发者信息需求的入口,所有这些都集成在IDEs中。
  2. ML自动化大规模任务:从诊断问题到实施修复的大规模任务的ML自动化已开始显示出可行性。这些可能性由代理和工具使用的创新驱动,允许构建使用一个或多个LLM作为组件来完成更大任务的系统。

为了扩展上述成功并迈向下一代能力,从事该主题的实践者和研究人员社区将受益于共同基准的帮助,以推动该领域向实际工程任务发展。迄今为止,基准主要集中在代码生成(如HumanEval)。然而,在企业环境中,针对更广泛任务的基准可能特别有价值,例如代码迁移和生产调试。一些基准,例如用于错误解决的基准(如SWEBench),以及针对这些基准的原型(如来自Cognition AI)已经发布。谷歌鼓励社区共同提出更多基准,以涵盖更广泛的软件工程任务。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1810305.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【教学类-64-03】20240611色块眼力挑战(三)-2-10宫格色差10-50(10倍)适合中班幼儿园(星火讯飞)

背景需求: 【教学类-64-02】20240610色块眼力挑战(二)-2-25宫格&色差10-100(10倍)(星火讯飞)-CSDN博客文章浏览阅读360次,点赞17次,收藏13次。【教学类-64-02】2024…

34、matlab输入命令汇总

1、ans:最近计算的答案 代码示例1 12ans 3 代码示例2 Brand(7)B 列 1 至 60.7060 0.3171 0.1869 0.6797 0.5853 0.95930.0318 0.9502 0.4898 0.6551 0.2238 0.54720.2769 0.0344 0.4456 0.1626 0.7513 0.13860.0462 0.4387…

[大模型]GLM4-9B-chat Lora 微调

本节我们简要介绍如何基于 transformers、peft 等框架,对 LLaMA3-8B-Instruct 模型进行 Lora 微调。Lora 是一种高效微调方法,深入了解其原理可参见博客:知乎|深入浅出 Lora。 这个教程会在同目录下给大家提供一个 nodebook 文件&#xff0c…

python科研做图系列之时序图的绘制——对比折线图

参考知乎 折线图 我需要从两个不同的excel都读取第一列作为时间列,第二列作为编码列。 在同一张图上画出两条时间序列的折线图 横坐标是分钟,纵坐标是编码 帮我画的好看一些,记得解决中文乱码问题 英文版折线图 ,先搞个英文版,导师要求中文的话,再换成中文版 impor…

新技术前沿-2023-大模型学习根据个人数据集微调一个Transformer模型

参考如何根据自己的数据集微调一个 Transformer 模型 我们将通过NLP中最常见的文本分类任务来学习如何在自己的数据集上利用迁移学习(transfer learning)微调一个预训练的Transformer模型——DistilBERT。DistilBERT是BERT的一个衍生版本,它的优点在它的性能与BERT相…

区间预测 | Matlab实现GRU-ABKDE门控循环单元自适应带宽核密度估计多变量回归区间预测

区间预测 | Matlab实现GRU-ABKDE门控循环单元自适应带宽核密度估计多变量回归区间预测 目录 区间预测 | Matlab实现GRU-ABKDE门控循环单元自适应带宽核密度估计多变量回归区间预测效果一览基本介绍程序设计参考资料 效果一览 基本介绍 1.Matlab实现GRU-ABKDE门控循环单元自适应…

沐风老师3DMAX一键多孔结构建模插件Porous使用方法

​3DMAX一键多孔结构建模插件Porous使用教程 3dMax是大家熟知的3D建模软件之一,其功能非常的强大,在科研绘图领域有着非常广泛的应用,但是由于科研绘图的图形(模型)一般都属于异形结构,手工绘制建模&#x…

Docker | 入门:原理探究

Docker | 入门:原理探究 Run 的运行流程 Docker 底层原理 Docker 是怎么工作的? Docker 是一个 Client-Server 结构的系统,Docker 的守护进程运行在主机上,通过 Socket 从客户端访问。DockerServer 接受到 Docker-Client 的指令…

linux centos如何安装python3版本但不能影响默认python2版本

在CentOS上安装Python3而不影响系统默认的Python2,具有如何安装呢? 1. 更新系统包 首先,确保系统包是最新的: sudo yum update -y2. 安装EPEL存储库 EPEL(Extra Packages for Enterprise Linux)存储库包含许多额外的软件包,包括Python3: sudo yum install epel-rel…

Android Studio Jellyfish版本修改project使用特定jdk版本的步骤

android studio总是把这些东西改来改去让人十分恼火,IDE本身改来改去就让人无法上手就立即工作,很多时间浪费在IDE和gradle的配置和奇奇怪怪现象的斗智斗勇上,搞Android是真的有点浪费生命。一入此坑深不见底 jellyfish版安卓studio已经无法通…

[Vue3:axios]:实现登录跳转页面展示列表(查看教师所承担课程的学生选课情况)

文章目录 一:前置操作项目结构: 二:登录页面主要流程说明运行截图前端代码Login.vue 三:列表页面交互逻辑:涉及页面Page02.vue (登录成功跳转学生选课页面)运行截图 一:前置操作 ht…

【Linux】进程间通信之命名管道

👦个人主页:Weraphael ✍🏻作者简介:目前正在学习c和算法 ✈️专栏:Linux 🐋 希望大家多多支持,咱一起进步!😁 如果文章有啥瑕疵,希望大佬指点一二 如果文章对…

【PB案例学习笔记】-18制作一个IP地址编辑框

写在前面 这是PB案例学习笔记系列文章的第18篇,该系列文章适合具有一定PB基础的读者。 通过一个个由浅入深的编程实战案例学习,提高编程技巧,以保证小伙伴们能应付公司的各种开发需求。 文章中设计到的源码,小凡都上传到了gite…

46-4 等级保护 - 网络安全等级保护概述

一、网络安全等级保护概述 原文:没有网络安全就没有国家安全 二、网络安全法 - 安全立法 中华人民共和国主席令 第五十三号 《中华人民共和国网络安全法》已于2016年11月7日由中华人民共和国第十二届全国人民代表大会常务委员会第二十四次会议通过,并自2017年6月1日起正式…

LabVIEW图像采集处理项目中相机选择与应用

在LabVIEW图像采集处理项目中,选择合适的相机是确保项目成功的关键。本文将详细探讨相机选择时需要关注的参数、黑白相机与彩色相机的区别及其适用场合,帮助工程师和开发者做出明智的选择。 相机选择时需要关注的参数 1. 分辨率 定义:分辨率…

C++ - Clion安装Qt msvc2017版本教程,基础环境配置clion+ Qt5.12.12 msvc2017 + VS2019

背景:平时代码开发使用clion,但使用项目要制定mscv2017版本Qt。先装过mingw版本Qt无法运行,但msvc版本依赖装有Visual Studio,本地装的又是2019版。就出现了这个大坑,需要配置好clion Qt msvc2017 VS2019。 文章目录 …

立创EDA专业版设置位号居中并调整字体大小

选择某一个器件位号,右键->查找: 选择查找全部: 下面会显示查找结果: 查看,所有的位号都被选中了: 然后布局->属性位置: 属性位置选择中间: 然后位号就居中了 调整字体大小&a…

串口通信技术基础

1.0 串口通信基础 数据通信的两种常用形式: 1:并行通信 和 串行通信 并行方式:数据的各位使用多条数据线同时发送或同时接收 特点:传送速度快,但因需要多根传输线,曾经在近距离、高速率通信中使用 串行方式…

01——生产监控平台——WPF

生产监控平台—— 一、介绍 VS2022 .net core(net6版本) 1、文件夹:MVVM /静态资源(图片、字体等) 、用户空间、资源字典等。 2、图片资源库: https://www.iconfont.cn/ ; 1.资源字典Dictionary 1、…

验证码识别接口、多种样式验证码识别接口、中英文验证码识别接口

验证码识别接口、多种样式验证码识别接口、中英文验证码识别接口 本文提供一个基于OCR和机器学习的验证码识别接口,能够识别较复杂的中文、英文验证码,在OCR的基础上针对验证码进行算法优化。本接口是收费的(最低0.5分1次调用,试…