[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"$fgubVxy7wl9DJZcEWHD4r6Jwin4M44cDGl29ZXisvnmU":3},{"item":4,"related":48},{"id":5,"type":6,"title":7,"slug":8,"summary":9,"body":10,"coverUrl":11,"productScreenshots":12,"productLinks":13,"authorName":14,"authorUrl":15,"authorSubject":16,"category":17,"tags":22,"sourceLabel":39,"sourceName":40,"sourceUrl":40,"status":41,"seoTitle":40,"seoDescription":40,"canonicalUrl":40,"isFeatured":42,"sno":43,"sortOrder":44,"publishedAt":45,"updatedAt":46,"createdAt":47},"1521acdc-d59b-4e10-b99f-3353f957a32d","article","推理成本的隐形主角：KV Cache、显存和数据中心网络","llm-inference-kv-cache-network-infrastructure","大模型推理的瓶颈不只在 GPU 算力，还在 Prefill、Decode、KV Cache、显存带宽和跨卡网络。本文用一次请求的生命周期解释推理基础设施为什么需要缓存管理、专用网络与分离式调度。","大模型的推理速度，常被简单理解成“GPU 算得够不够快”。但一次请求真正经过的是一条很长的流水线：输入要被读进显存，多个 Transformer 层要反复访问权重和缓存，生成出的 token 还要通过网络返回用户。模型越大、上下文越长，计算之外的搬运成本越难忽略。\n\n![数据中心服务器与网络设备](https:\u002F\u002Fimages.unsplash.com\u002Fphoto-1558494949-ef010cbdcc31?w=1200)\n\n## 一次生成分成两个不同阶段\n\n用户把一段提示词发来后，系统通常先进入 Prefill 阶段：并行处理已有上下文，建立中间状态。随后进入 Decode 阶段：每次生成一个新 token，再把它接回上下文，循环直到结束。\n\nPrefill 更像“批量读题”，适合并行计算；Decode 更像“边想边写”，每一步都要等待前一步的结果，对单步延迟、显存访问和调度更敏感。一个系统如果只看平均吞吐，可能把 Decode 的首 token 延迟和用户逐字等待体验掩盖掉。\n\n```mermaid\nflowchart TD\n    A[请求进入] --> B[Tokenizer 分词]\n    B --> C[Prefill 并行处理输入]\n    C --> D[建立 KV Cache]\n    D --> E[Decode 生成一个 token]\n    E --> F{是否结束}\n    F -->|否| G[读取权重和 KV Cache]\n    G --> E\n    F -->|是| H[流式返回结果]\n```\n\n## KV Cache 为什么既救了速度又吃掉显存\n\nTransformer 在生成新 token 时，需要回看之前 token 的注意力键和值。如果每生成一个 token 都重新计算全部历史内容，长上下文会越来越慢。KV Cache 把历史 token 在每一层算过的 Key 和 Value 保存起来，下一步只计算新增部分。\n\n它的代价是缓存大小会随“层数、头数、每个头的维度、上下文长度和并发请求数”增长。也就是说，单个请求的上下文越长，同时活跃的请求越多，显存越容易被 KV Cache 占满。此时 GPU 可能还有算力空闲，却因为缓存放不下而无法继续接更多请求。\n\n所以推理系统要管理的并不只有模型权重，还包括：哪些请求正在生成、每个请求的缓存在哪张卡、缓存是否可以分页、请求被抢占后能否恢复，以及长时间不活跃的缓存何时淘汰。\n\n## 为什么 GPU 之间的网络也会变成瓶颈\n\n大模型通常需要多张加速卡共同工作。模型并行会让卡之间交换激活值、梯度或中间结果；如果跨卡通信跟不上，某些 GPU 就会等待其他 GPU，昂贵的算力被浪费在同步上。\n\n这解释了为什么 AI 数据中心开始强调专用 GPU 网络、RDMA、分层网络和存储系统。网络不是“把请求送到服务器”这么简单，它还负责在一组加速卡之间搬运模型执行所需的中间状态。Google Cloud 的 AI Hypercomputer 资料把 GPU 到 GPU 的通信、主机与存储流量拆成不同的数据平面，目的就是避免管理流量和高带宽计算流量互相争抢。\n\n## Prefill 和 Decode 为什么有时要拆开\n\nPrefill 计算密集，Decode 更容易受内存带宽和逐步调度影响。如果把两者混在同一批请求里，长输入的 Prefill 可能阻塞正在等待下一个 token 的 Decode 请求。于是一些推理系统会考虑 Prefill\u002FDecode 分离：前一组机器负责吃掉输入并生成初始缓存，后一组机器接管缓存继续生成。\n\n这样做能改善不同请求之间的隔离，却需要在机器之间传输 KV Cache，还要面对缓存格式、网络带宽、故障恢复和调度复杂度。它不是免费的“开关”，而是用网络和系统复杂度换取更稳定的延迟。\n\n## 工程上应该先看哪些指标\n\n- **首 token 延迟**：用户多久看到第一段回应，主要受排队和 Prefill 影响。\n- **生成速率**：Decode 阶段每秒能生成多少 token，直接影响流式体验。\n- **有效吞吐**：在满足延迟目标时，系统实际完成多少请求，而不是只看 GPU 利用率。\n- **KV Cache 命中与占用**：长上下文、多轮对话和共享前缀场景尤其重要。\n- **尾延迟**：P95\u002FP99 请求是否被少数长上下文拖慢。\n\n量化、投机解码和更快的 GPU 仍然有价值，但它们解决的是不同层次的问题。一个系统如果排队、缓存管理和跨卡通信没做好，单纯换更强的卡，可能只是在更快地等待。\n\n进一步阅读：[Google Cloud AI Hypercomputer 架构](https:\u002F\u002Fcloud.google.com\u002Fblog\u002Fproducts\u002Fcompute\u002Fai-infrastructure-at-next26)、[Google Cloud GPU 网络概览](https:\u002F\u002Fcloud.google.com\u002Fai-hypercomputer\u002Fdocs\u002Fnetworking-overview)。","\u002Fuploads\u002F2026-08-11\u002F39be2b58-df0a-4f5c-99f0-a9ff7a1e465b.jpg",[],[],"Foundit","https:\u002F\u002Ffoundit.cn\u002F","f39339b1-aaa6-4e86-b0c2-a6e6a21113b5",{"id":18,"name":19,"slug":20,"description":21},"6179d3b6-dc34-4483-9ded-3cd9f1b37a47","科普","abbreviation","介绍各领域新兴概念",[23,27,31,35],{"id":24,"name":25,"slug":26},"4c2bbea6-eab7-40a8-8447-1de478ff7749","分析","analyse",{"id":28,"name":29,"slug":30},"7c76bfc2-f80f-4ee0-a95d-27bd8708b434","技术","slug",{"id":32,"name":33,"slug":34},"8d35e42e-9f5b-4dd9-b30f-dc2c53d06096","硬件","hardware",{"id":36,"name":37,"slug":38},"a202d639-99a6-488a-a712-4d4c6ffd7e15","开发","dev","资料来源",null,"published",false,64,0,"2026-08-11T00:00:00.000Z","2026-08-11T04:27:56.708Z","2026-08-11T02:35:42.444Z",[49,58,68],{"id":50,"type":6,"title":51,"slug":52,"summary":53,"coverUrl":54,"authorName":14,"sno":55,"publishedAt":56,"createdAt":57},"9ccde95c-d754-4808-91f7-488f392e3eeb","你的品牌在AI眼里到底存不存在？这套系统说了算","automated-geo-monitoring-system","靠手动抽查来验证GEO效果，本质上是在跟概率玩游戏。赢一次，不代表能一直赢。","\u002Fuploads\u002F2026-08-07\u002Fdf111c0d-f14a-4b2a-8347-141e96b71654.jpg",1,"2026-08-07T00:00:00.000Z","2026-08-07T04:31:30.843Z",{"id":59,"type":6,"title":60,"slug":61,"summary":62,"coverUrl":63,"authorName":64,"sno":65,"publishedAt":66,"createdAt":67},"544fc658-c911-4de6-93b0-d2520087119a","MCP：AI 的「USB-C」时刻","mcp-ai-usb-c-moment","以前每个 AI 应用都要为 GitHub、数据库、日历各写一套私有连接器，这是 M×N 的集成噩梦，直到 MCP 的出现","https:\u002F\u002Foxqtewbrpuiouqqjrvdv.supabase.co\u002Fstorage\u002Fv1\u002Fobject\u002Fpublic\u002Fpublic-media\u002F2026-07-19\u002Fc3c06d99-a0ac-40ac-a283-7e77aabb4c4c.jpg","Foundit AI",46,"2026-07-20T00:00:00.000Z","2026-07-19T16:13:40.316Z",{"id":69,"type":6,"title":70,"slug":71,"summary":72,"coverUrl":73,"authorName":14,"sno":74,"publishedAt":75,"createdAt":76},"1bb735e6-efec-4ad5-9065-8ccfd38f5b5d","一张 JPEG 为什么会长出方块、蚊子噪点和白色光环？","why-jpeg-images-have-compression-artifacts","JPEG 通过色度抽样、分块变换、量化和熵编码大幅缩小照片，其中量化会永久舍弃部分细节。压缩过强或反复保存后，方块、边缘光环与蚊子噪点便会显现。本文从人眼偏好出发解释这些痕迹如何产生。","\u002Fuploads\u002F2026-08-14\u002F8011c7fa-472c-4599-a65a-c993b095375f.jpg",60,"2026-08-14T00:00:00.000Z","2026-08-14T03:06:16.293Z"]