跳到内容

1 章 · 约 22 分钟

初识 AI Infra

如何用几个关键数字,估算一次模型执行?

阅读中·实验未完成·考核未交

方法

先算上限,再看距离

调用一个模型看起来只是发一段文字。底层发生的,是一次次读取、计算、保存和交接。应用开发者不需要亲手做芯片,但必须知道这些操作各自要付多少时间和容量。选多大的模型、留多长的上下文、允许多少请求并发,都会改写系统必须完成的工作。

贯穿本课的习惯来自第一性原理:先按硬件允许的物理极限算出下界,再看真实系统离这个下界还有多远。估算不必一开始就精确,但必须清楚自己算进了什么、还有什么没有算进去。漏掉容量、带宽、通信或串行依赖中的任何一项,结论都可能偏出几个数量级。

  1. 01

    搬什么

    权重、KV、激活、梯度,还是隐藏向量。

  2. 02

    搬多少

    先写成字节。感觉不是数字。

  3. 03

    搬几次

    驻留一次与每步重读,差的是数量级。

  4. 04

    经过哪里

    片上、HBM、NVLink、PCIe、网络、无线。

  5. 05

    谁必须等它

    串行依赖和往返,决定下限能不能重叠掉。

五个问题贯穿芯片、超节点、数据中心和端边云。

五个问题

数据搬移是整本书的主线。计算单元要取得权重和中间结果,多卡要交换各自算出的数据,远端服务要接收输入并返回结果。无论尺度从片上存储扩到超节点、数据中心还是端边云,都可以反复追问同一组问题。

搬移五问

  1. 01搬什么:权重、KV、激活,还是梯度?
  2. 02搬多少:字节数,不是“很大”这种感觉。
  3. 03搬几次:驻留一次、读取一遍,与每步重读,完全不是一回事。
  4. 04经过哪里:片上、HBM、NVLink、PCIe 还是网络?带宽差几个数量级。
  5. 05谁必须等它:有没有串行依赖,通信往返能不能被计算盖住。
  1. 1应用与任务
  2. 2模型与负载
  3. 3训练与推理系统
  4. 4算子与运行时
  5. 5处理器与存储
  6. 6互联与数据中心
六层分工。向下变成计算与访存,向上变成容量、算力与带宽约束。

从任务到硬件的六层

一次请求从提出到完成,要穿过应用与任务、模型与负载、训练与推理系统、算子与运行时、处理器与存储、互联与数据中心。向下看,任务逐步变成具体的计算与访存;向上看,容量、算力和带宽决定能跑多大模型、同时服务多少人、回答要等多久。

层次之间的接口就是联合优化的切口。模型改状态表示,会改存储和通信;编译器融合相邻算子,会改中间结果放在哪里;运行时让加速器直接交接,会改主机参与的次数。

时间下界(充分重叠)

T_lower = max( F / Π , R / β )

峰值给出的是物理极限。软件无论怎样组织,都不可能比这个更快。实际耗时 T 与下界之比,就是 MFU = F/(ΠT) 与 MBU = R/(βT)。

Amdahl 定律

Speedup = 1 / ( (1 − f) + f / s )

只加速占比为 f 的那一段、加速 s 倍。即便把这段做到瞬时完成,总加速也不超过 1/(1−f)。70B 单步生成里,读取占了几乎全部时间,翻倍算力几乎不改变下限。

三张卡的关键数字(BF16 稠密矩阵峰值)
资源RTX 4090A100 80GBH100 SXM
显存24 GB80 GB80 GB
带宽1.008 TB/s2.039 TB/s3.35 TB/s
峰值165.2 TFLOP/s312 TFLOP/s989.4 TFLOP/s
读 1 GB0.99 ms0.49 ms0.30 ms

70B 生成一步,为什么过不了 10 ms

DeepSeek-R1-Distill-Llama-70B 的 BF16 权重约 141.11 GB,一张 H100 装不下。分组 8-bit 量化后约 73.73 GB,可以放进 80 GB,但还要给 KV 和工作区留位置。容量过关,不等于速度过关。

按每参数一字节、单请求每步读一遍约 70 GB:70 / 3350 ≈ 20.90 ms。矩阵运算约 2N = 140 GFLOPs,除以 989.4 TFLOP/s 只有 0.14 ms。读取是计算的 148 倍。把算力翻倍,下界纹丝不动;把带宽翻倍,或把权重量化减半,下界才降到约 10.45 ms。

八个请求共享一次权重读取,整批仍要 20.90 ms,但吞吐从约 48 token/s 升到约 383 token/s。每个请求仍然要等完整的一批。吞吐和延迟必须同时报。

实验

单步下限

权重约 70.00 GB,在 80 GB 内(预留 5 GB)。

20.90 ms

带宽墙

读取 R/β100%
计算 F/Π1%

下限取两者较大者。较短的一根无论再缩短,只要没超过另一根,总时间就不动。

吞吐

47.9 token/s

运算量

140.00 GFLOPs

考核

第 1 章考核

4 题

  1. 1.70B 按每参数 1 字节、单请求 decode 一步,在 H100 SXM(3.35 TB/s,989.4 TFLOP/s)上把算力翻倍。单步时间下界大约?

  2. 2.Llama-70B 的 BF16 权重约 141.11 GB。一张 80 GB 的 H100,下列哪项能让权重本身放进去?

  3. 3.Amdahl:编码占原耗时 20%,AI 工具把编码加快 5 倍。整体加速比大约?

  4. 4.八个请求共享一次 70 GB 权重读取。关于吞吐与延迟,哪句正确?

全部作答后交卷。