一、超参数到底是什么¶
超参数(Hyperparameters)是在训练开始前就要设定好的参数,用来控制训练过程,而不是训练中自动学到的权重。
一个很直观的比喻是:超参数就像做菜前先决定盐、胡椒、火候和时间,它们不会在烹饪中自己长出来,但会直接决定最终味道。
二、训练阶段最常见的超参数¶
2.1 Model Size¶
模型大小本质上是参数规模,参数越多,模型的表达能力通常越强,但资源消耗也越高。
- 大模型:
- 适合复杂推理、长文本、多语言等任务。
- 需要更多算力和数据。
- 小模型:
- 更适合简单任务和低配设备。
- 推理速度通常更快。
2.2 Number of Epochs¶
一个 epoch 表示模型完整遍历一次训练集。
- epoch 太多:
- 可能过拟合。
- epoch 太少:
- 可能欠拟合。
实际使用中,3-5 个 epoch 往往是一个常见起点,再根据验证集效果调整。
2.3 Learning Rate¶
学习率决定每次更新参数时迈多大步。
- 学习率太高:
- 训练更快,但容易震荡、不收敛。
- 学习率太低:
- 训练更稳,但收敛慢。
常见经验:
- LoRA 微调:
- 常用
1e-05到1e-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¶
这两类惩罚主要用来减少重复:
- 频率惩罚:
- 针对“重复得太多”的词。
- 存在惩罚:
- 针对“已经出现过”的词。
它们都能提升输出多样性,但不宜加得过猛。
四、一个简单调参思路¶
如果你刚开始做微调,可以按下面的顺序调整:
- 先确定模型大小和序列长度,保证显存能跑通。
- 再确定 batch size 和 gradient accumulation 的组合。
- 学习率从保守值开始,例如
5e-05。 - 最后再调 temperature、top-k、top-p 这些生成风格参数。
五、超参数调优的重点¶
超参数没有绝对标准答案,核心不是“记住哪个值最好”,而是理解每个参数影响的是稳定性、速度、显存,还是输出风格。只有把这四件事区分清楚,调参才会真正有效。