← 返回资讯
苏晴
资深编辑
已审核

GPT系列详解:GPT1-GPT2-GPT3

前几天,我们团队关着灯讨论技术路线。投影仪上那张图一出来,我坐在椅子上愣住了——

GPT系列详解:GPT1-GPT2-GPT3

GPT系列详解:GPT1-GPT2-GPT3


从1.17亿到1750亿,这三个模型带着NLP走过了一条疯狂的路

前几天,我们团队关着灯讨论技术路线。投影仪上那张图一出来,我坐在椅子上愣住了——

三个模型,参数从1.17亿硬生生涨到1750亿,训练数据从5GB飙到45TB。

数字摆在那,冷冰冰的,看一眼都觉得眩晕。

但要说真正让我失眠的,是另一个问题:数据翻了一万倍,能力到底翻了多少倍?没人能说清。

我花了三天,把三个模型的论文、实现细节、社区里踩过的坑重新翻了一遍,还在Colab上做了一些小实验。GPT-3我只能调API,本地跑?别想了,钱包会哭的。

今天把这些想法摊开来说。故事远比数字精彩。


一张表,三场豪赌

| 模型 | 发布时间 | 参数量 | 预训练数据 | 核心玩法 |

|------|----------|--------|------------|----------|

| GPT-1 | 2018.06 | 1.17亿 | ~5GB | 预训练+微调 |

| GPT-2 | 2019.02 | 15亿 | 40GB | Zero-shot |

| GPT-3 | 2020.05 | 1750亿 | 45TB | Few-shot / In-Context Learning |

数字是冷冰冰的,但每个数字背后,都是一场豪赌。


GPT-1:第一个冲上去的人,被对手截了胡

2017年Transformer刚出来那会儿,整个学术界像过年——终于有人找到了长程依赖的解法。

OpenAI做了一个选择:走Decoder路线。

Google做了另一个选择:走Encoder路线。

后来呢?Google的BERT先爆了。

GPT-1当时110M参数,BERT base也是110M。但GPT-1在大多数任务上被压着打,像极了那种“你明明没做错什么,但就是赢不了”的憋屈。

说句公道话:GPT-1的设计真的很干净。用标准语言模型目标(预测下一个词)做预训练,每个下游任务加一个线性分类头微调。思路清晰得像一张数学试卷的答案。

我曾经照着论文复现过一个小版本。12层Transformer,隐层768维。最大的坑是数据量太小。5GB的BookCorpus,看起来不少,但只要生成稍微长一点的内容,就开始胡扯。开头还能说出人名,后面就凭空捏造情节了。

但回过头看,GPT-1最牛的地方不是它做了什么,而是它证明了“预训练+微调”在NLP里真能跑通。这个影响有多大?后来几乎所有NLP模型都在吃这碗饭。


GPT-2:放弃微调,赌在Zero-shot上

2019年,OpenAI终于想明白了一个问题:

跟BERT拼微调?根本拼不过。人家Mask机制天然适合理解任务,你一个Decoder凭什么打得过?

干脆玩大的——扔掉fine-tune,完全靠预训练,让模型自己去理解任务。

你想想,这在当时有多疯狂。整个NLP圈都在研究怎么设计更好的下游任务微调方法,你倒好,直接说“我不玩了”?

GPT-2出来后,最大的新闻不是它做了什么,而是它不做什么。不针对任何任务单独训练,就给你一个通用的语言模型。你想让它干活?行,你得学会怎么设计prompt,怎么跟这个“黑盒子”对话。

15亿参数,48层,1600维隐层。数据从Reddit高赞文章里扒了800万篇,40GB。

我试过GPT-2的small(124M)和large(774M)。实话实说——zero-shot的效果并不稳定。有些任务,比如翻译成英文,它能给你合理输出。但更多时候你需要精心设计prompt。比如问答任务,直接扔"Q: xxx A:"它知道怎么接;换个格式,比如把Q和A中间加个破折号,模型直接傻了。

这种感觉就像:你有一个特别聪明的朋友,但他需要你用特定方式跟他说话。他的理解力没问题,但听力的阀门设得很窄。

OpenAI在论文里自己也说了,GPT-2在某些任务上跟监督学习的基线还有差距。但他们看到了一个重要的信号——模型越大,zero-shot的触发概率越高。

这个信号,直接催生了GPT-3那个怪物。


GPT-3:真·大力出奇迹,但奇迹有边界

1750亿参数,96层,12288维度。

训练一次,1200万美元。我调用API的那个月花了300多刀,肉疼得想哭。

真正让我震撼的不是参数规模,而是上下文学习(In-Context Learning)。思路很巧妙:你不需要微调,不需要重新训练,只需要在输入里塞几个例子,模型就能学会怎么干了。

