DeepSeek‑R1 训练中的超参数调优指南
一 训练范式与资源定位
- 明确目标与规模:满血版 DeepSeek‑R1 为 MoE 架构,总参数约 671B、每步激活约 37B,训练消耗约 278.8 万 GPU 小时;一般团队多采用官方或云端 API 使用。本地/私有化更现实的是 蒸馏版 R1(1.5B/7B/14B/32B/70B),在显著降低成本的同时保留较强的推理能力。硬件建议:蒸馏版微调可用 A100/V100(显存≥16GB) 等;满血版多卡/多机与 FSDP ZeRO‑3 等分布式是刚需。训练方式上,数据充足选全参数微调,资源受限选 LoRA/QLoRA 等参数高效方法。
二 关键超参数与推荐区间
- 下表给出面向蒸馏版 R1 的“起点配置”,随后按验证集指标小步迭代(学习率与批次大小优先级最高)。
| 超参数 | LoRA/QLoRA 起点 | 全参数起点 | 调整要点 |
|---|
| 学习率 | 3e‑5(LoRA) | 1e‑5(全参) | 余弦退火或线性 warmup;过高不收敛、过低收敛慢 |
| 批量大小 | 依显存尽量大;如 A100 可设 256(全局) | 依显存与 ZeRO 策略设定 | 结合梯度累积;尽量让 GPU 利用率 >85% |
| 训练轮数 | 3–5 epoch | 1–3 epoch | 早停看验证损失;小样本用更小 epoch 防过拟合 |
| 优化器与调度 | AdamW,余弦退火 | AdamW,余弦退火 | 固定步数或按验证集早停 |
| 正则化 | 权重衰减 0.01;LoRA dropout 0.1 | 权重衰减 0.01;Dropout 0.1–0.3 | 过拟合时提高 dropout/权重衰减 |
| LoRA 秩与 α | r=16,lora_alpha=32 | — | 小模型可试 r=8/32;α 与 r 成比例 |
| 上下文与长度 | 依数据设 max_seq_len(如 2K/4K) | 同左 | 过长显存占用高;必要时梯度检查点 |
| 分布式与精度 | FSDP ZeRO‑3 + BF16/FP16 | 同左 | 多卡用 torchrun 启动;监控梯度范数 0.1–10 |
- 注:满血版 R1 的 MoE 训练还涉及专家数与 top‑k(如 256 专家、top‑2 路由)及“无辅助损失的负载均衡偏置”等工程超参,通常沿用官方设定并在训练中动态调偏置;一般团队不建议自行改动核心路由策略。
三 调参流程与搜索策略
- 建立基线:按上表设置“起点配置”,固定随机种子,确保可复现。
- 小范围扫参:优先调 学习率 与 全局批量大小(必要时配合梯度累积),在验证集上做 网格搜索/随机搜索/贝叶斯优化;每次只改动一个关键超参,控制变量。
- 早停与恢复:以验证集损失为监控指标,启用 checkpoint 自动保存与断点续训;训练中断可从最近检查点恢复。
- 稳定性监控:实时看 GPU 利用率(>85%)、梯度范数(0.1–10)、学习率曲线;异常(发散/停滞)先降学习率或减小批次再排查数据质量与长度分布。
四 任务与数据相关的细化建议
- 数据规模与策略:数据充足(如 ≥10 万样本)可尝试全参数微调;数据较少优先 LoRA/QLoRA,并适当提高正则化(如 dropout 0.2–0.3)。
- 长文本与生成稳定性:限制 最大生成长度(如 512 tokens),必要时使用 重复惩罚(repetition_penalty=1.2);训练时控制样本长度分布避免极端长样本拖慢收敛。
- 领域适配:通用数据与领域数据混合训练(如 3:7),既保留通用能力又提升领域效果;蒸馏版在复杂推理上天花板低于满血版,任务难度要与模型规模匹配。