![CleanShot 2025-07-13 at
[email protected]|1300](https://imagehosting4picgo.oss-cn-beijing.aliyuncs.com/imagehosting/fix-dir%2Fmedia%2Fmedia_Y6nyeM0LzS%2F2025%2F07%2F13%2F16-49-28-7521b68d4a02125259e675439149deaf-CleanShot%202025-07-13%20at%2016.49.12-2x-012daf.png)
```shell
原始 Transformer (Encoder-Decoder):
├── Encoder: 双向注意力,看到全文
│ ├── Token Embedding
│ ├── Position Embedding
│ └── N × (Self-Attention + FFN)
│
└── Decoder: 单向注意力 + Cross-Attention
├── Token Embedding
├── Position Embedding
├── N × (Masked Self-Attention + Cross-Attention + FFN)
└── 输出层
【Encoder 部分】- 理解中文
输入: "我" "爱" "北京"
↓ Token Embedding
↓ Position Embedding
↓ 多层双向 Self-Attention (每个词可以看到所有词)
↓
输出: [h1, h2, h3] ← 这是"我爱北京"的语义表示
↑
这些向量包含了整句话的含义
【Decoder 部分】- 生成英文
输入: "<start>"
↓ 看 Encoder 的输出 [h1, h2, h3] (通过 Cross-Attention)
↓ 生成 "I"
↓
输入: "<start> I"
↓ 再看 Encoder 的输出
↓ 生成 "love"
↓
...最终输出 "I love Beijing"
GPT (Decoder-only):
└── 只有 Decoder 部分
├── Token Embedding ← 有 Embedding!
├── Position Embedding ← 有 Embedding!
├── N × (Causal Self-Attention + FFN) ← 单向
└── lm_head 输出层
没有独立的 Encoder!
所有工作都在一个 Decoder 里完成
输入: "翻译成英文: 我爱北京 → I love"
↓
自回归生成: "Beijing"
BERT (Encoder-only):
└── 只有 Encoder 部分
├── Token Embedding ← 也有 Embedding!
├── Position Embedding
├── N × (Bidirectional Self-Attention + FFN) ← 双向
└── 分类/MLM 输出层
只有 Encoder (理解输入)
输入: "我[MASK]北京"
↓ 双向注意力
输出: "我[爱]北京" ← 填空任务
```
1. [[CS336]]、[[Transformer]]复习([[Transformer]]与[[Transformer模型]])
2. [[Decoder-only]] - [[minGPT]]
1. [[minGPT]] `model.py` 和 `trainer.py` 发生了什么?
3. [[Encoder-only]] - [[BERT]]
1. 利用 `trainer.py` 和 [[Transformers]] 完成一个 bert 的意图识别训练,巩固上一个 lab 的学习做闭环
2. [BERT](BERT.md)和[[GPT]]在应用场景上的区别,比如[[判别式任务]]。
1. 两者的对比
2. 一个 trick 分享:Transformer一定要拿到最后的结果吗?[Transformer](Transformer.md),无论是 GPT、BERT 解码头,还是 Qwen/LLaMA,最后一层都是 `hidden → linear → vocab logits`是一个大词表上的 [[softmax]] logits。所以可以用一种技巧:[[Logit-based Classification]]
4. mac 的 [[MPS]]
5. 训练和推理阶段都会用到[[Transformers]],[[Transformers]]可以优化吗?
___
# Lab2 systems
1. 都是[推理框架](推理框架.md)为啥[vLLM](vLLM.md)比[Transformers](Transformers.md)快那么多?
2. Lab2 要习得什么能力?
- 定位瓶颈 & 写自定义 [[GPU Kernel 内核]] 的实战能力
- 理解并实现数据并行通信协议 的全流程
- 显存账本:知道模型 / 激活 / 优化器各占多少,以及如何 trade‑off
- 对理解 大模型推理加速 (Flash‑Attention、KV‑cache) 和 张量并行 / pipeline 并行 打下基础
3. 明白特殊性的[[LLM大模型]]相比通用性的[[深度学习@]]过程在训练和推理层面的不同
4. 对应[[自然语言处理 NLP]]的知识树理解我们现在做的事情