论文摘要-LLaMA
LLaMA: Open and Efficient Foundation Language Models,是一个包含了 7B ~ 65B 参数量的基础语言模型集合。并且仅仅在公开数据集上训练,T级别的数据量,可以达到Sota 水平。
对于要达到的模型性能,最好的模型并不是训练起来最快,而是推理起来要最快,这样才能节省部署成本。比起快速训练一个大模型,利用更长时间来训练一个小模型,能获得更好的推理性能。我们发现用 1T tokens 训练 7B 模型可以达到的性能,比用 200B tokens 训练一个 10B 的模型还要好。
这项工作的重点是使用更多的训练数据,在不同的推理预算内训练一系列模型,使其达到最佳性能,并且对比现有的 LLMs 的性能。比如 LLaMA-13B 在大多数benchmarks 测试中性能优于 GPT-3,而参数量减小了 10x 以上。LLaMA-65B 模型则可比肩目前最好的大模型如 Chinchilla、PaLM-540B。
训练方法
预训练数据
预训练数据如下表:除了Wikipedia & Books 用了2个epoch,其它都只用了1个epoch

模型架构
与LLMs 一致,基于 transformer 来构建模型,并参考了后续模型的一些改进,主要有:
- Pre-nomalization 【GPT3】
提升训练稳定性,使用 RMSNorm 函数归一化 sub-layer 的输入而不是输出 。 - SwiGLU 激活函数【PaLM】
使用 SwiGLU 代替 ReLU 以提升性能。 - Rotary Embeddings【GPTNeo】
使用 Rotary positional embeddings(RoPE)代替 absolute positional embeddings(APE)
Optimizer
使用 AdmW,beta1=0.9, beta2=0.95, warmup 2,000 steps

训练效率提升
- causal multi-head attention 减少内存占用(xformers 实现)
- 反向过程中减少激活函数的重复计算,并且缓存了如线性层的激活结果,这得手动实现transformer layer 的反向传播代替Pytorch的autograd。
- 尽可能多的覆盖掉GPU之间的网络传输和激活函数计算(基于all_reduce算子)

主要成果
zero-shot : 输入任务描述和测试问题,模型输出生成的答案或对提议的答案进行排序。
few-shot(1, 64):输入几个例子(1到64之间)和一个测试问题,模型输出生成的答案或对不同的选项进行排名。
常识性推理

闭卷问答


阅读理解

数学推理

代码生成

大规模多任务语言理解

本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 waterdropw 的博客!
评论