跑通项目只是 L0 入场券。代码里的设计取舍、抽象层次与性能权衡不会因为多跑几遍而进入理解。
学习单元:机制切片
学习单位是机制切片(Mechanism Slice),不是一个项目。一个切片是一条完整的、可独立理解的数据或控制流,判断标准是能用一句话说完,并且有明确的输入与输出。
同时只允许存在一个进行中的切片。 想开新的,先把当前切片验收通过,或者写进暂停清单。这一条规则消除了大部分混乱。
五阶段流程
每个切片都完整走一遍下面五步,顺序不可跳,尤其是第 ③ 步不能提前到第 ① 步。 以每晚两小时计算,五个阶段合计约六小时,通常跨两到三个晚上完成一个切片。① 定位:链路与文件清单
产出是一份自己核对过的文件清单与调用顺序。- 让 AI 给出涉及的文件和调用顺序,要求带真实路径与函数名。
- 用 IDE 的
Find Usages或grep抽查两到三处,确认路径和函数真实存在。 - 写下这条链路的第一个函数和最后一个函数。
- 在头尾两处打断点或加日志,跑一次,确认链路真的被走到。
1 小时内找不到链路,说明切片切大了,回到上一步再切小。
- 能背出这条链路的起止函数和文件名
- 文件清单自己核对过,没有 AI 编造的路径
- 断点至少命中过一次
② 建模:数据结构与接口
只读数据结构和接口,不读逻辑。产出是核心结构体的字段表与状态转换图。 对每个核心结构体做一张三列表,填不满的字段就是知识空洞,标记出来而不是跳过。
围绕每个结构体问四类问题:
- 设计意图:这个字段为什么用引用计数而不是深拷贝?改成深拷贝会有什么后果?
- 反事实:如果把这个分配策略换成另一种实现,需要改动哪些接口?
- 边界:这个字段在什么情况下为空?为空时下游哪个分支会挂?
- 失败模式:什么输入会让这段代码性能崩掉(不是出错,是变慢)?
- 每个核心结构体的字段表填满,没有「不知道谁写」的字段
- 能画出状态转换图,不看笔记能复述主干
- 能用一句话说明这个机制解决什么问题(说不出来说明还停留在细节层)
③ 预测对答案
决定成败的一步。顺序绝对不能反:先看解释再写理解,写出来的只是复述,会产生「看懂了」的错觉,实际是识别而非回忆。- 合上所有窗口,手写一段预测(不看代码):这个函数做了什么、为什么这么做、关键分支分别在什么条件下走。
- 把这段话贴给 AI,用下面的模板要求批改。
- 把批改结果记下来,重写第二版预测。
- 反复到错误项连续两次为空。
- 手写预测有文本留存,不是只在脑子里想
- 第二版预测的错误项不超过 1 条,且是细节而非结构性错误
- 能说出至少一个自己原本想错的地方
④ 动手验证
读代码得到的假设只有改动才能验证。每个实验必须有假设和预期,否则只是瞎试。
按性价比排序的实验类型:
- 加日志或计数器:最便宜,验证「谁被调用了几次」。
- 改极端参数:block size 设成 1 和设成 4096,看行为差异。
- 注释掉优化分支:验证这个优化是否真的在起作用。关掉后程序依然正确但变慢,说明理解正确。
- 性能对比:Nsight Compute 或 profiler,观察带宽利用率与 occupancy。
- 至少三个有假设、有预期的实验
- 至少一个实验结果出乎预期,并且解释了原因(没有意外说明实验太保守)
- 关掉某个优化前能预测性能变化方向,并验证
⑤ 输出验收
产出是一篇自己的笔记,加上一次出题自测。- 用自己的话写清:这个机制解决什么问题、怎么做的、踩过哪些坑、在哪想错了。
- 让 AI 出题,只要题目不要答案。
- 答完再要答案与评分,答对率低于 80% 则回到第 ③ 步。
- 笔记里有「我原本想错的地方」一节,没有这一节说明笔记是抄的
- 出题答对率不低于 80%
- 能画一张图,不看笔记讲 5 分钟
掌握程度判据
用行为定义程度,替代「感觉懂了」。
对「学习一个项目」这个目标,L3 是及格线,L4 是优秀。到达 L3 的量化标准是完成三到五个机制切片,每个切片的 ③④⑤ 都通过验收,而不是读完所有文件。
学习状态表
放在笔记最上方,一眼看出当前在做什么、卡在哪、哪些可以放。
一行里出现两个 🔄 就说明违反了单一切片规则。
遗忘的分层处理
遗忘是正常机制,问题不在遗忘本身,而在忘记之后没有低成本的恢复路径,于是只能重学一遍。重学才是真正拖慢进度的地方。对策是让该背的极少,其余全部外包给笔记与检索。三层知识的分工
区分法则:换个项目还能用上的属于原则层,只在这个仓库成立的属于细节层。
- 「分页式管理用间接层消除碎片,代价是每次访问多一次查表」→ 原则层,必须记住
- 「
BlockTable里有block_table和num_blocks两个字段」→ 结构层,记个大概即可 - 「
gpu_worker.py某个函数叫什么」→ 细节层,忘了就grep
间隔检索排期
重读笔记只产生熟悉感,不产生回忆能力。有效的方式是闭卷默写,排期为 D0(学完当天)→ D+1 → D+7 → D+30,每次 5 分钟,只做一件事:拿一张白纸,默写这个机制的一句话目的 + 主干流程,不看笔记。
- 默不出来就翻笔记看 5 分钟,这就是真正的复习,不算失败。
- 连续三次默写失败,把该切片降级为「只需要知道它存在」,不要硬背。
- 每次在笔记里记一行:
D+1 ✅ / D+7 ⬜ / D+30 ⬜。
机制卡片
在每篇笔记顶部放一张固定格式的卡片,正文则作为查阅资料而非背诵材料。复习问题的形式
问题形式决定记忆质量。推理型问题答对一次,抵得上背诵型问题答对十次,因为它挂在因果链上。遗忘日志
每次想不起某个东西时当场记一行,用真实使用频率替代主观重要程度。跨项目记忆锚
同一机制在不同项目中再遇到一次,记忆强度高于复习多遍。- 页表加引用计数:操作系统虚拟内存 → vLLM 的 block table → Redis 共享对象
- online softmax:FlashAttention → 流式统计计算
- warp shuffle:CUDA Reduce → 任意并行规约
每周固定 15 分钟
周日执行,15 分钟封顶:- 更新状态表,看哪个切片卡住。
- 随机抽三张机制卡片,闭卷默写。
- 过一遍遗忘日志,把高频项排进下周。
提问模板
仓库结构
仓库结构
链路切片
链路切片
结构体建模
结构体建模
批改预测
批改预测
三条硬规则
- 一次只学一个机制。 想做别的就写进暂停清单,不写代码不开窗口。
- 48 小时降级规则。 任何一步卡超过 48 小时或累计 3 小时,降低抽象层级,从「调度器怎么工作」降到「这个函数输入输出是什么」。降级不丢人,卡死才丢人。
- 有产出才算完成。 每一步必须有文件、文本或命令输出作为证据,没有产出等于没做,不管看了多久。
速查卡
相关笔记
PagedAttention 与 KV Cache
可用来练习机制切片拆分的对象:从预填充与解码两阶段拆到块表分配。
Reduce 算子
计划整理的 warp shuffle 与共享内存规约,是并行规约这一机制的两种实现。