分享实录 | 深度学习技术红利下的代码补全

简介: 在软件研发过程中,“代码补全”至关重要,它可以有效的提升开发效率、减少拼写错误和输入代码量。本期《云效说码》分享邀请斑马网络技术专家旭伦分享了《技术红利下的代码补全》,介绍了深度学习革命带来的技术红利,在代码补全业务中对于这些“红利”的应用,以及在阿里云上低成本落地的方法。

在软件研发过程中,“代码补全”至关重要,它可以有效的提升开发效率、减少拼写错误和输入代码量。本期《云效说码》分享邀请斑马网络技术专家旭伦分享了《技术红利下的代码补全》,介绍了深度学习革命带来的技术红利,在代码补全业务中对于这些“红利”的应用,以及在阿里云上低成本落地的方法。
【以下为旭伦分享实录,有删减】

深度学习革命带来的三个技术红利

01.jpg

2012年ImageNet竞赛冠军Hinton和他的学生Alex Krizhevsky设计出AlexNet,从而引领了以深度全连接网络、深度卷积网络、循环网络为代表的第一次深度学习革命,其成果是在图像识别领域人工智能超越人类

深度学习和强化学习结合形成了第二次深度学习革命,其代表事件是:2016年阿尔法围棋(AlphaGo)打败韩国围棋九段棋手李世石;2017年,阿尔法围棋以总比分3比0战胜世界排名第一的中国棋手柯洁。从此,人工智能在围棋上打败人类

预训练模型”的出现和发展带来了第三次深度学习革命,其成果是在自然语音处理方面人工智能战胜人类,目前该技术已经在机器翻译和智能回答机器人领域得到广泛应用。

其中“预训练模型”可能是大家了解最少的,但是跟代码补全最相关,我简要介绍一下,其实目前“各大厂”都在训练自己的预训练模型,大家可以登录“GLUE”网站进行查看,排名几乎每天都在变化,这张截图是阿里巴巴达摩院的“StructBERT”登顶时截取的。

02.jpg

目前,深度学习中的预训练模型已经在很多任务上超越人类,比如CoLA数据集是判断一个句子是不是符合语法规则;SST-2情感分析数据集用于判断一条影评语句是正面还是负面的;MRPC数据集用于判断两条新闻句子描述的是不是同样的意义等。这些通过BERT等预训练模型都可以处理,其最新改进版都可以超越人类标注的值。除此之外,还有GPT2等生成模型,可以实现自动写作功能。

预训练模型与代码补全技术的结合

前面我们提到了“预训练模型”不仅可以判断语句是否符合语法规则,分析影评语句是正面还是负面,甚至可以实现自动写作文。那么“预训练模型”是否可以帮助我们做“代码补全”呢?回答是肯定的。

代码补全的基础理论是:代码大数据理论。“代码大数据”包含了代码和代码元信息,代码元信息,包括注释信息,代码提交时的信息,测试、review时的信息,BUG信息等。这个理论要起作用,需要基于一个公理:基于代码的自然性原理。

03.jpg

虽然语言可以千变万化,但是落实到日常生活中,由于认知的限制和实际的需要,我们日常交流所有的语言是重复性的,有规律的,可预测的。这个统计上的结果,导致了统计机器学习方法在语音识别、机器翻译等领域的巨大成功。于是我们可以假设程序代码也是自然的,因为它们也是人类在工作中创建的,受到硬件的软件的各方面的限制,它们也应该是有其统计规律的。

经过研究证明,代码不但是有自然性的,而且比自然语言的自然性还要好。为此,人们实现了一套基于统计方法的代码补全系统,并成功应用于eclipse IDE中。

04.jpg

有了理论之后,大家迅速将其应用于解决自己手头的问题,代码智能一片繁荣:
2014年代码智能技术被用于代码提示与补全和提升代码可读性;
2015年用于推荐方法名和类名以及语法错误修复;
2016年用于bug修复和源代码总结和查找代码克隆;
2018年被用于预测bug和自动为代码生成注释以及用于反混淆。

代码补全的局限性及解决方案

正在看起来岁月静好的时候,Vincent J. Hellendoorn和Premkumar Devanbu发表了《深度神经网络是建模程序源代码的最佳选择吗?》,认为OOV(Out-of-vocabulary)问题导致深度学习处理程序语言的效果还不如传统机器学习方法。

除此之外,代码补全系统还有3个要求:总是要给出补全结果,速度要跟上程序员打字速度 ,资源占用不能太高。

