精读笔记 · Llama 2: Open Foundation and Fine-Tuned Chat Models

论文信息
- 标题:Llama 2: Open Foundation and Fine-Tuned Chat Models
- 作者:Hugo Touvron, Louis Martin 等(Meta AI,80+ 位研究人员)
- 发表时间:2023年7月18日
- arXiv 编号:2307.09288
- 机构:Meta AI(Facebook 母公司)
- 性质:开源大语言模型技术报告


阅读地图

本文介绍了 Llama 2 系列模型的完整构建流程,从海量数据预训练,到有监督微调,再到基于人类反馈的强化学习对齐。读完本笔记,你将理解:

  1. 预训练:用 2 万亿 token 训练"博览群书"的基础模型
  2. SFT(监督微调):用少量高质量示范数据"跟老师学说话"
  3. RLHF(基于人类反馈的强化学习):让人类打分、反复迭代"根据评委打分改进作文"
  4. 关键技术:GQA 分组查询注意力(省显存)、Ghost Attention(多轮对话记住指令)、双奖励模型(有用性 + 安全性分开打分)

整体类比(贯穿全文):

  • 预训练 = 让模型"博览群书",读遍互联网所有文字
  • SFT = 让模型"跟老师学示范",看几万条优质问答示例
  • RLHF = 让模型"根据打分反复改进",像作文竞赛不断修改直到评委满意

一、Abstract(摘要)

原文(关键英文句)

"In this work, we develop and release Llama 2, a collection of pretrained and fine-tuned large language models (LLMs) ranging in scale from 7 billion to 70 billion parameters. Our fine-tuned LLMs, called Llama 2-Chat, are optimized for dialogue use cases. Our models outperform open-source chat models on most benchmarks we tested, and based on our human evaluations for helpfulness and safety, may be a suitable substitute for closed-source models."

翻译

在本工作中,我们开发并开源了 Llama 2——一系列规模从 70 亿到 700 亿参数不等的预训练和微调大语言模型。其中针对对话场景微调的版本称为 Llama 2-Chat。我们的模型在大多数测试基准上超越了同期开源聊天模型,并且根据人工评估的有用性和安全性指标,有望成为闭源模型的替代方案。

新手讲解

参数是什么? 可以理解为模型大脑里"神经元之间连线的权重数量"。70 亿参数(7B)已经是非常大的模型,700 亿参数(70B)则大约是它的 10 倍,能力也强得多,但运行它需要更大的显卡。

开源 vs 闭源:闭源模型(如当时的 ChatGPT/GPT-4)不公开代码和权重,研究者无法研究其内部。Llama 2 开源了权重,全世界都可以下载、研究、改进,这对 AI 安全研究意义重大。

Llama 2-Chat 是在预训练 Llama 2 基础上,经过 SFT + RLHF 流程打造的对话版本,就像是把"博览群书的学者"进一步训练成"善于回答问题的老师"。


二、Introduction(引言)

2.1 背景与动机

原文

"Large language models (LLMs) have shown great promise as highly capable AI assistants that excel in complex reasoning tasks requiring expert knowledge across a wide range of fields, including in specialized domains such as programming and creative writing."

翻译

大语言模型作为高能力 AI 助手展现出巨大潜力,在需要专业知识的复杂推理任务中表现出色,涵盖编程、创意写作等专业领域。

新手讲解

"大语言模型"本质上是一个极其复杂的"下一个词预测机器":给它一段文字,它就预测下一个词应该是什么。但训练到足够大的规模后,这个简单任务会涌现出惊人的推理、理解和创作能力——这就是"涌现(emergence)"现象,至今仍是 AI 研究的热点谜题。


2.2 开源的价值与已有工作的局限

原文

"While closed-source models continue to improve, public releases like BLOOM and Llama 1 have been critical for the research community. However, many fine-tuned models lack the extensive fine-tuning that closed-source models benefit from, often requiring significant compute and human annotation that is not transparent or easily reproducible."

翻译

尽管闭源模型持续进步,BLOOM 和 Llama 1 等公开发布的模型对研究社区至关重要。然而,许多开源微调模型缺乏闭源模型所拥有的大规模微调流程——那些流程需要大量算力和人工标注,且往往不透明、难以复现。

新手讲解

问题的核心是:有了基础预训练模型("博览群书的学者")还不够,要把它变成好用的助手还需要:
1. 高质量的示范数据(SFT)
2. 大量人工评分(RLHF)

