-
Notifications
You must be signed in to change notification settings - Fork 36
Expand file tree
/
Copy pathquiz.json
More file actions
78 lines (78 loc) · 3.5 KB
/
Copy pathquiz.json
File metadata and controls
78 lines (78 loc) · 3.5 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": "52-experiment-runner",
"title": "顶点课 52 —— 实验执行器",
"questions": [
{
"stage": "pre",
"question": "为什么 runner 用子进程而不是在进程内 import 实验脚本?",
"options": [
"因为 Python 不允许嵌套 import",
"因为独立进程给了 runner 一个超时或内存限制时的 kill 句柄,并且把崩溃隔离在编排器之外",
"因为 metrics 格式要求这样做",
"因为 subprocess 比 import 更快"
],
"correct": 1,
"explanation": "独立进程是语言自带的最简单的隔离方式。父进程保留了 kill 句柄和独立的地址空间,崩溃的实验不会把编排器一起拖垮。"
},
{
"stage": "pre",
"question": "为什么内存上限被描述为「软」的?",
"options": [
"因为它只限制堆,不限制栈",
"因为轮询器有一个非零间隔——进程可以在两次轮询之间短暂飙到上限以上,runner 要到下次观测才能采取行动",
"因为操作系统总是会覆盖它",
"因为 numpy 忽略这个限制"
],
"correct": 1,
"explanation": "上限是通过轮询而不是内核级限制来执行的。轮询间隔就是上限的精度,短暂的峰值可以在下次观测前短暂超过上限。"
},
{
"stage": "check",
"question": "当 stdout 中有 metrics 但退出码非零时,runner 返回哪个终态标签?",
"options": [
"ok",
"timeout",
"oom",
"crash"
],
"correct": 3,
"explanation": "终态为 ok 的条件是退出码为零且 metrics 解析成功。退出码非零就是 crash,即使在失败前已经捕获了一些 metrics。"
},
{
"stage": "check",
"question": "runner 如何从 stdout 中识别最终的 metrics blob?",
"options": [
"读取第一行 JSON",
"读取最后一行能解析为 JSON 且 key 覆盖了所有必需 metric_keys 的行;更早的覆盖行成为中间 metrics",
"扫描 stderr 中的 JSON",
"期望输出恰好只有一行"
],
"correct": 1,
"explanation": "最终 metrics 是最后一行能解析为 JSON 且包含所有必需 key 的行。更早的覆盖行被保留为中间 metrics,用于学习曲线。"
},
{
"stage": "check",
"question": "为什么 ablation 辅助函数逐个旋钮扫描,而不是做全因子组合?",
"options": [
"因为 runner 无法启动多个子进程",
"因为单旋钮扫描能产出评估器可以绘制的干净维度,而全因子组合按指数级爆炸且难以解读",
"因为 numpy 不支持笛卡尔积",
"因为种子只沿一个旋钮变化"
],
"correct": 1,
"explanation": "单旋钮扫描保持结果可解读。全因子组合的成本随旋钮数量指数增长,结果表格也难以阅读。"
},
{
"stage": "check",
"question": "把 spec.seed 传入 config['__seed'] 给了评估器什么保证?",
"options": [
"更快的执行时间",
"更低的内存消耗",
"确定性——用相同种子重跑产生相同 metrics,评估器就能分辨真实变化和随机噪声",
"免费的显著性检验"
],
"correct": 2,
"explanation": "种子锁定了实验中的随机初始化。用相同种子的两次运行产生相同 metrics,这是评估器区分真实退步和不同随机抽样的基础。"
}
]
}