LLM基础概念和术语

作为非算法方向的开发者,只会从总体上去了解LLM的主要工作过程,不会深究算法细节。这里是学习LLM的工作过程,使用LLM绕不开的一些简单原理

Transformer

Transformer之前

在Transformer架构提出之前,语言神经网络的主流是RNN(Recurrent Neural Network)

RNN特点:

  1. 训练效率低:RNN按顺序逐字处理输入,每一步的输出取决于
    先前一步的隐藏状态
    当前一步的输入
    ,因此RNN是串行的,无法并行计算;
  2. 不善于训练长文本:语句中的词的距离越远,前面内容对后面的影响越弱;

RNN的改良版本LSTM;

Transformer核心机制

Transformer:自注意力机制 + 位置编码:

1. 自注意力机制

Transformer在处理每个词的时候,不仅注意附近的词,还会注意输入的整个序列中的所有其他的词。然后给与每个词之间不一样的注意力权重。权重则是在训练过程中通过大量文本逐渐学习获得

自注意力机制解决了自然语言中的长文本痛点;

2. 位置编码

因为语言中的词的顺序很重要,即使2句话的词都一样,但顺序不一样,意义就完全不同,如:

小处不可随便 不可随处小便

因此LLM中的输入被称为序列,代表着是有顺序的向量;

在用户输入的文本,最终输入给LLM的序列中,每个词都由

词向量
+
位置向量

  1. 词向量:把每个词使用向量表示;
  2. 位置向量:每个词在句子中的位置,也用向量表示;

位置编码让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的样子,按照词来处理:

比如:

这个字,突然看到还需要反应一下,才能想起读音、含义;但是如果直接看到:
奢侈
,事情就容易很多。

这就意味着

奢侈
这个词在大部分的人的记忆中,属于一个常见token;

再比如:

今天天气不错
,看到这句话,通常大脑是将其分成3个token:
今天
天气
不错

每个LLM都有一个所使用的分词器,比如deepseek-R1的分词器如下:

同时,因为Token的数量直接影响模型使用的算力,所以主流的模型费用都是按照token的计算的。

预训练模型

预训练模型:已经在大型通用数据集上,经过较长时间使用大量算力进行了训练,模型已经学会了识别数据中的模式、特征和结构;它的关键优势在于它允许迁移学习,可以使用较小的特定领域的数据集,对模型进行微调。

预训练模型就像是一个大一的优秀学生,已经有了各项通用知识的基础,你可以决定它下一步在哪些领域继续深造(微调)。

LLM量化

量化目的:减少模型存储大小,推理占用的显存大小;

LLM是量化的:将模型的参数(通常为

float
类型:FP32,FP16)用整数(Int8,Int4)来替代,以此减少显存和TensorCore之间的数据传输,加快模型推理时间。原因在于:显卡对于整数运算的速度快于浮点型计算。

量化策略:

  • 对称量化:映射到有符号Int8(-127~127)按照最大值计算出缩放比例(scale),然后将所有参数按照这个缩放比例映射到Int8范围中,通常会导致参数的最小值不会映射到整数的最小值,导致空间浪费;
  • 非对称量化:映射到无符号Int8(0255),将最大值映射为Int8最大值,最小值映射为0,其他变量在0255之间。

LLM蒸馏

蒸馏(知识蒸馏):在不影响其核心功能的情况下将大型模型缩小到可管理的大小,将 LLM 转换为 SLM(小语言模型) 可以缩短处理时间、降低内存消耗和减少延迟。蒸馏或修剪后的小模型甚至可以直接放到手机上运行。

LLM蒸馏的步骤:

  • 教师模型:首先需要有一个已经训练完成的大模型,在特定的领域已经完成了参数训练。
  • 学生模型:学生模型通常是教师模型的较小版本,经过训练可以模仿教师模型的输出。学生不是直接从原始数据集中学习,而是从老师的预测中学习。
  • 知识蒸馏:在培训过程中,学生模型学会复制教师的行为。优化过程确保学生保留了教师的大部分准确性,同时显著减少了参数的数量。

蒸馏好处:

  1. 缩小了模型尺寸
  2. 性能保持
  3. 部署更灵活
  4. 成本更低

LLM微调(Fine-Tuning)