专栏名称: 极市平台
极市平台是由深圳极视角推出的专业的视觉算法开发与分发平台,为视觉开发者提供多领域实景训练数据库等开发工具和规模化销售渠道。本公众号将会分享视觉相关的技术资讯,行业动态,在线分享信息,线下活动等。 网站: http://cvmart.net/
目录
相关文章推荐
山西省邮政管理局  ·  雪花纷飞,寒意未减!未来三天这些地方雨雪持续…… ·  10 小时前  
财联社AI daily  ·  独家!蚂蚁下场自研人形机器人 ·  昨天  
财联社AI daily  ·  独家!蚂蚁下场自研人形机器人 ·  昨天  
山西发布  ·  2024年山西招商引资成绩单出炉 ·  昨天  
山西广播电视台  ·  名单公布!山西23所学校试点五年制高职 ·  2 天前  
山西广播电视台  ·  名单公布!山西23所学校试点五年制高职 ·  2 天前  
51好读  ›  专栏  ›  极市平台

PanGu-π-Pro:重新思考 "小" 的大语言模型的优化和架构

极市平台  · 公众号  ·  · 2024-03-30 21:37

正文

↑ 点击 蓝字 关注极市平台
作者丨 科技猛兽
编辑丨极市平台

极市导读

作者基于 1B 参数的 "小" 的大语言模型探索了3点:网络架构、参数初始化和优化策略。作者在 1.6T 的多语言语料库上训练了 PanGu-π-1B Pro 和 PanGu-π-1.5B Pro。PanGu-π-1B Pro 相比于 PanGu-π-1B,在基准数据集上产生了 8.87 的平均改进。而 PanGu-π-1.5B Pro 更是超越了一系列更大的模型,验证了其卓越的性能. >> 加入极市CV技术交流群,走在计算机视觉的最前沿

本文目录

1 LLaMa 2:开源微调的聊天大语言模型
(来自北京华为诺亚方舟实验室)
1.1 背景:大语言模型在端侧部署受限
1.2 网络架构探索:分词器
1.3 网络架构探索:架构调整
1.4 训练策略探索:权重继承
1.5 训练策略探索:多轮训练
1.6 模型 PanGu-π Pro

太长不看版

本文探索的问题是如何为端侧设备设计适合的 "小" 的大语言模型。由于端侧设备算力和显存的限制,迫切需要设计出满足要求且高性能的 "小" 的大语言模型。然而大语言模型的训练本身就很复杂,有许多优化细节在之前鲜有探索。

在本文中,作者基于 1B 参数的 "小" 的大语言模型探索了3点:网络架构、参数初始化和优化策略。得出4点对小模型有帮助的结论,它们分别是:

  1. 分词器压缩
  2. 架构调整
  3. 参数继承
  4. 多轮训练

作者在 1.6T 的多语言语料库上训练了 PanGu-π-1B Pro 和 PanGu-π-1.5B Pro。PanGu-π-1B Pro 相比于 PanGu-π-1B,在基准数据集上产生了 8.87 的平均改进。而 PanGu-π-1.5B Pro 更是超越了一系列更大的模型,验证了其卓越的性能,比如性能优于 Qwen1.8B[1],参数减少了 16.67%。

本文得出了哪些结论

1) 网络架构:

  • 直接使用大模型的分词器 (tokenizer) 会引入冗余参数,导致计算开销增加。通过去除低频词汇表来简化分词器可以提高模型的效率。
  • 模型架构的配置 (比如模型深度、宽度,以及 FFN 中的和扩展率) 对最终性能有显着影响。深度是影响小型语言模型性能的主要因素,更深的模型通常以更低的推理速度实现更高的性能。

2) 参数继承:

从大模型中继承参数有助于提高性能和加快收敛速度。而且,参数也有重要性,比如作者观察到模型开始和结束附近的层通常比中间的层更重要。而且,在每一层中,采用数据驱动的,可学习的方式的效果更好。

3) 模型优化:

与较大的模型相比,更小的模型会面临更为严重的数据遗忘问题。多轮训练技术是一个被证明了有利于记忆增强的方案。本文作者提出了一种样本选择策略来减轻与多轮训练的成本。此外,还研究了小模型 Batch size 与学习率的关系。

使用以上所有改进,本文最终训练出 PanGu-π-1B Pro 和 PanGu-π-1.5B Pro 两个 "小" 的大语言模型,中间结果如下图1所示。作者在各种基准上进行评估,包括检查,知识,推理和理解,PanGu-π-1.5B Pro 的平均得分为 56.49,优于 Qwen-1.8B,得分为 55.04。

图1:PanGu-π Pro 的探索过程的结果。PanGu-π-1B Pro 相比于 PanGu-π-1B,在基准数据集上产生了 8.87 的平均改进,PanGu-π-1.5B Pro 的性能优于 Qwen1.8B,参数减少了 16.67%

1 PanGu-π-Pro:重新思考 "小" 的大语言模型的优化和架构

论文名称:Rethinking Optimization and Architecture for Tiny Language Models

