分享好友 最新动态首页 最新动态分类 切换频道
LLaMA详细解读
2024-12-26 20:55

LLaMA 是目前为止,效果最好的开源 LLM 之一。精读 LLaMA 的论文及代码,可以很好的了解 LLM 的内部原理。本文对 LLaMA 论文进行了介绍,同时附上了关键部分的代码,并对代码做了注释。

LLaMA是一个系列模型,模型参数量从7B到65B。在大部分的任务上,LLaMA-13B强于GPT-3(175B)。LLaMA-65B的性能,可以和最好的LM相媲美,如Chinchilla-70B 和 PaLM-540B。

一般而言,模型越大,效果越好。然而有文献指出[1],当给定计算量的预算之后,最好的performance,并不是最大的模型,而是在一个小模型上用更多的数据进行训练。针对给定的计算量预算,scaling laws可以计算如何选择数据量的大小和模型的大小。然而这忽略了inference的预算,而这一点在模型推理时非常关键。当给定一个模型performance目标之后,最好的模型不是训练最快的模型,而是推理最快的模型。尽管在这种情况下,训练一个更大的模型成本会更低。

文献[2]中推荐,训练一个 10B 的模型,需要 200B 的 tokens,而本文的实验发现,一个7B的模型,经过 1T tokens 训练之后,performance 仍然在增加。本文的目标在于,通过在超大规模的数据上训练,给出一系列可能最好 performance 的 LLM。

2.1 数据集

一共有1.4T的tokens,大部分的训练数据都只用了一次,除了Wikipedia 和 Books 使用了大概2个epochs。

Pre-training data

2.2 tokenizer

使用byte pair encoding (BPE) 算法,使用的是Sentence-Piece的实现。所有数字被拆分为单独的digit,所有未知的UTF-8 字符,回退到字节来进行分解。因此,LLaMA 可以通过byte 的方式,构造出很多不在 vocab 中的字符,从而也具有较好的多语言能力。

使用了基于transformer的架构,并做了如下3点改进

3.1 Pre-normalization

为了提高训练的稳定性,对每个transformer层的输入进行归一化,而不是输出进行归一化。

同时,使用 RMS Norm 归一化函数。RMS Norm 的全称为 Root Mean Square layer normalization。与 layer Norm 相比,RMS Norm的主要区别在于去掉了减去均值的部分,计算公式为

RMS Norm 的作者认为这种模式在简化了Layer Norm 的计算,可以在减少约 7%∼64% 的计算时间[3]。

 

3.2 SwiGLU

SwiGLU 在论文[4] 中提出,相比于其他的激活函数变体,可以取得 log-perplexity 的最优值(和 GEGLU 并列)。

GLU Variants Improve Transformer

SwiGLU 及几种类似变体的计算公式如下

 

从代码可以看到 LlamaMLP 中一共有 3 个 Linear 层,原因就在于 SwiGLU 激活函数比类似 ReLU 的激活函数,需要多一个 Linear 层进行门控。

3.3 RoPE

RoPE 的核心思想是“通过绝对位置编码的方式实现相对位置编码”,可以说是具备了绝对位置编码的方便性,同时可以表示不同 token 之间的相对位置关系。[5] 不同于原始 Transformers 论文中,将 pos embedding 和 token embedding 进行相加,RoPE 是将位置编码和 query (或者 key) 进行相乘。具体如下

Rotary Position Embedding

其中,左侧的矩阵 𝑅𝑚 表示位置第 𝑚 个位置的位置编码,右侧的向量 𝑞𝑖 表示对应位置的 query 向量。两者相乘,即可得到增加了位置信息的 query (或者 key)。由于 𝑅𝑚 的稀疏性,上述矩阵乘法可以等价于

Rotary Position Embedding 的简化实现

RoPE的代码实现如下[6]

 
 

加速训练

  • 使用了xformers库。
  • 减少了activation checkpointing 中,重新计算 activation 的计算量。手动实现 transformer 层的反向传递函数,保存了计算成本高的 activations,例如线性层的输出。
  • 通过使用 model parallelism 和 sequence parallelism 来减少显存的使用量。
  • 尽可能地将 activations 的计算和GPU之间的通讯进行并行。

加速效果

  • 65B的模型,在2048个80G的A100 GPU上,可以达到380 tokens/sec/GPU的速度。训练1.4T tokens需要21天。

Massive Multitask LanguageUnderstanding

LLaMA-13B 优于 GPT-3,尽管只有1/10大小。 LLaMA-65B 是可以与 Chinchilla-70B 和 PaLM-540B 这种最佳的LLM相竞争的模型。经过微调之后,LLaMA的效果有显著的提升。

未来打算发布在更大的语料上预训练上的更大的模型,因为随着数据和模型的增大,可以看到 performance 的稳定提升。

优化器

LLaMA使用了AdamW优化器进行训练,优化器的超参数为 =0.9, =0.95

(关于AdamW这个大模型训练的优化器,可参考当前训练神经网络最快的方式:AdamW优化算法+超级收敛 | 机器之心[6])

下表为LLaMA不同参数大小模型的具体设置

表2: LLaMA不同参数大小模型的具体设置

