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

  • 文献阅读:LLaMA: Open and Efficient Foundation Language Models
    • 1. 文章简介
    • 2. 模型训练
      • 1. 训练数据
      • 2. 模型结构
      • 3. 模型训练
        • 1. Optimizer
        • 2. 效率优化
    • 3. 效果评估
      • 1. 经典任务下效果
        • 1. Commen Sense Reasoning
        • 2. Closed-book Question Answering
        • 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. 结论 & 思考
  • 文献链接:https://arxiv.org/abs/2302.13971v1
  • git链接:https://github.com/facebookresearch/llama

1. 文章简介

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

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

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

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

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

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

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

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

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

2. 模型训练

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

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

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

1. 训练数据

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

文献阅读:LLaMA: Open and Efficient Foundation Language Models_第1张图片

整体而言,模型训练共使用了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作为位置编码而不是使用绝对位置编码;

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

文献阅读:LLaMA: Open and Efficient Foundation Language Models_第2张图片

3. 模型训练

1. Optimizer

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

2. 效率优化

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

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

  • https://github.com/facebookresearch/xformers

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

3. 效果评估

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

1. 经典任务下效果

1. Commen Sense Reasoning

文献阅读:LLaMA: Open and Efficient Foundation Language Models_第3张图片

2. Closed-book Question Answering

  1. Natural Questions

文献阅读:LLaMA: Open and Efficient Foundation Language Models_第4张图片

  1. TriviaQA

文献阅读:LLaMA: Open and Efficient Foundation Language Models_第5张图片

3. Reading Comprehension

文献阅读:LLaMA: Open and Efficient Foundation Language Models_第6张图片

4. Mathematical reasoning

文献阅读:LLaMA: Open and Efficient Foundation Language Models_第7张图片

5. Code generation

文献阅读:LLaMA: Open and Efficient Foundation Language Models_第8张图片

6. Massive Multitask Language Understanding

文献阅读:LLaMA: Open and Efficient Foundation Language Models_第9张图片

7. Evolution of performance during training

文献阅读:LLaMA: Open and Efficient Foundation Language Models_第10张图片

文献阅读:LLaMA: Open and Efficient Foundation Language Models_第11张图片

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

1. Instruction Tuning效果

文献阅读:LLaMA: Open and Efficient Foundation Language Models_第12张图片

2. Toxicity

文献阅读:LLaMA: Open and Efficient Foundation Language Models_第13张图片

3. Bias

文献阅读:LLaMA: Open and Efficient Foundation Language Models_第14张图片

4. Bias on Gender

文献阅读:LLaMA: Open and Efficient Foundation Language Models_第15张图片

5. TruthfulQA

文献阅读:LLaMA: Open and Efficient Foundation Language Models_第16张图片

4. 结论 & 思考

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

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

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

你可能感兴趣的:(文献阅读,LLaMA,Meta,LLM,开源大模型,NLP)