Key Takeaways:
- 1、从数据、Tokenizer、模型架构对比不同qwen、deepseek、llama、yi等模型
对于开源大模型的数据和预处理来说,一般我们会关注如下的一些维度;
预训练数据:训练数据的数量、质量与多样性
,是模型泛化能力的保障,唯有“吃得好”,模型方能“长得壮”;一般我们需要关注基座模型的数据量有几个T、数据来源、数据处理方式等;除了数据本身的处理之外,预训练的策略也很重要,arxiv/2309.14316 Physics of Language Models: Part 3.1, Knowledge Storage and Extraction这篇论文关于提升预训练基座模型效果中建议在预训练阶段就引入更多的指令微调数据,而不是将所有问答数据推迟到微调阶段。这有助于模型更有效地编码知识,能够获得更好的模型泛化能力。这个做法在Qwen技术报告中就有提及。
多语言支持:数据本身的训练语言决定了其所能投入使用的应用边界。对于我们来说,一般会考虑中文及多语言的应用场景效果
实现简单的BBPE:
1、初始化词表:构建初始词表,包含一个字节的所有表示(256)。
2、构建频率统计:统计所有子词单元对(两个连续的子词)在文本中的出现频率。
3、合并频率最高的子词对:选择出现频率最高的子词对,将它们合并成一个新的子词单元,并更新词汇表。
4、重复合并步骤:不断重复步骤 2 和步骤 3,直到达到预定的词汇表大小、合并次数,
或者直到不再有有意义的合并。
5、分词:使用最终得到的词汇表对文本进行分词。
词表大小:模型的词汇表大小是其语言理解的基石,一个丰富的词汇库,会极大地扩展模型的表达能力,同时能减少推理时所需token数。
Tokenizer算法: 主流基本都采用BBPE,工具使用google的SentencePiece或Openai的tiktoken
既然是针对字节的BPE算法,就不会出现OOV问题,但会把不在词表中的一些中文切的非常碎,这样对于自回归生成任务来说是会非常影响效率的,所以一般我们需要去观察分析基座模型的词表大小。
LLama 2:Chat Models
- Decoder-only 的架构
- 与 llama 一样使用 RMSNorm, SwiGLU,RoPE, PreNorm,BPE 不同点:
- 增加 GQA(group query attention):但是在 7B 和 13B 上没有增加 GQA,70B 上使用的 GQA。
- 数据增加 40%,max_seq_len: 2048 变为 4096
- 进行有监督微调和 RLHF。
- 使用 3w 高质量 SFT 数据进行 llama2-chat。
Qwen
1 预训练
- 预训练数据共
3TB
, 涵盖公共网络文档、百科全书、书籍、代码等多语种内容, 以中文和英文为主
采用了一套全面的数据预处理程序, 包括从 HTML 中提取文本、删除重复数据、过滤低质量数据、人工审查等步骤, 以确保数据质
2 Tokenizer
- 使用开源快速 BPE 分词器 tiktoken, 在 cl100k 基础词库上增加了中文字词和其他语言词汇, 将数字字符串拆分, 最终词表大小为 152K
- Embedding 和 output projection 不进行权重共享
- 使用 RoPE 作为位置编码,FP32 精确度的逆频率矩阵
- 在 QKV 注意力层添加偏差, 增强模型外推能力
- 采用预归一化和 RMSNorm 提高训练稳定性
- 使用 SwiGLU 激活函数, 减小了隐藏层维度
3 外推能力扩展
- 利用简单非训练计算, 在推理过程中扩展上下文长度
- 动态 NTK 感知插值, 对位置信息动态缩放
- LogN-Scaling, 根据上下文长度调整注意力值熵
- Window Attention, 限制注意力在局部上下文窗口内
2 、模型结构
1、Transformer decoder整体结构如下,以LLaMa3-8B为例
由于很多模型如qwen、llama、mistral、yi等开源基座都是相互借鉴,考虑到大模型的巨大预训练成本,大家基本都会采用类似的架构
,真正能在架构上进行创新的公司,都会被大家所追捧点赞!比如LLaMa2 70B第一次使用GQA
,Deepseek对MHA到MLA的改进
知识容量
有篇研究大模型知识容量的论文https://arxiv.org/pdf/2404.05405.pdf
论文标题:Physics of Language Models: Part 3.3, Knowledge Capacity Scaling Laws
Physics of Language Models: Part 3.3, Knowledge Capacity Scaling Laws比较了GPT-2、LLaMA和Mistral等不同模型架构,发现在充分训练下,它们都接近于2比特/参数的容量比率。论文通过对比实验发现,在1000次曝光的条件下,所有模型(包括使用GatedMLP的LLaMA/Mistral和使用标准MLP的GPT-2)都能达到大约2比特/参数的知识存储比率。然而,在训练次数较少(如100次曝光)的情况下,GatedMLP的性能下降更为明显。进一步说明网络架构的重要性。
如果训练时间充足,作者发现,不论使用何种模型架构,GPT2 或 LlaMA/Mistral,模型的存储效率均
可以达到 2bit/param—— 即平均每个模型参数可以存储 2 比特的信息。这与模型的深度无关,
仅与模型大小有关。换言之,一个 7B 大小的模型,如果训练充足,可以存储 14B 比特的知识,
这超过了维基百科和所有英文教科书中人类知识的总和!
位置编码:
现在基本清一色的Rope了 ,建议查阅 https://kexue.fm/archives/8265
`
注意力机制:MHA、MQA、GQA、MLA
https://kexue.fm/archives/10091 从标准多头注意力到更大尺寸模型的GQA和MLA,这一部分基本是为了不丢效果情况下的性能优化``
Pre-RMSNorm
目前业内的各种模型如qwen、llama、mistral、deepseek等大厂又无一例外的都是PreRMSNorm,也很难得出结论说在更较大模型下的norm方式选择的差异性。所以这个问题上可以先了解其原理再观望分析看看。
激活函数swiglu
Activation Function:这关系到模型对于信息的筛选,选择ReLU、GELU、Swish等不同的激活函数,会对模型产生不小影响。
注意力隐藏层维度、全连接隐藏层维度 :
Intermediate Size:中间层的大小影响模型的学习和复杂度,一个恰到好处的中间层,能够使模型既不过于简单,也能较为高效。
Hidden size决定了模型内部表示的丰富程度。更大的hidden size可以捕获更复杂的特征和模式,但同时也会增加模型的参数量和计算负
Base版本、Instruct版本和Chat版本的不同
base版本只是做了next token prediction的预测,相当于纯粹是学习下一个词。
instruct会遵循特定的指令,代表听话能力。
chat版本会对齐helpful、harmnless、honest
, 会有alignment tax问题。
为什么会有对齐的问题呢,个人浅显理解为这几个本身是会冲突的,有用的东西可能会有害,这其中的边界无法完全界定开,如果涉及到不同政治立场,可能更会对知识本身的纯粹性施加影响。所以这种对齐会影响到大模型本身的知识体系是不难理解的,只不过大家都在优化对齐技术,确保这种影响更小,或者提供一些instruct的版本供一些落地文本任务使用。
另一方面,chat版本大部分都会做多轮对话,所以对于很多的上下文问题如指代消解,信息省略等场景chat版本应该会处理的更好,如果期望构建类似的agent或者多轮对话场景,这无疑是个比较好的选型。
领域落地选型的探讨
大致理了一些选型因素如下:
特定领域的适应性:模型需要能够适应专业领域的数据。直接关系到模型在特定任务上的表现,是选型时的首要考量。
成本效益分析:衡量模型训练与部署成本,以及预期回报。
部署成本 需要几张卡,比如moe虽然激活参数少, 但占用的显存可一点没少
社区与生态:充满活力的社区,成熟的生态系统,可以为模型使用者提供丰富的资源。
伦理与合规:确保模型选择和使用遵循伦理和法规,坚守道德高地。
基座本身 - 了解基座模型本身的网络设计
架构的领先和深度
基座本身 - 了解基座模型的预训练数据量是否 overtrainned
基座本身 - 看模型时效性和大厂背书
meta
mistral
baichuan
qwen
deepseek
基座本身 - 覆盖面:各个规模各个类型的都有。dense和moe都有
qwen
deepseek
效果指标 - 看相关榜单?相关榜单和指标能够直观地展示模型的性能,是评估模型效果的重要参考。
mmlu、math 分别对应文科任务 还是理科任务
大模型竞技场、lmsys排名
功能覆盖,包括上下文长度和是否支持tool调用等,功能覆盖的广度和深度影响模型的适用性。
看上下文长度
是否支持tool调用
任务匹配程度 - 看任务类型:
文本理解:比如分类匹配信息抽取,这些任务是相对确定性的,
文本生成?这些任务是不确定的
任务匹配程度 - 微调后在领域任务上的效果对比,需要进行实践
理解任务看F1
生成任务看 GPT4 win rate
性能指标 - 速度
是否满足实时处理需求
多语言和多模态
是否支持多种语言
是否支持多种模态
虽然写出了这么多条条框框,但实际去观察最新最热的模型来看一般都没啥问题,比如Meta的LLaMa3系列,Qwen的Qwen1.5全系列,包含qwen-vl和qwen-audio,都是活跃度很高很靠谱的选择。只是我们在选择的时候,需要较全面的盘点是否没有考虑到的地方,即这些选型因素可以没用,但不能没有。