Transformer
为什么我还是无法理解transformer The Annotated Transformer
Transformer 架构定义了“信息的流动方式”:无论是训练还是推理,信息都必须经过多头注意力(MHA)和前馈网络(FFN)。
| 维度 | 训练过程 (Training) | 推理过程 (Inference) |
|---|---|---|
| 输入处理 | 全量输入(Input + Target) | 增量输入(先输入 Prompt,再逐个生成) |
| 核心阶段 | 只有 Forward(前向) 和 Backward(反向) | Prefilling (处理 Prompt) + Decoding (生成) |
| 计算模式 | 高度并行(利用矩阵乘法一次算完整个序列) | Prefilling 是并行的,Decoding 是串行的 |
| 反量化发生点 | 如果是量化训练,发生在算子计算时 | 发生在 Prefilling 和 Decoding 的每一层计算中 |
训练 = 对整个序列进行一次大规模的 Prefilling(forward 的计算方式应该和 forward 是一致的) + 反向传播(计算梯度并更新权重)。
推理 = 对输入进行一次 Prefilling(产生 KV Cache) + 循环进行多次 Decoding(消耗 KV Cache 并产生新词)。
量化过程数据变化示例:
架构
An overview of some of the most popular large language transformers organized by architecture type and developers.2
Encoder-only models
Good for tasks that require understanding of the input, such as sentence classification and named entity recognition. 3
Decoder-only models
Good for generative tasks such as text generation. 3
Encoder-Decoder models(sequence-to-sequence models)
Good for generative tasks that require an input, such as translation or summarization. 3
不过上图展示的 encoder 和 decoder 之间的关联展示的是逻辑上这两个组件间的数据流向,而实际应用上连接方式如下图所示
Diffusion Transformers
在 transformer 中我们熟悉了 layer 的概念,但是到了 diffusion 这里突然多出了 block 的概念,所以我们先着重理解一下 block 和 layer 的区别
在上图展示的 diffusion 的结构中,有一个 “Nx DiT Block”,也就是说在实际的模型中,这部分会连续分布多个。
在宏观语境下,这个 block 和 layer 是相同的概念。比如说一个模型有 28 层的网络,那就是这里的 N 是 28。从架构本身详细来说的化,这一个 DiT Block 其实是包含了多个 layer 的,就像这里面的 “Multi-Head Self-Attention”, “Layer Norm” 都分别是一个 layer。




