一个开源的大型语言模型LLaMA论文解读,LLaMA: Open and Efficient Foundation Language Models
返回论文和资料目录
1.导读
LLaMA 是 Meta AI 发布的包含 7B、13B、33B 和 65B 四种参数规模的基础语言模型集合,LLaMA-13B 仅以 1/10 规模的参数在多数的 benchmarks 上性能优于 GPT-3(175B),LLaMA-65B 与业内最好的模型 Chinchilla-70B 和 PaLM-540B 比较也具有竞争力。开源的代码在
github
上可以很方便获得,还有对应的
原论文地址
。
2.摘要和引言
大型语言模型存在一个问题是并非越大的模型具备越优的性能,所以可能存在的情况是一个更小的模型使用更多的数据训练能得到更好的性能。作者发现一个7B的模型在1T的tokens上性能仍然在提升。因此,LLaMA的工作是使用更小的模型得到更优的性能。
另外,在LLaMA中,训练数据全部来自网上公开的数据,作者在论文中介绍了模型及其训练细节。
3.方法
3.1 数据集
数据集如下图所示,其中这些数据都可以从网上的公开源获得。文章这里写的比较详细,而且数据集好像都可以在huggingface上获得。
模型架构
整体架构仍然是Transformer的解码器模块,该模块参考论文Attention is all you need。下面是在Transformer架构上的进一步的3个改进。
-
使用RMSNorm
(即Root Mean square Layer Normalization)对输入数据进行标准化,RMSNorm可以参考论文:Root mean square layer normalization。
-
使用激活函数SwiGLU
, 该函数可以参考PALM论文:Glu variants improve transformer。
-
使用Rotary Embeddings进行位置编码
,该编码可以参考论文 Roformer: Enhanced transformer with rotary position embedding。
优化器
采用AdamW optimizer优化器
,该优化器可以参考论文Decoupled weight decay regularization。下表是训练的一些参数细节。
其他有效改进措施
-
使用
随机多头注意力机制(causal multi-head attention)
提高模型的训练速度。该机制的实现借用了
xformers库
,它的思路是不存储注意力权重,不计算其中注意力得分。
-
手动实现了Transformer的激活函数
,而没有用pytorch库的autograd,以得到更优的训练速度。同时使用了并行化技术提高训练速度。这两个改进点可以参考论文:Reducing activation recomputation in large transformer models.
当训练LLaMA-65B模型时,作者说在80GB显存的2048 A100 GPU上处理速度大约每秒380个token。在包含1.4T token 的数据集上进行训练大约需要21天。
4.主要结论(实验结果)
zero-shot的推理任务实验结果
自然问题实验结果
阅读理解实验结果
数学能力实验结果
生成代码实验结果
多领域任务实验结果
训练过程中在这些问题上的表现
6.模型生成有害错误信息
该模型虽然在这部分更优,但仍然分数较低,和GPT-3等模型一样会瞎编。
相对不重要,略过。
7.训练LLaMA模型会产生多少碳排放
作者通过这个角度来说明,LLaMA可以保护环境,hh。
8.未来工作
作者打算引入InstructGPT的人工引导方式来开展进一步工作,并扩展到更大的模型和更多的数据。
论文解读:SpellGCN: Incorporating Phonological and Visual Similarities into Language Models for Chinese S
论文解读:SpellGCN: Incorporating Phonological and Visual Similarities into Language Models for Chinese Spelling Check(2020ACL)简要信息:序号属性值1模型名称SpellGCN2所属领域自然语言处理3研究内容中文拼写纠错4核心内容语言模型、图神经网络5GitHub源码https:/
gui中的编辑框 java java中gui编程
GUI编程1、简介Gui的核心技术:Swing AWT因为界面不美观。需要jre环境为什么要学习?可以写出自己心中想要的一些小工具工作时候,也可能需要维护到swing界面了解MVC架构,了解监听2、AWT2.1、AWT介绍包含了很多类和接口、GUI、元素:窗口、面板2.2、组件和容器2.2.1.Frame//gui的第一个界面
public class TestFrame {
public