程序员敲代码的“姿势”,正在被大模型改写!

程序员敲代码的“姿势”,正在被大模型改写!
2024年04月26日 18:50 CSDN

作者 | 《新程序员》编辑部

出品 | CSDN(ID:CSDNnews)

大型模型的兴起和发展正在彻底改变着软件行业的面貌,为开发者们带来了更强大的工具和技术支持,使他们能够构建更智能、更复杂的软件系统。借助大型模型的能力,软件产品由此也可以实现更精准的语言理解、图像识别、自然语言生成等功能,带来更智能和个性化的服务。

在这个充满变革和挑战的时代,CSDN 联合高端 IT 咨询与教育平台 Boolan 于 2024 年 4 月 25-26 日隆重举办了 ML-Summit 全球机器学习技术大会,特设“大模型赋能软件”论坛。

本论坛邀请到了微软首席应用科学家经理黄寓凡、阿里巴巴通义实验室资深算法总监李永彬、百度 Comate 架构师张立理、智谱 AI-CodeGeeX 算法工程师张鑫鹏、新浪微博新技术研发负责人张俊林一线专家,共同进行了技术干货分享和精彩绝伦的圆桌论坛,分享他们借助大模型在软件开发上的见解和经验,希望为开发者带来新思路和新启示。

黄寓凡:CodeLLM 在微软开发者部门的发展及其应用

代码补全对程序员而言,无疑是一个非常实用的功能与工具,它不仅可以提高编码效率,也能有效减少 Bug。这也是微软首席应用科学家经理黄寓凡及其背后的团队一直在致力于做的事情。

在同样是程序员出身的黄寓凡看来,软件开发是一个复杂的过程,远不止编写代码那么简单。过去两年间,微软做了大量的关于代码智能的工作。在主题分享中,黄寓凡以 CPT-C、Codist 为例,进行了简单说明。

黄寓凡,微软首席应用科学家经理

其中,在前 LLM 时代,代码补全功能通常只能补全一个内存变量或者是或者是一个类方法, 通常使用统计机器学习模型,相对于现代语言模型来说,这种传统的机器学习模型很重要的特点就是需要做特征工程。这种补全方法的正确率都不是很高,它只能弹出一个它最有可能的一些候选集,然后让你来选。随着 AI 的发展,微软基于 Transformer 语言模型研发了代码补全工具 CPT-C ,可以预测任意字符,无需特征设计,也可以结合长上下文。

微软还带来了一款代码翻译的工作 Codist,将软件从一种语言转换为另一种语言的过程。使用代码翻译技术,将代码从原始的语言转换为另一种语言。除了跨语言翻译外,还有其他翻译方法,例如跨版本转换,即在修改代码后将其转换为不同的版本或框架,以满足新的需求。

然而,代码翻译是一项非常具有挑战性的任务,此前也有许多人尝试解决难题,从而形成了三种主要方法流派:

  • 第一个流派是无监督学习,即在缺乏平行语料的情况下,尝试使用无监督方法进行训练。

  • 第二种流派是标注平行语料。

  • 第三种方法是尝试找到一个中间表达。例如,如果想要进行中文到德文的翻译,但缺乏直接的平行语料,可以先训练一个中文到英文的翻译模型,然后再训练一个英文到德文的翻译模型。通过这种方式,英文成为了中间桥梁,使得中文到德文的翻译成为可能。代码翻译也使用中介语言做媒介帮助翻译。

经过研究发现,这三种方法都存在各自的局限性。在 Codist 中,微软采用了代码蒸馏的方式,核心是“关键词”,实现跨语言/领域的对齐。

以上这两种示例可以称之为 CodeSLM,这样的方式有优点也有缺点,优点是模型小,资源消耗少,也可以实现边缘计算,但缺点是只能局限在专一场景中,而并非像 LLM 一样是针对整个开发的通用模型,此外研发成本与效率也不低,知识/性能是有上限的。

基于此,微软已将 CodeLLM 应用于代码智能领域。作为一项将大型语言模型应用于软件开发领域的技术,CodeLLM 可以成为软件研发生命周期的通用模型,也带来了高性能基线。

李永彬:通义灵码背后的技术和思考

不久前,阿里巴巴宣布迎来首位 AI 同事“通义灵码”,这位 7*24 AI 智能代码编程助手,擅长 Java、Python、Go、JavaScript、TypeScript、C/C++、C# 等 200 多种编程语言,可以辅助开发者写代码、读代码、查 Bug、优化代码等,从而引发众人关注。

在本论坛中,阿里巴巴通义实验室资深算法专家、通义灵码算法负责人李永彬带来《通义灵码背后的技术和思考》主题演讲。

