一、大模型基础:从GPT到Llama,大模型发展简史与核心架构解析
各位同学好,我是你们这门课的主讲。今天咱们聊聊大模型的“根”——从GPT到Llama,这条技术路线到底是怎么走过来的。说实话,我2018年刚接触Transformer时,也觉得这玩意儿就是个更牛的翻译模型,谁能想到它后来统治了整个AI界?
1.1 大模型发展简史:三个关键节点
大模型不是一夜冒出来的。我个人习惯把这段历史分成三个阶段,每个阶段都有一个标志性事件。
阶段一:GPT的诞生(2018年)
OpenAI在2018年发布了第一代GPT。当时大家还在用LSTM做序列任务,效果嘛……嗯,凑合。GPT-1只有1.17亿参数,放在今天连个“小模型”都算不上。但它做对了一件事:用无监督预训练 + 有监督微调。这个范式后来成了整个行业的标配。
核心贡献:证明了“先学通用知识,再学具体任务”这条路走得通。
阶段二:GPT-2与规模定律(2019年)
2019年的GPT-2直接把参数拉到15亿。当时很多人觉得这模型“大得离谱”。我记得有个同行在技术群里吐槽:“15亿参数?这得训到猴年马月?”结果呢?GPT-2展现出的零样本能力让所有人闭嘴了——它没经过微调就能写文章、做翻译。
为什么会这样?因为规模定律开始显现:模型越大,涌现的能力越强。这个发现直接引爆了“大模型军备竞赛”。
阶段三:GPT-3与Llama的崛起(2020-2023年)
2020年的GPT-3(1750亿参数)彻底改变了游戏规则。它证明了“提示工程”可以替代微调。但真正让我兴奋的是2023年的Llama系列。Meta开源了Llama,让咱们普通人也能玩上大模型。我去年用Llama-2-7B做过一个客服系统,效果出奇的好——成本只有GPT-4的十分之一。
| 模型 | 发布时间 | 参数量 | 关键突破 |
|---|---|---|---|
| GPT-1 | 2018 | 1.17亿 | 预训练+微调范式 |
| GPT-2 | 2019 | 15亿 | 零样本能力 |
| GPT-3 | 2020 | 1750亿 | 提示工程、上下文学习 |
| Llama-2 | 2023 | 70亿-700亿 | 开源、可私有化部署 |
1.2 核心架构:Transformer到底牛在哪?
所有大模型的底子都是Transformer。说白了,它就是一个“注意力”驱动的信息处理系统。我刚开始学的时候,觉得这玩意儿就是个花哨的“加权平均”,后来才发现自己太天真了。
Transformer的两大组件
- 编码器(Encoder):把输入序列变成一组向量表示。BERT用的就是纯编码器。
- 解码器(Decoder):根据编码器的输出,一步步生成目标序列。GPT系列用的是纯解码器。
你想想看,为什么GPT只用解码器?因为生成任务天然是自回归的——你得一个词一个词往外蹦。编码器虽然能“看全”上下文,但生成时反而会泄露未来信息。嗯,这里要注意:解码器必须用掩码(Mask)挡住未来的词,否则模型就“作弊”了。
1.3 Attention机制:让模型学会“看哪里”
Attention机制是Transformer的灵魂。它的核心思想很简单:在处理某个词时,模型应该知道哪些词更重要。
举个例子,句子“小明把球踢进了球门,他非常开心”。这里的“他”指的是谁?人类一眼就知道是“小明”。但机器怎么知道?Attention机制就是干这个的——它计算每个词和其他词的相关性,然后加权融合。
Self-Attention的计算过程
说白了就三步:
- 生成Q、K、V:每个词都生成三个向量——查询(Query)、键(Key)、值(Value)。
- 计算注意力分数:用Q和K做点积,得到每个词对其他词的“关注度”。
- 加权求和:用注意力分数对V做加权平均,得到新的表示。
# 伪代码:Self-Attention的核心逻辑
def self_attention(Q, K, V):
# 计算注意力分数
scores = Q @ K.T / sqrt(d_k) # 缩放点积
# 归一化
weights = softmax(scores, dim=-1)
# 加权求和
output = weights @ V
return output
避坑指南:我曾经在项目中把d_k(向量维度)设得太小,结果注意力分数分布太平坦,模型学不到东西。后来我习惯把d_k设为64或128,效果稳定很多。
Multi-Head Attention:多视角看问题
单个Attention头只能捕捉一种关系。但一个句子里的关系是复杂的——比如“他”和“小明”是代词关系,“踢”和“球”是动作关系。Multi-Head Attention就是让模型同时用多个“视角”去看,每个头学一种关系。
我刚开始做微调时,总喜欢把注意力头数设得很大(比如32个),觉得“越多越好”。结果模型训不动,还容易过拟合。后来发现,头数不是越多越好,8-16个头通常就够用了。
1.4 从GPT到Llama:架构演进的关键点
GPT和Llama虽然都是解码器架构,但细节上有不少差异。我整理了几个关键点:
| 特性 | GPT-3 | Llama-2 |
|---|---|---|
| 激活函数 | GELU | SwiGLU |
| 位置编码 | 绝对位置编码 | 旋转位置编码(RoPE) |
| 归一化 | LayerNorm(后置) | RMSNorm(前置) |
| 注意力机制 | Causal Attention | Grouped Query Attention |
这里重点说说旋转位置编码(RoPE)。绝对位置编码是把位置信息直接加到词向量里,但模型很难泛化到更长的序列。RoPE通过旋转矩阵把位置信息编码到注意力分数里,效果更好。我在微调长文本任务时,RoPE明显比绝对位置编码稳定。
注意:如果你用Llama做微调,千万别随便改RoPE的参数。我曾经手欠调了旋转角度,结果模型直接“失忆”了——生成的文本完全不通顺。后来老老实实用了默认配置。
1.5 为什么Llama更适合私有化部署?
这个问题我经常被问到。说白了,GPT-3虽然强,但1750亿参数不是谁都能跑的。你想想看,光显存就得几百GB,还得买昂贵的A100。而Llama-2-7B只需要14GB显存,一张RTX 4090就能跑。
另外,Llama的开源生态太香了。HuggingFace上有大量预训练权重和微调脚本,社区活跃度极高。我去年帮一家金融公司做私有化部署,用的就是Llama-2-7B。从下载模型到上线,只花了两周时间——这在GPT时代根本不敢想。
好了,这一章的内容就到这。下一章咱们会深入微调的核心技术:LoRA和QLoRA。到时候我会手把手教你怎么用一张消费级显卡微调Llama模型。咱们下章见!