写点什么

“为什么说大模型可能是软件开发的死胡同?”

  • 2024-11-21
    北京
  • 本文字数:2042 字

    阅读完需:约 7 分钟

大小:1005.16K时长:05:43
“为什么说大模型可能是软件开发的死胡同?”

虽然“Does current AI represent a dead end?”这篇文章意在引发讨论,但其中的某些观点对软件开发人员来说特别具有相关性:

 

“当前的 AI 系统缺乏与其功能紧密相关的内部结构,无法作为组件进行开发或重用,也无法进行关注点分离或分阶段开发。”

 

本文仅讨论如何将大语言模型(LLM)作为产品解决方案的一部分,而非探讨如何在开发过程中使用 AI 工具(例如,Cursor 和 Zed AI 这样的 AI 编码工具)。尽管借助 LLM 进行特定的软件开发生命周期活动(SDLA)确实面临着一些挑战,但我们开发产品的方式与最终卖给客户的产品通常是有所区别的。因此,在下面的图表中,我们关注的是上面两个部分:

 


来自卡内基梅隆大学软件工程研究所的图片

 

当前 LLM 面临的问题在于它们像汽车一样被出售——用户需要为整个产品付费,而不能指望将它们作为可组合模块的一部分。汽车的不可分解性不是问题,因为驾驶是一项受到严格控制的活动。即便你能够像乐高积木一样将汽车组装起来,它也不会被允许上路。

 

这大概正是大型科技公司所期望的——他们希望卖给你一个完整的产品或服务,而不是一系列可以轻松被他人进行构建的可组合部件。保持 LLM 的神秘感有助于维持其高价值地位。

 

LLM 的运作模式违背了计算领域的一个基本原则,即任务应当可以被分解。

 

这违背了计算领域的一个基本原则,即任务应当可以被分解。一个高效的软件组件,无论是自行开发还是外部采购,都应由可进行单元测试的代码构成。这些组件必须能够与其他组件可靠地协同工作。

 

即便某个产品采用了 Oracle 数据库,我们依然能够明白在概念设计层面上是存在数据持久化的。在决定使用哪种类型的存储技术时,测试机制已经准备就绪了。同时,数据库技术在不断创新,但客户永远不会认为存储厂商在某种程度上控制了软件。

 

在学术界,可分解性的缺失往往与可解释性的缺失相伴而生。我们可以归纳出其他与 LLM 在交付软件中的商业问题相关的因素。

 

我们无法将 LLM 的行为与训练数据分离。

 

目前,我们无法将 LLM 的行为与训练数据分离。我们知道 LLM 是经过训练的,但训练过程通常是不公开的,而结果却被期望能够被“原封不动”地接受。这种对组件“腌制”的期望在烹饪中或许可行,但在软件组件开发中却并不适用。

 

安全和隐私问题成为关注点,因为我们缺乏可靠的途径或方法来防止 LLM 泄露某些敏感信息。我们无法从外部干预神经网络,向它解释哪些信息是私密的,哪些不应该被泄露。

 

法律所有权问题依然很棘手。我们可以证明冷计算的操作结果是可重复的,在输入相同的情况下会得出相同的答案。然而,由于 LLM 携带着无法摆脱的训练“包袱”,我们根本无法证明它们没有侵犯现有的知识产权——而实际上,它们很可能已经侵犯了。

 

那些致力于减少碳足迹的公司正朝着与 LLM 厂商相反的方向前进,而 LLM 厂商需要惊人的计算资源来获得递减的性能改进。

 

本文并不是要讨论如何使用 LLM 来辅助开发,也不是关于向终端用户提供 LLM 工具。我使用的文本编辑器内置了某些形式的 AI 功能,但这些操作没有任何保障。我们都知道这些通常是走过场的功能——某些必须出现在产品中的“噱头”,而并非核心组成部分。

 

我认为 LLM 作为服务被引入产品的前景不大,除非 LLM 本身就是产品。

 

鉴于前面提到的原因,我认为 LLM 作为服务被引入产品的前景不大,除非它本身就是产品。但即便如此,这对任何企业来说都是一个巨大的陷阱。当 Zoom 创始人 Eric Yuan 提出在 Zoom 中引入 AI 替身代替与会者参加会议的想法时,理所当然地遭到了嘲笑,他认为这种能力会在“技术栈的底层”自然而然地出现。将重大创新外包给了 LLM 厂商,实际上是将自己的产品路线图交给了另一家公司掌控。

 

软件开发人员应该如何应对

 

