一个开源的大型语言模型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的人工引导方式来开展进一步工作,并扩展到更大的模型和更多的数据。