图解 · 运行过程 · 工程取舍
动态图解:把每一步看清楚
阅读工具约 5.5 千字
从一条输入开始,沿着数值、消息、证据和执行状态逐步看系统怎样运作。
图解中的输入与条件始终在图前说明。主张“保持结果相同”的优化会说明保持什么、在哪些假设下成立;近似优化则显示它改变了什么。
本章目录
数字与输入表示
F01 · 6步输入框中的文字,什么时候才变成模型能计算的东西?
F02 · 4步[2,3]为什么变成[2,3,4]?
F03 · 6步为什么不能把“一个汉字”当成“一次生成”?
F04 · 4步为了整齐补上的PAD,会不会被模型误当成内容?
F05 · 5步一组浮点数怎样替代一个Token编号?
F06 · 4步“装得下”和“算得快”为什么不是同一回事?
模型计算、生成与结束
F07 · 4步一个输出格子的数,到底从哪些输入格子来?
F08 · 4步reshape、转置、广播为什么不能互换?
F09 · 5步怎样从同一组三个分数,一步不跳走到抽样?
F10 · 6步为什么多层之间还要放一个非线性函数?
F11 · 5步Query、Key、Value各自是什么数,为什么分三条路径?
F12 · 5步怎样防止读到未来,或者把PAD读成内容?
F13 · 5步同一个Token出现在不同位置,为什么还需要额外处理?
F14 · 6步读其他位置之后,为什么还要残差、归一化和FFN?
F15 · 10步预测到的Token什么时候显示,什么时候成为下一轮输入?
F16 · 5步为什么少算了很多步骤,下一Token仍能看到历史?
训练与计算资源
F17 · 4步为什么“梯度下降”有时让参数增大?
F18 · 5步为什么训练看完整句,生成却只能往前走?
F19 · 6步既然模型会接下一Token,为什么还要SFT、偏好训练?
F20 · 6步LoRA、量化、MoE到底各自省了哪一部分?
F21 · 4步为什么一块算力更高的GPU,不一定让任务同比变快?
Agent、协议与上下文
F22 · 8步同一句用户任务,为什么可能调用模型不止一次?
F23 · 4步为什么看到半段JSON时绝对不能执行?
F24 · 6步“模型知道做过”与“系统能恢复”有什么区别?
F25 · 7步连接、发现、模型可见和实际授权分别发生在哪里?
F26 · 5步为什么“读得越多”有时反而越容易误解?
F27 · 5步把一百轮历史压成几句话,最容易丢什么?
检索、记忆、协作与可靠交付
F28 · 4步倒排索引和向量索引分别在帮什么忙?
F29 · 5步“相关”与“足以回答”中间还差哪几步?
F30 · 6步grep、AST、LSP、调用图各自看到什么?
F31 · 5步新事实出现后,旧记忆怎样更新而不毁掉历史?
F32 · 6步从“安装了技能”到“写出了更好的代码”,中间经过什么?
F33 · 6步为什么自动重试有时会把一次工作做两遍?
F34 · 6步为什么“测试都通过”仍可能交付错东西?
评测、安全与生产
F36 · 5步一次实验怎样区别真实改进与偶然波动?
F37 · 6步为什么“模型被劝住”不能作为唯一防线?
F38 · 5步为何优化一个最显眼的步骤,整体却没变快?
F39 · 4步为什么看得懂截图,也可能点错按钮?
F40 · 6步什么时候该改Prompt、检索、记忆或模型?
优化的原因、方法与代价
O01 · 4步为什么查询头数没变,缓存却可以变小?
O02 · 4步为什么“4bit”不等于所有模型内存都缩到八分之一?
O03 · 4步减少的是整个模型,还是需要更新的参数?
O04 · 5步不把完整注意力表存下来,怎样仍算出同一输出?
O05 · 4步缓存为什么不必为每个请求找一大块连续显存?
O06 · 4步为什么设备更忙,不代表每条请求都更快?
O07 · 5步为什么“让小模型先写,大模型点头”还不够准确?
O08 · 4步为什么总参数很多,但每Token不用计算所有专家?
O09 · 5步为什么有的优化是用时间换内存,而KV缓存恰好相反?
O10 · 4步上下文短了、检索准了、缓存命中了,为什么不能混为一谈?
O11 · 4步为什么任务拆得更细,有时完成得更慢、更差?
O12 · 4步怎样判断换小模型是优化,还是把成本挪到返工?