![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]]的知识树理解我们现在做的事情