李永彬,阿里巴巴通义实验室资深算法专家、通义灵码算法负责人

李永彬表示,在代码领域,代码大模型的发展路线有两条。第一条路线以自然语言为出发点,首先建立一个基于自然语言的大模型,然后,向该模型注入代码数据,以实现一个能够自动生成代码的大模型;第二条路线则是从代码的角度出发,从海量的代码数据中进行训练,然后注入自然语言数据,以实现代码生成的目标。

在李永彬看来,代码大模型至少需要具备三层能力,即自然语言理解与生成、代码语言理解与生成以及这两种语言之间实现互通的桥梁。通义灵码背后的代码大模型 CodeQwen 就是基于通义千问大模型基座,以及通过海量技术文档、教程、书籍等和万亿级开源代码/积累代码训练而成,目前 CodeQwen 1.5 已开源:https://huggingface.co/Qwen/CodeQwen1.5-7B。

经过长时间的思考与探索,李永彬表示,想要构建开发者最喜爱的智能编码助手,需要具备四个方面能力:

  • 首先,要满足程序员高频刚需。根据 JetBrains 2023 年开发者生态报告显示,79% 的开发者称,编写代码是最耗时的活动,解决代码生成能力是智能编码助手的基本要求。

  • 其次,作为一个好的编码助手,要能简单方便、又快又好地去使用,为此,通义灵码打造了多模型协同+云端一体的技术架构。在云侧,通义灵码采用了多模型协同打造沉浸式编程体验的策略,之所以做多个大模型协同,是因为不同的任务,用户的实际需求不一样,对模型的能力和响应速度的要求也不同,单一模型难以服务好用户。而在端侧,要做到本地模型及跨 IDE 端插件统一架构设计。

  • 第三,能够非常好理解上下文,精准理解用户的真实需求。基于代码的语义信息,充分让模型理解不同场景下所需的生成粒度,从而让模型能够根据当前正在编写的代码位置自适应决策应该生成的代码内容。更进一步,需要做到代码仓库级别的全局感知和理解,通义灵码使用先进的端侧实时代码语义分析技术,实时分析当前正在编写的代码,并获取所需的相关代码引用、相似的代码片段等语义信息,弥补单纯关注当前代码文件所需的不足,避免在生成的代码中引用了代码库内不存在的API等大模型常见的“幻觉”问题。

  • 最后,如何把编码助手和企业的私有数据资产结合到一起,做一个更契合企业需求和自己代码环境数据的助手,也是非常重要的。

面向下一步发展,李永彬说代码智能是 AGI 的先锋和明珠。在软件工程智能化领域,从简单 Copilot 到项目级 Copilot,当前正在向软件研发多智能体演进;再进一步,软件工程只是代码智能的一个方向,此外代码智能在数据科学、具身智能以及 AI4Science 等领域也有重要作用。

张立理:智能化研发在百度的落地

随即,百度 Comate 架构师张立理带来了《智能化研发在百度的落地》主题演讲。在他看来,工程师最主要的工作就是编码的问题。

张立理,百度 Comate 架构师

以往的研发工作往往面临着开发环境复杂、配置成本高、工作涉及多平台切换打断严重,而且相似代码编写效率低等多重问题,随着 2020 年 GPT-3 大模型横空出世,到 GPT-3.5、GitHub Copilot 产品矩阵愈发丰富,我们也亲眼见证了大模型已经切切实实地成为提效的一个手段。

基于这一趋势,张立理和他的研发团队开始探索大模型在智能研发中的应用,最终将重点放在了“帮你想、帮你写、帮你改”三大方向上。至此,百度内部已经有 80% 的工程师开始使用智能研发助手工具。

在构建强大的智能研发助手的过程中,张立理分享了三大挑战:

  • 首先,拥有代码数据用于训练模型并不意味着这些数据具备高质量。模型的效果取决于训练数据的质量。

  • 其次,编码与传统文本生成形式存在差异。

  • 最后,研发工作对于生成质量以外的因素也有一定要求。

基于这些挑战,他提出了构建优秀研发助手的建议,即优秀的模型、推理框架与产品的协同作用能够交付出优秀的智能研发工具。通过大规模的实际应用、用户优先和反馈驱动,使产品和模型不断改进,形成良性循环。通过RAG强化、大模型思维链、平台开放等手段,智能研发将更贴近组织与团队,胜任更大规模的需求实现。

张鑫鹏:CodeGeeX:RAG和长文本模型在代码项目级别的探索和应用实践

在全球机器学习技术大会的大模型赋能软件开发者专题研讨会上,智谱 AI 的 CodeGeeX 算法工程师张鑫鹏深入分享了从开源代码模型到智能编程助手的实践探索历程。随着预训练模型的不断发展,自动代码生成迈入了全新阶段,预训练模型让生成复杂且正确的代码成为了现实可能。

