Reading Notes: LLaMA Technical Report

date
Apr 29, 2025
slug
llama1-paper
status
Published
tags
NLP
summary
type
Post

TL; DR

  • Argument: 在训练 compute optimal 模型的时候也要考虑推理开销,给定计算开销下小模型加大数据集效果更好。
  • 架构改进(都来自已有的工作):
    • pre-normalization: 在注意力和 ffn 之前做标准化,训练更稳定
    • rms norm:简化版 layernorm
    • SwiGLU 代替 MLP
    • 旋转位置编码
  • 完全来自公开数据源的预训练数据 (1 T / 1.4 T tokens)
  • 7B 版本的效果在多数 benchmark 超过 GPT-3, 65B 版本达到和最好 SOTA 模型接近
 
主要可以学习借鉴的地方是预训练数据的清洗训练实施的一些实践,下面分两节详细展开这部分内容。

Pretraining Data

notion image
上图包含了预训练过程中使用的数据集以及对应的采样比例(采样时每个样本来自该数据集的概率)。

CommonCrawl

使用 CCNet Pipeline 处理了 2017 - 2020 的 common crawl dumps,主要做了以下操作:
  • 行级别去重
  • 用 fasttext 分类器过滤掉非英语文本,用一个 ngram 语言模型过滤低质量文本(在参考数据集上训练一个 ngram 语言模型,用困惑度打分来过滤)
  • 以 wikipedia 中的页面作为正样本,随机抽取的页面作为负样本,训练一个线性分类器,过滤掉被判定为负类的页面

C4

C4 也是另一个从 common crawl 处理得来的数据集,主要的过滤步骤也包括去重,语言识别等,和 ccnet 主要的不同是依赖规则来过滤低质量文本。

Github

  • 只保留 Apache, BSD 和 MIT 开源协议下的项目
  • 去掉重复的模版代码;根据行长度过滤
  • 最后做文件级别的去重(exact match)

Wikipedia

移除超链接,评论和模版文本。

Books

做 book 级别的去重。

ArXiv

  • 使用 latex 文件,而不是 pdf
  • 第一个 section 之前的内容去掉,bibliography 去掉,注释去掉

StackExchange

去掉 HTML tag 并且根据回答评分排序。

Training Settings

notion image
  • AdamW 优化器,beta1 = 0.9, beta2 = 0.95
  • cosine learning rate schedule, 最后的学习率是最大学习率的 10%
  • weight decay 0.1, grad clipping 1.0
  • 2000 个 warmup step

Evaluation

评估的方式:在测试集上,给定任务输入,生成答案 / 给 candidate 答案排序。
 
llama 主要在以下领域的 benchmark 测试:
  • commonsense reasoning
  • closed-book QA
  • reading comprehension
  • mathematical reasoning
  • code generation
 
除了看 loss,在训练过程中也可以监测当前训练进度下在 benchmark 的表现,来监测预训练过程是否正常。
notion image
 

© Lifan Sun 2023 - 2025