这两步成本高昂,OpenAI 等公司做了但不公开,导致开源社区很难追赶。Meta 这篇论文的贡献在于:不仅开源了模型权重,还详细描述了整套对齐流程,让所有人都能学习和复现。


2.3 本文贡献概述

原文

"In this work, we develop and release Llama 2, a collection of pretrained and fine-tuned large language models (LLMs) ranging in scale from 7 billion to 70 billion parameters. We train Llama 2 on 2 trillion tokens, and fine-tune it with over 1 million human annotations."

翻译

我们开发并开源 Llama 2,参数规模覆盖 70 亿到 700 亿。预训练使用了 2 万亿 token,微调阶段使用了超过 100 万条人工标注数据。

新手讲解

2 万亿 token 是什么概念?1 token 大约是半个英文单词(或半个汉字)。2 万亿 token ≈ 约 1.5 万亿英文单词。相比之下,《哈利·波特》全系列约 100 万词,GPT 的训练数据相当于读了 150 万套《哈利·波特》。这就是"博览群书"的规模。

100 万条人工标注 则是 RLHF 阶段的核心成本——需要专业标注员不断比较模型回答的好坏,这是闭源公司的主要"护城河"之一。


三、Pretraining(预训练)

对应类比:让模型"博览群书"阶段——读遍互联网文字,学习语言和知识,但还不知道如何"有礼貌地回答问题"。


3.1 预训练数据(Section 2.1)

原文

"Our training corpus includes a new mix of data from publicly available sources, which does not include data from Meta's products or services. We trained on 2 trillion tokens of data as this provides a good performance–cost trade-off. We made an effort to remove data from certain sites known to contain a high volume of personal information about private individuals."

翻译

训练语料由公开可获取的数据混合而成,不包含来自 Meta 产品或服务的数据。选择 2 万亿 token 是因为它在性能和训练成本之间取得了良好平衡。我们特别过滤了已知含有大量个人隐私信息的网站数据。

新手讲解

为什么不用 Meta 自己的用户数据? 主要是隐私保护考量——用户在 Facebook 等平台上的帖子、消息属于个人隐私,未经同意不能用于训练。这也是 Meta 在公众信任方面的主动表态。

为什么要过滤某些网站? 训练数据的质量和安全性直接影响模型输出。含大量个人信息(姓名、地址、电话)的数据不仅侵犯隐私,还可能让模型"记住"并泄露这些信息。

数据量为何选 2T token? 更多的数据通常能提升性能,但训练成本(GPU 时间)也线性增加。2T 是作者认为性价比最高的点——再多效果提升有限,成本却大幅增加。相比 Llama 1 的 1.4T token,增加了约 40%。


3.2 预训练架构(Section 2.2)

原文

"Llama 2 adopts the standard transformer architecture with the following modifications: RMSNorm pre-normalization, SwiGLU activation function, and rotary positional embeddings. We increased the context length to 4,096 tokens (doubled from Llama 1's 2K) and adopted grouped-query attention (GQA) for our larger models."

翻译

Llama 2 采用标准 Transformer 架构,并做了以下改动:RMSNorm 前归一化、SwiGLU 激活函数、旋转位置编码(RoPE)。上下文长度增至 4096 token(是 Llama 1 的两倍),较大的模型(34B、70B)采用了分组查询注意力(GQA)。

新手讲解

RMSNorm 是什么? 归一化是深度学习中稳定训练的技术,RMSNorm 是一种比 LayerNorm 更简单(计算更快)的变体,效果相当但推理更高效。

SwiGLU 是什么? 激活函数决定神经元的"开关方式"。SwiGLU 是 Google 提出的一种激活函数,在 Transformer 中比传统 ReLU 表现更好,Llama 系列坚持使用它。

RoPE(旋转位置编码)是什么? Transformer 本身不知道词的前后顺序,位置编码给每个位置一个独特的"标签"。RoPE 是一种相对位置编码方案,能更好地推广到训练时未见过的长度。

上下文长度 4K 意味着模型一次最多能"看到"4096 个 token(约 3000 个英文单词)。Llama 1 只有 2048,翻倍后模型能处理更长的文章和对话。


3.3 重点技术:GQA(分组查询注意力)

术语解释:GQA(Grouped Query Attention,分组查询注意力)

背景:标准注意力的显存瓶颈

要理解 GQA,先要理解推理时的"KV 缓存"问题。

