一、超参数到底是什么

超参数(Hyperparameters)是在训练开始前就要设定好的参数,用来控制训练过程,而不是训练中自动学到的权重。

一个很直观的比喻是:超参数就像做菜前先决定盐、胡椒、火候和时间,它们不会在烹饪中自己长出来,但会直接决定最终味道。

二、训练阶段最常见的超参数

2.1 Model Size

模型大小本质上是参数规模,参数越多,模型的表达能力通常越强,但资源消耗也越高。

  • 大模型:
  • 适合复杂推理、长文本、多语言等任务。
  • 需要更多算力和数据。
  • 小模型:
  • 更适合简单任务和低配设备。
  • 推理速度通常更快。

2.2 Number of Epochs

一个 epoch 表示模型完整遍历一次训练集。

  • epoch 太多:
  • 可能过拟合。
  • epoch 太少:
  • 可能欠拟合。

实际使用中,3-5 个 epoch 往往是一个常见起点,再根据验证集效果调整。

2.3 Learning Rate

学习率决定每次更新参数时迈多大步。

  • 学习率太高:
  • 训练更快,但容易震荡、不收敛。
  • 学习率太低:
  • 训练更稳,但收敛慢。

常见经验:

  • LoRA 微调:
  • 常用 1e-051e-04
  • 全参数微调:
  • 可能使用更高一些的学习率。
  • 小数据集:
  • 往往更适合更低学习率。

2.4 Batch Size

Batch Size 表示每次权重更新前处理多少样本。

  • 大批量:
  • 梯度更稳定,训练更快。
  • 显存占用更高。
  • 小批量:
  • 对显存更友好。
  • 训练更慢,但有时泛化更好。

2.5 Max Output Tokens / Max Sequence Length

这个参数会直接影响上下文长度、显存压力和响应完整性。

  • 长序列:
  • 能处理更多上下文。
  • 显存和推理成本更高。
  • 短序列:
  • 更省资源。
  • 但可能截断输入或输出。

三、推理和生成阶段常见参数

3.1 Decoding Type

最常见的是两类:

  • 贪婪解码:
  • 每一步选概率最高的 Token。
  • 输出更稳定,但容易呆板。
  • 采样解码:
  • 从概率分布中采样。
  • 更有创造性,但也更不稳定。

3.2 Top-k 和 Top-p

它们主要用来约束采样范围。

  • Top-k:
  • 只在概率最高的前 k 个 Token 中采样。
  • Top-p:
  • 只在累计概率达到阈值 p 的候选里采样。

两者的目标都是在“多样性”和“连贯性”之间找平衡。

3.3 Temperature

温度用于控制随机性。

  • 低温度:
  • 输出更集中、更稳。
  • 高温度:
  • 输出更发散、更有创意。

例如技术问答更适合低温度,创意写作通常可以把温度调高一些。

3.4 Stop Sequences

停止序列用来控制模型在什么地方停止输出。

它常见于:

  • 控制回答长度;
  • 适配固定格式输出;
  • 节省推理成本。

3.5 Frequency / Presence Penalties

这两类惩罚主要用来减少重复:

  • 频率惩罚:
  • 针对“重复得太多”的词。
  • 存在惩罚:
  • 针对“已经出现过”的词。

它们都能提升输出多样性,但不宜加得过猛。

四、一个简单调参思路

如果你刚开始做微调,可以按下面的顺序调整:

  1. 先确定模型大小和序列长度,保证显存能跑通。
  2. 再确定 batch size 和 gradient accumulation 的组合。
  3. 学习率从保守值开始,例如 5e-05
  4. 最后再调 temperature、top-k、top-p 这些生成风格参数。

五、超参数调优的重点

超参数没有绝对标准答案,核心不是“记住哪个值最好”,而是理解每个参数影响的是稳定性、速度、显存,还是输出风格。只有把这四件事区分清楚,调参才会真正有效。