【不同开源基座大模型对比及领域落地的选型考虑】

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第一次使用GQADeepseek对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,都是活跃度很高很靠谱的选择。只是我们在选择的时候,需要较全面的盘点是否没有考虑到的地方,即这些选型因素可以没用,但不能没有。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/903018.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

太阳能面板分割系统:训练自动化

太阳能面板分割系统源码&数据集分享 [yolov8-seg-EfficientHead&yolov8-seg-vanillanet等50全套改进创新点发刊_一键训练教程_Web前端展示] 1.研究背景与意义 项目参考ILSVRC ImageNet Large Scale Visual Recognition Challenge 项目来源AAAI Globa…

Qt6.7.2中使用OpenSSL的坑

最近编写Qt Quick项目,使用Qt6.7.2版本,CMAKE编译,开始QtCreator运行代码都没有问题,访问https也正常,但打出安装包后一试,发现https访问不了,尴尬!! 查看了相关日志发现…

Flutter登录界面使用主题

Now, let’s use the theme we initially created in our main function for a simple login screen: 现在,让我们使用最初在主函数中创建的主题来制作一个简单的登录屏幕: Create a Login Screen Widget: Inside the main.dartfile, create a new wid…

尚硅谷 | Nginx | 学习笔记

尚硅谷 | Nginx | 学习笔记 尚硅谷Nginx教程由浅入深(一套打通丨初学者也可掌握)_哔哩哔哩_bilibili 文章目录 尚硅谷 | Nginx | 学习笔记一、Nginx相关概念1.Nginx是什么2.正向代理和反向代理正向代理反向代理 3.负载均衡和动静分离负载均衡动静分离 二…

[论文阅读]Detecting Pretraining Data from Large Language Models

Detecting Pretraining Data from Large Language Models http://arxiv.org/abs/2310.16789 这篇文章正式提出了Min-k%方法来实现成员推理攻击 贡献 介绍了WIKIMIA动态基准测试。旨在定期自动评估任何新发布的预训练 LLMs。通过利用 Wikipedia 数据时间戳和模型发布日期&am…

C#与C++交互开发系列(十三):在C#中使用C++编写的DLL,导出类的完整指南

前言 在跨平台和跨语言开发中,C++ 和 C# 的互操作性可以帮助我们实现更灵活且高性能的解决方案。C++ DLL 可以封装高效的算法或硬件相关的代码,而在 C# 中调用这些功能则可以大大简化开发。然而,由于 C++ 和 C# 的底层实现不同,导出 C++ 类并在 C# 中使用并不简单。因此,…

精选:HR招聘管理工具Top5使用体验

作为企业招聘者,如何在选择中找到开启高效招聘之门的钥匙,成为了每一位企业招聘管理者必须面对的难题,在面对市场上琳琅满目的招聘工具,你是否也曾感到无头绪,不知所措?每个工具都声称自己拥有独特的优势和…

python之多任务爬虫——线程、进程、协程的介绍与使用(16)

文章目录 1、什么是多任务?1.1 进程和线程的概念1.2 多线程与多进程的区别1.3 并发和并行2、python中的全局解释器锁3、多线程执行机制4、python中实现多线程(threading模块)4.1 模块介绍4.2 模块的使用5、python实现多进行程(Multiprocessing模块)5.1 导入模块5.2 模块的…

Kafka之消费者客户端

1、历史上的二个版本 与生产者客户端一样,在Kafka的发展过程当中,消费者客户端主要有两个大的版本: 旧消费者客户端(Old Consumer):基于Scala语言开发的版本,又称为Scala消费者客户端。新消费…

Python 中的 @ 符号是如何工作的!

写在前面 Python 中的 符号是一个非常强大而又灵活的功能,它代表一个叫做"装饰器"的"语法糖"。在本文中,我们将一步步地了解它的工作原理,并通过示例代码加深理解。 基本概念 在 Python 中, 符号通常用于…

2024年9月电子学会青少年软件编程Python等级考试(三级)真题试卷

2024年9月青少年软件编程Python等级考试(三级)真题试卷 选择题 第 1 题 单选题 以下python表达式的值为True的是?( ) A.all( ,1,2,3) B.any([]) C.bool(abc) D.divmod(6,0) 第 2 题 单选题 下列python代码的…

python项目实战——多协程下载美女图片

协程 文章目录 协程协程的优劣势什么是IO密集型任务特点示例与 CPU 密集型任务的对比处理 I/O 密集型任务的方式总结 创建并使用协程asyncio模块 创建协程函数运行协程函数asyncio.run(main())aiohttp模块调用aiohttp模块步骤 aiofiles————协程异步函数遇到的问题一 await …

【Linux系统编程】——探索Shell:工作原理与运行机制以及Linux的权限管理

文章目录 1. 什么是 Shell?2. Shell 的工作原理3. Shell 的运行机制4. Shell 的应用场景5. Shell 脚本的优缺点Linux权限的概念Linux权限管理文件权限值的表示方法文件访问权限的相关设置方法 目录的权限粘滞位关于权限的总结 1. 什么是 Shell? Shell 是…

Linux下的文件系统(进程与文件)

windows下的文件构成 .内容 .属性 所以, 文件的构成为内容和属性。 文件 内容 属性 推此即彼, linux下的文件构成也是如此。 liunx下,文件 文件的内核数据结构(属性)内容 深入理解c语言中的文件操作 在c语言中如…

【笔记】LLM位置编码之标准位置编码

标准位置编码 起源原理证明:对于任何固定的偏移量 k k k, P E p o s k PE_{posk} PEposk​可以表示为 P E p o s PE_{pos} PEpos​的线性函数。计算 P E p o s k 与 P E p o s PE_{posk} 与PE_{pos} PEposk​与PEpos​的内积结论 通俗理解缺点 起源 由…

论文笔记:LaDe: The First Comprehensive Last-mile Delivery Dataset from Industry

2023 KDD 1 intro 1.1 背景 随着城市化进程的加快和电子商务的发展,最后一公里配送已成为一个关键的研究领域 最后一公里配送,如图1所示,是指连接配送中心和客户的包裹运输过程,包括包裹的取件和配送除了对客户满意度至关重要外…

诺基亚的裁员风暴

大家好,我是鸭鸭! 不知道 80、90 后还记得童年神机诺基亚吗? 虽然诺基亚早就把自家手机业务出售,但依然是一代通信巨头。 鸭鸭最近看到新闻,诺基亚已经在大中华区裁减了近 2000 名员工 。 根据 2023 年底&#xff0…

YOLOv8实战野生动物识别

本文采用YOLOv8作为核心算法框架,结合PyQt5构建用户界面,使用Python3进行开发。YOLOv8以其高效的实时检测能力,在多个目标检测任务中展现出卓越性能。本研究针对野生动物数据集进行训练和优化,该数据集包含丰富的野生动物图像样本…

9.Linux按键驱动-工作队列

1.思路 1.1在gpio结构体中定义工作队列 1.2 在probe函数中初始化工作队列 1.3.在中断服务程序中调度工作队列 1.4工作队列处理函数&#xff1a; 2.编程 程序&#xff1a; #include <linux/module.h> #include <linux/fs.h> #include <linux/errno.h> #…

C语言程序设计:现代设计方法习题笔记《chapter6》下篇

第七题 square3.c代码 #include<stdio.h>int main() { int i, n, odd, square;printf("This program prints a table of squares.\n");printf("Enter number of entries in table: ");scanf_s("%d", &n);i 1;odd 3;for (square 1;…