llama2 paper

LLAMA-2论文

2023-7

Helpfulness and safety

llama2是一系列经过预训练以及调优后的LLM模型,参数大小从70亿(7b)到700亿(70b)。

Llama2是llama1的升级版,在一个新的混合公开数据集上训练。预训练语料增加了40%,模型上下文长度为原来两倍同时使用了Grouped-Query Attention。模型有7B,13B和70B参数的变体。论文中使用的为34B版本,由于缺少验证,其暂时未发布

Llama2-chat是专为对话优化的llama2调优版本,其也有7B,13B和70B版本。

组织结构:

  1. Section2:预训练方法
  2. Section3:微调方式
  3. Section4:模型安全
  4. Section5:关键发现和启示

整体训练过程概述

image-20231108164632323

LLAMA2-CHAT训练过程
  1. 使用公开的、可用的在线资源对LLAMA2进行预训练
  2. 对LLAMA2进行有监督训练调优
  3. 使用RLHF进行迭代式调优,尤其是拒绝采样(Rejection Sampling)PPO

Pretraining

沿用了llama的模型结构和预训练方式,相比于Llama1其使用了

  • 新的数据集
    • 更强的数据清洗
    • 更多的token(40%)
  • Grouped Query Attention - GQA

image-20231108172531135

预训练数据

  • 模型预训练共2w亿token
  • 性能和训练消耗的trade-off
  • 对最可靠的数据源上采样以增加可行度并降低幻觉

后文有对预训练数据的分析

训练细节

训练设置和模型结构基本和llama1相同

模型结构

  1. 标准transformer结构
  2. Pre-norm以及RMSNorm
  3. SwiGLU为激活函数
  4. Rotary positional embedding (RoPE)

和LLama1区别

  1. 两倍的context length
  2. 使用GQA

训练设置

  1. AdamW \(\beta_1= 0.9 \\ \beta_2 = 0.95 \\ \text{eps}=10^{-5}\)

  2. Cosine学习率
    • 2000步warmup
    • 最终学习率衰减为最高学习率的10%
  3. Weight decay = 0.1
  4. Gradient clip = 1.0

训练过程

经过2w亿个token训练后模型仍未表现出饱和

image-20231108172503562

tokenizer

  1. bytepair encoding算法的实现
  2. 所有数字都拆解成单个数字字符
  3. 使用字节分解所有UTF-8字符
  4. 所有的训练集共32k tokens

训练消耗

硬件:A100s

image-20231108172544468

大小 耗时(GPU) 温室气体排放(tCO2eq)
7B 18.4wh=21y 31.2
13B 36.8wh=42y 62.4
34B 103.8wh=118y 153.9
70B 172wh = 196y 291.42

预训练模型性能评估

使用内部的评估库,评估性能取原文和reproduce间的最高值

评估内容包括4个方面:

  1. code
  2. Commonsense Reasoning 常识推理
  3. World Knowledge 关于世界的知识

  4. Reading Comprehension 阅读理解
  5. math
  6. Popular Aggregated Benchmarks 主流的聚合指标

开源模型对比

image-20231120153750530

闭源模型对比

结论: llama2 70B的结果在部分任务上和gpt-3.5的性能相近,但在code方面还有显著差异。总而言之,llama2 70b与gpt-4、Palm-2-l还有巨大性能差距。

image-20231120153855096

Fine-tuning