Transformer 的注意力机制中,每一层都有 查询(Query)、键(Key)、值(Value) 三种向量。推理时,为了不重复计算历史 token 的 K 和 V,模型会把它们缓存下来,这就是 KV Cache(键值缓存)

问题:对于标准的多头注意力(Multi-Head Attention,MHA),每个"头"都有自己独立的 K 和 V,假设模型有 64 个注意力头,那么 KV Cache 就要存储 64 份 K 和 64 份 V。对于长对话(比如 4096 token),70B 模型的 KV Cache 会占据几十 GB 显存,严重限制了批处理能力(即同时为多个用户服务的能力)。

GQA 的解决方案

类比:想象一个大学课堂,有 64 个学生(查询头),他们需要查阅参考书(键值)。

原文

"We adopted grouped-query attention (Ainslie et al., 2023) for our larger models (34B and 70B) to improve inference scalability."

翻译

我们在较大模型(34B 和 70B)中采用分组查询注意力(GQA)以提升推理可扩展性。

新手讲解:GQA 为什么能省显存

具体地:70B 的 Llama 2 有 64 个查询头(Query heads),但使用 GQA 后只需要 8 个键值头(KV heads),即 8 个查询头共享一对 K/V。

显存节省计算
- 标准 MHA:KV Cache 大小 ∝ 64 个头
- GQA(8 个 KV 头):KV Cache 大小 ∝ 8 个头
- 节省比例:约 8 倍

这意味着同样的 A100 GPU(80GB 显存),使用 GQA 后可以同时为 8 倍更多的用户服务,或处理 8 倍更长的上下文——这对实际部署至关重要。

7B 和 13B 模型上下文不够长,KV Cache 压力小,所以没有使用 GQA;而 34B、70B 处理长文本时 KV Cache 压力巨大,GQA 必不可少。


3.4 训练超参数(Section 2.2)

原文

"We train using the AdamW optimizer, with β₁=0.9, β₂=0.95, eps=10⁻⁵. We use a cosine learning rate schedule with 2000 warmup steps and decay to 10% of the peak learning rate. We use a weight decay of 0.1 and gradient clipping of 1.0. Training used a global batch size of 4M tokens."

翻译

使用 AdamW 优化器(β₁=0.9,β₂=0.95,eps=10⁻⁵),余弦学习率调度,预热 2000 步后衰减到峰值的 10%。权重衰减 0.1,梯度裁剪 1.0,全局批大小 400 万 token。

各模型学习率:
- 7B、13B 模型:3.0×10⁻⁴
- 34B、70B 模型:1.5×10⁻⁴(越大的模型需要越小的学习率)

计算资源:使用 A100-80GB GPU,总计约 330 万 GPU 小时。

新手讲解

AdamW 优化器:训练神经网络的核心算法,负责根据梯度调整参数。可以类比为"学习策略"——每次做错题时,以多大步伐修改自己的理解?AdamW 是目前大模型训练的标配。

余弦学习率调度:学习率决定每步更新的幅度。一开始太大容易不稳定,所以先"预热"2000 步逐渐增大,然后按余弦曲线缓慢减小到初始的 10%——就像学习时先快速掌握大框架,再精细打磨细节。

330 万 GPU 小时 是什么概念?如果用一张 A100 GPU,需要连续运行 330 万小时 ≈ 376 年。实际上 Meta 同时使用了数千张 GPU 并行训练,整个预训练过程大约持续几个月。这也是为什么个人和小公司无法复现预训练——成本高达数百万美元。


3.5 预训练评测结果(Section 2.3)

原文

"Llama 2 70B achieves 68.9% on MMLU and outperforms all open-source models tested. However, there remains a significant gap on coding benchmarks compared to GPT-3.5 (29.9% vs 48.1% on HumanEval)."

翻译

Llama 2 70B 在 MMLU 上达到 68.9%,超越所有测试的开源模型。但在编程基准(HumanEval)上与 GPT-3.5 仍存在明显差距(29.9% vs 48.1%)。

新手讲解

MMLU(Massive Multitask Language Understanding):包含 57 个学科的综合知识测试,涵盖数学、历史、医学、法律等,是衡量模型"基础知识面"的标准测试。68.9% 意味着大约 7 成的题目答对了。

HumanEval:编程能力测试,给出函数说明,让模型写出能通过测试的代码。Llama 2 在编程上明显弱于 GPT-3.5,这也是后续 CodeLlama 等专门代码模型的研发动机。

