经年治世

西风烈,长空雁叫霜晨月

减去零可以消失,零减去你不行:标量算子的方向感

常量折叠、交换律和操作数方向,不能混成一次简化。

系列目录 · 算子与布局 · Read in English “减法也能照着加法写吧?” 大部分接口确实长得很像。都是两个输入、一个输出,都需要数据类型、地址描述符和量化参数。危险恰恰在“大部分”三个字。加法让很多操作数交换看起来无害,减法则像一个记性特别好的同事:你把谁放前面,它一直记到最后一个结果。 方向与标量识别 教学表达式 x-c 和 c-x,即便 c 是只有一个元素的常量,也不能......

第一行正确,第二行失踪:对齐、Stride 与常量填充的连环案

逻辑宽度、物理步长、对齐补齐与参数表必须一致。

系列目录 · 算子与布局 · Read in English “第一行都对,第二行开始像抽奖。” 这往往是一个很友善的错误:它已经用结果形状提示了故障边界。若运算公式错,第一行通常也逃不掉;若第一行正确、跨行开始错误,应优先检查地址步长、物理填充和循环结束时的指针位置。当然这只是定位假设,需要证据确认。 写清布局与步长 教学张量为 HWC,[2,3,5],每元素 1 字节。假设每个像素的通......

广播不负责喊话:它负责让地址有时前进、有时原地不动

按轴建立地址前进规则,覆盖标量、低秩和复杂广播。

系列目录 · 算子与布局 · Read in English “框架里一行就能算,怎么到了后端还要分类讨论?” 广播的数学定义非常紧凑:对齐维度,从右往左看,长度相同或其中一边为 1 就可兼容。然而一条机器指令还要知道从哪里读、一次读多少、下次地址增加多少,以及哪一个输入按向量读取。数学说“这个值复用”,机器追问“复用几次,再移动几个字节”。 把广播翻译成地址轨迹 考虑教学主张量 A:[2......

当调试器开始撒谎:一次 Permute,三种 Dump 修法

三条分支修法共同揭示观察路径也需要布局契约。

系列目录 · 算子与布局 · Read in English “数值错了。” “你怎么知道?” “Dump 告诉我的。” 这是一个值得暂停的时刻。Dump 能显示字节,不能自动保证解释字节的规则正确。布局标签、shape、量化比例、写回位置、采样时刻,任何一项不匹配,都能把正确的计算包装成错误的结果。调试器不会故意说谎,但它也会带着默认值上班。 先确认观察布局 假设教学张量按 HWC 排列......

Reshape 为什么还要写代码:元素没变,搬家路线变了

证明线性元素映射,区分形状变化与布局重排。

系列目录 · 算子与布局 · Read in English “数据一个没少,为什么编译器说不支持?” 这是 reshape 最常收到的质问。模型作者看见的是相同数量的元素,后端看见的却可能是不同的物理行距、不同的内存块边界,以及一条只能表达特定维度合并方式的搬运指令。双方都没看错,只是站在不同楼层。 证明线性元素映射 教学输入为 [3,10],输出为 [3,2,5]。按连续行主序解释,线......

转置卷积的权重:形状很诚实,内存却说了另一种方言

逻辑维度顺序和真实权重存储不同,切片公式就会不同。

系列目录 · 算子与布局 · Read in English 第一次遇到这种错误,很容易怀疑卷积核翻转、步长或 padding:单组结果很好,打开分组就不对。于是有人把边界参数来回改了三次,最终得到一种更令人不安的状态——某些输入又对了。 真正该问的第一句话可能是:“这块权重的类型写着什么,字节实际又按什么顺序存?” 逻辑形状与实际存储 张量形状是解释规则的一部分,不保证已经说完全部布局信......

分组卷积:切开蛋糕以后,盘子上的标签也得切

按组切分输入与权重时,连同量化信息一起维护。

系列目录 · 算子与布局 · Read in English “普通卷积已经跑通了。分组卷积,不就是多传一个参数吗?” 这句话的危险程度,和“这个文件只改一行”差不多。算子定义里的一个整数,到了后端可能意味着一个新图:输入要切,权重要切,偏置要切,输出要拼起来。更麻烦的是,整数权重旁边还有一套解释这些整数的量化信息。蛋糕分好了,标签拿错,大家吃到的味道仍然不对。 分组的数学与合法性 先把问......

太早变聪明的导入器:当代数优化抢在量化信息前面

代数变换时机、量化元数据匹配和常量处理为何互相制约。

系列目录 · 数值与量化 · Read in English “常量除以张量,直接转成带系数的倒数,不是更高效吗?”导入器很热心,模型刚进门就替它做了一次代数整理。到了量化信息核对阶段,另一个模块却在找:“原来的除法去哪儿了?” 这类问题不是优化公式一定错误,而是发生时机可能破坏了其他阶段仍然需要的对应关系。 一、导入、标注和优化,不是可以任意交换的三件事 设模型含有 c/x。在合适的数值......

浮点全绿、量化全红:一次重写把输出的身份证换成了输入的

重写结果类型既描述容器,也携带量化含义。

系列目录 · 数值与量化 · Read in English “浮点模型能编,量化模型连第一阶段都过不了。”有人开始怀疑后端整数指令。可错误发生得太早:还没走到发射指令,函数返回类型就已经对不上了。 真正的原因很小:构造新节点时,形状拿对了,元素类型拿错了。像搬家时地址更新成功,却顺手把住户名字抄成了邻居。 一、一个看起来完全合理的折叠 图中可能有这样的结构: 1234原始通道张量 → ......

epsilon 明明不是零,到了整数域却差点失踪

从 epsilon、平方与倒平方根追踪归一化的数值范围。

系列目录 · 数值与量化 · Read in English “为了防止除零,我们加了 epsilon。”大家听得很安心。另一个人看着量化常量问:“它量化以后是多少?”房间安静了一下。 epsilon 在浮点公式里很小,是一种保护;到了固定刻度的整数域里,很小也可能意味着不可表示。标准化的难点,就藏在这些看起来最温柔的常数里。 一、归一化先统一成“每组 M 个数” 对某组输入 x,使用总体......