张鑫鹏,智谱 AI 的 CodeGeeX 算法工程师

张鑫鹏还着重介绍了基于国产平台华为 Mindspore 研发的 CodeGeex 代码模型。该模型采用了百亿规模的预训练代码,通过无监督学习的方式,在大量的代码语料上进行训练,能够完美适配 VS Code、Jetbrains、HBuilderX 等多种 IDE。

CodeGeex 的训练数据涵盖了 300 多种编程语言,包括 Python、Java、C++、JavaScript、C、Go、HTML 等主流编程语言以及一些小众语言。CodeGeex 从第一版发展到当下的第三版,逐步攻克了代码模型准确率低、中文理解能力差、部署成本高、输入上下文长度受限等一系列难题。而这些问题的解决,离不开 RAG 算法的引入以及 Multi-Agent 技术的有力支撑。

大模型赋能软件开发变革

在本次大会上,Boolan 首席咨询师卢威作为圆桌主持人,与阿里巴巴通义实验室资深算法总监李永彬、百度 Comate 架构师张立理、新浪微博新技术研发负责人张俊林三大技术大咖,围绕“大模型赋能软件开发变革”以及最前沿的模型技术展开讨论。

在当前行业中,META 最新发布的 Llama3 模型备受关注。张俊林评价称,「Llama 3 是一个非常重要的模型和版本,因为它的能力十分突出」。不久前,Meta 开源了 8B 和 70B 两个 Llama 3 版本,甚至未来还将推出 405B 版本。针对这一新模型,许多人已经开始进行了中文评测。尽管 Llama 3 削弱了中文能力,但其仍然表现出非凡的实力。可以预见,未来几个月推出的 405B 版本将取得更好的效果,很可能会超越国内绝大多数中文模型,这对国内创业型大型模型公司将带来巨大压力。

在本次圆桌论坛上,四位专家都同意巨大的数据量是 Llama 3 表现惊艳的最重要因素之一。可能包含大量的合成数据,并且合成数据在未来模型能力的提升中可能扮演重要的角色。张俊林和卢威分别分析了合成数据在多模态模型和代码模型中的效果和期望。

代码模型的性能上限,还有很大的空间。随着数据量的增加,模型性能的提升是显而易见的。对此,李永彬指出,随着数据量的增加,我们也会面临几个挑战。首当其冲的是数据质量问题,当数据量达到万亿级别时,依赖人工处理可能会显得不太切实际;其次,如何更好结合代码数据本身的结构和特点去设计模型结构和训练目标,也是一个有挑战但充满潜力的方向。

最后,卢威提出了一个不少开发者都非常关心的问题,即当前代码模型的能力评估往往与人类的中上水平相媲美,因此行业中也有了不少以辅助人类(Copilot)的方式实现的应用。然而,软件产业从业人员的技能水平与岗位要求实际上存在差异。考虑到这些因素,是否在某些环节上已经可以实现 AI 的全自动化?

针对这个问题,张立理表示,可以从几个维度来看这件事。以 AI 对软件开发的影响,第一阶段最简单的是代码补全,这是最初级的应用。其次是建立一个仓库级的代码补全系统。这两个层面对开发者的影响并不大。然而,第三个层面涉及到一些“威胁”,在这个阶段,我们可能开始推荐 AI 来处理单个需求。第四个阶段则是过渡到项目级别的应用,至于第四阶段什么时候能实现,我们也无法确定。

在这一系列环节中,就像在公司内部讨论项目或提出立项需求时一样,从几个人开始关键出发,逐渐明确需求,然后将其转化为实际问题。在这样的流程中,前期的环节尤为重要。

总的来说,如果不计成本地通过 Agent 等技术结合起来,或者限定问题的范围,一些环节目前是可以全自动化的,但 AI 想要去取代某些职级能力,情况可能并不那么容易。

对此,卢威和李永彬都指出,AI 研究和传统软件工程两个领域的“相向而行”,共同努力,可预期的提升空间是巨大的。

在本次大会上,各位专家的发言让我们深刻认识到,大模型正在以前所未有的方式渗透软件行业,为其带来了前所未有的机遇和挑战。我们听到了来自各领域的见解和经验分享,为我们打开了新的思路和视野。正如大会期间所强调的那样,大模型赋能软件,影响深远。我们期待着在未来的探索中,能够进一步深化对大模型的理解,并将其应用于软件领域,实现更多创新和突破。

财经自媒体联盟更多自媒体作者

新浪首页 语音播报 相关新闻 返回顶部