[ PROMPT_NODE_22848 ]
Post Training Miles 故障排查
[ SKILL_DOCUMENTATION ]
# miles 故障排除指南
## FP8 训练问题
### 问题:FP8 训练崩溃
**症状**:Loss 爆炸,出现 NaN 值,奖励崩溃
**解决方案**:
1. **使用块缩放 (block scaling)**:
bash
--fp8-recipe blockwise
export NVTE_FP8_BLOCK_SCALING_FP32_SCALES=1
2. **为 MoE 模型启用 R3**:
bash
--use-r3
3. **降低学习率**:
bash
--lr 5e-7 # 从 1e-6 降低
4. **从 BF16 预热**:
bash
--warmup-steps 100
--warmup-precision bf16
### 问题:FP8 与 BF16 精度差距
**症状**:FP8 模型表现低于 BF16 基准
**解决方案**:
1. **激活使用 E4M3 格式**:
bash
--fp8-format e4m3
2. **启用动态缩放**:
bash
--fp8-dynamic-scaling
3. **跳过敏感层**:
bash
--fp8-skip-layers "lm_head,embed"
## 训练-推理不匹配问题
### 问题:策略偏差
**症状**:模型在训练和推理时的行为不一致
**解决方案**:
1. **启用 Rollout Routing Replay**:
bash
--use-r3
2. **使用重要性采样修正**:
bash
--use-tis --tis-threshold 0.9
3. **验证对数概率匹配**:
bash
--verify-logprobs
### 问题:专家路由不匹配 (MoE)
**症状**:训练和推理期间激活了不同的专家
**解决方案**:
1. **启用 R3**:
bash
--use-r3
--r3-buffer-size 1000
2. **使用确定性路由**:
bash
--deterministic-expert-routing
## INT4 训练问题
### 问题:INT4 精度下降
**症状**:性能比 BF16 或 FP8 差
**解决方案**:
1. **增加组大小**:
bash
--int4-group-size 256 # 从 128 增加
2. **对敏感层使用混合精度**:
bash
--int4-skip-layers "lm_head,embed,layer_norm"
3. **从 BF16 预热**:
bash
--warmup-steps 100
--warmup-precision bf16
4. **增加学习率** (INT4 通常需要更高的 LR):
bash
--lr 2e-6 # 从 1e-6 增加
### 问题:尽管预期节省了内存,但仍出现 INT4 OOM
**症状**:使用 INT4 仍然内存不足
**解决方案**:
1. **验证环境变量**:
bash
export OPEN_TRAINING_INT4_FAKE_QAT_FLAG=1
2. **检查组大小对齐**:
bash
# 组大小必须能整除隐藏层维度
--int4-group-size 128 # 必须整除 hidden_size
## 投机强化学习问题
### 问题:低接受率
**症状**:草稿模型生成的 Token 频繁被拒绝
**解决方案**:
1. **减少前瞻步数**:
bash
--spec-lookahead 3 # 从 5 减少
2. **更新