第三章 大语言模型基础:从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的整体结构:

Transformer架构核心组件 编码器(Encoder) 多头自注意力 Multi-Head Self-Attention 前馈神经网络 Feed Forward Network 层归一化 + 残差连接 Layer Norm & Residual × N 层堆叠 解码器(Decoder) 掩码自注意力 Masked Self-Attention 交叉注意力 Cross-Attention 前馈神经网络 Feed Forward Network 层归一化 + 残差连接 Layer Norm & Residual × N 层堆叠 K, V 输入序列(源语言) 输出序列(目标语言)

你可能会问:为什么编码器和解码器结构不一样?

原因很简单。编码器可以一次性看到整个句子,而解码器生成时只能看到已经生成的部分——所以它需要掩码(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的几个特点:

  1. 双向注意力:在生成时也能看到上下文,这跟GPT的纯单向不同
  2. 前缀编码器:对输入进行双向编码,提升理解能力
  3. 中文优化:在中文语料上做了大量预训练和微调

我去年做一个中文客服系统时,对比了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