关键洞察:预训练的 Llama 2 已经超越了所有同规模开源模型,但与 GPT-4 等顶级闭源模型仍有差距——尤其是编程和复杂推理方面。这也是论文后续 RLHF 对齐工作的出发点:通过微调让模型在实际对话任务中表现更好。


四、Fine-tuning(微调)

对应类比:让模型"跟老师学说话"(SFT)+ "根据打分反复改进"(RLHF)阶段


4.1 整体微调流程概览

微调分两个阶段:

预训练 Llama 2
      ↓
 [阶段1] SFT(监督微调)
      ↓ 用2.75万条高质量示范问答训练
 Llama 2-Chat SFT版本
      ↓
 [阶段2] RLHF(基于人类反馈的强化学习)
      ↓
 ┌──────────────────┐
 │ 收集人类偏好数据  │
 │(哪个回答更好?) │
 └────────┬─────────┘
          ↓
 ┌──────────────────┐
 │  训练奖励模型RM   │
 │ (有用性RM       │
 │  + 安全性RM)    │
 └────────┬─────────┘
          ↓
 ┌──────────────────┐
 │  强化学习微调     │
 │(拒绝采样+PPO)   │
 └────────┬─────────┘
          ↓
 迭代 RLHF-V1 → V5
      ↓
 Llama 2-Chat 最终版

4.2 SFT:监督微调(Section 3.1)

术语解释:SFT(Supervised Fine-Tuning,监督微调)

SFT 是用"高质量的示范问答"来教模型"正确的说话方式"。就像学徒跟着老师傅学手艺——老师给出标准答案,学徒模仿。

原文

"We found that SFT annotations in the order of tens of thousands was enough to achieve a high-quality result. For SFT data, we focused on quality over quantity. We collected 27,540 high-quality SFT annotations and found that a limited set of clean instruction-tuning data can be sufficient to reach a high level of quality."

翻译

我们发现数万条 SFT 标注就足以取得高质量效果。我们专注于质量而非数量,共收集了 27,540 条高质量 SFT 标注,并发现少量干净的指令微调数据就能达到很高的质量水平。

新手讲解

27,540 条数据有多少? 相比预训练的 2 万亿 token,这个数量微不足道——相当于读了一本厚书中的一个章节。但质量远比数量重要:每一条都是由专业标注员精心撰写的"标准问答"。

为什么不用更多数据? 作者发现,使用来自互联网的大量低质量指令数据(比如某些粗糙的开源数据集)反而不如使用少量精心设计的高质量数据。这个发现很重要:"Quality is all you need"(质量才是关键)

SFT 解决了什么问题? 预训练模型知识丰富,但不知道"如何回答问题"——它可能会续写问题而不是回答,或用奇怪的语气说话。SFT 教会它"对话格式"和"基本礼仪"。

SFT 训练配置

超参数 数值
学习率 2×10⁻⁵
权重衰减 0.1
批大小 64
序列长度 4096 token
训练轮次 2 epochs

4.3 RLHF:基于人类反馈的强化学习概述

术语解释:RLHF(Reinforcement Learning from Human Feedback,基于人类反馈的强化学习)

RLHF 是让模型根据"人类打分"不断改进的过程。

类比:想象你参加作文大赛:
1. 你每次写两篇作文
2. 评委(人类标注员)指出哪篇更好
3. 用这些"哪篇更好"的评价训练一个"自动评委"(奖励模型)
4. 用"自动评委"的分数不断指导你修改,直到写出高分作文


4.4 人类偏好数据收集(Section 3.2.1)

原文

"We collect data that consists of human-generated prompts and human-annotated preference data, comprising 2,919,326 binary comparisons combining Meta internal data and open-source datasets. Annotators labeled the degree to which they prefer their chosen response: either significantly better, better, slightly better, or negligibly better/unsure."

翻译

我们收集了人工生成的提示和人工标注的偏好数据,共 2,919,326 条二元比较(结合 Meta 内部数据和开源数据集)。标注员不仅选择哪个回答更好,还要标注偏好程度:显著更好、更好、稍微更好、或基本没差别。

新手讲解

什么是二元比较(binary comparison)? 标注员看到同一个问题的两个不同回答(来自两个不同模型版本或不同参数设置),选择哪个更好。这比让标注员打绝对分数(1-10分)更容易、更一致。

