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 并产生新词)。

量化过程数据变化示例:

https://cdn.jsdelivr.net/gh/gaohongy/cloudImages@master/20260113183216620.png 1

架构

An overview of some of the most popular large language transformers organized by architecture type and developers.2

https://cdn.jsdelivr.net/gh/gaohongy/cloudImages@master/20260307173715418.png

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

https://cdn.jsdelivr.net/gh/gaohongy/cloudImages@master/20260307173150876.png 4

不过上图展示的 encoder 和 decoder 之间的关联展示的是逻辑上这两个组件间的数据流向,而实际应用上连接方式如下图所示

https://cdn.jsdelivr.net/gh/gaohongy/cloudImages@master/20260307174700422.png 5

Diffusion Transformers

https://cdn.jsdelivr.net/gh/gaohongy/cloudImages@master/20260705144011094.png

在 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。

0%