问题与目标
GPT、BERT 和 T5 都建立在 Transformer 上,但它们保留的结构、注意力可见范围和预训练目标不同。只用“GPT 擅长生成、BERT 擅长理解”概括还不够,还要知道输入怎样组织、输出怎样使用,以及任务为什么适配。
本篇从 Decoder-only、Encoder-only 和 Encoder-Decoder 三种架构比较模型,不绑定某个具体参数规模或产品版本。完成后应能根据任务输入输出选择合理的模型类别。

三类架构的区别首先体现在信息可见范围:Encoder 双向聚合输入,Decoder 使用因果掩码逐步生成,Encoder-Decoder 则把输入理解和输出生成分到两部分完成。
核心概念
| 代表路线 | 主体结构 | 常见预训练目标 | 常见输出方式 | 适合任务 |
|---|---|---|---|---|
| GPT 类 | Decoder-only | 因果语言建模 | 逐 Token 生成 | 对话、续写、代码、通用生成 |
| BERT 类 | Encoder-only | 掩码语言建模 | 使用句子或 Token 表示 | 分类、实体识别、检索表示、抽取 |
| T5 类 | Encoder-Decoder | 文本到文本、片段恢复 | 条件生成 | 翻译、摘要、改写、受控生成 |
Decoder-only
输入提示和已生成内容位于同一序列,通过 Causal Mask 保证每个位置只能读取左侧。结构统一、扩展简单,适合把多种任务都表达为“继续生成什么”。现代对话模型通常还会为消息角色加入模板。
Encoder-only
每个输入位置可以同时读取左右上下文,输出是整段文本的上下文表示。分类时常读取汇总位置或池化结果;序列标注则使用每个 Token 的输出。它不天然执行开放式自回归生成。
Encoder-Decoder
编码器读取完整输入,解码器逐步生成输出,并通过交叉注意力访问编码器状态。输入和输出职责分离,适合翻译、摘要等条件生成任务,代价是结构和推理链路更复杂。
架构不能代替任务验证
同一架构可以通过不同数据和微调适配很多任务。选择时还要考虑模型语言覆盖、授权协议、上下文长度、延迟、硬件和评估结果。模型类别只能缩小范围,不能直接决定最终方案。
可运行实现
下面用一个显式规则表把任务约束映射到模型类别。它不是自动选型工具,而是把判断依据写成可检查代码。
from dataclasses import dataclass
@dataclass
class Task:
name: str
output_kind: str # label、token_labels、free_text
needs_generation: bool
has_long_source: bool = False
def recommend(task: Task) -> tuple[str, str]:
if not task.needs_generation:
return (
"Encoder-only",
"输出是类别或逐 Token 标签,优先使用双向上下文表示。",
)
if task.has_long_source:
return (
"Encoder-Decoder",
"输入文本与生成结果职责不同,编码后再条件生成更清晰。",
)
return (
"Decoder-only",
"任务可表达为提示后的连续生成,结构和调用方式更统一。",
)
tasks = [
Task("告警分类", "label", False),
Task("实体抽取", "token_labels", False),
Task("运行报告摘要", "free_text", True, True),
Task("对话回复", "free_text", True),
]
for task in tasks:
family, reason = recommend(task)
print(f"{task.name}: {family} - {reason}")
真实选型还应补充候选模型的测评表:任务指标、模型大小、最大输入长度、峰值显存、吞吐、首 Token 延迟、许可协议和部署方式。没有本地数据评估时,架构判断只能算初筛。
常见问题与排查
用生成模型做分类,结果格式不稳定
生成模型可能输出解释、标点或标签外内容。基础分类任务优先比较 Encoder 分类头;必须使用生成模型时,应限定标签集合并增加输出解析和无效结果处理。
用 BERT 直接调用 generate()
Encoder-only 模型通常没有自回归生成头。应使用与任务匹配的 AutoModelForSequenceClassification、AutoModelForTokenClassification 等类,而不是只根据模型名字调用接口。
认为 Encoder-Decoder 一定比 Decoder-only 更适合摘要
架构提供先验,不保证实际效果。仍需在目标语言、长度和数据上评估。通用 Decoder-only 模型经过指令微调后也能完成摘要。
忽略模型许可与资源要求
模型能下载不代表能任意商用;参数量相近也不代表显存和速度完全相同。部署前检查模型卡、权重格式、精度和推理框架。
小结
GPT、BERT 和 T5 代表三种不同的信息流与训练目标。先从任务输出判断需要表示还是生成,再结合输入长度、资源和实测指标选型,比按模型热度做决定更稳妥。
License: CC BY-NC 4.0
Updated 2 hours ago
Was this article helpful? Give it a like.
0 comments


