Lecture 05 · 内存、执行效率、事实使用,分别测

R57 · 内存、执行效率、事实使用,分别测

事实用得准只是系统表现的一项。长材料还涉及存储与执行,把三类问题分开测,才能判断一个改动究竟改善了什么。

状态 b0

显式分数表按位置对增长:长度翻倍,面积四倍。核对本图存的是score,不能把它与按位置线性增长的KV混为一项。

这笔数只数单层分数张量;不能直接当作模型总显存。

单层 / batch=1:显式分数 H×T×T;KV cache 随 T 线性增长T²T 翻倍 → 4 倍H = 64,T = 100,000FP16:每元素 2 bytes64 × 100,000² × 2= 1.28 TB ≈ 1.164 TiB

状态 b1

分块与在线累计避免完整大表物化,同时保留精确读取。改变的是执行与IO组织,不是把所有密集位置对删除。

单层 / batch=1:显式分数 H×T×T;KV cache 随 T 线性增长T²T 翻倍 → 4 倍H = 64,T = 100,000FP16:每元素 2 bytes64 × 100,000² × 2= 1.28 TB ≈ 1.164 TiBFlashAttention:分块 + 在线 softmax改变 IO 安排;不必物化整个 T × T 矩阵

状态 b2

同一前缀的存储/延迟与钥匙配对正确性分列。给每列匹配自己的指标和固定条件,避免用一种改进代替另一种证据。

这张表是待测指标设计,不是新增性能或准确率结果。

能放下、跑得快、用得对:分别取证存储/长度同一前缀逐渐加长峰值显存;给定预算下可运行的最大长度执行效率同模型、batch、精度与硬件首词延迟;每步延迟/tokens每秒有效使用前页的钥匙配对测试事实位置与干扰分组的成对准确率KV缓存检验复用;FlashAttention检验执行;钥匙测试检验事实是否用对。

公式与算例详情

先说明这笔内存属于什么

单层、batch=1、64 个 head、长度100000,若完整存储 FP16 attention scores,则需要 $64\times100000^2\times2=1{,}280{,}000{,}000{,}000$ 字节,即1.28 TB,约1.164153 TiB。本例只计算该分数张量,不是模型总显存,更不是所有实现都必须占用的显存下限。

FlashAttention 通过分块、减少 IO 与精确计算,避免完整物化这张分数表;密集两两配对的算术量仍随长度平方增长。稀疏连接与压缩历史状态则改变连接或保存的信息,属于另外的结构选择,不能与“不完整保存同一张密集表”混为一谈。

用三组测量回答三个问题

存储问题报告峰值显存、给定预算下可运行的最大长度,并注明 batch、层数、头数、精度和 KV 实现。执行问题在相同模型、输入输出长度、batch、精度、硬件与 warmup 规则下,分别重复测量 prefill/首词延迟与 decode 每步延迟或吞吐,不能只报理想 FLOPs。事实使用问题则在钥匙成对任务中改变事实位置与无关干扰,记录两句都对的比例及按位置分组的结果,避免用单句平均掩盖失败。

能存下、更快和采用了正确事实是三个独立判断;上述测量方案没有在本轮产生新结果。

参考与采用

原课页采用记录:M33 attention 计算和内存。页码均按PDF物理页计。

继续学习

如果问题是内存或速度,读长前缀的资源账本,在CLS 03“6 · 少算、少存、更快,是不同测量”及LAB 03 G 段核对 payload、prefill、decode 与真实计时;用单层分数张量的单位换算检查 TB/TiB 与 FP16 前提。如果问题是采用了哪个事实,另读缓存与有效上下文与 LAB 03“路径C · 材料放得下,不代表采用了当前事实”,并按三类指标的受控设计给出成对准确率。速度记录不能替代事实使用检查。