从程序员的视角看,本地发生的开发与最终提交的开发顺序和上下文环境非常不同,动态集成本地数据的模型比静态模型运行得好得多,针对重复典型模式进行了优化,但可能无法提供新的见解。

为了解决此问题,在实践上,需要实现补全算法,我们需要进行混合模型处理,既要有本地传统算法引擎,也要有远程的算法模型。

05.jpg

从落地方法上,我们采用huggingface的Transformers库,因为其针对多个模型有良好的封装。

在阿里云上低成本落地的方法

如下图所示,这是一张代码补全系统的架构图,除了需要有一个主算法引擎外,我们还需要一个带离线缓存更新的超大规模引擎。为什么要有超大规模引擎?因为前面也提到了,程序员希望代码补全系统可以提供他们不知道内容。这样的结构需要很强的算力,普通的个人笔记本跑不起来。如果要在个人笔记本中实现,就还必须有快速引擎、RNN引擎和注意力引擎。

06.jpg

为了节省成本,我们采用抢占式GPU的方式进行训练。但问题是“抢占式GPU”虽然便宜,但是GPU资源随时可能被别人抢走。“计算”被抢走了,你的“存储”存在哪里呢?这个时候就需要一个本地的存储,我选择的是用“本地NAS”。大家可以简单理解“NAS”就是一个网盘,存储速度很快,但是费用也很高。为了节省预算,我们还需要配一个“本地OSS”,这样我们就构成一个训练服务器集群。

因为我们用到的“模型”太大了,如果直接从国外的服务器上下载,速度很慢,可能几天也无法下载一个“模型”。于是,我们再次发挥云计算的优势。我们可以先在香港租用了临时ECS,然后通过“香港OSS”再转移到“本地OSS”中,从而实现下载加速。

以上内容来自旭伦在“云效开发者交流群”中的视频直播分享,有删节,您可以钉钉搜索群号(23362009)入群,观看完整视频。

平台.jpg

关于云效:
云效,企业级一站式DevOps平台,源于阿里巴巴先进的管理理念和工程实践,致力于成为数字企业的研发效能引擎!云效提供从“需求 ->开发->测试->发布->运维->运营”端到端的在线协同服务和研发工具,通过人工智能、云原生技术的应用助力开发者提升研发效能,持续交付有效价值。

