多区域 LLM 服务与 KV 缓存局部性 本节摘要:对带缓存的 LLM 推理来说,轮询(round-robin)负载均衡是主动作恶。一个请求若没落到持有它前缀的节点,就要付全部 prefill 成本——长提示上 P50 约 800 ms,而缓存命中约 80 ms。2026 年的生产模式是缓存感知路由器(Rust 写的 vLLM Router、llm-d router),它消费 KV 缓存事件、按前缀哈希匹配来路由。近期研究(GORGO)把跨区域网络延迟显式纳入路由目标。商业「跨区域推理」产品(Bedrock 跨区域推理、GKE 多集群网关)把推理当不透明黑盒——它们管可用性,不管 TTFT。
本节摘要:对带缓存的 LLM 推理来说,轮询(round-robin)负载均衡是主动作恶。一个请求若没落到持有它前缀的节点,就要付全部 prefill 成本——长提示上 P50 约 800 ms,而缓存命中约 80 ms。2026 年的生产模式是缓存感知路由器(Rust 写的 vLLM Router、llm-d router),它消费 KV 缓存事件、按前缀哈希匹配来路由。近期研究(GORGO)把跨区域网络延迟显式纳入路由目标。商业「跨区域推理」产品(Bedrock 跨区域推理、GKE 多集群网关)把推理当不透明黑盒——它们管可用性,不管 TTFT。JPMorgan 与 Mayo Clinic 在 2024 年 11 月把 us-east-1 故障切换跑到了约 22 分钟。灾难恢复(DR)的真相是:32% 的 LLM DR 失败,是因为团队备份了权重却忘了分词器文件或量化配置。
对应原课程:Phase 17 · Lesson 11 ·
11-multi-region-kv-locality(原英文phases/17-infrastructure-and-production/11-multi-region-kv-locality/docs/en.md)。
阅读完本节,你应当能够:
你的服务跑在 us-east-1、us-west-2、eu-west-1。前面放一个 ALB 做轮询。生产里前缀缓存命中率跌到 8%。TTFT P50 翻三倍。vLLM 日志显示每个请求都在付全部 prefill 成本。
轮询对无状态服务最优。LLM 推理天生有状态——KV 缓存编码了模型见过的所有东西。盲路由就是路由进错误的缓存。
与此同时,你的团队有 DR 计划。你把模型权重跨区域备份到 S3。一次区域故障来袭,你尝试切换,副本拒绝启动——你忘了 tokenizer.json、量化配置、RoPE 缩放配置在另一个你没同步的桶里。
多区域 LLM 服务是一个缓存问题、一个路由问题、一个 DR 卫生问题——不是负载均衡器问题。
请求带着提示到来。路由器对前缀(比如头 512 token)做哈希,问每个副本「你缓存了这个前缀吗?」。副本在分配与驱逐 block 时,经 pub/sub 通道发布 KV 缓存事件。路由器挑有匹配的副本,无人匹配时回落到基于 GPU 利用率的平局裁决。
vLLM Router(Rust,2026 production-stack):订阅 kv.cache.block_added 事件,维护前缀哈希 → 副本索引,O(1) 查表路由,无匹配时回落到最少队列深度。
llm-d router:同模式,Kubernetes 原生,经 ControlPlane API 发布事件。
SGLang RadixAttention(第 06 节)是副本内的等价物。跨副本路由严格在其上游。
TTFT P50,2K token 提示,Llama 3.3 70B FP8,H100:
10 倍差距。如果你的路由器跨副本命中 60~80% 前缀缓存,你就在 N 副本容量上逼近单副本性能。命中 10%,你就逼近朴素扩展。
区域间 RTT:
若路由把一个 us-east-1 的请求送到 ap-southeast-1 的热前缀,省下的 prefill(800 → 80 ms)被 440 ms 往返盖过。GORGO(2026 研究)把这做显式——联合最小化 prefill_time + network_latency,而非单独 prefill。答案常常是保持路由区域化,除非前缀是多 MB 级、prefill 主导。
AWS Bedrock 跨区域推理在容量压力时自动把请求路由到其他区域。它优化的是可用性而非 TTFT,把推理当不透明。GKE 多集群网关同理——服务级故障切换,无 KV 缓存感知。
即使用了它们,你仍需应用层缓存感知路由器。它们管「us-east-1 着火了」这种情况;缓存感知路由管 TTFT。
广为引用的 2026 统计:32% 的 LLM DR 失败,是因为团队备份了权重却忘了:
tokenizer.json 或 tokenizer.modelquantize_config.json、AWQ scale、GPTQ zero-point)vllm_config.yaml、采样默认、LoRA 适配器清单)修复是最小三文件 DR 清单:
外加:每季度跑一次 DR 演习。JPMorgan 的 us-east-1 演习在 2024 年 11 月做到 22 分钟恢复,正是因为剧本排练过。
欧盟客户 PHI 不能出欧盟。如果你的缓存感知路由器为前缀匹配把一个巴黎起源的请求送到 us-east-1,无论 TTFT 收益多大,你都违反了 GDPR。先按驻留边界切分路由器,再优化缓存。
原课程 code/main.py 在多区域工作负载上模拟三种路由策略(轮询、缓存感知区域化、缓存感知全球化),报告命中率、TTFT P50/P99、跨区域账单。下面给最小可读的路由决策骨架。
def route(prefix_hash, replicas, rtt_to_replica_ms, prefill_full_ms=800, prefill_hit_ms=80): """缓存感知 + 网络延迟联合路由决策。 replicas: {replica_id: {'has_prefix': bool, 'queue_depth': int}} rtt_to_replica_ms: {replica_id: 往返毫秒} 返回: (选中的 replica_id, 估算 TTFT) """ best, best_cost = None, float("inf") for rid, info in replicas.items(): prefill = prefill_hit_ms if info["has_prefix"] else prefill_full_ms # GORGO 思路:联合 prefill + 网络 cost = prefill + rtt_to_replica_ms[rid] + info["queue_depth"] if cost < best_cost: best, best_cost = rid, cost return best, best_cost # 案例:本地副本(前缀命中,RTT 5ms)vs 远区域(前缀命中,RTT 220ms) replicas = {"local": {"has_prefix": True, "queue_depth": 0}, "apac": {"has_prefix": True, "queue_depth": 0}} rtt = {"local": 5, "apac": 220} print("短前缀命中场景:", route("h1", replicas, rtt)) # 远区域前缀更长、本地未命中的场景:prefill 主导时跨区域才划算 replicas2 = {"local": {"has_prefix": False, "queue_depth": 0}, "apac": {"has_prefix": True, "queue_depth": 0}} print("本地未命中、远区域命中:", route("h2", replicas2, rtt))
💡 路由不是「找缓存就送过去」,而是「prefill 节省 vs 网络延迟」的联合优化。把 GORGO 的
prefill + RTT写进决策函数,你才不会为了省 700 ms prefill 而付 440 ms 网络。
| 策略 | 决策依据 | 命中率 | TTFT | 适合 |
|---|---|---|---|---|
| 轮询(ALB) | 无 | ~8% | P50 ×3 | 已废,对有状态推理有害 |
| Bedrock CRI / GKE 网关 | 容量/可用性 | 不感知 | 不优化 | 区域故障切换 |
| 缓存感知区域化 | 前缀哈希 + 区域内 RTT | 60~80% | 逼近单副本 | 生产默认 |
| 缓存感知全球化(GORGO) | 前缀哈希 + prefill + 网络 | 高 | 长 MB 前缀时更优 | 多 MB 共享前缀 |
心法:区域故障切换交给 Bedrock CRI/GKE;TTFT 交给应用层缓存感知路由器;两者职责不重叠,缺一不可。
本节产出 outputs/skill-multi-region-router.md(原课程目录)。给定区域、驻留约束、SLA,它设计路由计划:
跑通模拟器:运行 code/main.py。在 75 ms RTT 下,多长提示时跨区域路由胜过纯本地?
诊断命中率下滑:你的命中率从 70% 跌到 12%。诊断三个可能原因,以及各自能确认的可观测信号。
DR 清单:为一个 70B AWQ 量化、vLLM 服务、带 5 个 LoRA 适配器的模型设计 DR 清单,列出每个文件与配置。
Bedrock CRI 够吗:论证 Bedrock 跨区域推理对一个 TTFT SLO 严格的金融科技是否「够用」。引用具体行为。
驻留策略:一个巴黎起源的请求在 us-east-1 匹配到前缀。你路由吗?写出策略。
下一节,我们从云端转向设备端——看 Apple 神经引擎、Qualcomm Hexagon、WebGPU/WebLLM、NVIDIA Jetson 如何把推理塞进手机、浏览器与机器人。