规模 第 11 讲 / 共 17 讲

第 11 讲:Scaling Laws(下)

上一讲我们学习了 Scaling Laws 的基础——Power Law 关系和 Chinchilla-optimal 分配。但将这些理论应用到实际训练中还面临许多挑战:如何在不同规模之间转移超参数?如何处理训练过程中的不稳定性?Chinchilla-optimal 是否总是最佳策略?本讲将深入探讨这些实际问题。

超参数转移:μP (Maximal Update Parameterization)

Scaling Laws 告诉我们最优的 N 和 D,但没有告诉我们如何设置模型的超参数(learning rate、initialization scale 等)。在小模型上调好的超参数,直接用到大模型上通常效果很差。

μP(muParameterization)由 Yang et al. (2022) 提出,目标是实现超参数的零成本转移——在小模型上调好超参数,可以直接用到任意大小的模型上。

标准参数化的问题

在 Standard Parameterization(SP)中,所有模型使用相同的 learning rate。但随着模型宽度 d_model 增大:

μP 的核心思想

μP 通过调整初始化、learning rate 和某些层的参数化方式,使得在任意宽度下,每层的更新-权重比(update-to-weight ratio)保持一致。具体规则:

组件Standard Param.μP
Input embedding initO(1)O(1)
Hidden layer initO(1/√d)O(1/√d)
Output layer initO(1/√d)O(1/d)
Hidden layer LRηη / d (相对于 base width)
Input/Output LRηη
Attention logitsQK^T / √d_headQK^T / d_head

μP 的实际价值

μP 最大的实际价值是:你可以在一个很小的 proxy model(如 40M 参数)上做 hyperparameter sweep(尝试几十组 learning rate),然后直接将最优 learning rate 应用到目标大模型(如 7B)。这节省了大量实验成本。在 Cerebras-GPT 等模型的训练中,μP 已被成功应用。

μP 的实验验证

验证方法:在不同宽度的模型上,用相同的(μP 调整后的)learning rate 训练,观察是否都能达到接近最优的 loss。

# muP transfer: tune LR on small model, apply to large model
# Step 1: Define base model (small proxy)
base_width = 256  # d_model of proxy model
target_width = 4096  # d_model of target model

# Step 2: Sweep LR on proxy model
best_lr = hyperparameter_sweep(
    model_width=base_width,
    lr_candidates=[1e-4, 3e-4, 1e-3, 3e-3, 1e-2],
    metric="validation_loss"
)  # e.g., best_lr = 3e-3

# Step 3: Scale LR for target model using muP rules
# Hidden layer LR scales as base_width / target_width
target_lr = best_lr  # Base LR stays the same in muP
# The parameterization handles the scaling internally

# Step 4: Train target model with transferred LR
train_model(model_width=target_width, lr=target_lr)

Learning Rate 与模型大小的关系

即使不使用 μP,理解 learning rate 与模型大小的经验关系也很重要。

经验观察

在 Standard Parameterization 下,最优 learning rate 随模型大小增大而减小:

η_opt ∝ N^(-γ),其中 γ ≈ 0.1 - 0.3

一些具体的例子:

模型参数量Peak Learning Rate
GPT-3 Small125M6 × 10⁻⁴
GPT-3 Medium350M3 × 10⁻⁴
GPT-3 Large760M2.5 × 10⁻⁴
GPT-3 XL1.3B2 × 10⁻⁴
GPT-3175B6 × 10⁻⁵
LLaMA-7B7B3 × 10⁻⁴
LLaMA-65B65B1.5 × 10⁻⁴

Batch Size 的 Scaling

Batch size 也是一个需要随规模调整的超参数。有两个维度需要考虑:

Critical Batch Size

McCandlish et al. (2018) 定义了 Critical Batch Size (B_crit):当 batch size 小于 B_crit 时,增大 batch size 可以等比提高训练效率(训练步数减半,总 token 数不变);当 batch size 大于 B_crit 时,进一步增大 batch size 只减少步数但增加总 token 消耗。

B_crit ∝ L^(-1/α),其中 L 是当前 loss,α 是 scaling exponent

直觉上:loss 越低(训练越深入),梯度的 signal-to-noise ratio 越低,需要更大的 batch 来平均化噪声。

实际经验

常见做法是在训练过程中逐渐增大 batch size:

训练稳定性问题

大模型训练中最棘手的实际问题之一是训练不稳定——loss 在训练过程中突然飙升(loss spike),有时甚至无法恢复。

Loss Spikes

Loss spike 的特征是 loss 突然大幅上升,然后可能缓慢恢复,也可能导致训练发散。常见原因包括:

Loss Spike 的处理方法

  1. 跳过坏 batch:检测到 loss 异常高时,丢弃当前 batch 的梯度更新(gradient skipping)
  2. 回滚到 checkpoint:回到最近的稳定 checkpoint,跳过导致问题的数据
  3. Gradient Clipping:限制梯度的最大范数,防止爆炸式更新
    # Gradient clipping example
    torch.nn.utils.clip_grad_norm_(model.parameters(), max_norm=1.0)
  4. 降低 Learning Rate:如果频繁出现 spike,考虑降低 learning rate
  5. Z-Loss:PaLM 引入了一个辅助 loss,鼓励 logits 的对数范数保持较小:
    # Z-loss: penalize large logits to improve stability
    z_loss = 1e-4 * torch.logsumexp(logits, dim=-1).pow(2).mean()

