MLSys 学习笔记 1
1. GPU ECC(Error‑Correcting Code)
- 原理:在显存(VRAM)中为每 N 位数据生成冗余校验位,常见为 SECDED(单错纠正、双错检测)。
- 实现:
- 专业级卡(Tesla/Quadro/A100、AMD Instinct)默认支持 ECC,消费级卡多关闭或不支持。
- ECC 逻辑集成在内存控制器,对程序透明。
- 优缺点:
- 优点:避免显存位翻转导致的 Silent Data Corruption,可监控纠错/未纠错计数。
- 缺点:约 12.5% 显存开销、5–12% 带宽与延迟损失。
- 开启与监控(NVIDIA 举例):
1 |
|
2. NVIDIA Persistence Mode(持久化模式)
- 作用:驱动在无客户端时依然保持 GPU 上下文初始化,减少短作业启动延迟;保持稳定 P‑state。
- 命令:
1 |
|
- 注意:功耗略增;可配合
nvidia-persistenced
守护进程跨重启生效。
3. Ring Reduce(All‑Reduce)算法概览
- 分段(Scatter):将张量平分 N 段,每轮只在环上沿顺时针传递一段。
- Reduce‑Scatter:经过 N–1 轮,每段在环上累加所有节点后恰好落在一个归属节点上。
- All‑Gather:再用同样方式广播各段结果,让所有节点拿到完整聚合值。
- 通信成本:
- Reduce‑Scatter:每节点发送/接收
数据量 - All‑Gather:同理
- 合计 All‑Reduce:
- Reduce‑Scatter:每节点发送/接收
4. Reduce‑Scatter 详细示例(4 节点、向量长 4)
- 初始数据
1 |
|
- 分段规则:下标 0→Seg 0,1→Seg 1,…,3→Seg 3。
- 3 轮累加:
Segment | 轮 1 累加结果 | 轮 2 累加结果 | 轮 3 累加结果 | 最终归属节点 | 全局和 |
---|---|---|---|---|---|
0 | 5 + 1 = 6 | 9 + 6 = 15 | 13 + 15 = 28 | Node 3 | 28 |
1 | 10 + 6 = 16 | 14 + 16 = 30 | 2 + 30 = 32 | Node 0 | 32 |
2 | 15 + 11 = 26 | 3 + 26 = 29 | 7 + 29 = 36 | Node 1 | 36 |
3 | 4 + 16 = 20 | 8 + 20 = 28 | 12 + 28 = 40 | Node 2 | 40 |
- 结果:各节点分别持有自己负责 Segment 的全局和,为后续 All‑Gather 做准备。