大模型 Scaling Law 实证分析
Scaling Law 描述了模型性能与计算量、参数量、数据量之间的幂律关系,是大模型训练规划的理论基础。
核心公式
Chinchilla Scaling Law 表明,Loss 与参数量和数据量的关系为:
L(N, D) = E + A/N^α + B/D^β
其中:
- N: 模型参数量
- D: 训练数据量(tokens)
- E: 不可约损失(数据本身的熵)
- A, B: 常数
- α ≈ 0.34, β ≈ 0.28 (Chinchilla 估计)计算最优分配
给定总计算预算 C,最优参数量和数据量:
N* ∝ C^(β/(α+β)) ≈ C^0.45
D* ∝ C^(α/(α+β)) ≈ C^0.55即:参数和数据应按接近 1:1 的比例增长。
实证数据
| 模型 | 参数量 (B) | 训练 Tokens (B) | Token/Param 比 | 是否计算最优 |
|---|---|---|---|---|
| GPT-3 | 175 | 300 | 1.7 | 否(训练不足) |
| Chinchilla | 70 | 1400 | 20 | 是 |
| Llama 1 | 65 | 1000 | 15 | 接近 |
| Llama 2 | 70 | 2000 | 29 | 过训练(好) |
| Llama 3 | 70 | 15000 | 214 | 大幅过训练 |
python
# Scaling Law 预测
def predict_loss(N, D, A=406.4, B=410.7, E=1.69, alpha=0.34, beta=0.28):
"""Chinchilla Scaling Law"""
return E + A / (N ** alpha) + B / (D ** beta)
# 预测 7B 模型在不同数据量下的 Loss
for D_tokens in [100, 500, 1000, 2000]:
loss = predict_loss(N=7e9, D=D_tokens * 1e9)
print(f"7B, {D_tokens}B tokens: Loss = {loss:.4f}")过训练趋势
Llama 3 在 15T tokens 上训练 70B 模型,远超 Chinchilla 最优比例。原因:
- 推理成本:更小模型 + 更多数据 > 更大模型 + 更少数据
- 数据质量:高质量数据的边际收益更高
- 实际约束:推理部署成本随参数量线性增长
| 策略 | 训练成本 | 推理成本 | 性能 | 适用场景 |
|---|---|---|---|---|
| Chinchilla 最优 | 中 | 高 | 基准 | 训练预算有限 |
| 过训练 | 高 | 低 | 相当或更好 | 推理成本敏感 |
规划建议
- 确定推理预算(决定模型大小上限)
- 在推理预算内,用尽可能多的数据训练
- Llama 3 经验:Token/Param 比 100-200 效果优秀
- 数据质量 > 数据数量:高质量过滤至关重要