PaLM 的经验

Google 在训练 PaLM-540B 时遇到了约 20 次 loss spike。他们的解决方案是:从 spike 前约 100 步的 checkpoint 重启,跳过约 200-500 个 batch 的数据。他们发现是特定的数据 batch 触发了不稳定,跳过这些数据后训练可以正常进行。

Warmup 策略

Learning Rate Warmup 是大模型训练的标准做法——在训练开始时,将 learning rate 从 0(或很小的值)线性增加到 peak learning rate。

为什么需要 Warmup?

Warmup 的典型配置

常见做法是线性 warmup,持续训练 token 总量的 0.1% - 1%:

模型Total TokensWarmup TokensWarmup 比例
GPT-3300B~375M~0.1%
LLaMA1.4T~2B~0.14%
Chinchilla1.4T~3.5B~0.25%

Cooldown 策略

Learning Rate Cooldown(或 Decay)是训练末期逐步降低 learning rate 的过程。主流的两种 schedule:

Cosine Decay

η(t) = η_min + 0.5 × (η_max - η_min) × (1 + cos(π × t / T))

其中 t 是当前步数,T 是总步数。Cosine schedule 从 peak LR 平滑下降到 η_min(通常是 peak 的 1/10 或 1/100)。

Linear Decay

简单地从 peak LR 线性衰减到 0 或 η_min。虽然简单,但在一些实验中效果与 cosine 接近。

Cooldown 的重要性

多个研究表明,最后的 cooldown 阶段对最终 loss 有显著影响:

# WSD (Warmup-Stable-Decay) schedule
def wsd_schedule(step, warmup_steps, stable_steps, decay_steps, peak_lr, min_lr):
    if step < warmup_steps:
        # Linear warmup
        return peak_lr * step / warmup_steps
    elif step < warmup_steps + stable_steps:
        # Stable phase
        return peak_lr
    else:
        # Cosine decay
        decay_progress = (step - warmup_steps - stable_steps) / decay_steps
        decay_progress = min(decay_progress, 1.0)
        return min_lr + 0.5 * (peak_lr - min_lr) * (1 + math.cos(math.pi * decay_progress))

Downstream Task 的 Scaling 行为

Pre-training loss 遵循平滑的 power law,但 downstream task 的表现并不总是如此平滑。

两种 Scaling 模式

Emergent Abilities 讨论

Wei et al. (2022) 提出了 Emergent Abilities(涌现能力)的概念:某些能力(如 chain-of-thought reasoning、arithmetic)只在模型超过某个规模阈值后才出现。

但后续研究(Schaeffer et al., 2023)提出了不同观点:

"涌现" 可能是评估指标的假象

Schaeffer 等人发现,如果使用非线性的评估指标(如 exact match accuracy,答对了才得分),小模型会显示为 0 分,看起来像"突然涌现"。但如果改用连续的指标(如 per-token accuracy 或 log-likelihood),能力的增长其实是平滑的。这意味着"涌现"可能更多是评估方式的产物,而非模型行为的本质变化。

Beyond Chinchilla:过度训练的价值

Chinchilla Scaling Laws 告诉我们compute-optimal 的训练配置。但在实际部署中,compute-optimal 不一定是最佳策略。

LLaMA 的选择

Meta 的 LLaMA 系列模型有意选择了远超 Chinchilla-optimal 的训练数据量:

模型参数量 N训练 Tokens DD/N 比例Chinchilla D/N
Chinchilla70B1.4T2020 (optimal)
LLaMA-1 7B7B1T14320
LLaMA-1 65B65B1.4T2220
LLaMA-2 7B7B2T28620
LLaMA-3 8B8B15T187520
LLaMA-3 70B70B15T21420

为什么要"过度训练"?

核心原因是 Chinchilla-optimal 优化的是训练成本,而非推理成本。

  1. 推理成本与模型大小正相关:一个 7B 模型的推理成本约是 70B 模型的 1/10。如果 7B 模型通过更多数据训练能接近 70B 的效果,推理性价比大幅提升
  2. 总拥有成本(TCO):训练是一次性成本,推理是持续成本。对于大规模部署的模型,推理成本远超训练成本
  3. 数据质量在提升:高质量数据(教科书、代码等)的效用可能高于一般的 web text,D/N = 20 可能不再是最优

Inference-Optimal vs Compute-Optimal

如果我们把优化目标从"最小化训练 FLOPs"改为"最小化达到目标性能的推理 FLOPs",最优策略就变了。一个训练了 15T tokens 的 8B 模型(LLaMA-3 8B),虽然训练成本高于 Chinchilla-optimal,但它的推理速度远快于性能相当的更大模型。这就是 over-training(过度训练)的价值。

Over-training 的 Scaling Laws

Sardana and Frankle (2023) 提出了考虑推理成本的 scaling laws。他们发现:

当推理需求为 I 个 tokens 时,最优训练 tokens D_opt ∝ I^(1/2)

也就是说,预期推理量越大,就越应该用更小的模型训练更多数据。这完美解释了 LLaMA-3 8B 训练 15T tokens 的决策。

Scaling Laws 的局限性

小结