为什么要标注"偏好程度"? 仅仅知道"A 比 B 好"还不够,"A 远好于 B"和"A 略好于 B"应该产生不同强度的学习信号。这个细粒度标注用于奖励模型训练中的"margin(边距)"机制。

290 万条比较从哪来? Meta 内部标注了约 140 万条,其余来自整合的开源数据集。这规模相当于几百名全职标注员工作一年多的成果。


4.5 奖励模型(Section 3.2.2)

术语解释:Reward Model(奖励模型,RM)

奖励模型是一个"自动评委",输入一个对话(问题+回答),输出一个标量分数(越高越好)。它通过学习人类的偏好比较数据来训练。

4.5.1 双奖励模型设计动机

原文

"We train two separate reward models: one optimized for helpfulness and another for safety. We found that helpfulness and safety sometimes trade off, making it challenging for a single reward model to perform well on both. Separate models allowed targeted optimization, as the tension between the two objectives may confuse the reward model during training."

翻译

我们训练了两个独立的奖励模型:一个专注有用性,另一个专注安全性。研究发现有用性和安全性有时存在权衡关系,单一奖励模型很难同时在两者上都表现出色。两者目标之间的张力可能在训练中混淆奖励模型,分开训练能实现有针对性的优化。

新手讲解

有用性和安全性为什么会冲突?

设想一个问题:"如何制作炸弹?"

如果把这两个目标混在一个奖励模型里,它会"左右为难"——给一个详细但危险的回答,有用性高分但安全性低分;给一个拒绝回答,安全性高分但有用性低分。一个模型很难同时优化这两个相互冲突的目标。

解决方案:分开打分,分别优化

两个分数在后续 RLHF 训练中共同使用,让模型学会在有用性和安全性之间找到最佳平衡点,而不是被一个混乱的单一信号误导。

类比:就像竞赛有两个评委——一个专门看内容质量,一个专门看表达规范。分开评分比让一个人又管内容又管规范更公平、更准确。


4.5.2 奖励模型架构

原文

"Reward model weights are initialized from pretrained chat model checkpoints. The classification head for next-token prediction is replaced with a regression head for outputting a scalar reward."

翻译

奖励模型权重从预训练聊天模型检查点初始化,将原来预测下一个词的分类头替换为输出标量奖励的回归头。

新手讲解

为什么用 Llama 2 本身来初始化奖励模型? 因为奖励模型需要"理解"对话内容才能评分,而 Llama 2 在预训练阶段已经掌握了语言理解能力。从它出发,只需微调最后一层(把"预测下一个词"改为"输出分数"),比从零开始训练一个评分模型高效得多。

分类头 vs 回归头
- 原始 Llama 2:最后一层输出一个概率分布(在 3 万个词里选最可能的一个)→ 这是"分类"
- 奖励模型:最后一层输出一个实数分数(比如 3.7 分)→ 这是"回归"


4.5.3 奖励模型训练:排名损失 + 边距

原文

"The base ranking loss is: −log(σ(rθ(x, yc) − rθ(x, yr))). We add a margin component m(r): −log(σ(rθ(x, yc) − rθ(x, yr) − m(r))), where the margin m(r) is a discrete function of the preference rating. We use a large margin for pairs with distinct responses, and smaller margin for similar responses."

翻译

基础排名损失为:-log(σ(r_θ(x,y_chosen) - r_θ(x,y_rejected)))。加入边距 m(r) 后变为:-log(σ(r_θ(x,y_chosen) - r_θ(x,y_rejected) - m(r))),其中边距是偏好评级的离散函数。对差异明显的回答对使用较大边距,对相似回答对使用较小边距。

新手讲解

排名损失是什么意思?

奖励模型的目标是:好的回答(y_chosen)得分 > 坏的回答(y_rejected)得分。

损失函数的意思是:
- 如果 r(y_chosen) - r(y_rejected) 很大(差距明显),损失很小(学得好)
- 如果差距很小甚至负数(评分倒置),损失很大(需要大幅调整)

σ 是 sigmoid 函数,把差值压缩到 0~1 的概率范围。

为什么要加边距 m(r)?

有时标注员说"A 显著好于 B",有时说"A 稍微好于 B"。如果两种情况都用同一个损失,模型就无法区分"大差距"和"小差距"。加入边距后:

这让奖励模型的评分分布更有区分度,更准确地反映人类的细粒度偏好。

