# GoClaw LLM 工程手册：练习答案要点

这是教师评分用的“答案要点”，不是替学生完成实验。学生可以得到方向、公式和检查点，但应提交自己的运行记录。

## 基础与语言模型

1. `X:[2,4,8]` 与 `W:[8,16]` 输出 `[2,4,16]`；前两维是 batch 和 sequence，最后一维完成矩阵乘法。
2. `softmax(z)` 先减 `max(z)` 不改变概率比，只避免指数溢出。
3. `-log(0.1)≈2.303`，`-log(0.5)≈0.693`；正确类别概率越大，NLL 越小。
4. `y=(wx-b)^2` 时 `dy/dw=2(wx-b)x`；代入 `w=2,x=3,b=5` 得误差 1，梯度 6。
5. `[12,9,31,7,5]` 的输入是 `[12,9,31,7]`，标签是 `[9,31,7,5]`。
6. `-100` 是忽略位置；比较 loss 时必须检查有效 token 数和 mask。

## Attention 与 Transformer

- 单头 Q `[T,D]`、K `[T,D]`、V `[T,D]`；`QKᵀ` 是 `[T,T]`，除以 `sqrt(D)` 后沿最后一维 softmax，再乘 V 得 `[T,D]`。
- causal mask 让第 `t` 行不能访问大于 `t` 的列；未来分数设为负无穷后概率为 0。
- 多头是不同投影子空间的并行注意力，不应未经干预就解释为“一个头负责语法”。
- MHA、GQA、MQA 的主要差别是 KV Head 数，直接影响 KV Cache，不自动决定所有质量差异。
- Residual 保持主路径，Norm 控制尺度，MLP 对每个位置独立变换；它们的职责不能互换。

## TinyGPT 与训练工程

- 训练时整段输入可并行计算，是因为标签和历史来自真实文本；生成时下一个 token 未知，必须逐步解码。
- loss 立即很低优先检查未来 token 泄漏、labels 错位和数据重复；不能先庆祝。
- checkpoint 若缺少 optimizer、scheduler、RNG 或数据游标，能够推理不代表能够精确恢复训练。
- 有效 batch 是 micro-batch × 累积步数 × 数据并行设备数，但有效 token 还受 padding/packing 影响。
- `6 × 参数量 × 训练 token` 是量级估算，不是包含全部通信、激活和实现细节的精确计时。

## 推理与 KV Cache

- Prefill 处理整段 prompt 并建立 cache；Decode 每次只产生一个 token。
- Cache 前后应比较 deterministic logits，而不是比较随机文本。
- KV 估算中的 2 来自 K 和 V；序列长度、batch、层数和 KV Head 增长会线性增加缓存。
- 4-bit 权重不会自动把 KV Cache、激活和工作区变成 4-bit。
- TTFT、TPOT、P50/P95/P99 和总吞吐分别回答不同服务问题。

## LoRA、SFT、DPO

- LoRA `ΔW=BA`，参数量为 `r(d_in+d_out)`；冻结基座并不代表推理只需要 Adapter。
- SFT 学习“答案长什么样”，DPO 比较 chosen/rejected 的相对偏好；DPO 仍依赖参考策略和高质量偏好数据。
- 过拟合判断必须同时看验证集、通用保留集、格式、事实、安全和拒答指标。
- 偏好数据审计要检查标签方向、长度代理、模板代理、标注分歧和 prompt 泄漏。

## 评估、RAG、服务

- perplexity 只能在相同 tokenizer、数据处理、切分和统计口径下比较。
- RAG 错误要分为检索错、重排错、上下文拼接错、生成不忠实和引用不支持。
- 正确文档在 Top-1 仍可能生成错误答案；这时继续优化 embedding 不是第一步。
- Agent 的重复写操作通常是幂等、状态机、重试或审批问题，不应先归因于模型。
- API“能返回”不等于完成；必须测试错误输入、超时、取消、权限、排队和指标。

## 评分规则

只写结论不给原始结果：最多 50%。

有结果但没有 baseline 或变量混杂：最多 70%。

有 baseline、逐样本结果、失败分析和适用边界：80～90%。

能够复现实验、提出反例并设计下一步：90～100%。
