小刘檀木的大模型日记 · Day17 · Transformer、BERT、GPT、LLaMA-帮普通人把AI学进简历系列

封面:系列统一封面 大模型.png

Day17|Transformer、BERT、GPT、LLaMA:四个名字,一条大模型主线

前言:别再把四个名词背成四张孤岛卡片

学大模型最容易出现一种幻觉:你以为自己在学技术,其实是在背一串英文缩写。

Transformer、BERT、GPT、LLaMA,四个名字排在一起,像极了技术圈版“亲戚关系表”。

今天谁是爷爷,谁是儿子,谁又是堂弟?背到最后,脑子里只剩一句话:我好像都听过,但我说不清它们到底差在哪。

上一篇 Day16 我们讲了 RNN、LSTM、GRU。那一代模型像排队读句子:第一个词读完,传给第二个词;第二个词读完,再传给第三个词。

Transformer 一出来,画风就变了。

它不再让 token 排队传话,而是把所有 token 拉进一个会议室:每个人都可以直接看别人一眼,再决定自己该记住谁。

RNN 顺序读取句子与 Transformer 并行注意力的对比图

所以今天这篇,我们不背论文,不堆公式。就把这四个名字串成一条线:

Transformer 是地基,BERT 和 GPT 是两条用法,LLaMA 是开源工程现场最常见的入口。


PART 01:Transformer 是地基——注意力让每个 token 都能看见全局

先把最容易混的地方说清楚:Transformer 不是 ChatGPT,也不是某一个模型产品。

它更像一套搭楼的结构图。后来的 BERT、GPT、LLaMA,很多都是在这套结构图上盖出来的楼,只是楼的朝向和用途不一样。

Transformer 的核心,是 Self-Attention,自注意力

这个名字听起来很玄,其实可以拆成三个角色:

  • Query:我现在想找什么信息
  • Key:别人身上有什么标签
  • Value:如果我决定关注你,我要拿走什么内容

比如一句话:“小明把苹果放进书包,因为它太重了。”

这里的“它”到底指苹果还是书包?人读的时候,会自动回头看上下文。Self-Attention 做的就是类似的事:让每个 token 都去看其他 token,算一遍“我应该更关注谁”。

Transformer 自注意力 Q K V 计算流程图

上一个极简版代码,感受一下注意力在干嘛:

import torch
import torch.nn.functional as F

def scaled_dot_product_attention(q, k, v):
    dim = q.size(-1)
    scores = q @ k.transpose(-2, -1) / (dim ** 0.5)
    weights = F.softmax(scores, dim=-1)
    return weights @ v, weights

q = torch.randn(1, 4, 8)
k = torch.randn(1, 4, 8)
v = torch.randn(1, 4, 8)

output, attention_weights = scaled_dot_product_attention(q, k, v)

print(output.shape)             # torch.Size([1, 4, 8])
print(attention_weights.shape)  # torch.Size([1, 4, 4])

attention_weights 的 [4, 4] 很关键。

它表示:4 个 token 里,每个 token 都给其他 4 个 token 打了一次关注分。也就是说,它不是只看前一个状态,而是直接建立了一张“全局关系表”。

这就是 Transformer 比 RNN 更适合大规模训练的原因之一:它把顺序传话,改成了全员并行对齐。

当然,代价也很明显。序列越长,这张关系表越大,计算和显存压力也越高。后来长上下文、稀疏注意力、FlashAttention 等优化,本质上都在想办法让这张表算得更快、更省。


PART 02:BERT 和 GPT 是两条路线——一个擅长理解,一个擅长生成

有了 Transformer 这套地基之后,问题来了:这栋楼到底怎么盖?

BERT 和 GPT 给出了两种经典答案。

BERT 走的是 Encoder-only 路线。

Encoder 的特点是:它可以双向看上下文。左边能看,右边也能看,所以它特别适合“理解一段已有文本”。

  • 判断一句评论是正面还是负面
  • 从合同里抽取甲方、乙方、金额
  • 判断两个句子是不是同一个意思
  • 给 RAG 检索结果做 rerank 重排序