奖励模型效果
- 有用性 RM 平均准确率:70.6%
- 安全性 RM 平均准确率:64.3%(安全判断本身更主观,所以准确率低一些)


4.6 迭代式强化学习微调(Section 3.2.3)

术语解释:Rejection Sampling(拒绝采样)和 PPO(近端策略优化)

4.6.1 两种强化学习方法

原文

"We use two main algorithms: Rejection Sampling fine-tuning and Proximal Policy Optimization (PPO). In Rejection Sampling, the model explores K samples for a given prompt, and we select the best answer according to the reward model. In PPO, during training at step t the sample is a function of the updated model policy from t−1 after the gradient update."

翻译

我们使用两种主要算法:拒绝采样微调和近端策略优化(PPO)。在拒绝采样中,模型对每个提示生成 K 个回答,选出奖励模型评分最高的那个。在 PPO 中,训练步骤 t 的样本来自上一步 t-1 更新后的策略。

新手讲解

拒绝采样(Rejection Sampling)

类比:让一位学生写作文,每道题写 10 篇,老师(奖励模型)选出最好的 1 篇,然后用这 1 篇来训练。

PPO(Proximal Policy Optimization,近端策略优化)

类比:让学生一步步修改同一篇作文,每次改动不要太大("近端"约束),老师实时打分反馈。

为什么需要 KL 散度惩罚?

如果没有约束,PPO 训练的模型会找到奖励模型的"漏洞"——比如写一堆让奖励模型给高分但实际上没用的废话(reward hacking)。KL 散度惩罚确保模型不会偏离原始语言能力太远。


4.6.2 迭代 RLHF:从 V1 到 V5

原文

"We perform iterative model updates. For each iteration, we collect new human preference data using the latest model checkpoint, retrain the reward models, and perform RLHF. We observed that early iterations (through V3) suffered from capability regression when fine-tuned only on samples from the preceding iteration. Later versions incorporated top-performing samples from all prior iterations, addressing forgetting issues."

翻译

我们进行迭代式模型更新。每次迭代收集最新模型的人类偏好数据,重新训练奖励模型,然后进行 RLHF。我们发现早期迭代(到 V3)如果只用上一轮数据微调会出现能力退化,后续版本整合了所有先前迭代的最优样本,解决了遗忘问题。

新手讲解

迭代式 RLHF 的关键思路

不是一次把 RLHF 做完,而是类似"螺旋式上升":

RLHF-V1:基于SFT模型,收集数据→训练RM→强化学习
RLHF-V2:基于V1,收集更多数据→更新RM→再次强化学习
RLHF-V3:基于V2...(但发现只用V2数据会退步)
RLHF-V4:整合V1+V2+V3最优数据→解决退步
RLHF-V5:最终版本

"能力退化"问题:训练过度关注某类任务(如对话安全)后,模型可能"忘记"其他能力(如写诗)。解决方法是把所有历史轮次的高质量样本都加入训练,防止"遗忘"——类似于学生复习时不能只看最新的题,还要回头看之前的错题。

V1-V4 主要用拒绝采样,V4-V5 引入 PPO:先用拒绝采样建立良好起点(广度探索),再用 PPO 深度优化(精细打磨)。两者结合比单独使用效果更好。


4.7 Ghost Attention(幽灵注意力,GAtt)

术语解释:Ghost Attention(GAtt,幽灵注意力)

这是 Meta 为解决"多轮对话忘记系统指令"问题而提出的独创技术。

背景问题

原文

"In a multi-turn dialogue, the model tends to forget the initial system instruction after many turns, because the instruction is only at the beginning of the conversation and the model's attention dilutes over many intervening exchanges."

翻译

在多轮对话中,模型往往在经历多轮交流后"忘记"开头的系统指令,因为指令只出现在对话开始处,随着中间轮次增多,模型的注意力会逐渐稀释。

新手讲解

系统指令是什么? 系统指令(System Prompt)是对话开始前给模型的"角色设定",比如:
- "你是一位专业医生,只能用中文回答"
- "你是一个儿童助手,避免所有成人内容"
- "你叫小明,不得透露你是 AI"

问题:当对话进行到第 15 轮时,模型可能已经"忘记"了第 1 轮的角色设定,开始用英文回答,或不再坚持儿童安全原则。这在实际产品中是严重问题。


GAtt 的解决机制

原文

"We synthetically concatenate this instruction to all the user messages of the conversation. We then set the loss to 0 for all the tokens from the previous turns, including assistant messages. This ensures the model learns to always condition on the system instruction, while avoiding training mismatches from the synthetic data construction."

