今天聊一个话题很多、但认真讲清楚很少的话题:大模型的发展史。很多人是从ChatGPT开始认识大模型的:一个对话框,里面什么都能聊,偶尔一本正经胡说八道。但如果只从那一刻开始理解,你会很难搞清楚几个非常现实的问题:为什么有的模型擅长写代码但写不好论文?为什么上下文窗口会从几千个词一路卷到几十万?为什么有人说“知识库能塞进提示词,就根本不用微调”?这些问题的答案,其实都写在大模型走过的路里。
我自己的感受是,大模型这条赛道看起来新,但它并不是突然蹦出来的。我从早些年做传统自然语言处理,到后来转向深度学习序列模型,再到现在天天跟预训练模型、本地部署和微调打交道,回头看每一步的抉择,都能在历史里找到对应。所以这篇文章不做编年史背诵,我想把历史中真正影响今天工程决策的几个关键点拆开讲:每种方案为什么被提出,为什么被淘汰,为什么有些技术吵了很多年最后还是分出了胜负。阅读过程中你会发现,大模型真正有意思的地方不在于参数规模,而在于它每一步都是在解决“上一代方案解决不了的问题”。
1. 从N-gram到深度序列模型:大模型真正的前史
1.1 统计语言模型的困境:只看得到近邻,记不住远方
大模型这个词之所以带一个“大”字,不只是因为参数规模大,更重要的是它形成了一整套“用数据统计文本规律”的思路。要理解这个思路,得从语言模型这个概念的源头说起。
早期的统计语言模型做的事情很简单:给一句话算概率。比如“今天天气不错”这句话,理论上可以拆解成“今天”出现的概率、“天气”在“今天”之后出现的概率、“不错”在“今天天气”之后出现的概率,以此类推。直接计算这种条件概率最大的麻烦是稀疏——语料里词的组合太多了,很多组合根本统计不到,概率直接变成0。
于是大家用马尔可夫假设把问题简化:假设当前词只依赖前面n-1个词,这就是n-gram模型。n取2或者3是常见选择,n再大一点就组合爆炸。这个方案最大的问题不是数学,而是“记忆”。当我说“她推开教室的门,坐到了窗边”,你需要记住“她”这个主语,才能正确理解坐在窗边的是谁。n-gram只能看眼前几个词,根本做不到这一点。这也是为什么早期统计模型写出来的话总是连贯但没逻辑,因为模型压根没记住远一点的信息。
1.2 词向量:语义第一次变成了可计算的数字
后来神经网络语言模型(NNLM)入场,最先改变的不是“记忆长度”,而是词的表示方式。2003年Bengio提出用神经网络来预测下一个词,顺便把每个词训练成一个低维稠密向量,也就是词嵌入。到2013年Word2Vec把这件事带火了,因为它有一个非常漂亮的副产品:向量算术。king - man + woman的结果约等于queen,动词和名词的语义关系能直接在向量空间里体现出来。
这一小步的意义被很多人低估了。在离散符号时代,词和词之间只有“相同”和“不同”两种关系;而进入向量空间后,语义相似度成了可计算的距离。现在我们说的“语义检索”“RAG找相关片段”,底层靠的都是这个概念。没有词向量,后面所有注意力机制都无从谈起。
但词向量也有明显的天花板:它是静态的,一个词只有一个向量,同一个词在不同上下文中的含义完全体现不出来。比如“苹果”既可能指水果也可能指手机,静态向量只能给一个折中版本。这种局限直接催生了下一阶段要做的事:让词的表示随上下文动态变化。
1.3 RNN的有限记忆与本质瓶颈
在Transformer出现之前,处理序列问题的标准方案是循环神经网络,以及它们的升级版LSTM、GRU。这类模型的核心想法是“按顺序读词,把读到的内容压缩成一个隐藏状态h”,原理上有点像人做笔记——每读到一个新词,就把笔记更新一下,最后用笔记的内容继续预测或分类。
这个思路的瓶颈非常明显:笔记是有容量上限的。当你读了500个词之后,开头那个词的痕迹早就被冲淡了。对应的技术术语叫“梯度消失”,反向传播时误差信号每经过一个时间步就会衰减,时间一长就传不回去。所以RNN族模型在实践中能稳定处理的上下文,通常也就几十个词,再多就勉为其难。
更麻烦的是,这类模型只能一个词一个词地按顺序处理,没法并行。你想训练一个超大模型,如果没有并行机制,训练效率就是最大的墙。我当时做序列标注任务,GPU利用率拉满,训练时间还是以天计算。后来回头看才明白:当时缺的不是算力,也不是数据,而是一个能把“全局信息存取”和“并行计算”同时解决的架构。
2. 预训练范式确立:BERT与GPT分道扬镳的底层逻辑
2.1 注意力机制:从“压缩记忆”到“直接翻旧账”
2017年Transformer论文《Attention Is All You Need》把游戏规则改了。注意力机制最直白的理解是:不再把历史压缩成一个向量,而是让当前词直接去“翻阅”前面所有词的表示,计算一个权重,权重越高越相关。继续用笔记打比方,RNN是“不断改写同一页笔记”,而Transformer是“把读过的所有原文摊在桌上,想看哪段就看哪段”。
这种“直接翻旧账”带来三个直接后果。第一,长距离依赖被大幅度缓解,哪怕开头提到了某个人名,结尾依然能从原文中找到它并参与计算。第二,整个序列可以并行计算,因为每个位置的表示不再依赖前一个位置的计算结果。第三,每个词的表征是上下文动态更新的,前面词向量的“静态问题”随之被解决。
Transformer后来衍生出很多变体,但核心一直没有变:把一条序列里的所有元素两两建立注意力关系,用加权求和更新表示。工程上还要加上多头注意力,让不同头关注不同的语法、语义或指代关系,这也是为什么它能同时处理“这句话的主语是谁”和“这段文字情感倾向如何”这类不同层面的问题。
2.2 预训练加微调:大模型时代的“分工革命”
Transformer解决了记忆长度和并行计算,但真正让大模型走向产业化的,是“预训练+微调”这套范式。先用海量无标注文本做预训练,学通用语言规律;再用小规模标注数据做微调,适配具体任务。微调不需要重新学习语言,只需要用少量数据调整输出习惯,这就是这个范式的核心价值。
当年推动这套范式的模型,路线不太一样。ELMo训练的是双向LSTM的语言模型,词表示是几层特征的拼接;BERT采用Transformer编码器做到了真正双向上下文;GPT则选了Transformer解码器路线,只做自回归生成。三个模型方向各异,但组合在一起把“预训练+微调”这条路彻底铺实了。
这背后的经济学逻辑非常关键:预训练模型是“基础设施”,只有少数有算力的机构能做;微调是“应用开发”,大多数开发者用少量资源就能做。我们今天常说的“企业大模型私有化部署”,本质就是在“基础设施成本集中化”之后,再通过开源模型或私有化方案把能力分配回各自业务里。
2.3 BERT的双向理解与GPT的自回归生成之争
BERT和GPT在2018年前后相继出现,走向完全不同。经常有人把两者简单理解为“一个做理解、一个做生成”,但它们的核心差异比这更深。我习惯用一张表来对比:
| 对比项 | BERT | GPT |
|---|---|---|
| 模型结构 | Transformer编码器 | Transformer解码器 |
| 训练目标 | 恢复被遮掩的词 | 预测下一个词 |
| 上下文方向 | 双向 | 从左到右单向 |
| 擅长任务 | 分类、抽取、判断 | 续写、生成、对话 |
| 预训练与推理一致性 | 掩码设计与真实推理不一致 | 完全一致 |
这里有个关键问题值得展开:按当时主流认知,BERT的表征能力更强,因为双向信息能让每个词看到完整上下文;GPT只往一个方向看,似乎天然吃亏。但最后的路线之争,GPT赢了。为什么?
我理解有两个核心原因。第一,语言模型的原生任务是“预测下一个词”,这是一个通用且可扩展的自监督目标,不需要为每种下游任务重新设计输入输出头。做对话、写文章、翻译,本质上都是“继续生成”。BERT的掩码任务虽然预训练效果好,但推理时根本没有[MASK]符号出现,存在训练和推理的不一致,做具体任务时还要改结构,复杂度更高。
第二,也是更容易被忽略的一点:下一代大模型的应用形态,不是“理解一篇文档然后打个标签”,而是“给定指令,产生一段输出”。理解能力当然重要,但它最好内化在生成过程里。GPT用生成目标把理解能力全部纳入“下一词预测”框架。后来所有关于多轮对话、智能体工具调用的想象,都是从这一选择里长出来的。
这里还必须提一嘴GPT-2。2019年GPT-2发布时有15亿参数,在当时属于“大到不敢全量发布”的模型,官方最开始只放出小版本,理由是担心滥用。今天看,这种讨论在当时的社区里搅起了特别大的水花,它第一次让大众意识到:生成模型的能力,已经跨过了“玩具门槛”。
3. 规模法则与涌现能力:GPT-3如何改写游戏规则
3.1 规模法则:没有新架构,反而是最深的一条路
2020年GPT-3把参数拉到1750亿,直接引爆了后续的一切。但相比模型本身,它背后有一个更值得记住的结论——规模法则(Scaling Laws)。OpenAI在2020年前后发表的研究指出:语言模型的测试损失,和模型参数量、训练数据量、计算量之间存在近似幂律关系。
翻译成人话就是:在架构不变、训练方法不变的前提下,只要把参数和训练数据一同按比例扩大,模型效果就会稳定提升。你想提升多少能力,可以提前估算要多少算力和数据。这等于给行业画了一条“确定性扩大的路线图”,所以那个阶段的基础研究经常被和“堆GPU”画等号,倒也不冤枉。
从工程角度说,规模法则也带来了明摆着的问题:参数越大,推理成本越高,部署门槛越陡峭。今天大量出现在各类搜索里的“GPU微调大模型”“大模型部署”“vLLM部署大模型”,本质上都是在处理这个矛盾。模型变大了,效率和可行性就成了新的瓶颈。于是量化、剪枝、蒸馏这些压缩手段,才成为大模型产业链里不可或缺的部分。
3.2 上下文学习与涌现:Prompt技术的理论根源
GPT-3真正破圈的技术点不是“它更聪明”,而是“我不需要给它标注数据,只要在输入里举几个例子,它就能照着做”。具体来说,同一个模型做翻译、问答、分类,不必改权重,只需要在提示词里放几个“题目-答案”的示例,也就是few-shot,模型就能自己“照猫画虎”完成新输入。这种做法后来被命名为上下文学习(In-Context Learning)。
这件事在今天看起来稀松平常,但它对行业的影响被低估了。它意味着:模型在推理阶段,能临时使用上下文来完成新任务,不必修改任何参数。想让模型临时学会“从文本抽字段”,你不需要微调,只需要写好示例和格式放进提示词。提示工程的真正理论地基,就是在这里打下的。
和大规模参数一起出现的还有“涌现能力”。所谓涌现,不是说某个模型能力线性增长,而是参数规模跨过某个阈值之后,某些能力突然出现了——比如多步推理、思维链、角色扮演。没人能提前准确预测这些能力会在哪个规模点上出现,这也是为什么大模型研究一直存在两种态度:一边是“大力出奇迹”的工程乐观,另一边是“黑盒不可控”的担忧。
到了GPT-3后半段,一个很现实的问题也暴露出来:模型虽然能生成很像样的文字,但它不会“听话”。它可能在整段看起来有道理的回答里夹带错误事实;也可能把一个简单问题绕到大段废话里。这不是偶然,而是训练目标决定的。预测下一个词只教会了模型“最可能的单词序列”,并没有教会它“用户想要什么样的回答”。这就是下一阶段要解决的核心矛盾。
4. 对齐纪元:从“会生成”到“好助手”的分水岭
4.1 指令微调:先学会听懂问题
解决“不听话”的办法,分两大步。第一步是有监督指令微调(Instruction Tuning,也就是常说的SFT)。做法很直接:人工构造大量“指令-回答”对,比如“请总结下面这段话”配一个标准总结,然后用这些数据在预训练模型上继续训练,让模型的输出风格转向回答问题、遵循指令。
这里有一个经常被误解的地方:指令微调并不会给模型注入多少新知识,它在本质上更接近“格式化”。预训练阶段知识早已在模型里了,只是模型不知道用户是在提问。SFT做的就是教会模型“这种格式的输入之后,应当跟着这种格式的输出”。
SFT数据并不好做,质量比数量重要。脏数据会让模型出现复制模板、空话套话之类的毛病。我之前在项目里反复调模型输出质量,最后发现问题的根源往往不是模型不够大,而是SFT数据里混入了太多语气不一致的样本。这类经验在后来做RLHF时依然成立,甚至更明显。
4.2 RLHF:把“聪明”调整成“有用”
第二步是RLHF。OpenAI在InstructGPT里首先系统性地把“人类反馈强化学习”用在语言模型对齐上。整个流程可以拆成三个阶段:
- 收集人类对多个模型输出的偏好排序数据。
- 用这些数据训练一个“奖励模型”,给任一输出打分。
- 用强化学习(典型是PPO)让语言模型学会输出高分回答,同时配合一个KL项防止模型偏离原始分布太远。
为什么有了SFT还不够?因为SFT是“照着示例学格式”,它复制的是人的范式,而不是人的偏好。人类偏好有非常微妙的主观性:一版回答更简洁但少了一个细节,另一版更完整但有点啰嗦,这种偏好很难用一对一的问答数据体现出来,但用“比较”的方式就能学得很好。
RLHF的意义怎么强调都不过分。ChatGPT能火,技术上的关键不是千亿级参数,而是“它像助手一样回答问题”。GPT-3能生成漂亮文本,但容易跑题、敷衍、编造;对齐之后,模型开始明白什么是“有用的回答”,什么是“含糊的敷衍”。很多人没有意识到,ChatGPT和GPT-3使用的是同一条科技树,真正的分水岭就在对齐。
4.3 ChatGPT引爆的产业格局
2022年11月ChatGPT上线后,事情的性质彻底变了。原本只在研究社区内部讨论的预训练模型,一下子变成普通用户每天都在用的产品。随之而来的是一整套新生态:API经济成型,Prompt工程成为被广泛讨论的能力方向,大模型从实验室样本变成了可用工具。
从工程角度看,ChatGPT的出现也让“智能体”(Agent)这个词被高频使用。原因在于模型第一次能在一个对话里多次调用工具(虽然当时还不普及),并且能规划多个步骤做事。没有对齐革命,模型只会“续说”,不会“执行”,更不可能作为生产力工具嵌入业务流程。
当然,对齐也带来了新的麻烦。一些通用能力会因为在“安全合规”上的过度约束而被压制,模型在一些开放性创作任务上变得过于保守。行业里管这类问题叫“对齐税”。今天你看到的模型风格差异,有的偏活泼、有的偏谨慎,本质上都是在“安全”和“能力”之间做取舍。
5. 多模态、长上下文与智能体:大模型形态的全面扩展
5.1 上下文长度:从“几百词”到“几十万token”
有一个参数贯穿了大模型整个历史:上下文长度,行业里也直接叫“上下文窗口”。RNN时代,窗口基本等同于隐藏状态能记住的内容,几十个词就是极限;GPT-2时期窗口通常是1024个token;GPT-3扩大到2048;再到GPT-4 Turbo的128K,以及各家竞相推出的高K窗口产品。
为什么窗口这么重要?因为它直接决定“模型一次能感知的信息总量”。长上下文能力一旦上台阶,很多应用就不再需要改变模型,只需要提供更多素材。比如你要分析一百页PDF,过去得切块、检索、拼接,现在可以直接把全文放进去,让模型做整体总结。
技术层面,无限长上下文并不简单。常见方案包括:预训练或继续训练阶段加入长文本数据、改进位置编码比如RoPE、对KV Cache做压缩、使用环状记忆等。这里不展开每个细节,但有一点值得记住:长上下文不是免费特性,它换来的是注意力计算随长度增加的复杂度和推理成本上升。有些团队把模型换成128K窗口后,发现推理速度明显下降,就是因为这类代价。
5.2 多模态:从纯文本到图文音视频统一模型
几乎和长上下文同步推进的另一条线,是多模态。GPT-4系列最先让大众感受到“给张图就能聊”,图片输入、文本输出;Gemini等模型进一步接入音频和视频;中文社区这边的GLM、Qwen-VL、DeepSeek-VL也在持续演进。
多模态的核心技术问题是:怎么把不同模态的信息放进同一个表示空间。常见做法是用视觉编码器把图片切成若干patch并投影成向量,再和文本token的向量一起进入Transformer做注意力计算。关键突破在于“跨模态对齐”——让模型理解“图里那团橘色的动物”和文本里的“猫”是同一个东西。除了图片,语音和视频也在走类似路线,把不同模态的信息统一成模型能“看”的序列。
从工业应用看,多模态让大模型从“键盘里的助手”变成了“能看懂世界的助手”。做会议纪要时可以看图读表,做故障排查时可以直接把截屏丢给模型。这个方向之所以总能在“多模态大模型 最新进展”这类搜索里保持热度,是因为它离实际业务价值太近了。
5.3 智能体与工具调用:从“问答”到“做事”
如果多模态和长上下文还是改变模型的输入输出形态,智能体(Agent)改变的是模型在系统中的位置。过去,模型是被动的答题器;现在,模型被放进一个循环里——“思考、调用工具、观察结果、再思考”,通过API、代码解释器、搜索引擎等外部工具,真正去完成一个任务。
为什么行业对智能体方向这么热衷?因为单靠“生成”,模型能干的事情有限;一旦它能调用外部工具,就能访问实时数据、操作系统、数据库,从一个“聪明脑袋”变成“能动手的助手”。市面上dify这类开发框架之所以流行,本质上就是想降低搭智能体和RAG应用的门槛。
这里必须提一下RAG。RAG不是新发明,它大概是“检索+生成”组合的现代版:先从知识库检索片段,再把片段塞进提示词,让模型基于这些内容回答。它之所以成为刚需,是因为大模型知识有截止日期,而企业的私有知识又是核心资产。RAG可以说是“长上下文能力+外部数据”最贴近实际的一种应用形态。
而智能体要想稳定工作,目前最大的坑还是幻觉。你给模型配了记忆、工具和流程,但如果它在关键动作上给了一个自信的谎话,整个任务就会脱轨。所以做智能体,很大精力其实是放在“评估和兜底”上:给回答加引用、加验证步骤、加失败回退机制。所有做过实际智能体项目的人,都懂这个痛点有多真实。
6. 以史为镜:几个影响当前工程决策的判断
6.1 能通过上下文完成的任务,不要轻易动微调
把历史坐标拉到当下,最值得记住的工程判断就是:先试上下文方案,再试微调方案。上下文学习从GPT-3时代就成熟了,多给模型几个示例、塞进更多背景,往往能解决大部分需求。
上下文方案的最大优势是成本低、可随时改。想让模型输出JSON格式,改提示词就行;想让它在服务客户时语气更温和,改示例就行。微调不一样,一次训练、一次验证,全是时间成本和资源成本。再加上微调可能改坏预训练能力,还有“灾难性遗忘”风险,所以不到万不得已,不建议直接上全参数微调。
当然例外也存在:任务要求的格式极其特殊,提示词怎么约束都约束不住;或者推理阶段的上下文要全部让位给业务数据,没有余量放示例;又或者你确实要在垂直领域术语上做深层扩展。这些时候,微调甚至继续预训练就是合理选项。
6.2 本地部署与云端API,不是简单二选一
看了很多团队踩坑之后,我对“大模型私有化部署”有了比较强烈的感受:它更多时候是“数据安全要求”的产物,而不是“技术最优解”。企业怕数据出域,又希望模型可定制,于是选择本地部署。
做本地部署前,先把账算清楚。显存需求大致可以用“模型参数乘位宽再除8”粗算:7B参数模型FP16推理大约需要14GB显存,4比特量化则降到3.5GB左右;70B模型即使量化也要35GB上下,单卡很难撑起来,多卡部署又涉及通信和调度。所以很多团队会先用Ollama这类工具起步,用量化版验证业务效果,再决定要不要上vLLM这类高吞吐方案。免费API和限时额度也经常被拿来快速验证想法,这是完全合理的起步方式。
另一个常见问题,是把API和本地部署对立起来看。我更愿意按“数据敏感性、延迟要求、预算”三个维度做决策。数据敏感不可出域,选本地或私有化部署;对服务质量要求高,直接上成熟云API;预算有限又不涉及敏感数据,用免费额度或小模型起步。没有哪个方案永远最优,只有当下最合适。
6.3 数据质量和评测闭环,永远比模型选型重要
回头看整个发展史,最容易被验证的道理是:数据质量决定上限。统计语言模型时代,稀疏问题要靠人工平滑;预训练时代,语料抽取和配比是核心;到了微调阶段,“指令数据是否干净”“偏好数据是否一致”直接决定模型好不好用。你反复看到的“大模型数据标注样例”类搜索,背后就是大家终归要在数据上磨很久。
这里还必须提一下数据和安全的边界。从数据投毒到后门攻击的传闻从来没有断过,这也是为什么不少团队越来越看重数据管线的审计和权限控制。模型可能越换越强,但脏数据造成的坏影响会在后续几乎每个环节里持续放大。所以我建议每个项目从第一天就把评测集和基线建起来,想换模型或调参数,先跑固定评测,指标严格一点,别凭感觉判断效果。
最后说点个人的体会。我最初是带着“记年份、记参数量”的心态看这段历史,后来发现越往深挖越觉得,大模型的历史不是博物馆,而是工具箱。每个阶段沉淀下来的思考,都能直接对应今天的某个选择。比如我现在做项目,会把“上下文长度”当成和“模型参数”同等重要的变量来规划;看到某个新框架宣传“无限上下文”,我会先问它是真长了,还是把成本转嫁到了别处;接到客户的微调需求时,我会先反问一句:这些问题用RAG和Prompt解决不了吗?
这样想问题的时间久了,选型反而比以前自信了。如果你正处在大模型应用开发的学习阶段,我希望这篇“发展史”能帮你少走一点弯路。技术名称肯定还会继续换,但它背后被反复解决的那些需求——更大的记忆、更好的生成、更听话的输出——大概率不会变。看懂这条线索,很多新东西在你眼里,就只是老问题的另一种解法。