Transformer
Transformer之前
在Transformer架构提出之前,语言神经网络的主流是RNN(Recurrent Neural Network)
RNN特点:
- 训练效率低:RNN按顺序逐字处理输入,每一步的输出取决于先前一步的隐藏状态和当前一步的输入,因此RNN是串行的,无法并行计算;
- 不善于训练长文本:语句中的词的距离越远,前面内容对后面的影响越弱;
RNN的改良版本LSTM;
Transformer核心机制
Transformer:自注意力机制 + 位置编码:
1. 自注意力机制
Transformer在处理每个词的时候,不仅注意附近的词,还会注意输入的整个序列中的所有其他的词。然后给与每个词之间不一样的注意力权重。权重则是在训练过程中通过大量文本逐渐学习获得。
自注意力机制解决了自然语言中的长文本痛点;
2. 位置编码
因为语言中的词的顺序很重要,即使2句话的词都一样,但顺序不一样,意义就完全不同,如:
小处不可随便 不可随处小便
因此LLM中的输入被称为序列,代表着是有顺序的向量;
在用户输入的文本,最终输入给LLM的序列中,每个词都由
- 词向量:把每个词使用向量表示;
- 位置向量:每个词在句子中的位置,也用向量表示;
位置编码让LLM可以接收任意的词,不需要按照顺序,可以并行处理,解决训练效率低的问题。
LLM输入输出过程
- 文本嵌入层(Embedding):将输入的Token转为token id,并将token id转为向量表示;目的就是转为向量,可以升高输入维度,方便后续捕捉token间的关系;
- 位置编码:为每个token添加位置信息,以便模型理解token的顺序,更好理解用户输入;
- 多头自注意力机制:计算token与token之间的关系,捕捉上下文信息;
- softmax:一种数学函数,LLM的输出可能是任意实数(logits得分),无法用概率选择,因此需要将模型的预测值转换为概率分布,并将所有可能的结果转换为概率和为1的分布。比如天气预测,模型输入3个值:[晴天, 雨天, 阴天]的可能性为:[2.3, -1.5, 0.7],softmax负责将其转换为[0.88, 0.01, 0.11],他们合并的概率为1;
实际中使用大模型时,可以设定一些限制输入的参数,这些参数又是如何影响模型输出的:
output = model.generate( inputs, temperature=0.7, # 控制随机性 top_k=50, # 限制候选 Token 数量 top_p=0.95, # 动态筛选高概率 Token max_new_tokens=100 # 最大生成长度 )
- temperature:通过影响softmax的输出,让不同的预测值的概率变得均匀来提高随机性。较高的温度值会让softmax的结果更均匀(概率倾向于平均),而较低的温度值则会使softmax的结果更尖锐(概率高的更高)
- top-k:在 Temperature 缩放后,根据top-k的值,只保留k个概率最高的预测值(Token),将其他token的概率设为0;
- top-p:与top-k类似,但它是选择概率和至少为p的token集合,而不是单个Token;
Token
Token:用户输入在交给LLM之前,会由分词器进行切分,切分为一个个Token,每个Token在一张巨大的Token表中可以找到对应的编号(token id),LLM只会接受转换后的编号,然后再输出编号,再由Token表转化为Token,最终输出给用户;
实际上人类大脑通常也不是逐字处理文本信息的,也是按照token的样子,按照词来处理:
比如:
这就意味着
再比如:
每个LLM都有一个所使用的分词器,比如deepseek-R1的分词器如下:
- Tiktokenizer:直观感受模型分词;
同时,因为Token的数量直接影响模型使用的算力,所以主流的模型费用都是按照token的计算的。
预训练模型
预训练模型:已经在大型通用数据集上,经过较长时间使用大量算力进行了训练,模型已经学会了识别数据中的模式、特征和结构;它的关键优势在于它允许迁移学习,可以使用较小的特定领域的数据集,对模型进行微调。
预训练模型就像是一个大一的优秀学生,已经有了各项通用知识的基础,你可以决定它下一步在哪些领域继续深造(微调)。
LLM量化
量化目的:减少模型存储大小,推理占用的显存大小;
LLM是量化的:将模型的参数(通常为
量化策略:
- 对称量化:映射到有符号Int8(-127~127)按照最大值计算出缩放比例(scale),然后将所有参数按照这个缩放比例映射到Int8范围中,通常会导致参数的最小值不会映射到整数的最小值,导致空间浪费;
- 非对称量化:映射到无符号Int8(0
255),将最大值映射为Int8最大值,最小值映射为0,其他变量在0255之间。
LLM蒸馏
蒸馏(知识蒸馏):在不影响其核心功能的情况下将大型模型缩小到可管理的大小,将 LLM 转换为 SLM(小语言模型) 可以缩短处理时间、降低内存消耗和减少延迟。蒸馏或修剪后的小模型甚至可以直接放到手机上运行。
LLM蒸馏的步骤:
- 教师模型:首先需要有一个已经训练完成的大模型,在特定的领域已经完成了参数训练。
- 学生模型:学生模型通常是教师模型的较小版本,经过训练可以模仿教师模型的输出。学生不是直接从原始数据集中学习,而是从老师的预测中学习。
- 知识蒸馏:在培训过程中,学生模型学会复制教师的行为。优化过程确保学生保留了教师的大部分准确性,同时显著减少了参数的数量。
蒸馏好处:
- 缩小了模型尺寸;
- 性能保持;
- 部署更灵活;
- 成本更低;