@Lenciel

LLM 调研(5)- 尾声

本系列是,LLM 调研…说一下它能做什么不能做什么,能做的部分怎么做比较好。

目录

这是最后一篇。

LLM 的热潮过去了半年多,它究竟是「鹦鹉学舌」还是具备「智能」,甚至具备可以发展为「AGI」的智能,这一本质上的分歧还没有收敛的趋势。

IEEE Spectrum 为此专门搞了个计分卡,把 AI 领域的 22 位杰出领袖的意见做了一个整理:可以看到,以 Rodney Brooks、Yann Lecun 为代表的大部分人,还是觉得哪怕 GPT-4 也没有任何发展为 AGI 的可能。少数派主要是忧心忡忡的 Hinton 和 Sam Altman。

从我前面的文章大家应该知道,我肯定是站 Rodney Brooks 这一派的。不过,我认为目前最好的分析不是 AI 圈子给出的,而是伟大的1 Noam Chomsky 给出的

为什么那么多优秀的专家学者站在另一边?我还是觉得这跟神经网络起起伏伏 90 年,一开始就用了类似于「智能」、「神经」、「学习」、「推理」这样的词2有关。加上 LLM 让 NTP 的效果如此好,很容易让人有模型掌握了语言甚至整个世界底层运行机制,并「涌现」各种能力的错觉。

究竟有没有智能

LLM 体现的「智能」和人类的「智能」究竟有何不同,可以再简单说几句。

人类的智能有两个显著特点,即「抽象」和「泛化」能力3

GPT-3 的训练使用了数千亿个 token,与此相对,普通儿童听到的所有单词,不排重还不到一个亿

人类不需要那么大的数据量做训练,因为人擅长各种层次的抽象,并能够把抽象出来的认知泛化。

比如,你买一把香蕉告诉四五岁的小孩儿这是香蕉,从此以后不管是长的短的,熟的生的,黄的绿的甚至闷烂了发黑的香蕉摆在 Ta 面前, Ta 都知道这是香蕉。为什么说机器「学习」和人的「学习」完全不是一回事?因为你绝不会感到教小朋友某个东西,是在调 Ta 的参数。

除开上面这种还没有任何科学理论可以「解释」的抽象泛化能力,人还会使用数学工具进行抽象:我们通过勾股定律就能够从两个给定直角边算出斜边的长度,不需要灌大量的数据来形成一个参数庞杂的统计模型。

通过数学模型抽象后,我们同样会泛化这个模型的使用范围。并且,泛化的范围越大,代表这个数学模型的水平越高。比如,从开普勒三大定律,到牛顿三大定律,到相对论,就是在不同体系中越来越普遍地描述物体之间相互作用的关系。

有人会说,神经网络也是使用数学函数对数据集进行的压缩和编码,不也是「抽象」吗?这里有一个显著区别是,描述客观世界的「数学模型」,通常是可解释可推理的,有一套严密的因果关系。而神经网络的「模型」,通常是几十亿甚至几百亿的参数,在训练中海量的数据集为什么形成这些参数的权重和取值,没有人知道。

并且,用数学模型描述,符合「因果」的世界,老早也已经被推翻了。宇宙并不按照包括爱因斯坦在内的很多人类认为的那样运行,而是混沌的4

这就是关于「智能」的现状:往内看,人为什么具备这样的学习和思考的能力,并且功耗如此低,还没有一套理论去解释;往外看,世界拥有高度不确定性,也没有一套理论可以去建立因果关系。

但仍需要投入

把 AGI 先放一放,LLM 和其他 AIGC 的工具,说明训练一个足够大的神经网络来模仿人脑的一些功能是可行的,这本身仍然是一个巨大的技术突破。

作为技术决策者,最好的状态还是向 Andrew Ng 学习5。至少,你应该做一些具体的尝试并评估:

  • AIGC 相关能力,会不会成为现有业务的一个核心竞争力:
    • 比如创意类的工作,美工、广告、游戏、媒体等等;
    • 比如文本密集的工作,法务、保险、人事等等;
    • 别人有你没有会不会直接被踢下桌;
  • AIGC 相关能力,会不会让现有业务有比较大的降本增效:
    • 服务类工作:客服,呼叫中心;
    • 搜索和推荐:更准更高转化率;
    • 效率提升:信息的记录、聚合和归纳;