参数维度(dim)head个数layer层数学习率batch sizetoken数量6.7B409632323.0e−44M1.0T13.0B512040403.0e−44M1.0T32.5B665652601.5e−44M1.4T65.2B819264801.5e−44M1.4T

训练结果

如下图所示,7B、13B、33B和65模型的训练损失均呈下降趋势,且在所有token上训练完后,loss仍没有收敛的趋势。因此,在此时,增加训练的token数量,仍然可以使模型继续学习。

(LLaMA2就是在此结论的基础上,使用了更多的token进行训练

高效部署

研究团队做了一些优化来提高模型的训练速度

  1. 因果多头注意的有效实现使用因果多头注意的有效实现来减少内存使用和运行时间。该实现可在xformers库中获得,其灵感来自于固定激活值显存优化和FlashAttention。这是通过不存储注意力权重和不计算由于语言建模任务的因果性质而被掩盖的key/query分数来实现的。

  2. 激活重计算为了进一步提高训练效率,通过检查点减少了在向后传递过程中重新计算的激活量。更准确地说,节省了计算成本高的激活,比如线性层的输出。这是通过手动实现transformer层的backward函数来实现的,而不是依赖于PyTorch的autograd。

  3. 模型并行和序列并行为了从这种优化中充分受益,需要通过使用模型和序列并行来减少模型的内存使用。此外,还尽可能地重叠激活的计算和gpu之间通过网络的通信。

笔者NOTE:LLM的高效训练是LLM工程实现的基础,对于这部分,各位小伙伴还是需要深入地了解一下各种并行策略、因果多头注意的有效实现、 激活重计算、混合精度训练。

最新文章
秒杀活动工具,用发一发小程序
商家在做秒杀活动时,锁定目标用户群可是非常重要的一点,先要清楚参与活动顾客是什么类型的群体,更偏向什么样的产品需求,能更好的促使秒杀活动的成功。拥有一个秒杀活动工具也是活动成功的关键,那么秒杀活动工具有哪些?点击下方即可使
【新农人】安丘市农业考察团莅临广东新农...
 从1926年南洋归来的徐闻人倪国良在愚公楼村栽下第一棵菠萝,到种植范围由愚公楼扩大到全县,乃至跨出县域,广东省湛江市徐闻县的菠萝种植已经有了近一个世纪的历史。  在近百年发展的基础上,徐闻县近几年通过国家现代农业产业园创建,
给一个网站让做优化自然排名做到百度首页前三要怎么做
在开始进行网站优化之前,首先要明确我们的目标:将网站的自然排名提升到百度首页前三。这需要我们对网站的关键词、内容、结构、外部链接等多个方面进行全面优化。关键词研究与策略制定1. 选择合适的关键词:根据网站的主题和定位,选择具
融水网络推广优化,企业腾飞的新动力引擎
融水网络推广优化,成为企业发展的新引擎,通过精准策略提升品牌知名度,拓宽市场渠道,助力企业高效腾飞,实现业绩飞跃。随着互联网的飞速发展,网络营销已经成为企业品牌推广、产品销售的重要手段,在竞争激烈的今天,如何进行有效的融水
淘宝店铺为什么要补流量?
现在很多朋友在运营淘宝店铺的时候,一上来就会选择提升销量,有的会选择提升流量,有的会选择提升排名,有的会选择提升关键词,提升关键词里有大学问,今天跟各位分享一下淘宝运营如何提升词?淘宝运营如何提升词当我们新品上架以后,从前
粉笔垂域大模型落地面试场景 AI考官1:1模拟真实考场
  2025年度国考笔试已经落幕,广大考生即将投入到紧张的面试备考复习中。公考行业龙头粉笔(02469.HK)宣布,基于公司自研垂域大模型,推出精品面试AI点评产品,于12月13日正式上线,用户可以以1元/次的价格限时进行体验。  据了解,精
置顶【商家券API】常见问题官方精选热门
Q1:商家券接口文档参数字段”适用商品范围goods_name”是在哪里展示的?A1:在商家券详情里的优惠说明展示,具体展示规则如下:换购券:“商家券批次名称stock_name”和“适用商品范围goods_name”拼接满减券:适用商品范围goods_name折扣
新奥精准资料免费大全,可持续执行探索_免费版46.676
随着数字时代的到来,数据的获取和分析成为了企业决策的重要依据。新奥精准资料免费大全,免费版46.676,作为一套全面的数据分析工具,为用户提供了强大的数据支持。本文将详细介绍这一工具的特点、功能以及如何可持续地执行探索。新奥精准
自我提升的4个好方法
月5停止无意义的抱怨。要明白,无论当下的处境多么艰难,都只是你自己造成的,与别人无关,抱怨只会雪上加霜,并不能带来任何有用的改变。与其怨天尤人,不如停下吐槽的嘴巴,踏踏实实地去做一些能改变生活的事。如果你觉得自己一无是处,
营销推广岗岗位职责
营销推广岗岗位职责15篇  在我们平凡的日常里,接触到岗位职责的地方越来越多,制定岗位职责能够有效的地防止因为职位分配不合理而导致部门之间或是员工之间出现工作推脱、责任推卸等现象发生。一般岗位职责是怎么制定的呢?下面是小编收
相关文章
推荐文章
发表评论
0评