论文地址:

https//arxiv.org/pdf/2402.02791.pdf

代码链接:

https//github.com/YuchuanTian/RethinkTinyLM

  • 1 PanGu-π-Pro 论文解读:

1.1 背景:大语言模型在端侧部署受限

以 ChatGPT 为代表的大语言模型 (Large Language Models, LLM) 有可能彻底改变人与计算机之间的交互,在各种自然语言任务中展示了令人印象深刻的性能。除了 GPT 系列[2]的模型之外,还有一些开源的 PaLM[3],LLaMA[4]等模型架构和训练的权重都是开源的语言模型。除此之外,也有很多大语言模型都使用了类似的架构和训练策略,比如 Baichuan[5],Qwen[1],Yi[6],Skywork[7]等等。清洁的训练数据不断增加,大语言模型的性能也在不断提升。虽然许多研究已经成功地训练了各种高性能语言模型,但是:一方面,探索大语言模型的训练策略方面的努力却比较少,即大量的工作都聚焦于收集和清理数据。另一方面,大模型的训练需要大量的计算资源,这就使得广泛探索的优化策略变得不切实际。

而且,大模型的实现需要非常高的内存和计算资源,限制了它们在各种场景中的实际适用性。比如使用 FP32 数据类型存储时,具有 175B 参数的 GPT-3 需要大约 700GB 的内存。尽管 7B 参数的模型占用内存相对较少,但这个资源要求对于移动设备 (例如手机) 上的部署不切实际。

1.2 网络架构探索:分词器 (Tokenizer)

探索实验数据集:从预训练的数据集中随机抽样 50B 个 token,中文和英文语料的比例相等。

模型:LLaMA-like 架构,1B 参数。

分词器用于将原始自然语言映射到适合大语言模型处理的 tokens,每个 token 代表一个单词、子词、字符或符号。多语言标记器通常具有较大的词汇表来涵盖各种语料库。分词器一般有一个很大的词汇表来覆盖各种语料库。对于小的模型来讲,词汇表的大小也不可忽视了。Qwen-7B,Baichuan2-7B 和 PanGu-π-7B[8]的词汇表大小分别是 151936, 125696, 100883。它们头部和嵌入层的参数占总参数的 16.12%、13.72%、10.91%。PanGu-π-1B 模型有 12 层,使用相同词汇表,参数就占了总参数的 36.8%,如下图2所示。

图2:模型主体和分词器的参数比例。(a) 原始 PanGu-π-1B 模型,不使用紧致分词器。(b) 改进的 PanGu-π-1B 模型,使用紧致分词器

这种分布导致将参数分配给词汇表示而不是主体,这可能会限制模型的整体表示能力。因此,就要对小模型的分词器进行压缩,以降低其参数在整个模型中的比例。

而且,作者也发现了分词器中存在大量冗余。按照从 PanGu-π 模型继承的 100K 词汇量的词汇表的 tokenizer 进行分析,作者对一个包含了大约 1.6T 标记的大型语料库的频率分析,结果如下图3所示。

图3:Top-k 词汇表的累积频率分析结果:97.86% 的数据可以通过一个小于 48k 的分词器表示

可以看到,前 Top-48K 的词汇,占据了所有训练语料库的 97.86%。作者实验了6种词汇表尺寸:{8k, 16k, 32k, 48k, 72k, 100k},其累积频率分别为 78.68%, 87.24%, 94.49%, 97.86%, 99.84% 和 100%。也就是说,语料库里面超过 50% 的词汇是冗余的,因为这些词汇在整个语料库中出现的累计频率不足 3%。因此,可以把低频的词汇删除,减小词汇表的大小,给正儿八经模型的参数腾出空间。

实验结果如下图4所示。当使用 48K 的词汇表时,嵌入和头部层构成了 1B 模型参数的 18.07%,平均性能最佳,然后是词汇量为 32K 的模型。

图4:性能与分词器数量的关系。PEHF 代表 Embedding 和 Head 占模型总参数量之比

但是,使用过小的词汇表会导致性能下降。例如,使用覆盖不到 70% 语料库的 8K 分词器,该模型在 C3 和 ARC-E 数据集上表现出低于标准的性能。作者的建议是使用覆盖范围超过语料库 90% 的分词器,同时确保 Embedding 和 Head 层的参数比例保持在 20% 以下。

1.3 网络架构探索:架构调整

下面作者探索 LLM 的架构细节,包括:深度,宽度,FFN 的扩展率对 1B 大小的语言模型的性能的影响。评价的指标包括下游任务的性能以及解码速度,评价的方法是使用随机初始化的模型,实用2个 tokens 的前缀,解码 510 个新 tokens 的端到端推理速度。速度在单个 NVIDIA V100 GPU 上进行了测试,Batch Size 为 20,使用 FP16。

调整深度和宽度的结果如下图5所示。可以发现,更深的小模型表现出更好的性能,但代价是推理速度也降低了。随着模型深度的增加,几乎所有三个基准的性能都有所提高。但是性能提升效应递减。所以,作者建议在分词器大小为 48K 的情况下,将深度设置为 20 层。

