AI 正颠覆人们的想象,重塑各行各业。AI 技术改变编程范式,有效提升开发者效率,可能人人有机会成为“10倍程序员”。在此发展趋势下,开发者不禁担心未来会不会被AI取代?随着 AI 编程时代来临,开发者需要掌握哪些能力来更好地成长?
6月28日,在2023年开放原子校源行(清华大学站)活动特别设置的“开放原子开发者工作坊”环节里,齐聚清华大学软件学院长聘副教授、博士生导师闻立杰,华为诺亚方舟实验室技术专家董振华,微软工程师、《智能之门》主要作者胡晓武,智源研究院研究员、天鹰模型及FlagOpen负责人刘广,商汤AI代码助手研究负责人詹明捷五位技术大咖,在CSDN《新程序员》执行总编唐小引主持下,围绕《AI编程时代,开发者路在何方?》的话题展开精彩对话,帮助开发者厘清思路。
“开放原子开发者工作坊”由开放原子开源基金会举办的系列活动,旨在让志同道合的开发者们相互交流开发经验、分享开发心得、获取前沿技术趋势,是基金会特别发起的面向广大开发者的线下开源交流活动。
一、AI编程发展趋势
唐小引:随着 AIGC 的诞生,很多程序员朋友感觉到强烈的危机感。对于当前AI编程的发展,各位老师有哪些体会?
闻立杰:自2017 年起,我开始从事AI领域的研究,一直专注在自然语言处理小模型上,随着 ChatGPT 的诞生,我也开始关注大模型。
课题组的研究方向之一就是把自然语言文本转结构化查询语句,即Text2SQL任务,它是不太复杂的任务,但经测试发现直接用大模型直接生成还是会有不同程度的问题。我们用预训练好的ChatGPT,关注它生成的SQL语句正确性如何。经过几个测试后,发现它的Zero-short能力比不过Text2SQL小模型,这体现在多轮对话、组合泛化性和中文数据集上。当然如果给一些指示的例子,ChatGPT会表现得更好,甚至GPT-4部分能力已经超越了小模型最好的水平。
刘广:我们用7B的小模型尝试其编程能力的上限是多少,发现一些小模型的能力上限也很高,如体现在Human Evaluation榜单50%以上准确率。但是就算是这样高的准确率离真实的使用场景也还有差距,再这评测方式和使用场景的差距让我认为 AI编程离真正应用有一定距离。现在担心它替代程序员还为之过早,短期内大家还不用担心,但从长期发展来看,未来基于检索代码语言能力增强和其他能力提升,以及对更长代码输入的支持,还有代码描述的结构化会帮助代码模型进一步发展。
胡晓武:我在微软工作了十几年, 2017年开始在微软亚洲研究院工作,撰写了一本《智能之门》的书。我现在在微软AI团队,有一款工具叫ZeRO ,可以优化训练大型 AI 模型,为开发者节省成本,速度极快,比原生的模型快2、3倍,不用装Tensorflow、Pytorch等。
董振华:大语言模型(LLM)蕴含着丰富的知识,有机会赋能下游任务。例如在推荐系统领域,不少学者开始对LLM帮助推荐任务(排序、点击预估、评分预估)进行测评。有一些有趣的结论:1. 如果推荐的候选内容是图书、电影,由于LLM中蕴含着较多的关于图书、电影的信息,故对于推荐效果的提升有较好的帮助,同时也能提供比较合乎逻辑的解释。2. 同时基于LLM的能力,推荐系统有机会在与用户的多轮交互过程中,逐渐明晰用户的意图,提供更精准的服务。3. 也有学者在分析LLM的因果推断的能力,显然LLM中蕴含了很多因果性的知识,但它是否学到了因果关系?如何能让LLM具有因果推断的能力(干预、反事实)?是非常值得探索的方向。我们也会在近期的工作中拥抱LLM,将其与推荐系统、搜索引擎、因果推断相结合。
詹明捷:我最近在深度使用各个AI编程工具和模型的过程中,发现有三分之一的请求能直接被模型解决,但使用最强的模型也无法直接解决另外三分之二的需求,难度远大于其他NLP任务。因此我就在思考AI编程在大模型应用中,和其他任务有什么不同?编程是一个细致的活,模型第一步是分析理解Prompt,第二步是编写代码,第三步是审查、Debug,只有我们将整个流程串起来,才能让AI编程结合大模型落地应用,甚至可以帮助无代码经验的用户通过指令构建出自己的个人网站。目前我观察到编程的需求场景远大于供给者,还可以挖掘更多应用场景。另外, AI编程变革开发范式是很正常的,帮助开发者从繁琐简单的工作中释放出来,才能让我们有更多的时间投入到架构设计等工作中。
二、未来AI编程会取代程序员吗?
唐小引:一个共识是AI会取代90%,并且放大10%聚焦在创意部分。有个专家说自己十几年的NLP经验被拉到与刚毕业的大学生一样的门槛。而学计算机的学生们又很焦虑,还没毕业就有就业危机了。AI 编程会让开发者的角色发生变化吗?
董振华:我在读博的时候翻译过一本书《奇点临近》,作者在2005 年就预言2020年左右,AI将通过图灵测试。众所周知,2022年诞生的ChatGPT已经符合了这一预言。这本书的第二章总结了技术的进化服从加速回归定律,在越来越多的场景,技术终将会超越人,这种替代与超越需要一个过程,也要分场景来看。比如在软件领域,我们粗粒度的将软件分为基础软件,工具软件和应用软件。基础软件包括操作系统、数据库、编译器等,我们把它比作“黑土地”,需要精美的程序架构、极致的执行效率,海纳百川的兼容性,对系统的设计者和开发者的综合素质要求高;工具软件比较多,AI开发中典型的工具软件如PyTorch、MindSpore,他们像是在黑土地上耕耘的播种机、收割机,需要为应用软件提供完备、通用、鲁棒的API;而应用软件是我们手机上的APP、日常用的Office等,就像是在土地上生长出的庄稼,直接为用户创造价值。AI编程在这三类软件中可以发挥哪些作用值得我们深入思考。训练AI编程模型的程序数据的分布也是呈长尾分布,对于头部的程序生成、提效,AI编程有它的优势,但在软件系统的架构设计、高效执行、技术选型、需求的场景化理解、模块的迭代演进、软件系统涉及的多个利益相关方(系统、用户、商业)的分析等方面,在目前这个阶段,优秀的人类程序员、架构师还是有优势的。
胡晓武:从知识层次来看,分为记忆-理解-应用-归纳-创新-分析。AI是一个特别强的大脑,具有超强记忆力和推理能力,其他都谈不上。有两种软件开发人员: 码农和高级工程师、架构师,我们尽量不做 “码农”, 将最基础的东西交给AI后,我们去做开创性工作。
三、GPT 对教育领域有哪些冲击?
唐小引:许多人都提到 GPT 对教育的冲击,闻老师可以讲讲 GPT 对软件教学的影响,从教育层面如何应对 AGI 及 AI 编程趋势所带来的挑战?
闻立杰:首先大模型对教育有一定影响,但并不一定是替代,更多的是正向影响大于负面的,最明显的是我现在的备课效率比以前高很多。
从老师角度来看,在课程设计、课件设计以及大作业的设计,我们可以借助大模型来做这些事情。但教学是因人而异的过程,每位老师都有自己的教学方法,如何更吸引同学们学习、如何创新教学方法,是所有老师们都要思考的问题。从学生角度来看,ChatGPT像是他们的“助理”,同学们请假开始用ChatGPT生成请假条。
所以我们要拥抱大模型,但不是替代程序员,两者是互补的关系。未来我们可以分为两类大模型程序员,一类是为大模型做贡献,训练、研发、准备数据、准备算力;还有一类是使用大模型的人,模型不会自己生产东西,这还是程序员要做的事情,只不过身份变了,变成产品经理、架构师。
大模型帮助我们将用户复杂需求分解、生成、组装实现的过程中,其代码质量需要审核。所以我们现在多了一个说法叫“编程2分钟,调试2小时”,花2分钟就把代码生成了,但是需要远超编程的时间做调试,调试成本很高。这意味着我们需要有对系统的理解能力。这里头涵盖两个词:复杂性、创新性。复杂性是系统的复杂性,大模型帮我们生成的是复杂算法或者小的系统,还生成不了基础软件。例如生成操作系统的话,一亿行以上的代码如果不能编译成功,谁来修改、联调里面的错误?另外,AI生成代码后,后续随着用户需求的变化而变化,此时大模型如何帮我们做?需要我们逐步探索。
董振华: 闻老师提到大模型对教育的影响也启发了我的一些思考,《论语》中有两句话,其中“因材施教”说明了教育需要“个性化”,而“有教无类”说明教育需要“公平”,大模型有机会提升教育的个性化与公平性。OpenAI最近在筹划一个项目就是超级个性化助手,将大模型做成个性化。我在2022年初写了一篇论文“A brief history of recommender system”是对推荐系统历史的介绍,最后一段也畅想推荐系统未来是什么?我期望未来的推荐系统是英式管家,比我们自己还了解我们,将我们的行程、饮食健康都安排好。它还是一位很好的老师,知道我们应该学什么、应该教什么、用什么方式教。我期望大模型可以助力实现个性化教育,同时并降低成本,让更多人受益,实现公平的教育。
唐小引: 未来GPT对软件工程会有哪些影响?
闻立杰:第一个直观感受是GPT能生成代码是共识,只要是代码就需要编译,如今很多同学开始转向编译领域,探索如何用深度学习来提升编译速度和效果。很多人说软件工程从1.0进入到2.0,现在进入到以自然语言为编程范式的3.0时代,这对软件工程有较大的冲击,但这是正向的。正因为有了GPT,今年报计算机系和软件学院、交叉研究院这些信息类专业学生又出现了新的增长点。
四、大模型时代开发者心法:巩固基础,拥抱开源
唐小引:大模型时代,在校大学生需要学习哪些专业能力?未来,开发者的核心竞争力会体现在哪些方面?
闻立杰:对于软件学院同学来说,我们有数据科学导论、人工智能导论、数据挖掘和机器学习等系列课程,帮助大家学习深度学习相关的基础知识。同学们要拥抱大模型,哪怕只是使用大模型,最起码要了解模型的运作,掌握机器学习、深度学习、自然语言、强化学习等相关内容。另外,行业领域知识是无法从网上、从开源数据中获取的,因此大模型在这块的学习能力是不足的。各个领域会把企业知识当作自己的财富,因此未来应该是“开源+大模型”才是王道。
刘广:未来开发者体现核心竞争力的地方主要是两方面,一个是把模型训得更好,一个是把模型用得更好。现在有很多开源模型和开源框架,让大模型的能力越来越强,可以做本地知识库的索引或者推理,这是开源的力量,通过开源来发现模型更多可能性。我们希望通过开源社区的力量,增强模型能力,构建良好发展生态。
唐小引:刘老师非常点题,未来对于开发者来说,开源是始终不变的一大竞争力。
胡晓武:从现实来看,本科同学怎么适应将来更快的学习大模型?我之前分析过ChatGPT的代码,底层是TensorFlow,TensorFlow的底层是注意力机制,注意力机制的底层是最原始的长短时记忆,它的底层是循环神经网络RNN,RNN底层是DNN最普通的深度神经网络,循环起来组成RNN。再往下走,DNN下层是神经网络,一个是分类,一个是回归,分类又分为线性的和非线性的。所以我们底层从一个线性分类学到非线性分类,学到DNN、RNN等,最后才能理解大模型。因此理解底层实现也是十分重要的。
董振华:基础非常重要,大学最让我印象深刻的课程是梁洪峻老师的编译原理,大作业是将高级语言翻译成汇编语言;另外向南开大学、上海交大也会让学生从0到1做个简单的电脑、从0到1做操作系统、从0到1做数据库,这些课程除了锻炼学生的编程能力,还提高学生的系统思维、逻辑综合能力,而且在这个过程可以深入思考如何让计算机更好地服务于人,我想这些能力都是目前不会被AI所取代的,也是高阶计算机从业者所必备的技能。因此学好基础课程非常关键的。
在本次活动中,几位技术大咖真诚地分享自身对AI编程的真知灼见和对年轻开发者、在校学生建议,开放原子开发者工作坊最重要的是线下交流机会,台下同学们积极提问,台上专家真诚回答,现场气氛热烈。
现场提问
后续“开放原子开发者工作坊”系列线下交流会将定期举办,每期将开展不同的技术话题,与大家面对面交流学习,近距离倾听社区的声音,欢迎持续关注和参与。