那么,软件开发人员应该如何应对?我们都明白,一个组件应该有明确的职责,应该能够被替换,并且能够与其他组件一起被测试。如果是外部组件,也应当遵循相同的计算标准——而且我们应该能够依据这些标准来重新构建它们。

 

我们不应因追求短期的热度而轻易改变游戏规则。关键在于要设计一个能够为企业提供所需功能的流程,然后开发一个平台,以可持续的方式让开发人员进行构建。

 

作为开发人员,我们应当保持开放的态度,拥抱真正可解释、可测试的 AI。

 

作为开发人员,我们应当保持开放的态度,拥抱真正可解释、可测试的 AI。如果涉及训练过程,这个过程应当是可监控、可报告、可重复、可解释且可逆的。如果我们发现 LLM 认为某件事是真实的,而实际并非如此,那么必须能够通过一系列明确的步骤迅速进行修正。如果这样的描述没有意义,那么目前基于 LLM 的计算也同样没有意义。但理论上,我看不出为什么未来不能改变这一现状。

 

我担心的是,这种差异就像是科学与圣物信仰之间的对比。我们可以进行一系列不可行的实验(如果将圣物切成几块,这些碎片是否依然保持其神圣性?),但不应该期望这两个领域会有任何融合的可能性。

 

声明:本文由 InfoQ 翻译,未经许可禁止转载。

 

原文链接:

https://thenewstack.io/why-llms-within-software-development-may-be-a-dead-end/

2024-11-21 16:578479

评论

发布
暂无评论
发现更多内容

Experience Never Gets Old

三只猫

28天写作

发达国家加紧数字货币政策布局

CECBC

数字货币

【Mysql-InnoDB 系列】事务模型

程序员架构进阶

MySQL 架构 innodb 事务 28天写作

读书笔记:《Remote》

lidaobing

28天写作 Remote

夜莺二次开发指南-用户资源中心

ning

滴滴夜莺 夜莺监控

JFR定位线上问题实例 - JFR导致的雪崩问题定位与解决

AI乔治

Java 架构 线程

未来五年数字经济九大技术趋势,区块链成数字时代刚需!

CECBC

人工智能

小马哥刷力扣 - LeetCode 9. 回文数

小马哥

LeetCode 算法和数据结构 28天写作

Deno 双周刊 #1 - Deno 获 2020 JS 开源年度突破奖

hylerrix

typescript deno Node 周刊 V8

时间之外的颜色「幻想短篇 5/28」

道伟

28天写作

一次慢查询暴露的隐蔽的问题

AI乔治

Java sql 架构 SQL优化

一文学会Java死锁和CPU 100% 问题的排查技巧

AI乔治

Java 架构 死锁 cpu 100%

电动汽车的小历史及汽车方面的一个基础概念 (28天写作 Day5/28)

mtfelix

28天写作 电动汽车

28天瞎写的第二百一六天:LumaQQ 和 luma 二三事

树上

28天写作

甲方日常 84

句子

工作 随笔杂谈 日常

如何让开发人员接受DevSecOps

啸天

DevOps 开发者 DevSecOps 升职加薪 应用安全

一文带你快速入门Canal,看这篇就够了!

大数据老哥

大数据 实时数仓 canal

聚焦目标,团队工作不再一盘散沙(上)

一笑

管理 敏捷 目标管理 28天写作

面试被问AQS、ReentrantLock答不出来?这些知识点让我和面试官聊了半小时!

Java鱼仔

Java 面试 并发 JUC

分布式唯一ID解决方案-雪花算法

JavaPub

Java 分布式

28 天带你玩转 Kubernetes-- 第五天(玩转Docker)

Java全栈封神

Docker Kubernetes k8s 28天写作

外行话之不玩游戏,怎么做好游戏?

Justin

游戏 28天写作 外行话

读《百度不需要用户》,我似乎懂得了领导者的无奈

李忠良

AI 企业

夜莺二次开发指南-监控系统(3)

ning

滴滴夜莺 夜莺监控

项目管理系列(1)-如何开好一个周会

Ian哥

项目管理 28天写作

区块链与物联网融合发展的机遇与挑战

CECBC

人工智能

关于时间管理的思考

.

28天写作

线程池是怎么回收空闲线程的?如果你认为有定时任务,那你就错了!

看点代码再上班

Java 程序员 后端 开发

CSS13 - 定位

Mr.Cactus

html/css

【Mysql-InnoDB 系列】关于一致读

程序员架构进阶

MySQL 架构 innodb 28天写作

夜莺二次开发指南-资产设备管理

ning

滴滴夜莺 夜莺监控

“为什么说大模型可能是软件开发的死胡同?”_AI&大模型_David Eastman_InfoQ精选文章