Transformer 架构说明

  1. Source Sentence:向 LLM 输入的内容
  2. Output Sentence:LLM 逐个回复的 token
    1. -> 我、我是、我是AI、我是AI大模…
  3. Embedding & Encoding: 向量化和位置标记
    1. 位置标记:向量化无法还原,通过在原始训练数据集中标记位置,事后才能确定当前 token 表示是具体文本是什么。
  4. Nx:层叠结构,多次执行。这是【神经网络】的 n 个隐藏层。
    1. 每一个 token 都需要走一遍完整的神经网络,走一遍隐藏层
    2. 上一个隐藏层 a 的输出是下一个隐藏层 b 的输入
  5. Multi-Head Attention:自注意力神经网络,内部权重是 W_q、W_k、W_v,是可训练参数。LLM 大模型的训练,主要就是训练这个参数。
    1. 使用【反向传播】+【梯度下降】
  6. Masked Multi-Head Attention:增加了 Token 向后的【遮挡】
    1. 训练阶段,abcde 字符串训练到 a/b 的时候,a/b 不能知道下一个是 c,而是应该通过 n 次训练后通过 w|b 计算出下一个是 c。如何让 a/b 看不到 c,就需要一个【遮挡】
    2. 推理使用阶段,使用的还是训练阶段的处理逻辑,所以还是会有【遮挡】。
      1. 实际上推理阶段会使用 KV 缓存,默认自带隔离
    3. Masked 通过【二维矩阵】填充 0,将后续的计算全部遮挡掉
  7. Feed Forward:前馈神经网络(正向反馈神经网络),内部权重是 w & b ,是可训练参数。LLM 大模型的训练,主要就是训练这个参数。
    1. 使用【反向传播】+【梯度下降】
  8. Add & Norm & Softmax:一些归一化、激活函数等操作,无可训练参数
    1. 收敛数据
    2. 概率分布
  9. 图中左右分开,左侧是 Encode 层,右侧是 Decode 层:
    1. Encode:处理用户输入,即 Source Sentence 数据
    2. Decode:LLM 生成内容,即 Output Sentence 数据
    3. Encode 层,是一次计算,多次使用
    4. Decode 层,LLM 每生成一个 token 就需要计算一遍

image.png

Transformer 架构 LLM Token 生成过程

模型关键超参数

num_attention_heads = 8     # 注意力头数量: 将注意力计算分散到多个子空间进行
num_encoder_layers = 6      # Encoder层数 (Nx)
num_decoder_layers = 6      # Decoder层数 (Nx)
vocab_size = 50000          # 词汇表大小 (示例)

用户问: 你是谁 模型答: 我是 AI 大模型

下面将详细追踪 Token 是如何在 Transformer 模型内部被处理和生成的。

阶段一:Encoder - 理解输入 "你是谁"

Encoder 的目标是读取整个输入句子 "你是谁",理解其含义,并生成一个包含上下文信息的中间表示,供 Decoder 使用。

1. Tokenization (分词)

2. Input Embedding (输入嵌入)

3. Positional Encoding (位置编码)