适用读者:要设计共享资源池调度、要算"自建还是买 API"、要解释"优化了 decode 却只快 31%"的人。
前置:S23-J29(需求率与瓶颈)、J22(批量与 TTFT)、J26(扩容与积压)。
覆盖旧文:A-4344 §11.3–§11.5(共享资源池调度 + 服务选择与调用成本 + 恢复/成本/扩容,491 点)→ 491 点。
扩展点:E-S23-110(放置碎片:等待 32 s vs 迁移 24 s vs 跨节点 33 s)、E-S23-111(突发排队:80 次 / 48 核 → 平均等 0.4 s,96 核 → 1 s 内)、E-S23-112(采购交点 241 万项 = 78.6% 利用率 = 单价之比 6.79/8.64)、E-S23-113(decode 只占 63%:2× 加速 → 1.46×,地板 9.4 ms)。
上一篇:S23-J29 · 资源需求与环境生命周期
下一篇:S23-J31 · 端到端交互时间。
1. 一句话结论
成本由"利用率"和"时间构成"两件事决定。 自建与按量的交点落在 78.6% 利用率,这个数正好是两种单价之比 6.79/8.64——跟模型、任务、批大小都无关。而 decode 只占每 token 25.3 ms 里的 63%,把它加速 2 倍,总时间只快 1.46 倍(25.3 → 17.4 ms)。
出处:AI Infra 教材 §11.3–§11.5(
id 4344)。
自建更省:N > F/(c − v)
交点利用率 = 自建单价 / 按量单价
2. 放置:碎片比总量更常见(E-S23-110)
作业需要 4×H100 + 16 核,且必须同节点。
| 节点 | 空闲资源 |
|---|---|
| 节点 1(DGX H100,112 核) | 4×H100,只剩 8 核 |
| 节点 2(DGX A100,128 核) | 4×A100,32 核 |
池子里既有 4 张空闲 H100,也有足够 CPU 核 —— 但没有一个节点同时满足
| 方案 | 时间 | 结果 |
|---|---|---|
| 等节点 1 原任务结束 | 12 + 20 = 32 s | 可行 |
| 迁走 8 核的 CPU 任务 | 4 + 20 = 24 s | ✅ 提前 8 s |
| 跨节点配置 | 1 + 32 = 33 s | 反而更晚 |
判据:"迁移"也是调度动作,要算它的代价。 本例迁移 4 s 换来 8 s——只有当"迁移 + 执行 < 等待 + 执行"时才值得。
3. 排队:总量相同,等待可以差很多(E-S23-111)
10 项 1 秒工作、单进程:
| 到达方式 | 各任务等待 | 平均 |
|---|---|---|
| 每 1 s 到一项 | 0,0,…,0 | 0 s |
| 全在第 0 s 到 | 0,1,…,9 | 4.5 s |
平台突发:48 核全空,同时来 80 次 1 秒调用:
前 48 项立即执行,其余 32 项等 1 s → 平均等待 = 32/80 = 0.4 s,全部 2 s 内完成
换成 96 核(两台 m5d.metal)→ 1 s 内完成
但内存同时要跟得上:80 个环境 × 2 GiB = 160 GiB。常驻方案要 600 GiB(> 358);每轮重建平均只占 180 GiB,剩 178 GiB 刚好接住这 80 个环境。
判据:排队是"到达分布"问题,不是"平均负载"问题。 平均 30 核够用,不代表突发时不等。
4. 抢占与优先级(§11.3.2 后半)
| 机制 | 作用 | 代价 |
|---|---|---|
| 优先级队列 | 保关键任务 | 低优先级饿死 |
| 抢占(preempt) | 腾资源给高优 | 被抢占任务要重做/恢复 |
| 配额(quota) | 防单用户占满 | 利用率下降 |
判据:抢占代价 = 已做的功是否可恢复。 有 checkpoint 的训练可抢占(J28),无状态的工具调用可直接丢弃重跑。
5. RL 的动态配比(§11.3.3)
生成(rollout)→ 打分 → 更新
生成是推理负载,更新是训练负载,两者资源需求随时间交替
| 现象 | 处理 |
|---|---|
| 生成阶段 GPU 空转等 CPU 打分 | 打分并行化、批量提交 |
| 更新阶段推理池闲置 | 池共享、弹性切分 |
| 长短样本混合 | 动态 batch、按完成先返回 |
判据:RL 集群的资源利用率天然低于纯训练,因为两个阶段用的是不同资源。规划时要按"峰值阶段"配,而不是按平均值。
6. 质量与思考预算(§11.4.1)
| 项 | 影响 |
|---|---|
| 思考预算(thinking tokens) | 越多越准,成本线性涨 |
| 采样次数(best-of-n) | 质量↑、成本 ×n |
| 模型档位 | 小模型省,质量降 |
判据:"质量"要换算成"每成功任务成本":成本 / 成功率。只看单次调用价格会选错。
7. 成本比较:交点就是单价之比(E-S23-112)
同一模型、同一 GPU、同 batch,只差计费方式:
| 方式 | 单价 | 固定支出 |
|---|---|---|
| 预留(Runpod B200 Pod) | 6.79 美元/卡时 | F = 4×720×6.79 = 19,555.2 美元 |
| 按量(B200 Serverless) | 8.64 美元/卡时 | 0 |
每项任务 3 次调用 × 1.125 B200·秒 = 3.375 B200·秒
c = 3.375 × 8.64/3600 = 0.0081 美元
交点 N = 19,555.2 / 0.0081 ≈ 241 万项
| 任务量 | 预留 | 按量 | 谁省 |
|---|---|---|---|
| 100 万 | 19,555.2 | 8,100 | 按量 |
| 241 万 | 19,555.2 | 19,555.2 | 持平 |
| 300 万 | 19,555.2 | 24,300 | 预留 |
上限校验:4 张 B200 一个月能处理 32 × 2,592,000/27 = 307.2 万项;交点占 78.6%,正好 6.79/8.64 = 0.786。
判据:交点位置 = 单价之比,与负载无关。 想让它左移,只能降自建单价或提利用率。
8. 时间构成决定优化上限(E-S23-113)
DeepSeek V4-Flash、32 会话、200K 上下文、4×B200:每个输出 token 25.3 ms。
| 组成 | 时间 | 占比 |
|---|---|---|
| decode | 15.9 ms | 63% |
| 输入处理 + 上下文重建 | 9.4 ms | 37% |
decode 提速 2× → 15.9/2 + 9.4 = 17.4 ms → 总加速 25.3/17.4 = 1.46×
每百万 token 成本 6.0 → 4.1 美元
decode 降到 0 → 仍有 9.4 ms 地板(最多再省 31%)
判据:优化前先拆时间构成。 地板由"不可压缩的读取/重建"决定;能去掉的只有调度、拷贝、格式转换。
9. 恢复、成本与扩容(§11.5 要点)
| 场景 | 先看什么 | 动作 |
|---|---|---|
| 任务失败 | 已确认输出 + 副作用账本 | 续算 / 重放(J26) |
| 成本超预算 | 每成功任务成本 | 换档位/减采样/提缓存命中 |
| 需要扩容 | 瓶颈项(J29) | 扩对应资源,不扩"最贵的" |
| 利用率低 | 时间构成 + 到达分布 | 预热池、批处理、错峰 |
10. 可复算(实测)
$ cd /root/博客运营官/blog-v2 && python3 tools/s23_book_calc.py | tail -9
放置: 等 12+20=32 s / 迁移 4+20=24 s(省 8) / 跨节点 1+32=33 s
突发: 80 次 @48 核 → 32 等 1 s,均值 0.4 s,2 s 内完成;96 核 → 1 s 内
内存: 80 环境 × 2 GiB = 160 GiB(常驻 600 > 358;每轮重建 180)
采购: F = 4×720×6.79 = 19,555.2;c = 0.0081 → 交点 241 万项
上限 32×2,592,000/27 = 307.2 万;利用率 78.6%(= 6.79/8.64)
100 万: 预留 19,555 vs 按量 8,100
300 万: 预留 19,555 vs 按量 24,300
时间构成: 25.3 = 15.9 decode + 9.4 其他;2× → 17.4 ms(1.46×),成本 6.0 → 4.1
11. 前提与边界
| 结论 | 成立条件 | 不成立时 |
|---|---|---|
| 交点 = 单价之比 | 同模型、同 batch、成功率相同 | 成功率不同 → 用每成功任务成本 |
| 迁移省 8 s | 迁移代价 4 s | 迁移更贵 → 老实等 |
| decode 占 63% | 200K 上下文、32 会话 | 上下文短 → decode 占比更高 |
| 地板 9.4 ms | 输入处理不可压 | 优化重建 → 地板下移 |
12. 常见误区
| 误区 | 纠正 |
|---|---|
| "池子里有资源就能启动" | 必须同节点(碎片) |
| "平均负载够就不排队" | 突发会排队(80 次/48 核) |
| "自建一定便宜" | 利用率低于 78.6% 时按量更省 |
| "优化 decode 就快一倍" | 只占 63% → 1.46× |
| "按单次调用价选模型" | 要按每成功任务成本 |
13. 自测
- 4×H100 + 16 核同节点,等待 12 s、迁移 4 s、执行 20 s,三个方案各多久?
- 80 次 1 s 调用、48 核,平均等待多少?全部完成多久?
- 预留 19,555.2 美元、按量 0.0081 美元/项,交点多少项?对应利用率?
- 25.3 ms 中 decode 15.9 ms,decode 提速 2× 后总加速多少?
答案
- 等待 32 s、迁移 24 s、跨节点 33 s。
32/80 = 0.4 s;2 s 内完成。- 241 万项;
6.79/8.64 ≈ 78.6%。 17.4 ms→ 1.46×。
14. 下一篇
S23-J31 · 端到端交互时间 —— 进入第 12 章:一次交互从网络往返到首 token、再到最后一个 token,各段延迟怎么拆、怎么定位。