一、背景
LLaMA 2 和 LLaMA2-Chat
参数规模:70亿、130亿和700亿
数据和训练规模:
上下文长度
训练资源
性能表现:
二、预训练 pretraining
1. 预训练数据
· 训练语料来自公开课用的数据源,不包括Meta的产品或服务数据
· 在2万亿个数据tokens上进行了训练
· 对真实的数据源进行上采样以提高只是并减少错误
2. 训练细节
2.1 标准的Transformer架构
2.2 RMSNorm归一化
2.3 SwiGLU激活函数
2.4 RoPE 旋转位置编码
2.5 GQA 分组查询注意力
2.6 Tokenizer分词器
三、微调 fine-tuning
1. 有监督微调 SFT
2. 基于人工反馈的强化学习 RLHF
3. 多轮对话中保持一致性的系统消息
四、LLaMA的前世今生(LLaMA1,2,3)
Llama1
动机:Meta认为推理成本更重要,所以提高数据量而不是模型大小,因为训练只需要一次,而推理是无数次的
具体行动:针对Transformer-decoder架构,做了以下修改:
-
和GPT-3一样将Normalization从每个子层的输出位置移动到了输入位置
-
将Layer Norm 改为 RMS Norm
动机:进行Norm时,对特征进行平移并不能改变特征的分布,所以可以去掉平移相关的部分
Note: 平移相关的部分指的是:
a. 输入特征-均值 \(x - E[x]\)
b. 对标准化后进行线性变化偏差的参数 \(\beta\)
-
采用旋转位置编码
-
采用silu激活函数
和Relu比较像
我们尝试看看标记化时间如何受到更大的词汇量的影响。我们发现,将多词短语作为标记实际上的效果更差,然后只是添加更多标记,因为分词器不能假设一个词是每个标记的最大跨度。我们从 Wikipedia 中抽取 10K 个随机句子,并对 BERT 的标准大小写标记器使用 huggingface 的 12 实现。当使用原始词汇表(大小为 ∼ 20K)时,标记化需要 2.31 秒。当将词汇表扩展到我们收集的词汇表(大小为 ∼ 80K,包括多词短语)时,使用相同机器的标记化时间跃升至 8.92 秒。
Llama2
70B模型训练了172万GPU小时相当于2048个GPU训练35天
引入了GQA(Group Query Attention)
减小模型参数量和kv cache的大小
是左右的折中
Llama2只有70B做了GQA
Llama3
字典从三万2000个Token扩充4倍,提高推理效率,原来一个中文被编码为多个token,现在只需要1一个token,推理次数就减少了。
从仅聊天-->指令跟随