LLM概览¶
LLM的架构¶
- Auto Encoder
从高维编码到低维,在映射回原来的输入,即训练\(f(x)=x\),则可以获得一套编码,使用更少的特征的存储语义信息
- Attention
通过一个矩阵,计算并记录每一个单词和其他单词的影响关系,并将影响加入后续计算。
为了实现上下文的Attention,空间占用为\(O(n^2)\)
-
Transformer (2025年了,还是用Transformer吗?)
-
Encoder-Only (BERT)
- 作用:理解、分类、标注、特征提取
- 注意力:双向
- 机理:通过Encoder生成一个全局的、定长的理解
-
Encoder & Decoder (T5)
-
作用:翻译、摘要、问答
- 注意力:双向
- 机理:基于Encoder的定长理解,再用Decoder逐token生成回答
- Decoder-Only(GPT)
- 作用:文本补全,自然语言生成
- 注意力:单向(前向)
- 机理:不进行压缩,直接使用原文token进行回答生成
- 优势:训练迭代速度相对于编码-解码模型快很多
- Embedding(向量数据库)
- 作用:文本向量化
-
MoE
Router+Expert,即分类器加对应专家
Open-AI很可能采用该架构,有利于提高模型总参数、降低计算消耗
- VLM
多模态模型——将媒体输入变为token,再进行类似的训练
参数量决定了语意向量维度,也就具有更好的表达能力。(但是参数太大,模型表现可能也会下降)
大模型的参数量和训练文本量大致的比例只有1:20,(到100-1000倍仍有提高?)
这个比例称为压缩率,受限于架构,超过比例的数据集输入,也难以提高进一步降低loss
GPT4具有1TB的参数量,只需要20TB左右的高质量文本(那为什么说数据不够?——就是不够)
思维链的讨论:
正常来说,模型擅长直接给答案——因为训练的文本中,解释内容更少。
O1的训练,是因为出现了将数据集增广为具有思维过程的数据的方法
会将角色设定放入文段开头,并整合序列化为文本对象
有意思的是,我们可以在文本内嵌入
模型构建:窄-宽-窄,因为需要根据输入进行发散思考;同时因为宽的隐藏层,实现恒等映射比较简单,因此还需要进行激活单元数量的限制。
比如,在claude大模型的一个层中的一个参数,仅与金门大桥具有激活关系。
LLM的训练¶
- 预训练:
- 内容:TB级别,通过数据集进行文本填空(一切知识来源)
- 数据集:低质量,高数量
- 模型:Base Model
- 训练需求:需要1k GPU数以月计的训练
- 监督学习:
- 内容:10-100KB,通过人类标注、先前模型生成,获得
{prompt, response}对,让模型学会回答格式 - 数据集:中等质量,低数量
- 模型:SFT Model
- 训练需求:需要10 GPU几天的训练量
- :star:奖励学习:(思考过程/数据如何实现)
- 原因:对于o1这样的长思维链回答,需要对不同步骤进行评分
- 内容:MB级别,人类撰写/算法生成的思维过程
- 数据集:高质量,中等数量
- 训练需求:需要10 GPU几天的训练量
- 强化学习:
- 内容:MB级别,让人类对模型产出的多个内容进行等级分类
- 数据集:高质量(问题),低数量
- 训练需求:需要10 GPU几天的训练量
上交有对提升大模型进行许多方法的探索,结果发现不如征流已有尖端模型输出。
已有模型带模型,比如千问采用DS数据,是非常高效的(这就是o1为什么不放出思维过程)
LLM的下游应用¶
具有垂直领域的数据集,希望针对该领域训练对应LLM
- 重新训练
- 微调(常基于Base model)
- 全参数微调
-
LoRA
-
Prompt Engineering
- RAG(常基于向量数据库)
由于基础模型具有最多的知识,而微调/训练会牺牲总能力(以提高领域表现),同时算力消耗更大
常见的更好方式是PE或者RAG