Locality 与 Parallelism:贯穿 LLM 推理系统的两个不变量
问题起点
在讨论推理 Infra 的长期不变量时,Locality 与 Parallelism 经常被并列提出。它们不是两个孤立术语,而是几乎所有高性能推理设计都会遇到的一对基本矛盾:如何把工作拆开并行,同时尽量让计算靠近数据,减少通信与搬运。
Locality:局部性
Locality 关注的是:
计算需要的数据,离执行计算的位置有多近,以及数据是否能被高效复用。
一个粗略的数据“距离”层级可以表示为:
Register
↓
L1 / L2 Cache
↓
HBM
↓
同机另一设备 HBM
↓
NVLink / HCCS / PCIe
↓
跨机 RDMA / RoCE / IB
↓
Host DRAM
↓
SSD / Remote Storage
实际延迟和带宽关系依赖具体硬件,但系统原则基本不变:越频繁使用的数据越应该靠近计算。
Locality 的五种常见形式
1. Spatial Locality
连续或邻近的数据被一起访问。例如 tensor 的连续内存访问、GPU coalesced access。
2. Temporal Locality
最近使用过的数据很可能很快再次使用。Prefix Cache 就是在利用共享 system prompt 或历史 prefix 的时间局部性。
3. Device Locality
KV、weight、activation 是否位于当前执行设备的 HBM。local HBM 与 remote HBM 的成本完全不同。
4. NUMA Locality
CPU socket、PCIe root complex 与 accelerator 的拓扑关系决定 host memory access 成本。
5. Network / Topology Locality
同卡、同 NVLink/HCCS domain、同节点、同 rack、跨 rack 是不同通信层级。集群 scheduler 不能只看“哪张卡空闲”,还要考虑“哪张卡离需要的数据近”。
Parallelism:并行化
Parallelism 关注的是:
如何拆分一个 workload,让更多计算资源同时工作。
LLM 中常见的并行维度包括:
- DP:Data Parallelism
- TP:Tensor Parallelism
- PP:Pipeline Parallelism
- EP:Expert Parallelism
- CP:Context Parallelism
- DCP:Decode Context Parallelism
并行的收益来自缩短单资源承担的计算量、扩大模型容量或提高吞吐;代价则通常是通信、同步和数据分布复杂度上升。
TP:并行收益与通信成本
假设一次计算单卡需要 100 ms:
TP1: compute 100 ms + communication 0
TP2: compute 50 ms + communication 10 ms → 60 ms
TP4: compute 25 ms + communication 25 ms → 50 ms
TP8: compute 12.5 ms + communication 50 ms → 62.5 ms
这些数字只是教学模型,不代表具体硬件实测,但它揭示一个重要规律:
并行规模存在最优点;超过最优点后,communication 和 synchronization 会吃掉 compute gain。
因此“更多卡”从来不等于“更快”。
EP:Parallelism 与 Locality 冲突的典型案例
MoE 把不同 Expert 放到不同设备:
Token
↓ Router
Expert Placement
↓
All-to-All Dispatch
↓
Expert Compute
↓
Combine
EP 增大意味着 Expert 可以跨更多设备并行,但 token 也需要跨设备移动。于是:
Parallelism ↑
↓
Expert distribution ↑
↓
Token movement ↑
↓
Communication pressure ↑
Locality ↓
DeepEP、topology-aware expert placement、负载均衡等优化,本质都是在降低这项代价。
Context Parallelism / DCP
长上下文可以按 token / context 维度分片到多设备,从而分摊 KV storage 与 attention computation。
但 attention 又依赖跨 token 信息,因此并行会引入 KV / metadata / partial result communication。这正是 DCP 中 KV layout、rank mapping 和通信设计复杂的原因。
参见:Decode Context Parallelism(DCP)详解:长上下文解码中的 KV Cache 分片、通信与 vLLM/昇腾实现。
PD:主动牺牲 Locality 换资源解耦
P/D 分离是一个特别典型的系统 trade-off。
混部时,prefill 产生的 KV 可以天然留在本地;分离后则需要:
Prefill Node
↓ KV / state transfer
Network
↓
Decode Node
这主动破坏了一次 locality,但换来了:
- prefill / decode 独立扩缩容;
- 更适合各自 workload 的资源配置;
- 更灵活的 scheduling 与 isolation。
因此判断 P/D 是否值得,不能只比较算力,而要看:
资源解耦收益 > state transfer + locality loss 的成本。
参见:PD 分离、DCP 与 KV Pool:计算分工、缓存分片和跨节点复用。
KV-aware Routing:Cluster-level Locality
如果一个请求的 KV 已经存在 Node A,而下一轮却路由到 Node B,就可能产生重新计算或 KV transfer。
因此更好的 router / scheduler 会利用 cache locality:
Request
↓
查询 prefix / KV 所在位置
↓
优先路由到已有 state 的 worker
这说明 locality 不是 kernel 层专属概念,它可以一路上升到 cluster scheduler。
为什么 topology 重要
同样是 TP8:
- 节点内 8 卡高速互联;
- 跨两节点 8 卡;
其通信成本可能完全不同。因此常见设计会让高频 collective 尽量限制在高速 domain 内,把更松耦合的 DP 等维度放到较慢链路上。
这也是“parallelism 要尊重 hardware locality”的具体含义。
用 Locality / Parallelism 解读常见技术
| 技术 | 主要系统作用 |
|---|---|
| TP / EP / CP / DCP | 增加 parallelism,同时引入不同形式的通信与同步 |
| FlashAttention | 改善片上/显存数据复用与 memory locality,减少 HBM IO |
| Prefix Cache | 利用 temporal locality |
| KV-aware Routing | 利用 cluster-level cache locality |
| P/D | 牺牲部分 state locality,换资源解耦与调度灵活性 |
| DeepEP | 降低 EP parallelism 带来的 communication penalty |
| Mooncake / NIXL | 在 locality 被破坏或 state 必须迁移时,降低 data movement 成本 |
一个通用性能模型
面对任何新的推理机制,都可以先用下面的简化模型思考:
Total Time
≈ Compute Time
+ Communication Time
+ Memory / State Movement
+ Synchronization / Queueing
Parallelism 主要试图压低 Compute Time;Locality 主要试图压低 Memory / State Movement 和 Communication Time。真正的系统优化是在四者之间寻找全局最优,而不是把某一项单独做到最大。
实践方法
以后读 vLLM、SGLang、DeepEP、Mooncake 等代码时,可以固定问:
- workload 是按什么维度切分的?
- 切分后哪些数据不再 local?
- 新增了什么 collective / point-to-point communication?
- communication 是否跨越了更慢的 topology boundary?
- state 能否复用,还是每次都搬?
- 是否存在 parallelism 增大后收益反转的点?
这六个问题可以快速把一个新名词还原为系统问题。
知识联系
- MoE 推理中的 Expert Parallel、KV Cache 与大规模专家并行架构解析:EP 是理解 parallelism/locality 冲突的最佳实例之一。
- AI Infra 为什么必须懂硬件体系结构:从 MFU 到 Full Mesh 与 Clos 超节点网络:topology 决定 locality 的物理边界。
- DP2、TP8 与 MoE EP:两节点部署为何不一定是两份独立模型:可以进一步用本页模型分析为什么不同 parallel dimension 应映射到不同链路层级。
最重要的抽象
无论框架和硬件如何变化,都可以持续追问四个问题:
计算怎么拆?数据放哪里?计算和数据距离多远?为了并行需要搬多少数据?
这四个问题是 Locality 与 Parallelism 在 AI Infra 中最核心的长期价值。