第三章 大语言模型基础:从Transformer到开源生态
说实话,每次带新人入门大语言模型,我都会先问一个问题:你知道GPT-3为什么能写诗,而BERT只能填空吗?
这个问题背后,藏着整个大语言模型的技术演进史。今天我就带你走一遍这条路——从Transformer架构开始,到GPT系列,再到我们常用的开源模型。嗯,这条路我走了好几年,踩过的坑不少,但风景也确实值得看。
3.1 Transformer架构:一切的基础
2017年那篇《Attention Is All You Need》刚出来时,我还在做机器翻译。说实话,当时没太当回事——又一篇注意力机制的改进论文嘛。直到我在一个长文本翻译项目里,用LSTM怎么都搞不定长距离依赖,换成Transformer后效果直接翻倍,我才意识到:这东西,要改变整个NLP领域了。
核心思想:抛弃RNN/CNN,完全基于注意力机制建模序列。
Transformer的核心组件其实就两个:
- 自注意力机制(Self-Attention):每个词都能看到所有词,不再受距离限制
- 位置编码(Positional Encoding):因为没有循环结构,得手动告诉模型词的位置信息
我画了一张图,帮你理解Transformer的整体结构:
你可能会问:为什么编码器和解码器结构不一样?
原因很简单。编码器可以一次性看到整个句子,而解码器生成时只能看到已经生成的部分——所以它需要掩码(Mask)来防止作弊。我在做文本生成项目时,就遇到过因为忘记加掩码导致模型"偷看答案"的尴尬情况。
我的经验:刚开始学Transformer时,建议先理解自注意力机制。说白了就是三个矩阵——Q(查询)、K(键)、V(值)。Q和K算相似度,然后用这个相似度去加权V。就这么简单。
3.2 GPT系列:从1到4的进化之路
GPT系列的故事,其实是从一个"错误"的方向开始的。2018年GPT-1刚出来时,大家都觉得BERT才是正道——双向编码器多香啊。结果呢?GPT用事实证明:单向解码器+海量数据+大力出奇迹,才是通往AGI的捷径。
| 模型 | 参数量 | 训练数据 | 核心创新 |
|---|---|---|---|
| GPT-1 | 1.17亿 | BookCorpus | 开创生成式预训练范式 |
| GPT-2 | 15亿 | WebText | 零样本学习能力 |
| GPT-3 | 1750亿 | Common Crawl等 | 上下文学习(In-Context Learning) |
| GPT-4 | 未公开(估计万亿级) | 多模态数据 | 多模态理解、推理能力飞跃 |
我记得GPT-2刚发布时,OpenAI还因为"太危险"不敢全量开源。当时我觉得有点夸张,直到我用GPT-2 small生成了几篇新闻稿——嗯,确实能以假乱真。那会儿我就意识到,这条路走对了。
关键洞察:GPT系列的核心思想是"下一个词预测"。你给它前文,它预测下一个词。就这么简单的目标函数,配合足够大的模型和数据,竟然涌现出了理解、推理、翻译等能力。这就是所谓的"涌现能力"。
3.3 开源模型:LLaMA与ChatGLM
说到开源模型,我得先吐槽一句:2023年之前,开源大模型基本是"玩具"。直到Meta放出LLaMA,才真正改变了格局。
3.3.1 LLaMA:开源界的里程碑
LLaMA最让我佩服的一点是:它证明了"小模型+好数据"可以打败"大模型+差数据"。LLaMA-7B在很多任务上超过了GPT-3(1750亿参数),靠的是什么?
- 高质量训练数据:用了更多的非英语数据,特别是拉丁语系
- 高效的训练策略:使用了RMSNorm归一化、SwiGLU激活函数等优化
- 开源生态:衍生出了Alpaca、Vicuna、Llama 2等大量优秀模型
避坑指南:我曾经在一个项目里直接用了LLaMA-65B做推理,结果发现显存根本不够。后来改用4-bit量化版本,效果损失不到5%,但显存占用从130GB降到了30GB。所以,别一上来就追求最大模型,量化是你的好朋友。
3.3.2 ChatGLM:中文场景的利器
ChatGLM是智谱AI和清华KEG实验室的作品。说实话,我第一次用ChatGLM-6B时,被它的中文能力惊艳到了——毕竟很多开源模型的中文水平,嗯,你懂的。
ChatGLM的几个特点:
- 双向注意力:在生成时也能看到上下文,这跟GPT的纯单向不同
- 前缀编码器:对输入进行双向编码,提升理解能力
- 中文优化:在中文语料上做了大量预训练和微调
我去年做一个中文客服系统时,对比了ChatGLM-6B和LLaMA-7B的中文效果。同样的prompt,ChatGLM的回答明显更自然,更懂中文的表达习惯。比如"把空调关了"这种口语化指令,ChatGLM能准确理解,而LLaMA有时会当成字面意思处理。
实用建议:如果你做中文NLP项目,我建议优先考虑ChatGLM系列。如果做英文或多语言,LLaMA系列更合适。当然,现在两个生态都在快速融合,比如LLaMA的中文微调版本也越来越多了。
3.4 如何选择和使用开源模型
最后,我分享一些实际选型的心得:
| 场景 | 推荐模型 | 原因 |
|---|---|---|
| 中文对话 | ChatGLM-6B / Qwen-7B | 中文理解能力强,部署成本低 |
| 英文文本生成 | LLaMA-2-7B / Mistral-7B | 英文流畅度高,社区生态好 |
| 代码生成 | CodeLLaMA / StarCoder | 专门在代码数据上训练 |
| 多模态任务 | LLaVA / Qwen-VL | 支持图像+文本输入 |
选模型时,我一般会问自己三个问题:
- 我的任务需要多强的推理能力?——如果只是简单问答,7B模型就够了
- 我的部署环境有多少显存?——8GB以下考虑量化版本
- 我需要中文还是英文为主?——这个决定了基座模型的选择
好了,这一章的内容就到这里。Transformer架构是地基,GPT系列是高楼,开源模型是你可以直接使用的工具。下一章我们会深入讲Prompt Engineering——说白了,就是怎么跟这些大模型"好好说话",让它们输出你想要的结果。
公众号:蓝海资料掘金营,微信deep3321