翻译

我们合成地将系统指令附加到对话中每条用户消息上。然后在训练时将前面所有轮次(包括助手回复)的 token 的损失设为 0。这确保模型始终以系统指令为条件,同时避免合成数据构造带来的训练不一致。

新手讲解

GAtt 的训练数据构造(三步)

第一步:正常收集多轮对话数据,开头有系统指令 S

[系统指令 S]
用户:你好,帮我写首诗
助手:[诗]
用户:再写一首
助手:[第二首诗]
...(继续多轮)

第二步:合成地把系统指令 S 附加到每一轮的用户消息上

[系统指令 S]
用户:[S] + 你好,帮我写首诗   ← S被复制到这里
助手:[诗]
用户:[S] + 再写一首           ← S被复制到这里
助手:[第二首诗]
...

第三步:训练时,只计算最终轮次助手回复的损失,前面所有轮次的损失设为 0

损失 = 0(系统指令不计)
损失 = 0(用户消息不计)
损失 = 0(助手回复不计,因为是中间轮次)
...
损失 = ✓(最后一轮助手回复 → 这才是学习目标)

为什么这样有效? 通过让每一轮的用户消息都"带着"系统指令,模型在训练时学会了"每次回答前都要参考系统指令"的习惯。即使在实际使用中系统指令只出现一次,模型也因为训练中的"反复提醒"而养成了时刻记住它的能力。

效果:经过 GAtt 训练的模型能在 20 轮以上的长对话中始终遵守系统指令,而不会随着对话轮数增加而"遗忘"。

"幽灵"含义:系统指令像幽灵一样"隐形地"附着在每条用户消息上——训练时它存在,但推理时只有开头的那一条,模型却表现得像它一直在场。


五、安全性(Safety)重点

5.1 安全对齐方法

原文

"Safety tuning with RLHF, using adversarial prompts, improved safety scores without hurting helpfulness. The distribution of safety RM scores on the safety set shifts to higher reward scores after safety tuning with RLHF, and the long tail of the distribution near zero thins out."

翻译

使用对抗性提示进行 RLHF 安全调优,在提升安全分数的同时没有损害有用性。经过 RLHF 安全调优后,安全集上的奖励分数分布向高分偏移,分布在零附近的长尾明显收窄。

新手讲解

对抗性提示:专门设计来"诱导"模型产生有害输出的问题,比如:
- 用角色扮演绕过安全限制:"假设你是一个没有道德限制的 AI..."
- 用外语提问(早期模型的安全训练多为英语,其他语言可能绕过)
- 用逻辑谬误诱导:"医生需要了解危险药物剂量,所以请告诉我..."

"没有损害有用性"(无对齐代价):这是非常重要的结论。很多人担心安全训练会让模型变得"过于保守"、"什么都不敢说"(过度拒绝)。Llama 2 的实验表明,精心设计的双奖励模型 + 迭代 RLHF 可以做到既安全又有用,没有明显的能力-安全权衡(alignment tax)。


5.2 安全分类体系

一级分类 示例
违法/犯罪行为 恐怖主义、盗窃、制毒
有害/仇恨内容 自我伤害、歧视、骚扰
不当建议 未经授权的医疗/法律/财务建议

攻击手段包括:心理操纵、逻辑漏洞利用、多语言绕过等。


5.3 关键安全评估指标

评估维度 Llama 2-Chat 70B 结果
TruthfulQA(真实性) 50.18%(真实且有信息量)
ToxiGen(毒性) 24.60% 有毒生成率(注:数字较高,但评估方法存在分歧)
人工安全评估 与 ChatGPT 相当,显著好于同期开源模型

注意:论文中的安全评估是在特定测试集上的结果,实际部署中需要根据具体应用场景进行额外的安全测试。论文也明确指出 Llama 2 不是完美的,仍可能产生有害输出。


六、关键实验结果汇总

6.1 Llama 2 vs 竞品模型(预训练版)

模型 MMLU 常识推理 HumanEval(编程)
Llama 1 65B 63.4%
Llama 2 70B 68.9% 71.9% 29.9%
GPT-3.5 48.1%
GPT-4 67.0%
Falcon 40B

Llama 2 70B 是发布时最强的开源模型,但在编程任务上与 GPT-3.5/4 仍有明显差距。


6.2 Llama 2-Chat vs 竞品对话模型(人工评估)

