跳转到主要内容

超参数

超参数控制模型的学习方式。将它们视为训练的设置。

三个基本参数

Learning Rate

更新模型时的步长。
  • 太高 (0.01):模型跳跃,永不收敛
  • 太低 (0.00001):训练需要永远
  • 刚好 (0.00002):稳定改进
常见值:
  • Fine-tuning: 2e-5 到 5e-5
  • 从零训练: 1e-4 到 1e-3

Batch Size

在更新 weights 之前处理多少个示例。
  • 小 (8):更多更新,不太稳定,需要更少内存
  • 大 (128):更少更新,更稳定,需要更多内存
常见值:
  • 有限 GPU: 8-16
  • 良好 GPU: 32-64
  • 多个 GPU: 128+

Epochs

遍历整个数据集的次数。
  • 太少 (1):欠拟合,模型学习不够
  • 太多 (100):过拟合,记忆训练数据
  • 刚好 (3-10):良好平衡
观察 validation loss - 当它停止改进或变差时,停止。

次要设置

Warmup Steps

开始时逐渐增加 learning rate。
Steps 0-500: Learning rate 从 0 → 2e-5
Steps 500+: Learning rate 保持在 2e-5
防止早期不稳定。

Weight Decay

防止 weights 变得过大的正则化。
  • 默认值: 0.0(用于 LLM fine-tuning)
  • 无正则化: 0
  • 强正则化: 0.1

Gradient Accumulation

在有限硬件上模拟更大的批次。
有效批次大小 = batch_size × gradient_accumulation_steps
示例: batch_size=4, accumulation=8 → 行为像 batch_size=32

特定任务的默认值

Text Classification

learning_rate = 5e-5
batch_size = 8
epochs = 3
warmup_ratio = 0.1

Language Model Fine-tuning

learning_rate = 3e-5  # AITraining 默认值
batch_size = 2
epochs = 1
warmup_ratio = 0.1
weight_decay = 0.0
gradient_accumulation = 4

Image Classification

learning_rate = 1e-4
batch_size = 32
epochs = 10
warmup_ratio = 0.05

何时调整

Learning rate 太高?
  • Loss 爆炸或变为 NaN
  • Accuracy 疯狂跳跃
  • 永不收敛
Learning rate 太低?
  • Loss 几乎不下降
  • 训练需要永远
  • 卡在性能差的状态
Batch size 问题?
  • 内存不足 → 减少 batch size
  • 训练不稳定 → 增加 batch size
  • 如果内存有限,使用 gradient accumulation

快速开始值

不确定从哪里开始?试试这些:
# 大多数任务的安全默认值
learning_rate = 2e-5
batch_size = 16
epochs = 3
warmup_ratio = 0.1
weight_decay = 0.0
然后根据您看到的情况进行调整。

评估设置

控制训练期间何时以及如何评估您的模型:
参数描述默认值
eval_strategy何时评估 (epoch, steps, no)epoch
eval_batch_size评估的批次大小8
use_enhanced_eval启用高级指标(BLEU、ROUGE 等)False
eval_metrics要计算的指标(逗号分隔)perplexity
eval_save_predictions保存模型预测False
eval_benchmark运行标准基准(mmlu、hellaswag、arc、truthfulqa)None

专业提示

  1. 从默认值开始 - 最初不要过度思考
  2. 一次更改一个 - 更容易看到什么有帮助
  3. 记录一切 - 跟踪什么对您的数据有效
  4. 使用验证集 - 监控过拟合

下一步