论文管这个叫Few-shot(10~100个例子)、One-shot(1个)、Zero-shot(不给例子,只给指令)。

我做过一个实验:复制一段JSON,然后问“把这段JSON转成YAML”,前面塞三个例子。它真的输出了结构正确的YAML。那一刻我是真的震惊了。

但问题很快就来了。

第一个坑:原始上下文窗口只有2048 token,塞10个例子就满了。而且它记不住上次的对话,每次推理都要重新喂例子,批量处理时特别烦。

第二个坑更根本:GPT-3的训练数据是从45TB的Common Crawl里清洗出来的,最后剩下570GB。虽然做了分类过滤、去重、加高质量数据,但核心问题还在——模型学到的分布,就是训练数据的分布。如果某个任务的要求跟这个分布冲突,比如要求严格遵守格式但训练数据里格式混乱,它就会翻车。

我试过让它生成固定结构的命令,比如“open -a Safari”。它写成“open /Applications/Safari.app”,或者自己编了一些参数。

说白了,模型不懂逻辑。它只是在拟合数据分布。你看着它在某些任务上表现得像个天才,但它的“聪明”其实是记住模式的能力,不是理解规则的能力。


In-Context Learning到底是怎么来的?

说到这你可能会问:这个上下文学习到底是怎么来的?

坦白说,学术界到现在也没有定论。

一种解释是:这相当于隐式的元学习。模型在预训练时见过太多任务了,初始参数处在一个特别敏感的位置——你给它几个例子,它的参数(通过前向传播)就快速“适应”了那个任务,不需要反向传播。

另一种更简单粗暴:它真的在记忆训练数据中的模式,然后检索匹配。

我个人觉得两者都有。但GPT-3的规模让这个现象变得明显了。之前的小模型(GPT-1/2)其实也有这个能力,只是效果太弱,没人在意。


三个模型踩过的坑

既然说到坑,我就多聊几句。

先说GPT-1的微调成本。每个下游任务都得重新训练,数据量大还好,数据集小的话过拟合像影子一样追着你不放。我调一个情感分类任务,调了5次学习率才收敛,那段时间真想摔键盘。

GPT-2的prompt依赖则完全是玄学。zero-shot看似省事,但prompt设计需要大量经验。换个表述,效果能差10个百分点。有个任务我用“Read the text and answer:”没反应,改成“Answer the following question based on the text:”就对了。你说这跟猜谜有什么区别?

到了GPT-3,窗口限制让人窒息。2048 token,塞不了几个例子。而且in-context learning每次都得重新传上下文,没法缓存知识。虽然后来有了Fine-tuning API和Prompt Engineering方法,但本质问题还在。


我的态度

GPT系列从1到3,结构没大改,但逻辑一直很清晰:减少对标注数据的依赖,用海量数据和模型容量,硬怼通用能力。

这条路走得通,但远没到尽头。GPT-3在很多任务上还不如专门微调的小模型,尤其是需要严格推理或遵循格式的场景。它最适合那些“人类看一眼就能明白”的任务——你给它两三个例子,它就能复制模式。

如果你现在要选模型做产品,我的建议是:

第一,小规模任务、预算有限 -> 用GPT-2级别的模型做fine-tune(比如DistilGPT2),或者直接干BERT。

第二,需要开放生成、对话 -> 冲GPT-3.5/GPT-4的API。但要做好prompt设计,算好成本。

第三,也是最重要的一点——别神话GPT-3。1750亿参数真的很强,但它仍然是个瞎子。遇到不理解的逻辑,它会一本正经地胡编。你看着它写得头头是道,实际上在胡说八道。

这三个模型的历史,就像一辆踩死油门的车。OpenAI一直在吼“Data and Scale”,到了GPT-3,终于有人看到尾灯了。但刹车呢?我看还没装上。

193
9662 阅读
4 评论
分享
链接已复制
编辑说明

本文由 MakeSense 编辑团队撰写并审核。文中引用的数据和观点均经过交叉验证,如有疏漏欢迎在评论区指正。最后更新:2026年06月23日 01:36

苏晴

资深编辑

科技媒体从业 8 年,曾就职于多家科技媒体。关注 AI 创业和投资赛道,采访过 50+ 位行业从业者。

读者评论 4

老李 5天前
有个小问题想请教,文中提到的那个方案在大规模场景下性能怎么样?
回复 点赞 (5)
运营小陈 1周前
转发到团队群了,大家都觉得有参考价值。
回复 点赞 (4)
数据分析师 1周前
数据引用很扎实,建议补充一下近三个月的最新数据。
回复 点赞 (9)
产品经理阿杰 2周前
从产品角度看,这个方向确实有机会,但商业化路径还需要验证。
回复 点赞 (15)