大模型架构:理解大模型预测输出文本的底层逻辑

0 阅读6分钟

大模型架构:理解大模型预测输出文本的底层逻辑

大模型全称大规模预训练语言模型(Large Language Model,简称 LLM),是基于Transformer 架构、参数量达到数十亿 / 千亿级、在海量文本 / 多模态数据上完成预训练的人工智能模型。

img_1783406575255_eb54852470406.png 自然语言输入到大模型后,通过分词器Tokenizer将自然语言转换为TokenID序列,并将TokenID序列输入到Embedding嵌入层,该层通过查向量表将无语义的TokenID序列转换为具有语义空间的N维向量,叠加位置编码后输入到Transformer层。

在Transformer的每一层中,对输入依次做:层归一化LN1→多头自注意力MHA→残差连接→层归一化LN2→FFN前馈神经网络→残差连接。然后再将输出传递到下一层,直到最后一层输出特征向量。该特征向量包含了原语义、位置编码、上下文语义、token关联语义等信息,然后传入LM Head输出层。

在LM Head输出层(或者叫线性变换层),对特征向量进行线性投影生成词表维度logits,其中包含了几万 ~ 十几万所有可用token数值,每个数值代表在当前上文后,这个token作为下一个字的匹配分数。对logits进行Softmax计算(训练阶段不需要Softmax计算),得到一个值在0~1之间,总和为1的概率分布,然后通过解码策略(贪心/采样)选出1个目标TokenID,将目标TokenID拼接在原始TokenID序列后,再送入Embedding嵌入层循环走一遍计算输出流程,直到输出EOS终止符号,然后将TokenID序列通过分词器解码为自然语言后,完整返回给前端,再由前端进行展示输出结果。

分词器

分词器是独立于神经网络的文本转换工具,核心作用:把人类自然语言字符串,拆分成模型词表定义的最小单元(Token),再映射为模型能接收的整数 ID;同时内置批量对齐、掩码生成等附加处理能力。

img_1783408552698_b50768230754a.png

编码

现代大模型采用Byte-BPE标准分词算法,通过对原始文本进行标准化清洗、预分词、UTF-8字节转换、BPE子词贪心合并、插入特殊符号、映射TokenID步骤实现从原始文本到TokenID序列的映射。

分词器中内置固定词表,存储所有Token字符串与唯一ID的映射关系。在通过BPE算法分词结束后,通过查表将原始文本映射为TokenID序列,无填充、无截断。

分词器中内置了附加预处理功能,在将TokenID序列传入Embedding嵌入层之前,支持对其进行截断、补pad、生成attention_mask功能,在训练阶段强制开启,在推理阶段,在线对话除截断按需开启外,pad和attention_mask默认不开启,离线批量推理强制开启。

解码

解码是编码的反向流程,自回归生成结束(采样到)后执行,把模型输出的数字 ID 序列还原成文字,主流 Byte-BPE/SentencePiece 通用这套步骤。

Embedding嵌入层

Embedding嵌入层是大模型神经网络第一层转换模块。它维护一张tokenID为索引,多维向量为值的二维向量表,推理时仅查表,训练时会通过反向传播更新二维向量表。

权重矩阵 WembRvocab_size×hidden_dimW_{emb} \in \mathbb R^{vocab\_size \times hidden\_dim} 输入TokenID(一维/二维批量),以ID为行索引,取出对应向量,输出张量: 这个过程纯查表索引,无矩阵乘法、无激活函数,是最简单的线性映射。

叠加位置编码

Embedding嵌入层输出张量后,在送入Transformer层之前,还需要叠加位置编码。

为什么要添加位置编码?因为在Transformer内部只有矩阵乘法,完全是置换等价的。也就是说,同样的token序列,尽管顺序不同,在Transformer中计算的注意力权重也是一模一样的。

为文本向量叠加位置编码的核心目的是使token序列相同,但顺序不一致的向量传入到Transformer之后是不同的向量,这样Transformer就能够区分。

位置编码给每个位置添加独有的时序坐标,让模型能识别Token 的先后顺序、远近关系,解决 Transformer 天生丢失语序信息的缺陷。

Transformer层

Transformer Block(常简称 Transformer 层)是大模型的核心基础计算单元,基于自注意力机制(Self-Attention)构建,负责对融合语义与位置信息的三维特征张量,完成全局上下文语义建模;模型通过堆叠数十 / 上百个完全相同的该层,实现长距离文字关联理解,是自回归大模型的核心特征提取模块。

在Transformer层主要有两大模块:多头自注意力和FFN前馈网络。在张量进入这两个模块之前都需要做层归一化,经过模块处理之后进行残差连接。其中,多头自注意力模块解决词与词之间的关系问题;FFN前馈网络模块解决单个词内部的深层语义细化问题,而层归一化是将张量中的数值统一在稳定范围内,避免训练过程中的梯度爆炸和梯度消失问题,残差连接是将多头自注意力模块或FFN模块输出的张量加上原始Transformer层输入张量,避免原始文本语义丢失。

随着Transformer逐层深入,大模型对原始文本的理解也越来越深刻,最终走完所有层之后输出文本的特征张量,并输入到LM Head输出层。

LM Head输出层

LM Head(语言模型头)是堆叠完全部 N 层 Transformer后的最后计算模块,唯一任务: 接收最后一层 Transformer 输出的三维特征张量,把每个 Token 位置的语义向量,换算成全词表所有 Token 的预测概率分布,根据解码策略选出下一个 Token ID 用于自回归生成。

在LM Head输出层主要有3个步骤:LM Head线性变换、Softmax归一化、预测下一个TokenID。

LM Head线性变换是预测下一个词的关键。如果说前面的步骤是对原始输入文本进行的深度理解,那么这一步骤才开始真正预测下一个token。在模型内部预置了一个权重矩阵WlmW_{lm},该矩阵是在训练阶段得到,通过将输入的特征张量与WlmW_{lm}相乘,即可得到单条样本的logits输出,如:[2.1, 0.3, 5.7, 1.2, -0.8],数字越大,代表该Token 作为下一个词的匹配度越高。

Softmax归一化是将原始得分转换成概率,一行所有概率相加总和等于1。上面的示例归一后:0.07, 0.01, 0.82, 0.08, 0.02

预测下一个TokenID的策略有两种,一种是贪心采样,直接取概率最大值对应的下标。另一种是Top-p/Top-k采样,只保留高概率Token,随机采样提升文本多样性。

如果采样结果为<EOS>结束符,则停止生成,收集全部生成TokenID送入分词器解码输出文本;如果未出现<EOS>,将新TokenID拼入原始上下文序列,重新走分词器→Embedding→Transformer 整套链路。