图5:改变 1B 尺寸模型的深度和宽度的性能以及速度结果,速度的衡量标准是 tokens per second

如图6所示是改变 FFN 扩展率以及宽度的结果。当深度固定时,可以看到不同扩展率的推理速度都是十分接近的。当 EP Rate 为 1 时,性能很差。EP Rate 最终选定为 2.77。

图6:改变 1B 尺寸模型的 FFN 扩展率和宽度的性能以及速度结果,速度的衡量标准是 tokens per second

为了进一步研究深度、宽度和扩展率之间的相互作用,作者对大约 30 个不同的参数配置进行采样,同时保持 1B 参数的模型大小,并在包含 5B tokens 的进一步精简数据集上进行训练。实验结果如图7所示,可以发现,深度对于下游任务的影响较高。Spearmanr 相关系数达到 0.528。相比之下,FFN 扩展率与模型的性能没有明显的线性关系。

图7:模型深度,宽度,和 FFN 扩张率与性能的关系

经过本节的探索,最终的模型配置如图8所示。

图8:不同大小的模型配置

1.4 训练策略探索:权重继承

随机初始化参数

当从头开始训练模型时,参数通常使用正态分布 进行初始化。很多大语言模型精心设计了 的值,比如将其改为随层数变化,比如 GPT-2 为所有线性层参数使用了 的 scale,其中 为层数。InternLM 仅将相同的尺度应用于一些特殊的线性层参数。这几种策略的结果如图9所示。最终作者选择了为所有的层使用恒定标准差的正态分布。

图9:不同参数初始化的实验结果,其中恒定标准差方法的表现最好

从大模型继承参数

同时,小模型的参数也可以直接从大模型中继承得到。与小模型相比,大模型通常有更多的层具有更多的神经元。作者首先选择重要的层,然后识别所选层中的关键神经元。

首先需要识别出大语言模型中,对最终性能比较关键的层。作者在 LLaMA2-7B, LLaMA2-13B, InternLM-7B 和 PanGu-π-7B 这几个模型上进行了实验。在推理阶段,故意去跳过一些特定的层并评估性能下降。可以跳过1层,2个连续的层,以及3个连续的层。实验结果如图10所示。X 轴表示跳过的层索引,而 Y 轴表示性能。

图10:不同的模型在跳过1层,2层,和3层时的性能

从上图中可以得到一些有趣的结论:浅层,尤其是初始2到3层,在从输入序列中提取特征方面起着关键作用。删除这些层会在下游任务上产生显着的性能下降。深层的效果也差不多。只有中间层对于结果的影响是最小的。在参数继承时,这些层可以被删掉。

在某一层中,可以通过各种指标识别重要的参数,其中最重要的神经元参数被用作小模型的初始化参数。那么衡量参数重要性的方式有很多,其中比较知名的是 \ell_1\ell_1 和 \ell_2\ell_2 范数等等。作者这里尝试了4种方法从 PanGu-π-7B 模型中选择关键参数作为权重尺寸较小的 1B 模型的初始值,结果如图11和12所示。

图11:不同权重继承方式的结果
图12:不同权重继承方式的训练曲线

与随机初始化的基线模型相比,使用权重继承策略初始化的每个小模型都会收敛到相对较低的损失。作者最后建议用可学习的策略继承模型参数。

1.5 训练策略探索:多轮训练

作者首先探索了 Batch Size 对于模型性能的影响,使用下式 来调节学习率,其中默认的 分别为 。实验结果如图13所示。可以看到在大多数情况下,小于 的 Batch Size 是保证模型性能的安全范围。

图13:不同 Batch Size 和学习率的实验结果

多轮训练策略

现有的方法通常只对语言模型训练一轮,即所有数据都只用于更新模型1次,那么就造成模型的参数没有能够完全收敛。在大型语料库上学习可能会受到灾难性遗忘的影响。而对于小模型来讲,有限的模型容量很容易使得遗忘问题加剧。继续训练可以进一步减小训练损失。

作者进行了一个简单的实验来验证遗忘问题。由于 training loss 的计算过程与模型参数相关,那么到了训练后期的 training loss 相对较低,也就意味着此时的模型参数对应了更低的 training loss。因此,作者在训练之前把训练数据均匀分成 8 份,并计算训练过程中每一部分的平均 loss value 的值,使用的模型是 PanGu-π-1B。

图14:使用 PanGu-π-1B 模型,每个 Batch 里面的平均 loss 的值

更高的 loss 意味着先前的知识已经严重遗忘掉了。因此,有必要对模型进行多轮训练,以弥补遗忘的知识。

为了减小训练的代价,作者提出了一种用于多轮训练的简单的数据精炼策略。考虑到一些训练样本很难拟合,因此需要更进一步的训练。下图15所示是下一轮训练的采样率 与性能的关系, 意味着不使用多轮训练,即只训练 1 轮。也可以看得出来更高的采样率可以获得更强的性能,同时当采样率超过







请到「今天看啥」查看全文