BERT 的训练方式里有个经典任务叫 Masked Language Modeling。简单说,就是把句子里某些词遮住,让模型根据左右上下文猜回来。

text = "我今天用 [MASK] 写了一段代码"
target = "Python"

# BERT 类任务:看左右上下文,猜中间被遮住的词

GPT 走的是 Decoder-only 路线。

Decoder 的特点是:它只看左边已经出现的 token,然后预测下一个 token。这个动作不断重复,就变成了生成。

tokens = ["我", "今天", "用"]

# GPT 类任务:根据前面的 token,预测下一个 token
next_token = "Python"

这就是 GPT 为什么天然适合对话、写作、代码生成、Agent 推理链。

它不是在“填空”,而是在一路往下续写。

BERT Encoder-only 与 GPT Decoder-only 的对比图

所以工程上别再问:“BERT 和 GPT 谁更先进?”

这个问题有点像问螺丝刀和电钻谁更先进。真正该问的是:你的任务到底是理解,还是生成?

如果你要做文本分类、实体抽取、语义匹配、embedding、reranker,BERT 这条 Encoder 路线依然很有价值。

如果你要做聊天机器人、文案生成、代码助手、复杂任务规划,那 GPT 这条 Decoder 路线就是主场。


PART 03:LLaMA 的意义——把 GPT 路线带进开源工程现场

讲到这里,LLaMA 就好理解了。

它不是 BERT 的升级版,也不是 Transformer 之外的新物种。它更像是 Decoder-only 大模型路线在开源世界里的代表选手

普通开发者为什么会关心 LLaMA?

不是因为它名字好听,也不是因为参数量看起来吓人,而是因为它把很多过去只能通过闭源 API 使用的能力,带进了可以下载、部署、微调、量化、私有化的工程现场。

比如你在公司做一个 AI 助手,老板说了三句话:

  • 数据不能出内网
  • 成本不能失控
  • 最好能用我们自己的业务语料调一下

这时候你就会发现,开源模型不是情怀,是方案空间。

闭源 API、开源 LLaMA、本地微调、RAG 组合的工程路线图

但我也想泼一盆冷水:不要把 LLaMA 神化成万能答案。

真实选型时,参数量只是一个维度。你还要看:

  • 中文能力够不够
  • 上下文长度够不够
  • 推理成本压不压得住
  • 是否方便量化和部署
  • 生态工具是否成熟
  • 你的业务到底需要生成、检索、分类,还是多工具调用

很多项目不是“模型不够大”死掉的,而是“问题没拆清楚”死掉的。

如果只是做 FAQ 问答,RAG + 中等模型可能就够了;如果只是做候选文档排序,一个 reranker 可能比大模型更稳;如果要做复杂流程自动化,再考虑 GPT/LLaMA 这类生成模型接工具。


结尾:名词不是护城河,结构才是

我们把今天这张图再收一下:

  • Transformer:地基,核心是注意力,让 token 建立全局关系
  • BERT:Encoder-only,偏理解,适合分类、抽取、匹配、重排序
  • GPT:Decoder-only,偏生成,适合对话、续写、代码和 Agent
  • LLaMA:开源 Decoder 大模型代表,把生成能力带进私有化和本地工程

你看,四个名词并不复杂。复杂的是,我们总想一次性把所有细节吞下去。

真正的入门,不是把名词背得滚瓜烂熟,而是知道它们在系统里各自负责哪一段路。

当你能说清楚“这个任务该用理解模型,还是生成模型”,你就已经从背概念,开始走向做系统了。

互动时间:你现在最容易混的是 Transformer、BERT、GPT、LLaMA 里的哪一个?评论区留一个词,我下一篇可以顺手把它拆得更细。

下一篇预告:我们继续往工程里走,聊聊大模型推理时最常见的几个参数:temperature、top_p、max_tokens,到底该怎么调。

— END —

小刘檀木 · 帮普通人把 AI 学进简历

更多推荐