某品牌休闲零食网站建设规划书,做网站的基本功,网站虚拟主持人代码,左侧 导航 网站文章目录 1. 简介2.方法2.1 预训练数据2.2 网络架构2.3 优化器2.4 高效的实现 3.论文其余部分4. 参考资料 1. 简介
LLaMA是meta在2023年2月开源的大模型#xff0c;在这之后#xff0c;很多开源模型都是基于LLaMA的#xff0c;比如斯坦福大学的羊驼模型。
LLaMA的重点是比… 文章目录 1. 简介2.方法2.1 预训练数据2.2 网络架构2.3 优化器2.4 高效的实现 3.论文其余部分4. 参考资料 1. 简介
LLaMA是meta在2023年2月开源的大模型在这之后很多开源模型都是基于LLaMA的比如斯坦福大学的羊驼模型。
LLaMA的重点是比通常情况下使用更多的语料来训练一系列可在各种推理预算下实现可能的最佳性能的语言模型。
摘要翻译我们在此介绍LLaMA这是一个参数范围从7B到65B的基础语言模型集合。我们在数万亿个token上训练了我们的模型并表明在不使用私有和不可公开获得的数据集的情况下仅仅使用公开可用的数据是有可能训练最先进的模型的。特别的是LLaMA-13B在大多数基准测试中都优于175B大小的GPT-3而LLaMA-65B可以与最好的模型Chinchilla-70B and PaLM-540B匹敌。我们向研究社区开源所有的模型。
2.方法
2.1 预训练数据
训练集数据覆盖了不同的领域的数据具体如下图。值得注意的是这些数据集都是可公开获得的不包括私有数据。
数据集的详情如下
English CommonCrawl [67%]用CCNet pipeline的方式预处理了从2017至2020年的5个CommonCrawl dump 在行级别去重数据用fastText线性分类器进行语言判断并去掉非英语页面使用n-gram语言模型过滤掉低质量内容。训练了一个线性模型来分类页面是否是Wikipedia的参考页或随机抽样的页面并丢掉没有被分类为参考页的页面。
C4 [15%] 预处理过程也有去重和质量过滤与CCNet采用了不一样的质量过滤主要采用启发式规则如一个网页中标点负荷或句子和词的个数。
Github [4.5%] 使用Google Bigquery上的Github数据集只保留Apache、BSD、MIT开源协议的项目。根据代码行的长度、字母数字并用的字符的比例采用启发式规则过滤掉低质量文件并用正则表达式去掉样板文件如头文件。最后用精确匹配的方式在文件级别上删除重复数据。
Wikipedia [4.5%]: 使用从2022年6-8月的Wikipedia dumps文件覆盖20种Latin或Cyrillic语言: bg, ca, cs, da, de, en, es, fr, hr, hu, it,nl, pl, pt, ro, ru, sl, sr, sv, uk。去掉数据中的超链接、注释及其他格式化样板文件。
Gutenberg and Books3 [4.5%] 这是两个书本语料数据集在书本级别进行去重去掉超过90%重复内容的书本。
ArXiv [2.5%] 这个数据集是为了添加科学数据去掉参考数目和第一部分之前的所有内容。并去掉了.tex文件中的注释以及用户编写的内联扩展定义和宏以提高论文之间的一致性。
Stack Exchange [2%] 保留前28个数据量的网站的数据去掉了HTML 标签并对答案按照评分从高到低排序。
Tokenizer: 使用BPE 算法采用SentencePiece的实现。并且将所有数字拆分为单独的数字并回退到byte来分解未知的 UTF-8 字符。
最后生成的整个训练数据集在分词后包括大约1.4T的tokens。除了Wikipedia和书籍数据集被用来训练了2个epoch外其他的数据在训练阶段都只被使用了一次。
2.2 网络架构
网络也是基于transformer架构在原始transformer上做了修改具体如下括号中的模型名表示曾受此模型启发
Pre-normalization [GPT-3] 对transfromer的每一个sub-layer的输入作归一化使用了RMSNorm 归一化函数。
SwiGLU activation function [PaLM] 将ReLu激活函数替换成SwiGLU激活函数。使用 2 3 4 d \frac{2}{3}4d 324d的尺度PaLM的尺度是 4 d 4d 4d
Rotary Embeddings [GPTNeo] 在网络的每一层使用rotary positional embeddings (RoPE)而不是原论文中的绝对位置嵌入向量。
各个大小的模型的超参数如下图 2.3 优化器
模型使用AdamW 优化器对应的超参 β 1 0.9 , β 2 0.95 \beta_1 0.9, \ \beta_2 0.95 β10.9, β20.95使用cosine learning rate schedule 最后的学习率是最大学习的10%使用0.1的weight decay 大小为1.0的gradient clipping使用2000步的warmup随模型大小改变学习率和batch size如上图不过从图片里batch size看起来貌似是一样的
2.4 高效的实现
为了提高模型的训练速度做了以下优化操作
使用causal multi-head attention的有效实现来减少内存使用和运行时间。用的是xformers的代码通过不存储被掩码的注意力权重和key/query分数来实现的。用checkpointing减少反向传播过程中要重复计算的激活函数的量。也就是存储了计算昂贵的激活函数比如线性层的输出通过自己实现反向传播层而不是使用pytorch的实现来达到这个目的。 为了从这个改动中获益需要使用模型和序列并行来减少模型的内存此外还尽可能地重叠激活计算和 GPU 之间的网络通信由于 all_reduce 操作。
当训练65B参数的模型时实现代码可以在2048块的80GB内存的A100 GPU上达到 380 t o k e n s / s e c / G P U 380\ tokens/sec/GPU 380 tokens/sec/GPU的处理速度也就是用1.4T tokens的数据集训练模型大约21天。
3.论文其余部分 与GPT-3一样考虑模型在Zero-shot和few-shot任务上的效果在20个benchmarks进行了验证实验考虑到LLaMA最大的模型为65B其性能还是不错的。 在模型训练过程中也跟踪了模型在问答和常识基准库上的效果。大部分基准库上模型随着训练时间逐渐提升。 作者们对大模型的偏见、毒性、错误信息也进行评估在RealToxicityPrompts上发现模型越大毒性越强。对5个月训练期间的碳足迹进行估算大约花了2,638 MWh电大概1,015 t的二氧化碳。
4. 参考资料
Touvron, Hugo, Thibaut Lavril, Gautier Izacard, Xavier Martinet, Marie-Anne Lachaux, Timothee Lacroix, Baptiste Rozière, et al. n.d. “LLaMA: Open and Efficient Foundation Language Models.”开源代码