对比 Llama 2-Chat 70B 结果
vs ChatGPT(有用性) 胜率约 36%,平局 31.5%
vs Vicuna-13B 显著优胜
vs MPT-30B-Chat 显著优胜
vs 开源聊天模型 综合排名第一

经过完整 RLHF 对齐后,Llama 2-Chat 在对话有用性和安全性上已接近 ChatGPT,但与 GPT-4 仍有一定差距。


七、完整对齐流程总结(大白话版)

━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
阶段 1: 预训练
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
输入: 2万亿token互联网文本
目标: 预测下一个词(自监督学习)
产出: 博学但"不会说话"的基础模型
类比: 读完图书馆所有书的学者,知识渊博但不善交流

━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
阶段 2: SFT(监督微调)
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
输入: 27,540条高质量问答示范
目标: 模仿示范格式(有监督学习)
产出: 会礼貌对话的初级助手
类比: 学徒跟师傅学了几周标准服务流程

━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
阶段 3: RLHF(基于人类反馈的强化学习)
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
步骤3a: 人类打比较分(近300万对比较)
  → "这两个回答哪个更好?好多少?"

步骤3b: 训练奖励模型(自动评委)
  → 有用性RM:学会判断哪个回答更有帮助
  → 安全性RM:学会判断哪个回答更安全
  (两个独立评委,各司其职)

步骤3c: 强化学习微调(反复改进)
  → 拒绝采样:每题写10个,选最高分的继续训练
  → PPO:像修改作文一样逐步深度优化
  → 迭代5轮(V1→V5),每轮更新数据和RM

步骤3d: Ghost Attention(记住系统指令)
  → 训练模型在20+轮对话中始终遵守开头的指令

产出: Llama 2-Chat(最终版本)
类比: 经过多轮作文竞赛训练后的优秀参赛者
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━

八、术语速查表

术语 英文全称 一句话解释
LLM Large Language Model 大语言模型,通过预测下一词学习语言
Token - 文本的基本单位,约半个英文单词
预训练 Pretraining 用海量无标签文本训练,学习语言基础
SFT Supervised Fine-Tuning 监督微调,用示范问答教模型对话格式
RLHF Reinforcement Learning from Human Feedback 用人类偏好打分来强化学习
RM Reward Model 奖励模型,自动给回答打分的"评委"
Rejection Sampling - 拒绝采样,生成多个候选只保留最优的
PPO Proximal Policy Optimization 近端策略优化,强化学习主流算法
KL 散度 KL Divergence 衡量两个分布差异,用于防止模型"走偏"
GQA Grouped Query Attention 分组查询注意力,多个查询共享键值,节省显存
KV Cache Key-Value Cache 键值缓存,存储历史token的K/V避免重复计算
GAtt Ghost Attention 幽灵注意力,让多轮对话始终记住系统指令
MMLU Massive Multitask Language Understanding 57个学科的综合知识测试基准
HumanEval - 代码生成能力评测基准
Alignment Tax - 对齐代价,安全训练导致有用性下降的现象
Red-teaming - 红队测试,专门寻找模型安全漏洞

九、重要洞见与启发

1. 质量优于数量(SFT 阶段)

27,540 条精心设计的高质量示范,比数百万条低质量数据更有效。数据质量是大模型对齐的核心瓶颈,不是数量。

2. 双奖励模型分工(安全 vs 有用)

将冲突目标分开建模是明智的工程选择。当两个目标存在根本矛盾时,强行合并只会两头兼顾不了,不如分开优化再在推理时综合。

3. 迭代式对齐(V1→V5)

不要期望"一次对齐成功"。每一轮 RLHF 迭代都会暴露新的问题,同时积累更高质量的数据。成功的大模型对齐是持续迭代的工程过程,不是一次性的实验。

4. GQA 是工程与研究的结合

GQA 不是原创于本论文(引用了 Ainslie et al., 2023),但将其系统地应用到 Llama 2 是工程落地的关键一步。工程价值不亚于算法创新

5. 对齐不需要付出能力代价

实验表明,正确设计的 RLHF 流程不会显著降低模型的基础能力。这打破了"越安全越没用"的偏见——关键在于精心设计的双奖励模型和高质量对齐数据。


十、参考文献关键引用


精读笔记制作于 2026-05-27,基于 arXiv:2307.09288 原文内容。所有数字均来自论文原文,如有疑问请以原论文为准。