相关实践学习
基于函数计算一键部署掌上游戏机
本场景介绍如何使用阿里云计算服务命令快速搭建一个掌上游戏机。
相关文章
|
18天前
|
机器学习/深度学习 监控 算法
深度学习赋能智能监控:图像识别技术的革新与应用
【4月更文挑战第8天】 随着人工智能技术的飞速发展,深度学习在图像处理领域取得了突破性进展。特别是在智能监控系统中,基于深度学习的图像识别技术已成为提升安全和效率的关键工具。本文将探讨深度学习技术如何革新传统监控体系,增强其对复杂场景的理解能力,以及在实际部署中面临的挑战和解决方案。通过分析最新的研究成果和应用案例,我们揭示了深度学习在智能监控领域的潜力及其对未来社会发展的影响。
18 2
|
17天前
|
机器学习/深度学习 监控 安全
智能化视野下的守卫者:基于深度学习的图像识别技术在智能监控领域的革新应用
【4月更文挑战第9天】 随着人工智能技术的飞速发展,深度学习已经成为了推动计算机视觉进步的重要力量。尤其在智能监控领域,基于深度学习的图像识别技术正逐步转变着传统监控系统的功能与效率。本文旨在探讨深度学习技术如何赋能智能监控,提高对场景理解的准确性,增强异常行为检测的能力,并讨论其在实际部署中所面临的挑战和解决方案。通过深入分析,我们揭示了深度学习在智能监控中的应用不仅优化了安全防范体系,也为城市管理和公共安全提供了有力的技术支持。
|
2天前
|
机器学习/深度学习 传感器 自动驾驶
基于深度学习的图像识别技术在自动驾驶系统中的应用
【4月更文挑战第24天】 随着人工智能技术的飞速发展,深度学习在图像处理领域取得了显著成果,特别是在自动驾驶系统中的应用。本文首先介绍了深度学习的基本概念和关键技术,然后详细阐述了卷积神经网络(CNN)在图像识别中的优势和应用,最后探讨了深度学习在自动驾驶系统中的挑战和未来发展趋势。
|
3天前
|
机器学习/深度学习 边缘计算 监控
深度学习赋能智能监控:图像识别技术的革新与应用
【4月更文挑战第23天】 随着人工智能的迅猛发展,深度学习技术在图像处理领域取得突破性进展,特别是在智能监控系统中,基于深度学习的图像识别已成为提升系统智能化水平的核心动力。本文旨在探讨深度学习如何优化智能监控系统中的图像识别过程,提高监控效率和准确性,并分析其在不同应用场景下的具体实施策略。通过深入剖析关键技术、挑战及解决方案,本文为读者提供了一个关于深度学习图像识别技术在智能监控领域应用的全面视角。
|
3天前
|
机器学习/深度学习 监控 安全
智能监控的革新者:基于深度学习的图像识别技术
【4月更文挑战第23天】 在智能监控领域,基于深度学习的图像识别技术已经成为一种革命性的工具。这种技术能够自动识别和分类图像中的对象,提供实时的、准确的信息,从而提高监控系统的效率和准确性。本文将探讨深度学习在图像识别中的应用,以及其在智能监控中的潜在价值。
|
3天前
|
机器学习/深度学习 运维 监控
深度学习在智能监控领域的革新:图像识别技术的崛起
【4月更文挑战第23天】 随着人工智能技术的飞速发展,深度学习已经成为推动计算机视觉进步的核心技术之一。特别是在智能监控领域,基于深度学习的图像识别技术正逐渐改变着安全监控的传统模式,提升系统的智能化水平。本文将探讨基于深度学习的图像识别技术在智能监控系统中的应用现状与挑战,分析其在目标检测、行为分析以及异常事件识别中的作用,并展望其未来发展趋势。
|
4天前
|
机器学习/深度学习 数据采集 自动驾驶
基于深度学习的图像识别技术在自动驾驶系统中的应用
【4月更文挑战第21天】 本文章深入探讨了深度学习技术在自动驾驶车辆图像识别领域的应用。不同于传统的摘要方式,本文将直接点出研究的核心价值和实际应用成果。我们专注于卷积神经网络(CNN)的创新设计,其在复杂道路场景下的行人和障碍物检测中的高效表现,以及这些技术如何整合到自动驾驶系统中以增强安全性和可靠性。通过实验验证,我们的模型在公开数据集上达到了行业领先水平的准确率,并且在真实世界的测试场景中展现了卓越的泛化能力。
|
6天前
|
机器学习/深度学习 传感器 自动驾驶
基于深度学习的图像识别技术在自动驾驶系统中的应用研究
【4月更文挑战第20天】 本研究聚焦于深度学习技术在图像识别领域的应用,并探讨其在自动驾驶系统中的实际效用。文章首先回顾了深度学习与图像处理技术的基础知识,随后详细分析了卷积神经网络(CNN)在车辆环境感知中的关键作用。通过实验数据对比分析,本文验证了所提出算法在提高自动驾驶车辆对周围环境的识别准确性和实时性方面的有效性。最后,讨论了目前技术的局限性及未来可能的研究方向,旨在为进一步的技术突破提供参考。
|
7天前
|
机器学习/深度学习 监控 算法
深度学习驱动下的智能监控革新:图像识别技术的前沿应用
【4月更文挑战第19天】 在数字时代,智能监控系统作为城市安全和效率的守护者,正经历着前所未有的技术变革。本文深入探讨了基于深度学习的图像识别技术如何重塑智能监控领域,通过算法创新提升识别准确率,实时处理大量数据,并在各种环境条件下稳定运行。我们将分析当前最前沿的技术应用案例,探讨其在实际应用中遇到的挑战及未来发展趋势,从而为相关领域的研究者和实践者提供参考和启示。
|
7天前
|
机器学习/深度学习 传感器 人工智能
基于深度学习的图像识别技术在自动驾驶系统中的应用
【4月更文挑战第18天】 随着人工智能的快速发展,深度学习技术在图像处理和识别领域取得了显著进展。特别是在自动驾驶系统中,基于深度学习的图像识别技术已成为关键技术之一。本文将探讨深度学习在自动驾驶系统中的应用,重点关注卷积神经网络(CNN)和循环神经网络(RNN)在车辆检测、行人识别和交通标志识别等方面的应用。通过对比传统图像识别方法,我们将展示深度学习技术如何提高自动驾驶系统的准确性和鲁棒性。

热门文章

最新文章