2499 字
约 8 分钟
7
S23-J05 · 导论:为什么应用开发者要懂 AI Infra

适用读者:做模型应用、却在容量/带宽/延迟上"凭感觉"的开发者;要从"会用框架"进阶到"能判断方案是否可行"的人。
前置:S23-J01–J04(本系列的入门四篇)、S20(模型机制)。
覆盖旧文:A-4333(前言,79 点)+ A-4334 §1.1(AI Infra 为什么重要,53 点)→ 132 点。
扩展点:E-S23-012("搬什么/搬多少/搬几次/经过哪里/谁必须等"五问法)、E-S23-013(跨层配合:算法↔Infra↔数据)。
下一篇:S23-J06 · 关键数字:容量、算力、带宽、延迟。

补编说明:本篇起 S23 从"单卡综述"扩容为"教材级系列",素材是 12 章 AI Infra 教材(id 4333–4345,约 70 万字)。原 A-1988 的六方向综述(J01–J04、A01)作为入门导读层保留,教材各章作为细讲层,两者不重复:综述回答"有哪些方向",教材回答"每个量怎么算"。


1. 一句话结论

AI Infra 不是"机房的事",而是"你的应用要付的账":选多大的模型、留多长的上下文、允许多少并发、放本地还是云端——每个决定都会改变系统要完成的工作量。懂 Infra 的人能在写代码前算清这笔账;不懂的人只能上线后被账单和延迟教育。

出处:AI Infra 教材前言(id 4333)。原文的类比:多数软件工程师不开发操作系统、编译器和芯片,但仍要学操作系统、编译原理、体系结构——因为要理解抽象背后的代价。

你以为在选择 实际在决定
用 70B 还是 7B 权重显存、每 token 的读取量、几张卡
上下文留 4k 还是 128k KV 缓存大小、并发上限、Attention 计算量
并发 8 还是 800 权重读取能否被分摊、延迟与吞吐的取舍
本地跑还是调 API 一次交互的端到端时间与每千次调用的成本

2. 编程抽象上移:模型成了"操作系统"(E-S23-013)

原文的核心判断:

编程抽象从操作系统到模型上下文的迁移,是计算机系统领域数十年来最重要的变化之一。 模型成了 LLM 时代的操作系统,AI Infra 成了 LLM 时代的计算机体系结构。

这句话不是修辞,它对应三个具体变化:

传统系统 LLM 系统 变化后果
编译器为"未知程序"生成通用代码 算子可为特定模型与特定加速器定制 跨层联合优化空间打开(第 5 章)
缓存策略由硬件统一决定 模型同时产生权重、激活、KV、专家输入多种访问模式 一套自动缓存策略覆盖不了,需要分块/融合/流水(第 5 章)
内存由 OS 管理 状态显式放在显存/内存池,需要自己算容量 容量成为一等约束(第 1、2 章)

跨层配合的现实例子(原文举的模型设计):模型结构里直接考虑 Infra 效率——把局部窗口、上下文压缩、稀疏选择结合起来,减少长上下文需要保存的状态与反复读取的数据;用非对称编码器—解码器架构,针对"输入多、输出少"的 Agent 负载重新分配计算。

判据:看到一个模型结构时,能说出"它要求加速器做哪些工作";看到一张卡的规格时,能判断"怎样改模型或执行方式才用得上"。两个方向都能答,才算跨层理解。


3. 方法论:从约束推导设计(E-S23-012)

原文反复强调的方法只有一句:先列约束,再谈方案。

1) 明确任务与质量要求(多长上下文、多少并发、什么延迟)
2) 列计算量 F、读写量 R、需要驻留的容量 M
3) 检查容量:M ≤ 显存可行容量?
4) 检查带宽:R / β 是否成为瓶颈?
5) 检查算力:F / Π 是否成为瓶颈?
6) 检查依赖:哪些等待无法重叠(串行、通信往返)?
7) 最后才讨论分工:模型怎么切、状态放哪、执行怎么排

3.1 五个必须回答的问题

原文把全书线索归纳成五个问题——它们同时也是排查任何"为什么慢/为什么贵"的清单:

问题 落到哪一层 典型手段
搬什么 权重 / 激活 / KV / 专家输入 减少要搬的数据(量化、稀疏)
搬多少 字节数与精度 低位宽、压缩
搬几次 复用次数(batch、缓存) 批处理、KV 复用
经过哪里 片内缓冲 / 显存 / 卡间 / 网络 分块、融合、就近放置
谁必须等它 依赖链与串行步骤 重叠、流水、异步

判据:任何一个性能问题,如果五问答不出来,说明你还在猜。

3.2 为什么"估算"必须自己做

原文给了一个很实在的观察:AI 也会算错这笔账——能列公式、给出看似精确的数字,却漏掉决定结果的基本约束:

常见漏项 后果
只算权重读取,忘了注意力还要读 KV 低估读取量
算了读取时间,没检查权重+KV+工作区是否放得进显存 方案根本跑不起来
按峰值算力推速度,没检查带宽能否持续供给 高估吞吐数倍
把工作量平均分给多卡,遗漏卡间通信 低估时间
算出高吞吐,没考虑串行依赖与通信往返 低估延迟

原文结论:漏掉任何一项,结论都可能偏离几倍甚至几个数量级。


4. 一个真实案例:延迟从 5 秒到 500 毫秒

原文作者做实时语音 Agent 时的经历(2023 年底 → 2024 年):

阶段 延迟 做了什么
第一个演示 约 5 s —
拆开交互管线 2.5 s 先估算"模型一次推理需要多少计算、读取多少数据"
继续优化 1 s 网络传输、数据库访问逐段压缩
最终 约 500–600 ms 每段都按"下界"逼近

判据:延迟优化不是"换个更快的模型",而是把整条管线拆成段,逐段算下界,找出离下界最远的那一段。 这与 S23-J03 的 roofline 是同一套思路,只是从"单个 kernel"放大到"整条请求链路"。


5. 本书的结构与本系列的分工

原文的十二章按"理解工作需求 → 认识执行资源 → 组织完整系统"展开:

部分 章 回答什么 本系列落点
一 模型与负载 1–3 计算量、数据量、依赖从哪来 J05–J12
二 芯片与系统 4–7 单卡执行 → 多卡协作 J13–J21
三 推理与训练系统 8–12 请求组织、状态管理、训练与部署 J22–J32

不同读者的读法(原文建议):

你是谁 重点章 遇到问题再回看
模型/应用开发者 8、9(推理服务)、11、12(环境与部署) 4–7(容量、算子、通信)
系统/网络工程师 5–7(执行与协作)、9、10 1–3(负载怎么来)
芯片/体系结构工程师 4–7 8–12(硬件指标如何变成服务能力)

6. 前提与边界

结论 成立条件 不成立时
"先算下界再优化" 下界可算(容量、带宽、算力已知) 依赖关系复杂(多阶段流水)→ 下界要按关键路径算
五问法覆盖性能问题 问题在"数据搬移"这一层 问题在算法/数据质量 → 换方法,不是换硬件
跨层配合有效 团队能同时改模型与系统 模型由外部提供 → 只能在部署侧优化

7. 常见误区

误区 纠正
"Infra 是运维的事" 选模型、定上下文、定并发,都是应用侧在定 Infra 的账
"算力翻倍就快一倍" 带宽瓶颈时,算力翻倍几乎无效(J07 会算给你看)
"估算不精确所以没用" 估算的价值是排除不可能方案,不是给出精确值
"先上线再优化" 容量/带宽约束是硬约束,上线前不检查会直接跑不起来

8. 自测

  1. 你的服务用的是 70B 还是 7B?换算成"每 token 要读多少 GB"是多少?
  2. 上下文从 4k 提到 32k,KV 显存涨几倍?并发上限怎么变?
  3. 用五问法描述你最近一次"接口变慢":哪一问答不出来?
  4. 你的团队里,"改模型结构"和"改部署方案"是两拨人吗?跨层配合的接口在哪?

9. 下一篇

S23-J06 · 关键数字 —— Jeff Dean 的 12 项操作耗时、Amdahl 定律、四类资源(容量/算力/带宽/延迟)与 MFU/MBU,以及一张能直接查的 GPU 速查表。

S23-J05 · 导论:为什么应用开发者要懂 AI Infra
https://www.clxhxhhr.top/posts/5532/
作者
clxstart
发布于
2024-12-31
许可协议
CC BY-NC-SA 4.0
评论
0 条
还没有评论,先写一条吧。