如果结合现有的业务类型,上面有一些点的答案是「有可能是」,那么你就得现在投入其中,并持续关注了:因为在暴力美学到顶之后,一定会有各路人马开始优化 LLM 从训练到工程的各个方面。大量今天 LLM 做不了,或者做起来太贵的事情,明天可能就变得可行了。

  1. 我感觉只能这么称呼他,因为他的成就是在太丰富了。维基百科对他的说法是:「美国语言学家、哲学家、认识科学家、史学家、社会批判家和政治活动家,有时被誉为现代语言学之父。是分析哲学领域的重要人物、认知科学领域的创始人…」 

  2. 所以 Ted Chiang 吐槽说,当年「人工智能(artificial intelligence)」这个词就选错了,应该叫「应用统计学(applied statistics)」。 

  3. 所以卡尔·萨根说:「科学不仅仅是知识体系;它还是一种思维方式」。 

  4. 测不准原理」意味着空间的每个区域都充满微小的虚拟黑洞,粒子和信息会落入这些黑洞并丢失。虽然这些虚拟黑洞非常小,比原子核小一千亿亿倍,因此信息丢失的速度非常低,让包括经典力学在内的科学定律看起来是确定正确的,但实际上,宇宙充满了不可预测性。 

  5. 他在各个地方都讲,这东西离「智能」还有十万八千里。但同时,也积极地推出相关教程,还呼吁让所有的小朋友都掌握相关能力。 

LLM 调研(4)- 开发实践

本系列是,LLM 调研…说一下它能做什么不能做什么,能做的部分怎么做比较好。

上一篇讲完历史,本来应该接着讲 LLM 到底取得了什么进展。但因为:

  • 在我心里 LLM 并没有取得「范式转换」级别的进展,更谈不上任何真正的「智能」1
  • 比较好的中文综述已经有几篇了(比如 Mike 船长的这篇,或者张俊林的一些专栏文章),英文材料就更不用说了,论文都摆在那里;
  • 我们主要是结合自己的数据和需求做应用,既不会训练自己的 Base Model 也不会搭建相关的基础设施;

所以迟迟没有动笔。几周下来,能感觉身边聊 ChatGPT 的人明显少了。但行业里仍然热闹,每天都有新模型,新产品,新消息。我自己各种小规模的折腾还保持着,还去参加了老白的 AGIA ,获得了更大规模炼丹的资源。

FITURE 内部对 AIGC 的探索也在稳步推进:周博他们用 ChatGPT + Stable-Diffusion 做了一些设计方面的工作;Edward 他们借鉴微软 semantic kernel sdk 里一些 Prompt Engineering 的思路,实现了基于对话选课的场景…

这篇就讲讲,在使用 LLM 搭建应用的过程中一些感受和遇到的问题,可能对大部分人来说,这比讲 LLM 的一些技术细节更有用。

目录

做什么

2011 年,Andreessen Horowitz 说「软件在吞噬整个世界」。2023 年,没有 AI 的软件都不好意思出来见人了2

但只要是软件,它就会有结构,有抽象,有分层。比如数据怎么获取、处理和存储,比如模块之间怎么通信,比如怎么保障安全。LLM 相关的软件系统也不例外,并且因为还在相对早期,前面说的每个部分都有待解决的问题,也都是机会。

不过,有些机会是普通公司特别是创业公司根本没法追逐的,比如提供芯片和算力,比如训练基底模型。有些机会则是适合创业公司去搞的,比如解决存储或者数据管道等基础设施(做矢量数据库的 Pinecone 就属于这类)。

更多的公司,应该跟我们一样,只是「利用」这项技术,来给自己的用户创造更多的价值。要达到这个目的,我觉得应该拆成下面几个部分:

  1. 寻找合适的 LLM 作为基底模型;
  2. 以较小的成本(包括时间成本)将自己业务相关的领域知识和数据作为输入,扩充 #1 选择的基础模型的能力;
  3. 从工程角度结构化地提高这个过程的安全性和可控性;

从而最终迭代出在垂直领域商业化的 LLM 应用。

那么具体怎么做呢?

怎么做

基底模型与扩展

选择什么样的基底模型,很大程度上决定了你能如何扩展它。

比如,如果直接用 OpenAI 的闭源模型——无论是 GPT-3.5 还是 GPT-4——你就只能使用它提供的 API 做 Fine-tuning 或者 Embedding 或者是直接 Prompt Engineering

相对应的,如果你是用 LLaMA, Falcon, StableLM 或者 ChatGLM-6B 这样的开源模型,那扩展它们的方式就大不一样了。

