这里有两条线:一条用 PyTorch 把数据、梯度和训练循环接起来;另一条把 attention、loss 和采样写成小函数。可以先跑通,再拆开核对,不必只靠白板记忆。
想按面试方向选练习,看 RE / MLE 准备路线。想先写不用 GPU 的小函数,可以从 kNN、广播与任务依赖开始。
想练哪一块?
| 练什么 | 入口 | 做完检查什么 |
|---|---|---|
| 写对训练代码 | PyTorch:从张量到训练 | 改切片(slice)会不会影响原数据(是否共享存储),梯度是否累积,loss 分母是否正确 |
| 从公式写到代码 | 白板手写 | shape、mask、边界条件和数值稳定性对不对 |
| 排查 shape 和广播 | 张量运算 | 每个维度的含义,广播有没有改变原意 |
| 确认梯度正确 | 自动求导 | 计算图有没有被切断,梯度是否流向预期参数 |
想练概念表达和数学推导,去 ML / LLM 基础问答。这里只专注实现,不把“能讲”和“能写”算成同一件事。
一道题练三次
以 attention 为例:第 1 次说清 Q、K、V 怎样参与计算;第 2 次写一个带 causal mask 的小实现;第 3 次把 padding、长序列或 cache 加进去,判断原来的代码哪里不够了。
卡住了就回基础与模型补一补,不用硬背整页。做题是为了看看自己哪里还没懂,不是猜某家公司会考什么。
自测
代码输出对了,为什么还不算讲清楚?
还要解释在哪些输入和假设下成立。小例子可能没碰到空输入、mask 方向、精度或复杂度问题。
一道题刚做完,要怎样检查自己不是只记住答案?
改一个约束:规模增大、数据有缺失、允许重复或不能看未来。先预测哪些结论会变,再验证。
本页术语 1
- 切片 slice
- 按内容或用户属性划分的子群体,用来检查平均值掩盖了什么