-
Notifications
You must be signed in to change notification settings - Fork 37
Expand file tree
/
Copy pathquiz.json
More file actions
78 lines (78 loc) · 3.23 KB
/
Copy pathquiz.json
File metadata and controls
78 lines (78 loc) · 3.23 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
{
"lesson": "79-pipeline-parallel",
"title": "顶点课 79 —— pipeline parallel 与 bubble 分析",
"questions": [
{
"stage": "pre",
"question": "什么是 pipeline bubble?",
"options": [
"NCCL 里的一个 bug",
"流水线首尾的空闲时间:在第一个 microbatch 到达之前各 stage 无活可干,以及最后一个 microbatch 离开之后",
"内存泄漏",
"一个网络数据包"
],
"correct": 1,
"explanation": "有 M 个 microbatch、N 个 stage 时,每 stage 的 bubble 是 (N-1)/(M+N-1)。让 M 远大于 N 就能把它压小。"
},
{
"stage": "pre",
"question": "为什么 GPipe 的激活内存与 M 成正比?",
"options": [
"Bug",
"所有 M 个 microbatch 的激活都得保留到对应的 backward;在排空(drain)开始之前什么都不会释放",
"编译器限制",
"硬件限制"
],
"correct": 1,
"explanation": "GPipe 在任何 backward 之前先把所有 forward 灌满流水线。每个在飞的 microbatch 都带着它的激活,直到它的 backward 启动。"
},
{
"stage": "check",
"question": "1F1B 相比 GPipe 改进在哪?",
"options": [
"更低的 bubble",
"bubble 相同但激活内存有界;一旦 mb 0 的 forward 到达最后一个 stage,它的 backward 就开始、激活随之释放",
"更高的吞吐量",
"更小的模型"
],
"correct": 1,
"explanation": "Megatron-LM 和 PipeDream 用 1F1B 把激活内存的上界从 microbatch 数量改为流水线深度。"
},
{
"stage": "check",
"question": "为什么各 stage 的算力相等比参数量相等更重要?",
"options": [
"美观",
"最慢的那个 stage 卡住每一个周期,其他 stage 都得空等它。embedding 层参数很多但算力很小,所以按参数量切分会让流水线失衡",
"内存对齐",
"更好写代码"
],
"correct": 1,
"explanation": "Megatron-LM 暴露 --num-layers-per-stage 为一个列表,好在每层开销不同的时候允许不均匀的层数。"
},
{
"stage": "check",
"question": "如果每个 stage 都先 send 再 recv,会出什么问题?",
"options": [
"内存泄漏",
"线缆上死锁;标准修法是交错安排:偶数 rank 先发、奇数 rank 先收",
"慢",
"更高的 bubble"
],
"correct": 1,
"explanation": "同步的 send/recv 配对需要一方在另一方发送时正好在接收。本课显式地调度各 rank,好让这个模式看得见。"
},
{
"stage": "post",
"question": "pipeline 加上 ZeRO-1 组合了哪两项内存收益?",
"options": [
"压缩与量化",
"按 stage 的参数分片(每个 rank 只持有一个 stage 的层)外加按 rank 的 optimizer 分片(每个 rank 只持有其 stage 的 1/N optimizer state)",
"只省激活",
"什么都没有"
],
"correct": 1,
"explanation": "pipeline 把层切分到各 rank;ZeRO 在每个 pipeline rank 上的数据并行组内分片 optimizer state。两项收益叠加复利。"
}
]
}