您现在的位置是:首页 >技术杂谈 >文献阅读:LLaMA: Open and Efficient Foundation Language Models网站首页技术杂谈

文献阅读:LLaMA: Open and Efficient Foundation Language Models

Espresso Macchiato 2024-06-05 12:00:02
简介文献阅读:LLaMA: Open and Efficient Foundation Language Models

1. 文章简介

这篇文章是Meta最近刚放出的一篇新的大模型的论文,最近关于大模型的工作真的太多了……

关于这篇文章貌似也有些段子,貌似一开始Meta还没打算开源,结果又是被人把code爆出来,然后就被迫开源了,我没考证过真实性,反正当成段子听听就行了。

不过关于这篇文章,可能本来就是有一定的开源的打算的,因为文章里面宣称,他只使用了一些常用的公开数据集……

回归正题,这篇文章的核心工作主要就是train了一个更小,但是效果更好的LLM模型。

按照文中的说法,他们train的13B的模型效果就已经基本追平了当前的主流大模型,而到了65B参数的模型,已经可以和PaLM-540B模型相提并论了。

而关于他们如何达到的这样的效果,主要就是通过两点:

  1. train了更多的步数;
  2. 微调了模型的结构。

此外,文中还对训练的代码进行了优化,使得训练可以得到加速。

下面,我们来具体对这篇文章的细节进行一下展开。

2. 模型训练

文中关于这部分的内容主要分三部分进行展开:

  1. 模型训练使用的数据以及分布;
  2. 模型的具体结构;
  3. 模型训练细节

下面,我们来具体看一下其中各部分的内容。

1. 训练数据

首先,关于训练数据方面,如前所述,LLaMA模型所使用的训练数据全都是公开数据集,其具体的分布如下表所示:

在这里插入图片描述

整体而言,模型训练共使用了1.4T个token,而具体的tokenize方法则是采用BPE分词。

2. 模型结构

而关于模型的具体模型的结构,则仕主要基于最早17年Vaswani在Attention is all you need给出的经典transformer结构,但是做了以下三点改动:

  1. 参考GPT3的方式使用Pre-normalization替换掉post-normalization;
  2. 参考PaLM的方式使用SwiGLU作为FFN的激活函数;
  3. 参考GPTNeo使用RoPE作为位置编码而不是使用绝对位置编码;

不同版本的模型的维度以及参数量等可以参考下表:

在这里插入图片描述

3. 模型训练

1. Optimizer

关于模型训练中所使用的优化器,文中倒是没有什么太多的改动,还是使用的AdamW优化器,超参 β 1 = 0.9 , β 2 = 0.95 eta_1=0.9,eta_2=0.95 β1=0.9,β2=0.95,learning rate的decay采用cosine函数,最终的learning rate为起始时的10%,然后设置2000步warmup。

2. 效率优化

不过,文中为了优化效率,倒是自己重新开发了一个多头attention的模块,且优化了线性层的激活函数参数回传更新过程,整体上来说进一步优化了计算效率。

关于这部分的具体实现倒是还没有去看,不过文中宣称说是已经将他们的改动开源到了下述项目当中:

有兴趣的读者可以自行研究一下。

3. 效果评估

然后,介绍完了模型之后,就是看一下LLaMA在各类任务上面的效果表现。

1. 经典任务下效果

1. Commen Sense Reasoning

在这里插入图片描述

2. Closed-book Question Answering

  1. Natural Questions

在这里插入图片描述

  1. TriviaQA

在这里插入图片描述

3. Reading Comprehension

在这里插入图片描述

4. Mathematical reasoning

在这里插入图片描述

5. Code generation

在这里插入图片描述

6. Massive Multitask Language Understanding

在这里插入图片描述

7. Evolution of performance during training

在这里插入图片描述

在这里插入图片描述

2. 其他任务下的评测结果

1. Instruction Tuning效果

在这里插入图片描述

2. Toxicity

在这里插入图片描述

3. Bias

在这里插入图片描述

4. Bias on Gender

在这里插入图片描述

5. TruthfulQA

在这里插入图片描述

4. 结论 & 思考

整体来说其实这篇文章感觉就是一个大模型的实验报告,技术上真要说有什么突破点感觉完全说不上,倒是给出的开源代码和模型非常的有意义,不过估计也就大厂研究岗可以玩玩了……

就我个人来说,还是他在模型结构的改动上面比较打动我,感觉还比较有意思,不过之前好像在苏剑林的哪篇文章里面见过他的一个讨论,印象中他认为pre-normalization虽然可以叠多层,但是训练效果上并不能真正起到多层的效果,这方面可能还是得后面研究一下Fundation Transformer的效果。

不过RoPE和SwiGLU倒是可以试试看用在小模型上是否能有效,虽然我估摸着效果应该也不会太明显……

风语者!平时喜欢研究各种技术,目前在从事后端开发工作,热爱生活、热爱工作。