AI 模型学习与对比
本文将深入介绍 AI 大模型的核心架构原理、主流模型对比、训练流程以及微调技术,帮助你从原理到实践全面理解大语言模型。
一、Transformer 架构详解
Transformer 是当前几乎所有大语言模型的基础架构,由 Google 在 2017 年的论文 "Attention Is All You Need" 中提出。理解 Transformer 是理解所有现代 AI 模型的关键。
1.1 为什么需要 Transformer?
在 Transformer 之前,NLP 主要依赖 RNN(循环神经网络)和 LSTM(长短期记忆网络):
| 架构 | 优点 | 缺点 |
|---|---|---|
| RNN | 能处理序列数据 | 无法并行计算,长距离依赖差 |
| LSTM | 缓解了梯度消失问题 | 计算速度慢,仍有长距离限制 |
| Transformer | 完全并行化,长距离依赖强 | 计算量大,需要大量数据 |
Transformer 的核心创新:用注意力机制(Attention)完全替代循环结构,实现了并行计算和全局信息捕获。
1.2 Transformer 整体结构
Transformer 由 编码器(Encoder) 和 解码器(Decoder) 两部分组成:
输入序列 → [Encoder] → 中间表示 → [Decoder] → 输出序列- Encoder:将输入文本编码为高维向量表示(理解语义)
- Decoder:根据编码结果逐步生成输出文本
不同模型使用不同的组合:
| 架构类型 | 使用部分 | 代表模型 | 适合任务 |
|---|---|---|---|
| Encoder-only | 仅编码器 | BERT、RoBERTa | 文本分类、NER、语义理解 |
| Decoder-only | 仅解码器 | GPT、Llama、DeepSeek | 文本生成、对话、代码 |
| Encoder-Decoder | 编码器+解码器 | T5、BART | 翻译、摘要 |
当前主流 LLM(GPT、Claude、Llama、DeepSeek)几乎都采用 Decoder-only 架构。
1.3 自注意力机制(Self-Attention)
自注意力是 Transformer 的核心,它让模型在处理每个词时,能够"关注"到序列中所有其他词的信息。
计算过程:
- 对每个输入词,生成三个向量:Q(Query)、K(Key)、V(Value)
- 计算注意力分数:Q 与所有 K 的点积
- 通过 Softmax 归一化得到注意力权重
- 用权重对 V 加权求和,得到输出
数学公式:
Attention(Q, K, V) = softmax(Q × K^T / √d_k) × VQ × K^T:计算每对词之间的相关性√d_k:缩放因子,防止点积过大softmax:将分数转为概率分布× V:根据注意力权重聚合信息
直观理解:
以句子 "小猫坐在垫子上,它很开心" 为例:
- 处理"它"这个词时,注意力机制会给"小猫"分配较高的权重
- 这样模型就能理解"它"指代的是"小猫"
1.4 多头注意力(Multi-Head Attention)
单个注意力只能捕获一种关系模式。多头注意力将 Q、K、V 分成多个"头",每个头独立计算注意力,最后拼接结果:
MultiHead(Q, K, V) = Concat(head_1, head_2, ..., head_h) × W_O
其中 head_i = Attention(Q × W_Q_i, K × W_K_i, V × W_V_i)好处:不同的头可以关注不同类型的关系(语法关系、语义关系、位置关系等)。
1.5 位置编码(Positional Encoding)
Transformer 没有循环结构,无法感知词的顺序。位置编码为每个位置添加一个固定或可学习的向量,让模型知道词的位置信息。
常见方案:
| 方案 | 说明 | 使用模型 |
|---|---|---|
| 正弦位置编码 | 使用 sin/cos 函数生成固定编码 | 原始 Transformer |
| 可学习位置编码 | 位置向量作为参数训练 | GPT、BERT |
| RoPE(旋转位置编码) | 将位置信息编码到旋转矩阵中 | Llama、Qwen、DeepSeek |
| ALiBi | 在注意力分数上加位置偏置 | BLOOM |
RoPE 是当前最流行的位置编码方案,支持长度外推(处理比训练时更长的文本)。
1.6 前馈神经网络(FFN)
每个 Transformer 层中,注意力之后还有一个前馈网络(Feed-Forward Network),用于对每个位置的表示做非线性变换:
FFN(x) = max(0, x × W_1 + b_1) × W_2 + b_2现代模型常用 SwiGLU 激活函数替代 ReLU,效果更好(Llama、DeepSeek 等都采用)。
1.7 Layer Normalization 与残差连接
- 残差连接:
output = x + SubLayer(x),防止深层网络梯度消失 - Layer Norm:对每一层的输出做归一化,稳定训练过程
现代模型多采用 Pre-Norm(先归一化再计算)而非原始的 Post-Norm。
二、模型训练全流程
一个大语言模型从零到可用,通常经历以下阶段:
2.1 预训练(Pre-training)
在海量无标注文本上训练模型,学习语言的基本规律。
训练目标:
| 目标 | 说明 | 使用模型 |
|---|---|---|
| CLM(因果语言模型) | 根据前文预测下一个词 | GPT、Llama、DeepSeek |
| MLM(掩码语言模型) | 预测被遮盖的词 | BERT |
| Seq2Seq | 编码输入,解码输出 | T5、BART |
CLM 示例:
输入:今天天气
目标:今天天气真好
模型学习:P(真|今天天气) → P(好|今天天气真) → ...训练数据规模:
| 模型 | 训练数据量 | 训练 Token 数 |
|---|---|---|
| GPT-3 | ~570GB 文本 | ~300B tokens |
| Llama 2 | - | 2T tokens |
| Llama 3 | - | 15T tokens |
| DeepSeek-V3 | - | 14.8T tokens |
训练成本:
| 模型 | 估算训练成本 | GPU 资源 |
|---|---|---|
| GPT-4 | ~$100M+ | 数万张 A100 |
| Llama 3 405B | ~$30M | 16,384 张 H100 |
| DeepSeek-V3 | ~$5.6M | 2,048 张 H800 |
DeepSeek-V3 的训练成本仅为同级别模型的 1/10,得益于 MoE 架构和工程优化。
2.2 监督微调(SFT - Supervised Fine-Tuning)
在预训练基础上,使用人工标注的高质量对话数据进行微调,让模型学会按照指令回答问题。
SFT 数据格式:
{
"instruction": "请解释什么是机器学习",
"input": "",
"output": "机器学习是人工智能的一个分支,它使计算机系统能够从数据中学习和改进,而无需进行明确的编程。通过分析大量数据中的模式,机器学习算法可以做出预测或决策..."
}关键要点:
- 数据质量比数量更重要
- 通常需要数万到数十万条高质量数据
- 覆盖多种任务类型:问答、写作、代码、推理等
2.3 RLHF(基于人类反馈的强化学习)
让模型的输出更符合人类偏好,减少有害内容。
RLHF 三步流程:
第一步:SFT 模型(上一步的结果)
↓
第二步:训练奖励模型(Reward Model)
- 对同一问题生成多个回答
- 人工标注员对回答排序
- 训练一个模型来预测人类偏好
↓
第三步:PPO 强化学习优化
- 用奖励模型的分数作为奖励信号
- 通过 PPO 算法优化 SFT 模型
- 使模型生成更符合人类偏好的回答替代方案 - DPO(Direct Preference Optimization):
DPO 跳过了训练奖励模型的步骤,直接从偏好数据中优化模型,更简单高效。DeepSeek、Llama 3 等新模型多采用 DPO。
2.4 训练流程总结
海量文本数据 → [预训练] → 基座模型(Base Model)
↓
高质量指令数据 → [SFT 微调] → 指令模型(Chat Model)
↓
人类偏好数据 → [RLHF/DPO] → 对齐模型(Aligned Model)三、主流模型架构深度对比
3.1 GPT 系列(OpenAI)
| 模型 | 参数量 | 上下文窗口 | 架构特点 |
|---|---|---|---|
| GPT-3.5 | ~175B | 16K | Dense Decoder-only |
| GPT-4 | 未公开(传闻 MoE) | 128K | 可能是 MoE 架构 |
| GPT-4o | 未公开 | 128K | 原生多模态 Transformer |
| o1 | 未公开 | 200K | 推理时思维链(CoT) |
| o3-mini | 未公开 | 200K | 轻量推理模型 |
架构特点:
- 标准 Decoder-only Transformer
- GPT-4 可能采用了 MoE(8 个专家,每次激活 2 个)
- o1 系列引入了 推理时计算(Test-time Compute):模型在回答前会进行多步推理
o1 的推理时思维链:
用户问题:9.11 和 9.8 哪个大?
普通模型:9.11 > 9.8(错误,被小数位数误导)
o1 推理过程:
思考:这是比较两个小数...
思考:9.11 = 9 + 0.11,9.8 = 9 + 0.8
思考:0.11 < 0.8
结论:9.8 > 9.11 ✓3.2 Claude 系列(Anthropic)
| 模型 | 上下文窗口 | 架构特点 |
|---|---|---|
| Claude 3 Haiku | 200K | 轻量 Dense 模型 |
| Claude 3.5 Sonnet | 200K | 中等规模,代码能力强 |
| Claude 3 Opus | 200K | 最大规模,推理最强 |
架构特点:
- Dense Decoder-only Transformer
- 采用 Constitutional AI(宪法 AI) 进行对齐,减少对人工标注的依赖
- 超长上下文通过优化注意力机制实现(可能使用了滑动窗口 + 全局注意力)
Constitutional AI 流程:
第一步:让模型生成回答
第二步:让模型根据一组"宪法原则"自我批评
第三步:让模型根据批评修改回答
第四步:用修改后的数据训练模型3.3 DeepSeek 系列(深度求索)
| 模型 | 总参数 | 激活参数 | 上下文 | 架构 |
|---|---|---|---|---|
| DeepSeek-V2 | 236B | 21B | 128K | MoE + MLA |
| DeepSeek-V3 | 671B | 37B | 128K | MoE + MLA |
| DeepSeek-R1 | 671B | 37B | 128K | MoE + MLA + RL |
核心创新:
MoE(Mixture of Experts,混合专家)
输入 → Router(路由器)→ 选择 Top-K 个专家
↓
Expert 1 Expert 2 ... Expert N
↓ ↓
加权合并 → 输出- DeepSeek-V3 有 256 个专家,每次只激活 8 个
- 总参数 671B,但推理时只用 37B 参数(约 5.5%)
- 大幅降低推理成本,同时保持大模型的能力
MLA(Multi-head Latent Attention,多头潜在注意力)
DeepSeek 的独创注意力机制,通过低秩压缩大幅减少 KV Cache 的显存占用:
标准 MHA:KV Cache = 2 × n_layers × n_heads × d_head × seq_len
MLA: KV Cache = 2 × n_layers × d_compressed × seq_len
d_compressed << n_heads × d_head,显存节省 90%+DeepSeek-R1 的强化学习训练
R1 的核心创新是通过纯强化学习(不依赖 SFT 数据)让模型学会推理:
第一阶段:纯 RL 训练(DeepSeek-R1-Zero)
- 不使用任何 SFT 数据
- 仅通过奖励信号(答案正确性)训练
- 模型自发涌现出思维链推理能力
第二阶段:冷启动 + RL + SFT
- 用少量高质量推理数据冷启动
- 大规模 RL 训练
- 最终 SFT 提升格式和可读性3.4 Llama 系列(Meta)
| 模型 | 参数量 | 上下文 | 架构特点 |
|---|---|---|---|
| Llama 2 | 7B/13B/70B | 4K | GQA、RoPE |
| Llama 3 | 8B/70B | 8K | GQA、RoPE、更大词表 |
| Llama 3.1 | 8B/70B/405B | 128K | 长上下文扩展 |
关键技术:
GQA(Grouped-Query Attention,分组查询注意力)
MHA:每个头都有独立的 K、V → 显存大
MQA:所有头共享一组 K、V → 质量下降
GQA:将头分成若干组,组内共享 K、V → 平衡性能和效率Llama 2 70B 使用 8 组 GQA,将 KV Cache 减少到 MHA 的 1/8。
RoPE(Rotary Position Embedding,旋转位置编码)
核心思想:将位置信息编码为旋转角度
- 位置 m 的编码 = 旋转矩阵 R(m)
- 两个位置的注意力分数只依赖于相对距离
- 天然支持长度外推3.5 Gemini 系列(Google)
| 模型 | 上下文窗口 | 架构特点 |
|---|---|---|
| Gemini 1.5 Flash | 1M | 轻量 MoE |
| Gemini 1.5 Pro | 1M | MoE + 超长上下文 |
| Gemini Ultra | 未公开 | 最强多模态 |
核心特点:
- 原生多模态:文本、图像、视频、音频统一处理
- 超长上下文(1M tokens ≈ 70 万字 ≈ 一整本书)
- 采用 MoE 架构提升效率
3.6 Qwen 系列(阿里)
| 模型 | 参数量 | 架构特点 |
|---|---|---|
| Qwen2.5 | 0.5B-72B | Dense,GQA,RoPE |
| Qwen2.5-Coder | 1.5B-32B | 代码专用微调 |
| Qwen-VL | 多尺寸 | 视觉语言多模态 |
核心特点:
- 中文能力在开源模型中领先
- 多尺寸覆盖,从手机端(0.5B)到服务器端(72B)
- 开源生态完善,支持 vLLM、Ollama 等部署工具
四、模型综合能力对比
4.1 能力矩阵(截至 2025 年初)
| 能力维度 | 第一梯队 | 第二梯队 | 第三梯队 |
|---|---|---|---|
| 综合推理 | GPT-4o、Claude 3.5 Sonnet | DeepSeek-V3、Gemini 1.5 Pro | Llama 3.1 405B、Qwen2.5-72B |
| 深度推理 | o1、DeepSeek-R1 | Claude 3 Opus | GPT-4o |
| 代码能力 | Claude 3.5 Sonnet、DeepSeek-V3 | GPT-4o | Qwen2.5-Coder |
| 中文能力 | DeepSeek-V3、Qwen2.5 | GPT-4o、Claude 3.5 | Llama 3.1 |
| 长文本 | Gemini 1.5 Pro(1M) | Claude 3.5(200K) | GPT-4o(128K) |
| 多模态 | GPT-4o、Gemini 1.5 Pro | Claude 3.5 Sonnet | Qwen-VL |
| 性价比 | DeepSeek-V3 | Gemini Flash | GPT-4o-mini |
4.2 架构对比总结
| 特性 | Dense 模型 | MoE 模型 |
|---|---|---|
| 代表 | GPT-4、Claude、Llama | DeepSeek-V3、Gemini |
| 推理效率 | 每次激活全部参数 | 每次只激活部分专家 |
| 训练成本 | 较高 | 相对较低 |
| 部署要求 | 显存需求大 | 总参数大但推理高效 |
| 路由复杂度 | 无 | 需要专家路由策略 |
| 负载均衡 | 无需考虑 | 需要均衡各专家负载 |
4.3 开源 vs 闭源
| 维度 | 闭源模型 | 开源模型 |
|---|---|---|
| 代表 | GPT-4o、Claude 3.5、Gemini | DeepSeek-V3、Llama 3.1、Qwen2.5 |
| 性能 | 通常更强 | 差距在缩小 |
| 成本 | API 按量付费 | 可本地部署,长期成本低 |
| 隐私 | 数据经过第三方 | 数据完全本地 |
| 定制化 | 有限(API 参数调整) | 完全可控(微调、修改) |
| 部署 | 零运维 | 需要 GPU 和运维 |
五、模型微调(Fine-tuning)详解
微调是在预训练模型基础上,使用特定领域数据进一步训练,让模型适应特定任务。
5.1 为什么需要微调?
| 场景 | 直接使用预训练模型 | 微调后 |
|---|---|---|
| 医疗问答 | 可能给出不准确的医学建议 | 基于医学文献训练,回答更专业 |
| 法律咨询 | 缺乏法律专业知识 | 理解法律术语和条文 |
| 客服对话 | 回答风格不统一 | 符合企业话术规范 |
| 代码生成 | 通用代码能力 | 熟悉特定框架和代码规范 |
5.2 全量微调(Full Fine-tuning)
更新模型的所有参数。
# 伪代码:全量微调
from transformers import AutoModelForCausalLM, Trainer
model = AutoModelForCausalLM.from_pretrained("meta-llama/Llama-3.1-8B")
# 所有参数都参与训练
trainer = Trainer(
model=model,
train_dataset=my_dataset,
args=training_args,
)
trainer.train()优点:效果最好,模型充分适应新任务 缺点:
- 需要大量 GPU 显存(8B 模型全量微调需要 ~60GB 显存)
- 训练时间长
- 每个任务需要保存一份完整模型
5.3 LoRA(Low-Rank Adaptation,低秩适配)
当前最流行的微调方法。核心思想:冻结原模型参数,只训练少量新增的低秩矩阵。
原理:
原始权重矩阵 W (d × d)
全量微调:W' = W + ΔW (ΔW 是 d × d 的矩阵,参数量大)
LoRA: W' = W + B × A (B 是 d × r,A 是 r × d,r << d)
例如:d = 4096, r = 16
全量微调参数:4096 × 4096 = 16,777,216
LoRA 参数: 4096 × 16 + 16 × 4096 = 131,072(仅 0.78%)# 使用 PEFT 库进行 LoRA 微调
from peft import LoraConfig, get_peft_model
from transformers import AutoModelForCausalLM
model = AutoModelForCausalLM.from_pretrained("meta-llama/Llama-3.1-8B")
lora_config = LoraConfig(
r=16, # 低秩维度
lora_alpha=32, # 缩放因子
target_modules=["q_proj", "k_proj", "v_proj", "o_proj"], # 应用 LoRA 的层
lora_dropout=0.05, # Dropout
task_type="CAUSAL_LM", # 任务类型
)
model = get_peft_model(model, lora_config)
model.print_trainable_parameters()
# 输出:trainable params: 6,553,600 || all params: 8,036,098,048 || trainable%: 0.0816LoRA 优势:
- 显存需求大幅降低(8B 模型 LoRA 微调仅需 ~16GB 显存)
- 训练速度快
- 可以为不同任务保存不同的 LoRA 适配器,共享同一个基座模型
- 推理时可以将 LoRA 权重合并回原模型,无额外推理开销
5.4 QLoRA(Quantized LoRA)
在 LoRA 基础上,将基座模型量化为 4-bit,进一步降低显存需求。
from transformers import BitsAndBytesConfig
# 4-bit 量化配置
bnb_config = BitsAndBytesConfig(
load_in_4bit=True,
bnb_4bit_quant_type="nf4", # NormalFloat4 量化
bnb_4bit_compute_dtype=torch.bfloat16,
bnb_4bit_use_double_quant=True, # 双重量化
)
model = AutoModelForCausalLM.from_pretrained(
"meta-llama/Llama-3.1-8B",
quantization_config=bnb_config,
)
# 然后应用 LoRA(同上)显存对比:
| 方法 | 8B 模型显存 | 70B 模型显存 |
|---|---|---|
| 全量微调(FP16) | ~60GB | ~500GB+ |
| LoRA(FP16) | ~18GB | ~150GB |
| QLoRA(4-bit) | ~6GB | ~40GB |
QLoRA 让单张消费级显卡(RTX 4090 24GB)就能微调 8B 甚至 13B 模型。
5.5 其他微调方法
| 方法 | 原理 | 特点 |
|---|---|---|
| Prefix Tuning | 在输入前添加可学习的虚拟 token | 参数量极少 |
| P-Tuning v2 | 在每层添加可学习的前缀 | 效果接近全量微调 |
| Adapter | 在 Transformer 层间插入小型网络 | 灵活,可组合 |
| IA3 | 学习缩放向量而非矩阵 | 参数量比 LoRA 更少 |
5.6 微调实战流程
# 1. 准备环境
pip install transformers peft datasets accelerate bitsandbytes trl
# 2. 准备数据(JSON 格式)
# data.json:
# [
# {"instruction": "...", "input": "...", "output": "..."},
# ...
# ]
# 3. 运行微调脚本
python train.py \
--model_name meta-llama/Llama-3.1-8B \
--dataset data.json \
--lora_r 16 \
--lora_alpha 32 \
--num_epochs 3 \
--learning_rate 2e-4 \
--batch_size 4 \
--output_dir ./output5.7 微调最佳实践
- 数据质量 > 数据数量:1000 条高质量数据 > 10000 条低质量数据
- 学习率:通常使用 1e-5 ~ 5e-4,LoRA 可以用稍大的学习率
- 训练轮数:通常 1-5 个 epoch,过多会过拟合
- LoRA rank:r=8~64,任务越复杂可以适当增大
- 评估指标:除了 loss,还要关注实际任务效果(人工评估)
- 数据格式:保持与预训练时的对话模板一致
六、本地部署入门
6.1 Ollama —— 最简单的本地部署
# 安装 Ollama
curl -fsSL https://ollama.com/install.sh | sh
# macOS 也可以直接下载安装包
# https://ollama.com/download
# 运行模型
ollama run deepseek-r1:8b # DeepSeek R1 8B
ollama run llama3.1:8b # Llama 3.1 8B
ollama run qwen2.5:7b # Qwen 2.5 7B
ollama run codellama:7b # Code Llama 7B
# 查看已下载的模型
ollama list
# 通过 API 调用
curl http://localhost:11434/api/generate -d '{
"model": "deepseek-r1:8b",
"prompt": "解释什么是 Transformer"
}'6.2 vLLM —— 高性能推理引擎
pip install vllm
# 启动 API 服务
python -m vllm.entrypoints.openai.api_server \
--model deepseek-ai/DeepSeek-V3 \
--tensor-parallel-size 4 \
--max-model-len 327686.3 硬件要求参考
| 模型大小 | 最低显存(4-bit) | 推荐显存 | 适合显卡 |
|---|---|---|---|
| 1.5B-3B | 2GB | 4GB | RTX 3050/4050 |
| 7B-8B | 6GB | 8GB | RTX 3060/4060 |
| 13B-14B | 10GB | 16GB | RTX 4080/4090 |
| 32B-34B | 20GB | 24GB | RTX 4090/A5000 |
| 70B-72B | 40GB+ | 80GB+ | A100/H100 |
七、学习路线建议
阶段一:入门(1-2 周)
- 使用 ChatGPT / Claude / DeepSeek 等在线工具
- 学习 Prompt Engineering 基础技巧
- 了解 AI 的基本概念和术语
阶段二:理论基础(2-4 周)
- 学习神经网络基础(前馈网络、反向传播)
- 深入理解 Transformer 架构(本文内容)
- 学习 PyTorch 基础
推荐资源:
阶段三:实践部署(1-2 周)
- 使用 Ollama 本地部署开源模型
- 体验不同模型的差异
- 学习使用 Hugging Face Transformers 库
阶段四:微调实战(2-4 周)
- 学习 LoRA / QLoRA 微调技术
- 准备自己的微调数据集
- 完成一个端到端的微调项目
阶段五:应用开发(持续)
- 学习 RAG(检索增强生成)技术
- 构建 AI Agent 应用
- 学习 LangChain / LlamaIndex 等框架
总结
| 主题 | 核心要点 |
|---|---|
| Transformer | 自注意力机制是核心,Decoder-only 是主流 LLM 架构 |
| 训练流程 | 预训练 → SFT → RLHF/DPO,三阶段逐步对齐 |
| MoE 架构 | DeepSeek 的核心创新,大幅降低推理成本 |
| 微调技术 | LoRA/QLoRA 是当前最实用的微调方案 |
| 模型选择 | 没有最好的模型,根据场景、成本、隐私需求选择 |
理解原理是用好 AI 的基础。建议从 Transformer 架构开始,逐步深入到训练和微调,最终能够根据需求选择和定制模型。