我自己的建议是,你得花些时间好好试用 OpenAI 的各种服务(ChatGPT 的各个版本)和接口,同时也花些时间手搓一些开源模型,具备手感后,结合下面说的可控性和安全性相关的考量,结合自己的用户需求,最终做出决策

可控性与安全性

可控性

我们在前面讲连接主义与神经网络时说过,它有可解释性不足的问题。

这造成一系列和传统意义上的软件开发不同的特点,特别在可控性方面。

首先是输入的可控性差。自然语言编写 prompt 可能对于终端用户的感受不错,但是在开发过程中,是很痛苦的:不要说基于它「写代码」,连提炼出可以培训员工的最佳实践都很困难。

然后是输出的可控性差。一方面,LLM 究竟以什么样的格式响应一个 prompt 是非常不固定的;一方面,LLM 究竟以什么内容响应一个 prompt 也是不固定的3

最后是调试的可控性差。在构建其他软件的时候,如果对于给定的输入,输出是预期外的,你可以通过断点调试甚至单步调试来搞明白究竟发生了什么,但使用 LLM 基本上只能靠猜。

因此,整个研发过程如何变得更可控,是一个系统工程,涉及如何对 prompt 做版本化管理,更高效的 evaluation ,更及时的 optimization 等等问题,并且至今应该没有特别好的解法。

安全性

LLM 相关的业务是数据密集的,因此它的安全性至少包含:

  • 数据如何安全地「获取」、「处理」和「存储」;
  • 如何防止包括 Prompt Injection 在内的各种攻击;

同时,也包括你自己团队的「安全」:比如基于 OpenAI 开发如何合规,基于开源模型它们的 license 是否有坑等等。有一些问题看起来是创业阶段不用考虑的,其实你的服务上线第一天就有可能面临包括注入在内的各种挑战。

架构与核心决策

当你从原理到工程化有了足够多的手感,仍然考虑围绕 LLM 开发一个自己的应用(放弃说不定才是正确的选择),核心的决策因素有哪些?我自己觉得包括下面这些。

C 端还是 B 端

LLM 生成的不是「答案」,而是「答案应该大概长成啥样」。所以不太能够用来作为交付物直接向 B 端提供服务。

同理,对 C 端提供服务,应该也不能直接用在真正「严肃」的场景:比如看病、心理咨询等等。顶天了,作为某个人类的辅助和参考,提供一点建议。

是否「全生成式模型」

「全生成式模型」指用户所有的请求都用 LLM 进行响应。与之对应的是,通过意图识别对用户的请求进行分类和分流,让生成式模型和判别式模型一起来响应请求。

全生成式模型,首先成本是比较高的。背后如果调用 OpenAI,还有时延、QPS 和合规等一系列问题。而我们提供的大部分服务都是有限场景下的,因此,结合传统的 NLP 解决方案,比如知识库,解决用户大部分真实请求,对不在上下文的请求判定并拒绝响应,仅仅对少量有用户价值且知识库解决不了的场景通过生成式模型来响应可能是最现实的做法。

当然这样做其实也考验系统架构的能力。

具体选择哪种扩展方案

排名靠前的模型,都做了强化学习。但是成本高,而且方法还不稳定。

大部分公司的数据量,可能搞个百亿参数的 base model,结合精标数据做 SFT,效果就差不多了,还更容易控制结果。

排除掉自己做模型,你仍然有很多条路可以选。

比如 FITURE 的应用场景是搜索和推荐。它很适合用 「Embeddings+矢量数据库」的方案来做。

总结

除开模型本身和相关基础设施,目前LLM 「周边产品」,主要是两个大类:某个领域的智能助手,或者某种风格的聊天机器人。

前者,如果没有某个领域长期的 NLP 的积累4,并且找到了客户愿意支付溢价的场景,就没有必要做。而有这些数据,往往需要行业地位,所以,基本上不是初创公司的机会。

后者,它更偏娱乐化而不是功能性,目前最好的示例应该是 character.ai。不过,这种项目的商业化成功与否,可能主要看金主们聊擦边球话题时,接得怎么样吧。

  1. 一个观察,好像愿意认真写综述的,都认为 LLM 具备「智能」,这可能也是他们洋洋洒洒几万字综述的核心动力吧。大家观点虽然不同,还是很感谢他们。 

  2. 也难怪 Sam Altman 提出了所谓的「新摩尔定律」:宇宙中的「智能」每 18 个月翻一番。 

  3. 虽然你可以通过调整参数,比如设置 temperature = 0 来对输出做一定的控制。 

  4. 这里的积累不仅仅是技术,更主要的是结构化的数据和模型。