17611538698
webmaster@21cto.com

为什么大语言模型不会取代程序员

人工智能 0 834 2024-03-05 11:14:09

图片

导读:本文在解释为什么LLM不能替代人类程序员和相关职位。

生成式人工智能会取代人类程序员吗?

应该不会。不过使用通用人工智能( GenAI )的人类可能会被取代。但是当今有这么多的大语言模型 (LLM),差距会有所不同。

Gemma vs Code Llama 70B vs GPT-4 vs Claude 

如果你正在努力跟上所有的 LLM,你也不是唯一一位。我们正在目睹一场激烈的 LLM “军备竞赛”。从目前看,仅 Google 的 GenAI 产品就已经变得丰富——其最新的开放模型 Gemma 是 LLM 缩小规模的最新例子,可能是时候称它们为小语言模型了。

我们看到其它专门为代码生成量身定制的LLM的开发速度快如闪电,例如Meta的Code Llama 70B,还有Anthropic发布Claude 3模型,全面超越GPT-4。

当然,GenAI也已经吓到了不少开发者。在最近的一项研究中,近一半的人表达了对以他们目前的技术技能在GenAI世界中取得成功的担忧。

但这种担忧真的有意义吗?关于人类程序员死亡的报道可能被大大夸大了。人类甚至可能比他们意识到的有更多的时间来准备一个由GenAI主导的世界。

事实上,开发者应该问的更合适的问题不是“GenAI会取代我的工作吗?”,而是“我该使用哪个LLM?“

模型太大无法成功编码


本质上,LLM对软件开发领域的承诺是将程序员转变为架构师。


然而,并非所有的 LLM 都是平等的,值得探索的是为什么较小的 LLM 甚至首先会出现。


更强大的主流模型,如 GPT-4+ 和 Claude 3,仍然只能勉强解决不到 5% 的现实世界 GitHub 问题。ChatGPT 仍然会产生很多幻觉:虚假变量,甚至是已被弃用十多年的概念。此外,它说的有用废话看起来非常好。你可以尝试“提示工程”来摆脱这种问题,但有一个有益的上下文量的最佳结合点——太多会导致更多的混乱和随机结果,而牺牲了更多的处理能力。


使用LLM编码更大的问题是信任。从历史上看,主流 LLM 像大型数字吸尘器一样,不分青红皂白地在网上吸纳所有东西,而他们从哪里获取数据却没有太大的透明度。如果一家公司发布的代码中有百分之一包含另一个组织的受版权保护的代码,那就存在一个问题。你可以想象一个噩梦般的召回场景,其中已发布的产品没有无线功能,还要回来整理可疑的代码。


不过,LLM的格局正在迅速发生着变化。


LLM 是否足够专业用于编码?


当 Meta 在今年早些时候宣布更新其 Code Llama 70B 时,它本质是进行一次尝试,想解决主流 LLM 中缺乏对编码的关注,结果受到了开发者和用户的欢迎。它提供有3种不同的大小:70 亿、130 亿和 340 亿参数。它还在 5000 亿个代码和代码相关数据上进行训练,其中包含 100,000 个token的大型上下文窗口。


其中最令人兴奋的是 Code Llama for Python,这是专门用于 Python 的 Code Llama 版本——主要是因为它代表了 LLM 未来的发展。与 Meta 的一些模型不同,这个模型纯粹致力于编写一种特定编程语言,该语言在大约 1000 亿个额外的 Python 编码token上训练。这种针对特定用例的定制建模水平正是行业更需要的。


强调“理论上令人兴奋”还是必要的,因为像 Code Llama 这样的东西,在实际中对开发者有多大用处还有待我们观察。


在Reddit上,早期的判断似乎是该模型已经引起了人们的失望或沮丧,这些问题包括复杂的提示格式,过于严格的护栏以及至关重要的幻觉仍然在。本质上任何模型的好坏都取决于它所训练的数据。


然而无论是否有缺陷,Meta 定制的 LLM 方法都引起了人们的注意,即大型语言模型并不是在 AI 辅助编码生成方面取得成功的唯一途径。


在行业里有对更小、更专注从事编码的 LLM ,比如 BigCode、Codegen 和 CodeAlpaca。还有一个叫 StarCoder 的模型,尽管它的大小只有 155 亿个参数,但在评估基准测试中,它的表现优于 PaLM、LaMDA 和 LLaMA 等大模型。


这些选项中的每一个也都有优缺点,但最重要的是,小模型比大模型更安全。这是正确的,如果你用C++编码,我们并需要里面塞满了不相关的东西。数据池越小,就越容易保持相关性,模型的训练成本就越低,无意中窃取某人受版权保护数据的可能性就越小。


回到眼前,存在的现实主义问题......

GenAI会取代人类吗?


这些通用人工智能工具是否有可能成为程序员的替代品?


除非模型提供的编码答案的准确性提高到可接受的误差范围(即 98-100%),否则一定不会。


不过为了论证起见,让我们假设GenAI确实达到了这个误差范围。这是否意味着软件工程的角色将发生变化,人们只需审查和验证 AI 生成的代码,而不是编写代码?


如果原则是正确的,那么这样的假设可能会被证明是错误的。这是内部风险控制最重要的机制之一,要求任何重大风险活动(如传输软件)都由第二个独立且有能力的个人进行审查和双重检查。除非人工智能被重新归类为一种独立且有能力的生命形式,否则它不应该很快成为这个等式中的一双眼睛。


如果未来GenAI能够进行端到端开发和构建人机界面,那么在不久的将来。LLM 可以很好地与图像的文本和元素进行交互。甚至还有一些工具可以将网页设计转换为前端代码。然而与编码相比,人工智能更难单枪匹马地承担与图形和 UI/UX 工作流程相关的设计。编码也只是开发的一部分,剩下的还要投资一些新颖的东西,弄清楚谁是用户,将想法转化为可构建的东西,然后打磨。这些,就是人类因素的用武之地。


无论 LLM 有多好,对于程序员来说,一个原则应该始终占据我们的头脑上风:


像对待自己的代码一样对待每段代码。进行同行评审,并问你的同事:“这是好代码吗?永远不要盲目相信它。”


作者:大雄

评论