关键特性: - MoE架构:128专家,每token激活4B参数 - 但需加载全部26B参数到内存(14.5GB) - 路由器需快速访问所有专家 - Token ID可能被用作路由索引,导致NaN 推测机制: Token ID → Router索引错误 → Expert选择问题 → 特定位置NaN 这解释了为何NaN位置依赖输入token ID 对比: 26B-Standard(MoE,128 experts,bits=4):0 NaN ✅ 26B-A4B(MoE,128 experts,bits=8):NaN依赖token ⚠️ 量化参数可能是关键差异: - bits=8 vs bits=4 - group_size=64 vs 32 建议:使用26B-Standard代替(完美无NaN)
This commit is contained in:
+41
-20
@@ -116,9 +116,27 @@ Token 200 → NaN at [200, 201, 209, 210]
|
|||||||
|
|
||||||
---
|
---
|
||||||
|
|
||||||
## 四、权重文件分析
|
## 四、MoE架构关键特性
|
||||||
|
|
||||||
### 4.1 完整性检查
|
### 4.1 内存需求说明
|
||||||
|
|
||||||
|
**重要特性**:
|
||||||
|
```
|
||||||
|
26B-A4B虽然是MoE模型(每个token只激活4B参数)
|
||||||
|
但需要加载全部26B参数到内存(约14.5GB)
|
||||||
|
以维持快速的路由和推理速度
|
||||||
|
基准内存需求量与26B密集模型相近
|
||||||
|
```
|
||||||
|
|
||||||
|
**影响**:
|
||||||
|
- ✅ 所有128个专家必须常驻内存
|
||||||
|
- ✅ 路由器需要快速访问所有专家
|
||||||
|
- ✅ 每个token激活4B参数,但推理需要全量26B
|
||||||
|
- ⚠️ 增加了路由计算的复杂度
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
### 4.2 权重文件完整性检查
|
||||||
|
|
||||||
**检查结果**:
|
**检查结果**:
|
||||||
- 总tensors: 1697个
|
- 总tensors: 1697个
|
||||||
@@ -127,20 +145,7 @@ Token 200 → NaN at [200, 201, 209, 210]
|
|||||||
- Router weights: 0 NaN ✅
|
- Router weights: 0 NaN ✅
|
||||||
- Expert weights: 0 NaN ✅
|
- Expert weights: 0 NaN ✅
|
||||||
|
|
||||||
**结论**: 权重文件完全正常,问题在forward pass
|
**结论**: 权重文件完全正常,问题在forward pass的路由或专家计算
|
||||||
|
|
||||||
---
|
|
||||||
|
|
||||||
### 4.2 配置对比
|
|
||||||
|
|
||||||
| 参数 | 26B-A4B | 26B-Standard |
|
|
||||||
|-----|---------|-------------|
|
|
||||||
| 多模态Tokens | ✅ 有 | ❌ 无 |
|
|
||||||
| Quantization bits | **8** | **4** |
|
|
||||||
| Group size | **64** | **32** |
|
|
||||||
| Forward NaN | **依赖token** | **0** |
|
|
||||||
|
|
||||||
**关键差异**: 量化参数不同
|
|
||||||
|
|
||||||
---
|
---
|
||||||
|
|
||||||
@@ -215,10 +220,26 @@ Token 200 → NaN at [200, 201, 209, 210]
|
|||||||
### 7.2 可能的bug位置
|
### 7.2 可能的bug位置
|
||||||
|
|
||||||
**可能位置**:
|
**可能位置**:
|
||||||
1. Logits计算(LM head)
|
1. **MoE Router路由计算** ⚠️
|
||||||
2. Softmax计算
|
- 128个专家的路由决策
|
||||||
3. MoE Router输出
|
- Token ID被错误地用作路由索引
|
||||||
4. Quantization反量化
|
- 导致特定专家或位置的计算出错
|
||||||
|
|
||||||
|
2. **Expert专家计算**
|
||||||
|
- 激活的专家计算有问题
|
||||||
|
- 某些专家的输出产生NaN
|
||||||
|
|
||||||
|
3. **Logits计算(LM head)**
|
||||||
|
- 最终输出时索引错误
|
||||||
|
|
||||||
|
4. **Quantization反量化**
|
||||||
|
- bits=8 vs bits=4的差异
|
||||||
|
- group_size=64 vs 32的差异
|
||||||
|
|
||||||
|
**MoE特殊性**:
|
||||||
|
- Token ID → Router → Expert selection → Output
|
||||||
|
- 如果路由器使用token ID作为索引,可能导致特定位置的NaN
|
||||||
|
- 这解释了为什么NaN位置依赖输入token ID
|
||||||
|
|
||||||
---
|
---
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user