标签 KV Cache 下的文章

为 vLLM 推理有效规划 GPU 规模并进行合理配置,首先需要清晰理解大语言模型处理的两个基本阶段——Prefill(预填充)和 Decode(解码),以及这两个阶段对硬件提出的不同需求。

本指南深入剖析了 vLLM 运行时行为的内部机制,阐明了内存需求、量化和张量并行等核心概念,并提供了将 GPU 选型与实际工作负载相匹配的实用策略。通过探究这些因素之间的相互作用,您将能够准确预判性能瓶颈,并在 GPU 基础设施上部署大型语言模型时,做出明智且具有成本效益的决策。

vLLM 运行时行为剖析:预填充阶段 vs 解码阶段

预填充阶段("读取"阶段)

这是任何请求的第一步。vLLM 接收整个输入提示(用户查询 + 系统提示 + 任何 RAG 上下文),并以高度并行的方式一次性处理所有内容。

  • 过程​:模型"读取"上下文,并用该上下文的数学表示填充键值(KV)缓存。
  • 瓶颈​:由于并行处理数千个令牌,此阶段几乎总是受限于内存带宽。速度上限取决于 GPU 将巨大的权重矩阵从显存移动到计算核心的速度。有关 GPU 性能特性的更多信息,请参阅我们的 GPU 性能优化指南
  • 实际影响​:这决定了首 Token 延迟(Time-To-First-Token)。如果要总结一个长达 10 万 Token 的庞大文档,预填充阶段就是让用户在第一个词出现前等待的原因。

解码阶段("写入"阶段)

预填充完成后,vLLM 进入自回归循环以生成输出。

  • 过程​:模型生成一个 Token,将其附加到序列中,然后再次运行整个模型以生成下一个 Token。对于单个请求而言,这本质上是串行的。
  • 挑战​:仅为了计算单个用户的一个 Token 而从显存加载庞大的模型权重是极其低效的;GPU 在移动数据上花费的时间比计算还多。
  • 解决方案(连续批处理​​​:为了解决这个问题,像 vLLM 这样的现代引擎不会逐个处理请求。相反,它们使用连续批处理。请求动态地进入和离开批处理批次。vLLM 在同一个 GPU 周期内,将新请求的预填充操作与进行中请求的解码步骤交错进行。
  • 瓶颈​:当有效进行批处理时,此阶段变为​计算受限​(受原始 TFLOPS 限制),因为目标是尽可能多地并行处理 Token 计算,以最大化总体吞吐量。

预填充阶段与解码阶段的对比

  • 主要瓶颈​:预填充阶段为内存带宽,解码阶段为计算能力。
  • 衡量指标​:预填充影响​首 Token 延迟​,解码影响​吞吐量​。
  • 并行性​:预填充阶段针对单个请求具有高并行性;解码阶段对单个请求是顺序的,但通过跨请求的连续批处理实现并行。

将阶段与工作负载及硬件关联

了解哪个阶段在您的工作负载中占主导地位,对于选择合适的硬件至关重要。

运行时阶段主要操作主要硬件约束主要用例场景
预填充阶段并行处理长输入。内存带宽​(TB/s)(对快速 TTFT 至关重要)• RAG• 长文档摘要 • 大规模少样本提示
解码阶段顺序生成输出。计算能力​(TFLOPS)(对快速 Token 生成至关重要)• 交互式聊天与客服 • 实时代码生成 • 多轮智能体工作流

运行时的 ​KV​ Cache

在推理过程中,vLLM 高度依赖 KV Cache,用来避免重复计算已经完成的工作。

工作机制

在 Transformer 中,每个 token 都会在注意力层内被转换为 Key(K)Value(V) 向量。 如果没有缓存机制,模型在生成第 t+1 个 token 时,就必须重新处理整个历史序列(token 0 … t)。

解决方案:KV Cache

KV Cache 的作用正是把这些已经计算过的 K / V 向量保存下来并重复利用。

  • Prefill 阶段: vLLM 会一次性为所有输入提示词计算 K / V,并立即写入缓存。
  • Decode 阶段:每生成一个新 token,只需从缓存中读取历史 K / V,并仅为这个新 token 计算新的 K / V。

带来的收益

这种机制将注意力计算:

  • 近似二次复杂度(为了写下每一个字,都要把整本书重新读一遍)
  • 转变为线性复杂度(只需要写下下一个字)

代价:动态内存增长

性能提升的代价是 ​显存占用​。

每生成一个新 token,KV Cache 中都会追加新的条目。运行时,KV Cache 的使用量会随着以下因素动态增长:

  • Prompt 长度与输出长度对话越长,占用的 VRAM 越多。
  • 并发请求数(Concurrency每一个活跃请求都需要自己独立的一份 KV Cache。
  • 模型规模模型越深(层数越多)、越宽(注意力头越多),​每个 token 所需的缓存就越大​。

这正是为什么人们经常说,使用同一个模型的两个工作负载,可能对硬件的需求却天差地别。

例如:一个 70B 模型 本身也许能放进单张 GPU,但如果在长对话中 KV Cache 持续膨胀,服务器仍然可能因为 ​显存​耗尽(​​OOM)而直接崩溃​。

因此,在生产环境中,理解并管理内存​​行为是部署 LLM 的核心能力之一​,这一点在我们卓普云官网博客中的《LLM 微调与部署指南》中也有详细说明。

资源配置基础:模型、精度与硬件如何决定适配性

理解 vLLM 的运行时行为后,下一步是确定模型能否在给定 GPU 上运行,以及它能支持怎样的并发级别或上下文长度。

本节将提供所需的数学公式与决策树,用于计算静态内存需求、估算 KV 缓存增长,并系统性地排查和确定适配问题。

GPU 硬件特性与约束

在计算模型大小之前,首先必须理解我们要把模型放进的“容器”是什么。不同的 GPU 在可行性与性能上都有各自明确的硬性限制。

常见数据中心 GPU 的显存容量

以下是当前主流推理 GPU 的物理显存​​上限​,也是模型部署时不可突破的硬限制。

vLLM 推理与训练的 GPU 对比:

即使模型本身能够装入显存,​GPU​ 架构差异仍会显著影响 vLLM 的实际性能​。需要重点关注以下指标:

模型权重占用(静态显存)

在 vLLM 能够对外提供推理服务之前,模型必须先将全部权重加载进 GPU 显存(VRAM)。

权重大小完全取决于模型的参数数量以及所选择的数值精度。

静态权重计算公式

模型所需的显存容量(GB)可以使用以下公式进行估算:

​显存​(GB)≈ 参数量(十亿) × 每个参数所占字节数

下表展示了 Llama 3.1 70B(700 亿参数)模型在不同量化精度下的显存占用情况:

精度选择是决定模型是否可部署的​最关键因素​​。

将一个 70B 模型从 FP16 量化为 INT4,可将静态显存占用减少 ​75%​,使其从“单节点无法运行”变为“可在单张 A100 上运行”。

因此,在 DigitalOcean GPU 服务器等云环境中,量化是实现高性价比部署的必要手段。

KV Cache 需求(动态显存)

如果说模型权重决定模型是否能够启动,那么 ​KV​ Cache 决定模型是否能够扩展​。

KV Cache 往往被严重低估,这也是推理负载下最常见的 OOM 原因之一。

要准确评估部署规模,必须根据预期的上下文长度与并发请求数,估算 KV Cache 的显存消耗。

“现场经验法则”(快速估算)

在大多数实际业务场景中,精确公式并不适合即时计算。

因此通常采用“每 token ​显存​​系数​”的方法进行估算,该方式足以支撑初步容量判断。

简化 ​KV​ Cache 公式:

KV​ Cache 总​显存​(MB) = Token 总数 × 显存系数

其中:Token 总数 = 上下文长度 × 并发请求数

标准显存系数如下表所示:

示例

我们假设,某用户计划运行:

  • 模型:Llama 3 70B
  • 上下文长度:32k
  • 并发用户数:10

​计算 Token 总数:​32,000 × 10 = 320,000 tokens

​套用标准系数(0.35):​320,000 × 0.35 MB = 112,000 MB ≈ 112 ​GB

​FP8 选项验证:​若启用 FP8 量化缓存,显存占用将降至一半:约​ 56 ​GB

最终配置方案:
  • FP16 缓存方案:112 GB KV 缓存 + 140 GB 模型权重 = 总计 252 GB(需 4 块 H100 GPU)
  • FP8 缓存方案:56 GB KV 缓存 + 140 GB 模型权重 = 总计 196 GB (可部署于​3 块 H100​;若模型权重同步量化,2 块 H100 亦可勉强容纳)

精确计算工具与公式

针对边界场景或深度验证,请使用专业公式或在线计算器:

总KV缓存 (GB) = (2 × 模型层数 × 模型维度 × 序列长度 × 批大小 × 精度字节数) / 1024³

何时需要使用 Tensor Parallelism(张量并行)

Tensor Parallelism(TP)是一种将模型权重矩阵拆分到多张 GPU 上的技术。

它可以让 vLLM 将多张 GPU 视为一张“逻辑大卡”,共享显存资源。

为什么要使用张量并行?张量并行的主要目标是​可行性,而非性能优化​。

通常在以下场景中启用:

1、模型权重超限:模型体量超过单卡物理承载极限(例如:24GB 显存的 GPU 无法加载 Llama 3 70B 模型)

2、KV 缓存空间耗尽:模型权重虽可加载,但未预留任何 KV 缓存空间,导致无法处理长上下文或高并发请求

虽然张量并行(TP)能极大释放显存,但它也引入了通信开销。在每一层计算完成后,所有 GPU 必须同步它们的部分计算结果。

  • 单 GPU 适配情况:如果一个模型能在单张 GPU 上运行,那么使用单 GPU 几乎总是比使用双 GPU 更快,因为它完全避免了通信开销。
  • 互联依赖:TP 的性能高度依赖于高速的 GPU 间通信带宽。如果在没有 NVLink 的显卡上使用 TP(例如仅通过标准 PCIe 连接),由于同步延迟,推理速度可能会显著下降。

若需部署多 GPU 环境,可考虑使用 DigitalOcean Kubernetes 来编排 vLLM 服务。

数值实测:资源配置场景分析

在进入高级配置前,让我们将前几节的数学计算应用到实际场景中。这有助于验证我们对“适配性”的理解,并揭示纯计算中常被忽略的实际约束。

隐藏的显存开销

一个常见的错误是计算 \` 权重 + 缓存 = 总显存需求\`,并假设可以达到 100% 的利用率。实际情况并非如此。

  • CUDA上下文与运行时开销​:GPU 驱动、PyTorch 和 vLLM 运行时本身就需要预留内存来初始化(通常为 2-4 GB)。
  • 激活缓冲区​:前向传播过程中用于存储中间计算结果的临时空间。
  • 安全配置原则​:务必预留约 4-5 ​GB的显存作为“不可用”的系统开销。如果你的计算结果显示仅剩 0.5 GB 可用,服务器很可能会崩溃。

场景 A:轻松适配(标准聊天)

  • 硬件​:1x NVIDIA L40S(48 GB 显存)
  • 模型​:Llama 3 8B(FP16 精度)
  • 计算​:

    • 权重:80 亿参数 x 2 字节 = 16 ​GB
    • 系统开销:-4 ​GB
    • 可供缓存的剩余显存:48 - 16 - 4 = 28 ​GB
    • 缓存容量估算:28,000 MB / 0.15 MB 每 Token = 约 186,000Token

结论​:​适配极佳。​此配置可应对大规模负载(例如,60 个并发用户,每人 3k 上下文)。

结果​:高吞吐量,低成本。

场景 B:“权重超标”(大模型​​,单GPU

  • 硬件​:1x NVIDIA H100(80 GB 显存)
  • 模型​:Llama 3 70B(FP16 精度)
  • 计算​:

权重:700 亿参数 x 2 字节 = 140 ​GB

结论​:​完全无法适配。​模型权重(140 GB)已超过 GPU 物理容量(80 GB)。

​要想解决这个问题,​必须使用​张量并行​​(2x ​GPU量化技术(见第 3 节)。

场景 C:“缓存陷阱”(模型能加载,但无法运行)

  • 硬件​:1x NVIDIA H100(80 GB 显存)
  • 模型​:Llama 3 70B(FP8 量化精度)
  • 计算​:

    • 权重:700 亿参数 x 1 字节 = 70 ​GB
    • 系统开销:-4 ​GB
    • 可供缓存的剩余显存:80 - 70 - 4 = 6 ​GB
    • 缓存容量估算:6,000 MB / 0.175 MB 每 Token (FP8) = 总计约 34,000Token

结论​:​有风险 / 适配性差。​模型可以加载,但几乎没有可用的工作空间。

如果现在有 10 个并发用户,每人仅能分配到约 3.4k 上下文。一旦有用户粘贴长文档(4k Token),系统就会因显存不足而崩溃。

这个场景给我们一个启发,即权重能放下,不代表工作负载能运行。 此场景通常需要增加 GPU 或选择更小的模型。

场景 D:解决方案(张量并行)

让我们通过增加第二张 GPU 来解决场景 C 中的“缓存陷阱”。这展示了张量并行(TP)如何整合内存资源。

  • 硬件​:2x NVIDIA H100(每张 80 GB 显存 = 总计 160 GB 可用)
  • 模型​:Llama 3 70B(FP8 量化精度)
  • 计算​:

    • 总可用显存:160 ​GB
    • 权重:​-70 ​GB​(分摊到两张 GPU 上)
    • 系统开销:​-8 ​GB​(每张 GPU 约 4 GB)
    • 可供缓存的剩余显存:160 - 70 - 8 = 82 ​GB
    • 缓存容量估算:82,000 MB / 0.175 MB 每 Token (FP8) = 总计约 468,000Token

结论​:​可用于生产环境。​通过增加第二张 GPU,我们从“仅有风险性的 6 GB”缓存空间,提升到了“充裕的 82 GB”。

对于 10 个并发用户情况,现在每人可获得约​46k 上下文​。显存不足的风险已消除,该部署可以轻松应对 RAG 或长文档处理。

量化:“压缩”模型的艺术

正如前文资源配置场景所示,VRAM 是 LLM 推理的主要瓶颈。量化是一种通过降低数字表示精度的技术,用微小的精度损失换取内存效率和速度的大幅提升。

关键在于区分 vLLM 中使用的两种量化类型,因为它们针对不同的约束条件。

类型一:模型权重量化("静态"优化方案)

这涉及在加载预训练模型之前,对其庞大、静态的权重矩阵进行压缩。

  • 目的​:使模型能够适配到其全精度权重原本会超过 VRAM 容量的 GPU 上。
  • vLLM 实现方式​:虽然 vLLM 可以在启动时动态量化权重,但通常更高效的做法是直接加载已经使用 AWQ(激活感知权重量化)或 GPTQ 等高性能内核预量化好的模型。这些专用格式相比通用的即时转换,能提供更好的精度保持和更快的解码速度。
  • 影响​:将静态 VRAM 占用减少 50%(FP8/INT8)至 75%(INT4/AWQ),从而显著增加用于 KV 缓存的剩余 VRAM。

类型二:KV缓存量化("动态"优化方案)

这涉及在序列生成过程中,对存储在内存中的中间键(Key)和值(Value)状态进行压缩。

  • 目的​:使模型能够扩展以支持更高的并发批处理量或更长的上下文窗口。
  • vLLM 实现方式​:通过运行时参数 (--kv-cache-dtype) 控制。
  • 建议​:对于支持 FP8 张量核心的现代硬件(如 NVIDIA H100, L40S, AMD MI300X,在 DigitalOcean 云平台上你可以找到这些 GPU 服务器,而且价格低于 AWS、谷歌云 GCP,详情可咨询 DigitalOcean 中国区独家战略合作伙伴卓普云 AI Droplet。),强烈建议启用 FP8 ​KV​​缓存​。它能以对模型质量几乎可忽略的影响,将可用上下文容量翻倍。
  • 影响​:将第 2 节中讨论的每个 token 的内存需求减半(例如,将 70B 模型的乘数从约 0.35 MB/token 降至约 0.175 MB/token)。

vLLM ​GPU精度格式

并非所有量化格式都是相同的。选择取决于可用的硬件架构以及模型大小与精度之间的期望平衡。

精度 / 格式每个参数占用字节数精度影响最佳硬件支持推荐使用场景
FP16​ / BF16 (基准)2无(参考标准)所有现代 GPU黄金标准​。在 VRAM 容量允许时优先使用。
FP8 (8 位浮点数)1可忽略H100, H200, L40S, MI300X现代默认选择​。在新硬件上速度与质量的最佳平衡。KV 缓存理想选择。
AWQ / GPTQ (INT4 变体)\~0.5低/中A100, L40S, 消费级显卡“极致压缩”选项​。在较旧或较小 GPU 上运行大模型的必备技术。解码速度优异。
通用 INT81旧款 GPU (V100, T4)传统方案​。在新硬件上通常被 FP8 取代,或在追求极限压缩时被 AWQ 取代。

策略性应用与权衡

决定何时应用量化需要在实际约束与工作负载敏感性之间取得平衡。量化虽强大,但涉及在部署规划时必须考虑的根本性权衡。

关键考量因素:精度与硬件

在确定具体场景前,请考虑以下两个基础约束:

  1. 精度 vs. 压缩率​:激进的量化(如 INT4)可能会降低在涉及复杂推理或代码生成的敏感任务上的性能。对于大多数聊天和 RAG 用例,FP8 通常被认为是安全的。
  2. 硬件兼容性​:所选格式必须与硬件能力匹配。例如,FP8 量化需要配备 FP8 张量核心的 GPU(NVIDIA Ada/Hopper 或 AMD CDNA3 架构)才能实现性能提升。

何时应推荐使用量化

基于上述权衡,量化适用于广泛的现实场景,并且在企业环境中经常是默认选择:

  • 无法以FP16​​格式运行的大模型​:对于 70B 级别的大模型,要在单张 48GB 或 80GB GPU 上部署,INT4/INT8 通常是唯一途径。
  • 高并发工作负载​:减少的 VRAM 占用为 KV 缓存释放了大量空间,从而支持更多活跃序列和更长的提示词。
  • RAG 和企业聊天应用​:这些工作负载通常能很好地容忍微小的精度偏差,而不会影响最终用户体验。
  • 成本优化​:量化使得工作负载可以在更小、更便宜的 GPU 型号上运行,同时保持可接受的性能。这在 DigitalOcean GPU Droplets 上部署时也很有价值,因为您可以根据具体需求来平衡性能与成本。

何时应避免使用量化

量化并非普遍适用。有些工作负载对精度损失高度敏感,应尽可能保持在 FP16/BF16 精度:

  • 代码生成与调试​:较低的精度可能会削弱结构化推理能力,导致细微的语法错误或逻辑缺陷。
  • 数学、金融和科学查询​:需要精确计算的任务显著受益于更高精度的格式,以避免舍入误差。
  • 评估、基准测试​​或回归测试​:微小的精度漂移可能导致不同模型版本或设置之间的比较失效。
  • 涉及多步推理的智能体​​工作流​:多个步骤中的累积误差可能会降低系统的整体可靠性和任务完成率。

整合实践:从需求到部署方案

至此,我们已经探讨了 vLLM 的运行时行为(第 1 节)、内存基础原理(第 2 节)以及量化策略(第 3 节)。

本节将这些概念连接成一个可重复的决策框架。它将引导你从理论走向实践,提供一个结构化的工作流程,用于评估可行性、选择硬件并制定部署计划。

第一步:资源配置需求问卷

要准确配置 vLLM 部署,必须从工作负载描述中提取具体的技术细节。像“快速推理”这样的抽象目标是不够的。使用以下五个问题来收集必要的数据:

  1. “您需要支持的最大上下文长度是多少?”
    原因​​:决定 KV 缓存大小(进而决定 OOM 风险)。
  2. “您的目标并发量(同时在线用户数)是多少?”
    原因​​:KV 缓存需求会成倍增加。
  3. “可接受的延迟是多少(首 Token 时间TTFT和每秒生成 Token 数)?”
    原因​​:决定您是需要高带宽(H100)还是仅需足够容量(L40S)。
  4. “模型精度是否关键(数学/代码),还是‘够用就好’即可(聊天)?”
    原因​​:决定您是否可以使用量化(INT4/FP8)来节省成本。
  5. “您是否有严格的预算限制?”
    原因​​:帮助在优化极致速度(H100)与性价比(L40S)之间做出抉择。

第二步:选择模型大小与精度

需求明确后,确定能满足质量要求的最小的模型和最高的精度。

  • 精度是调节杠杆​:更低的精度(INT4/FP8)使得在更便宜的硬件上运行大模型成为可能。
  • 70B 法则​:FP16 精度的 70B 模型需要特殊硬件(多 GPU)。而 INT4 精度的同一模型则可以在普通硬件(单 GPU)上运行。
  • 指导原则​:
    聊天/助理​:使用 INT4 或 FP8。

    代码/推理​:使用 FP16 或 FP8(避免 INT4)。

第三步:硬件可行性检查

使用第 2 节的数学方法进行适配性验证。

  1. 静态适配(权重)​:参数量 * 精度字节数 是否能在 VRAM 中放下?
    如果不能​:进行量化(第二步)或增加 GPU(张量并行)。
  2. 动态适配(缓存)​:是否有足够空间容纳 上下文长度 * 并发数 * 每 Token 内存系数?
    如果不能​:降低并发数、缩短上下文长度,或启用 FP8 KV 缓存。
  3. 工作负载适配(带宽)​:
    长文本 RAG/摘要​:需要高带宽(H100/A100)。

    标准聊天​:需要高算力(L40S)。

第四步:推荐GPU策略

可行性确认后,选择具体的 GPU 型号。可参考以下“速查表”应对常见场景。DigitalOcean 平台可提供以下表格中所有型号的 GPU(其中 B300 GPU 将在 2026 年初上线,可联系卓普云 AI Droplet 进行预约测试)。

第五步:使用指标进行验证

纸上计算并非完美。

  • 检查TTFT​:如果过高,说明预填充阶段存在瓶颈(带宽饱和)。
  • 检查 Token 间延迟​:如果过高,可能是批次大小设置过于激进(计算饱和)。
  • 检查KV​​缓存使用率​:如果持续 >90%,则存在 OOM 风险,应启用分块预填充或降低并发数。

常见问题解答

1. 运行LLM推理需要多少GPU显存?

GPU 显存需求取决于模型大小、精度、上下文长度和并发量。一个粗略的经验法则是:仅就权重而言,FP16 模型每 10 亿参数约需要 2GB。因此,一个 70B 的模型,FP16 权重需要 140GB,但使用 INT4 量化后仅需 35GB。此外,还必须考虑 KV 缓存的内存占用,它会随上下文长度和并发用户数增长。例如,对于一个 70B 模型,32k 上下文长度和 10 个并发用户,FP16 缓存约需 112GB,而 FP8 缓存约需 56GB。

2. vLLM 中张量并行与流水线并行有何区别?

张量并行​:将模型权重矩阵在同一层内切分到多个 GPU 上,允许多个 GPU 同时处理同一计算。这整合了显存资源,但需要在每层计算后进行同步,从而引入通信开销。

流水线并行​:将模型各层按顺序分配到不同 GPU 上,每个 GPU 处理不同的层。

TP 通常用于单个 GPU 无法容纳整个模型时,而 PP 更常见于训练场景。对于推理任务,当模型超出单 GPU 容量时,TP 是标准的处理方法。

3. 在 vLLM 部署中,何时应使用量化技术?

在以下情况推荐使用量化:模型无法在可用显存中加载时;需要支持更高并发或更长上下文窗口时;或者成本优化是优先考虑事项时。FP8 量化是现代硬件(H100, L40S, MI300X)的理想选择,精度损失极小。INT4 量化是在较小 GPU 上运行大模型的必要手段,但在代码生成、数学及科学计算等对精度敏感的任务中应避免使用。对于聊天和 RAG 类工作负载,量化通常是默认选择。

4. 如何计算KV缓存的内存需求?

可以使用每 token 乘数法进行快速估算:将总 token 数(上下文长度 × 并发量)乘以模型特定的系数。对于小型模型(7B-14B),FP16 缓存系数约为 0.15 MB/token,FP8 约为 0.075 MB/token。对于大型模型(70B-80B),FP16 缓存系数约为 0.35 MB/token,FP8 约为 0.175 MB/token。如需精确计算,可使用公式:总 KV 缓存 = (2 × 层数 × 模型维度 × 序列长度 × 批次大小 × 精度字节数) / (1024³),或使用在线工具如 LMCache KV Calculator。

5. 我可以在 DigitalOcean ​GPU​ Droplets 上运行 vLLM 吗?

可以,vLLM 可以部署在 DigitalOcean GPU Droplets 上。DigitalOcean 提供的搭载 NVIDIA GPU 的 Droplets 能够满足 vLLM 的运行要求。部署时,请确保所选 GPU 的显存足以支撑您的模型大小和工作负载。对于追求成本效益的部署,可以考虑使用量化模型(INT4 或 FP8)以便在较小的 GPU 实例上运行更大的模型。DigitalOcean 的 GPU Droplets 提供 NVLink 连接,这在多 GPU 使用张量并行时对保证效率至关重要。

vLLM ​GPU推理的实际应用场景

基于对模型大小、精度、GPU 架构、KV 缓存及批处理等因素如何影响性能的基础理解,在接下来的教程中,我们将把这些概念应用到实际的 vLLM 工作负载中。

针对每个用例,我们将围绕三个核心问题来确定最优配置方案:

  1. 工作负载定义​:其核心特征是什么?(例如,提示词长度与输出长度、并发量、延迟敏感性)。
  2. 资源配置优先级​:哪些因素是瓶颈?(例如,权重与 KV 缓存之争、带宽与算力之争)。
  3. 配置模式​:哪些具体的参数设置和硬件选择能确保稳定可靠的性能?

用例一:交互式聊天与智能助手

  • 关注点​:​低延迟(受解码阶段限制)​。
  • 目标​:为用户提供流畅的流式输出和快速的“打字速度”体验。
  • 关键约束​:计算能力与​Token 间延迟​。

用例二:高吞吐量批处理

  • 关注点​:​最大吞吐量​​(受计算限制)​。
  • 目标​:为离线任务(如摘要生成)实现每小时处理数百万 Token。
  • 关键约束​:​系统总吞吐量​。

用例三:RAG 与长上下文推理

  • 关注点​:上下文容量(受内存​​限制)​。
  • 目标​:将海量文档或历史记录加载到内存中而不致崩溃。
  • 关键约束​:显存容量与​内存带宽​。

小结

为 vLLM 合理配置 GPU 资源,需要深入理解模型大小、精度、上下文长度和并发量之间的根本性权衡。预填充阶段和解码阶段对硬件有不同的需求:预填充阶段需要高内存带宽,而解码阶段则需要高计算吞吐量。量化技术是在现有硬件上运行大型模型的核心调节手段,而张量并行则能突破单 GPU 的限制,实现横向扩展。

成功部署的关键在于​将您的工作负载特性与正确的硬件配置相匹配​。交互式聊天应用优先考虑算力以实现快速 Token 生成,而 RAG 和长上下文工作负载则需要巨大的显存容量和高内存带宽。遵循本指南概述的资源配置框架,您可以系统地评估可行性、选择合适的硬件,并为生产环境中的工作负载优化您的 vLLM 部署。

接下来你还可以

准备好在 GPU 基础设施上部署 vLLM 了吗?你可以通过以下资源快速开始:

在 DigitalOcean GPU Droplets 上部署

通过在 DigitalOcean ​GPU​ Droplets 上实际部署 vLLM,获得第一手使用体验。你可以在 DigitalOcean 官方文档中学习如何搭建运行环境,并对 vLLM 进行性能优化配置。你也可以通过以下 DigitalOcean 发布在卓普云官网的教程与实践总结,学习更多经验:

体验 DigitalOcean 产品

如需更多技术指南与最佳实践,欢迎访问 DigitalOcean 英文官网,或咨询 DigitalOcean 中国区独家战略合作伙伴卓普云(aidroplet.com)。

整理 | 华卫

 

DeepSeek V4 马上要来了?

 

正值 DeepSeek-R1 发布一周年之际,DeepSeek 的官方 GitHub 代码库意外曝光了代号为“MODEL1”的全新模型线索。

 

而综合泄露代码片段中呈现的架构调整、硬件优化与全新处理机制来看,“MODEL1”似乎绝非简单的版本迭代,而是一次全方位的架构重构。

 

此次 DeepSeek 在 GitHub 代码库的提前部署,在时间线上与业内疯传的“其新模型再次在春节期间发布”的消息高度吻合。本月初,也有外媒爆料称,DeepSeek 将在今年 2 月中旬农历新年期间推出新一代旗舰 AI 模型 DeepSeek V4。

新模型曝光,代码揭露全新架构能力

近日,DeepSeek 陆陆续续给其在 GitHub 上的 FlashMLA 代码库做了一系列更新。

 

而刚刚,有开发者发现,114 个文件中有 28 处都提到了未知的“MODEL1”大模型标识符。而且,在代码逻辑结构中,该标识符与现有模型“V32”(即 DeepSeek-V3.2)是并列且作为独立分支出现的。也就是说,“MODEL1”很可能代表一个不同于现有架构和技术路径的全新模型。

 

网友们也纷纷猜测,这个“MODEL1”很可能就是 DeepSeek 即将发布的新模型 V4 的内部开发代号或首个工程版本。

 

根据代码片段中披露的技术规格,这个新模型有重大架构变更,或在 KV Cache(键值缓存)布局、稀疏性处理及 FP8 解码支持等方面改变了策略和机制,还包括参数维度切换至 512 维以及针对英伟达下一代 Blackwell GPU 架构的专项优化。

 

在 FP8 解码路径上,该模型有多处针对性的内存优化调整。测试脚本中同步新增了 test_flash_mla_sparse_decoding.py 与 test_flash_mla_dense_decoding.py 两个文件,这一改动证实“MODEL1”具备稀疏与稠密计算并行处理的能力。在稀疏化实现方案中,键值缓存存储采用 FP8 精度,而矩阵乘法运算则使用 bfloat16 精度,以此保障计算准确性。这种混合精度设计表明,“MODEL1”通过在推理阶段对部分数据进行选择性稀疏化处理,有效降低内存占用压力,从而具备处理超长上下文窗口的能力。

 

在 csrc/api/common.h 文件内的代码显示,“MODEL1”的注意力头参数维度被配置为 512 维,与上一代产品 DeepSeek V3.2 采用的 576 维参数设置形成显著差异。这一架构调整意味着,DeepSeek 已对其多头隐式注意力(MLA)结构进行了重新设计。此前的 V3 系列采用非对称设计方案,将 128 维旋转位置编码(RoPE)与 448 维隐层维度相结合。此次转向标准化的 512 维参数配置,或许是为了更好地适配硬件性能,也可能是在隐层压缩率方面实现了技术突破。

 

代码更新记录还显示,DeepSeek 研发团队已围绕英伟达 Blackwell 架构开展了大量优化工作,预示着 DeepSeek 正为“MODEL1”量身打造下一代硬件适配方案。代码中新增了一批专门面向 Blackwell 指令集的接口,包括 FMHACutlassSM100FwdRun;相关文档明确指出,该模型若要在 B200 GPU 上运行,需依赖 CUDA 12.9 版本环境;内嵌的性能指标数据显示,即便在未完全优化的状态下,稀疏化 MLA 算子在 B200 硬件平台上的运算性能仍可达到 350 万亿次浮点运算每秒(TFLOPS)。在当前主流的 H800 GPU(基于 SM90a 架构)上,稠密型 MLA 算子的吞吐量则能达到 660 万亿次浮点运算每秒。

 

尽管本次代码提交的内容主要聚焦于算子层面的实现,但调度逻辑中仍提及多项新增功能。从代码仓库的结构可以推断,“MODEL1”集成了价值向量位置感知(VVPA)技术,这项技术有望解决传统 MLA 架构在长文本处理场景下存在的位置信息衰减问题。代码注释中还提到了一种名为 “记忆印记(Engram)机制” 的技术,但在已公开的代码提交记录中,相关实现细节尚不完整。从该机制在分布式处理模块中的部署位置推测,其功能大概率与分布式存储优化或高级键值压缩技术相关,旨在满足“MODEL1”对高吞吐量的性能需求。

 

前不久,DeepSeek 研究团队刚发布了 Engram 的技术论文。当时,就有业内观察者认为,Engram 模块可能会成为 DeepSeek V4 的重要组成部分,并预示 DeepSeek 下一代模型会在记忆和推理协同上实现架构级提升。

 

这些优化能够表明,“MODEL1”在推理效率上可能有更好的表现。此前也有爆料称,DeepSeek V4 的代码表现已超越 Claude 和 GPT 系列,并且具备处理复杂项目架构和大规模代码库的工程化能力。

国内外万众期待,“中国 AI 站起来了”

“DeepSeek 刚刚泄露了一个模型,这可能会再次改变整个 AI 行业的格局。”在国内外的各大社交平台及社区,针对 DeepSeek 新模型的上线猜测、能力预测的期待帖子已大量涌现。

 

“中国 AI 站起来了。”昨日,全球最大的 AI 开源社区 Hugging Face 以“距离 DeepSeek 时刻一周年”为题专门发文,复盘了 R1 发布这一年来对中国开源社区及其对整个 AI 生态系统的影响。

 

“这是中国研发的开源模型首次跻身全球主流榜单。此后一年间,每当有新模型发布时,R1 都会被当作重要的参照基准。该模型迅速登顶 Hugging Face 平台历史最受欢迎模型榜单,而这一平台上最受青睐的模型,也不再以美国研发的产品为主导。”

 

在他们看来,R1 的真正价值在于降低先进 AI 能力的门槛或者说障碍,并提供了清晰的模式。

  • 技术障碍。通过公开分享其推理路径和训练后的方法,R1 将此前被封闭 API 锁定的高级推理转变为可下载、提炼和微调的工程资产。许多团队不再需要从零开始训练庞大的模型来获得强大的推理能力。

  • 应用障碍。R1 以 MIT 许可证发布,使其使用、修改和再分发变得简单。依赖封闭式模型的公司开始直接将 R1 投入生产。蒸馏、二次培训和领域特定适应成为常规工程工作,而非专门项目。

  • 心理层面。当问题从“我们能做到吗?”转变为“我们如何做好?”时,许多公司的决策发生了变化。对于中国 AI 社区来说,这也是罕见的持续全球关注时刻,对长期被视为追随者的生态系统意义重大。

 

“在 R1 模型发布一年后的今天,我们看到的不仅是一大批新模型的涌现,更见证了一个富有生命力的中国 AI 开源生态的加速成型。”

 

参考链接:

https://github.com/deepseek-ai/FlashMLA?tab=readme-ov-file

https://huggingface.co/blog/huggingface/one-year-since-the-deepseek-moment

https://chinabizinsider.com/deepseeks-mysterious-model-1-surfaces-in-github-code-sparking-speculation-about-next-generation-ai-system/

在大模型(LLM)服务极速发展的当下,效率至关重要。为了降低延迟并控制算力成本,主流推理框架广泛引入了先进的缓存机制。然而,这种追求极致速度的设计是否埋下了安全隐患?

本论文是由奇安信技术研究院、中国海洋大学和清华大学联合完成的AI安全研究工作说明了缓存机制如果实现不恰当的话,就会造成安全隐患。论文题目为《Cache Me, Catch You: Cache Related Security Threats in LLM Serving Frameworks》。这项工作由中国海洋大学和奇安信联合培养的硕士研究生吴祥凡在奇安信技术研究院联培期间主导完成,导师为应凌云博士(奇安信星图实验室)和曲海鹏教授(中国海洋大学),其他作者为陈国强(奇安信星图实验室),谷雅聪(清华大学)。这项研究聚焦于大语言模型(LLM)推理服务框架中的安全威胁,深入分析了 KV Cache、多模态缓存及语义缓存 三大核心机制。

1. LLM推理加速背后的隐忧

随着模型参数规模的不断膨胀,推理计算的开销急剧上升。为了优化用户体验,vLLM、SGLang、GPTCache等主流服务框架引入了多种缓存策略,包括前缀缓存(Prefix Cache)、语义缓存(Semantic Cache)和多模态缓存(Multimodal Cache)。

虽然这些机制通过存储中间状态极大地减少了重复计算,但我们的研究发现,现有的缓存实现往往“重效率、轻安全”。非加密哈希函数的滥用、有缺陷的对象序列化以及模糊的语义匹配标准,共同构成了一个全新的、尚未被充分探索的攻击面。与以往关注训练阶段的数据投毒不同,这是一类发生在推理阶段的全新安全威胁。

2. Cache Me, Catch You:首个LLM缓存安全系统性研究

为了揭示这一风险,我们对主流LLM服务框架的缓存实现进行了全面的解构与分析,并提出了六种新颖的攻击向量。这些攻击利用了哈希碰撞和语义模糊匹配的特性,能够在不接触模型权重的情况下,通过污染共享缓存来操纵模型输出。

主要发现与攻击向量:

我们将发现的威胁归纳为两大类:一是面向用户的欺诈攻击,即攻击者利用系统渠道向用户传递恶意信息 ,具体手段包括利用哈希碰撞替换合法提示词以劫持对话逻辑的系统提示词碰撞、针对语义缓存构造高相似度恶意查询诱导错误回答的语义模糊投毒 ,以及在检索增强生成场景下利用文档相似性扩大攻击面的RAG语义投毒 ;二是系统完整性攻击,旨在破坏服务功能或绕过安全审查 ,具体涵盖构造与目标完整前缀碰撞以劫持响应的提示词碰撞劫持 、通过精心构造padding token让恶意代码块对LLM“隐形”以绕过审计的分块碰撞劫持 ,以及利用图像处理忽略元数据(如尺寸)缺陷构造哈希碰撞图片以绕过审核的多模态碰撞 。

细节详解:

以多模态为例,其核心漏洞根源在于当前主流推理框架(如vLLM)在对多模态数据进行序列化时存在严重的逻辑缺陷。具体而言,vLLM默认调用PIL 的 tobytes() 方法来提取图像数据以计算哈希,该方法虽然能获取原始像素字节流,但在vLLM的后续操作中完全忽略了图像宽高等尺寸信息以及调色板等关键元数据。攻击者利用这一特性实施“尺寸伪装”攻击,通过重塑图像维度(例如将 H*W的图像变形为W*H)而不改变像素排列顺序,使得原本违规的图片变成一团毫无意义的噪点,从而生成与原图完全一致的哈希值。此外,攻击者还能利用“调色板模式”漏洞,构造出索引数据相同但颜色定义截然相反的图片对(如黑底白字与白底黑字),由于序列化过程仅读取索引而忽略调色板定义,这两张视觉迥异的图片在系统眼中却拥有相同的“指纹”。

同样的隐患也出现在SGLang框架中,其为了适配张量数值范围将SHA256哈希值进行了取模截断,导致哈希空间被压缩至极易发生碰撞的范围。

下图是我们操纵图片当中的尺寸和PNG当中的P格式的调色盘,实现看上去不同的图片但是hash一致。

3. 实验效果与影响评估

我们在vLLM、SGLang及GPTCache等主流开源框架上进行了实测,证实了这些攻击路径的高可用性与低门槛:攻击者仅需不到1美元的成本即可完成一次投毒 。以针对vLLM的前缀缓存攻击为例,我们在30分钟内便成功搜索到碰撞哈希,实现了100%的缓存命中 。

实验还还原了真实的威胁场景违规图片如何利用多模态缓存缺陷骗过内容审核系统。下图展示一个示意图,成功命中图片之后会复用之前的图片预处理结果,导致生成了错误回复。

4. 防御方案与行业响应

针对发现的漏洞,我们提出了五层防御策略,包括引入随机化哈希(Salting)、采用强加密哈希函数、强制规范化序列化流程、使用更鲁棒的Embedding模型以及增加LLM辅助过滤层。我们的理论分析和实际验证表明,上述的防御方案是可行的、有效的。

我们在第一时间将发现的漏洞通报给了受影响的厂商和社区,包括 vLLM、SGLang、GPTCache、AIBrix、rtp-llm 和 LMDeploy,并分配了 3个 CVE 编号。值得注意的是,vLLM、GPTCache 和 AIBrix 已经采纳了我们提出的缓解措施(如引入随机盐值、规范化图像序列化等)并完成了修复。(在本文发表时,SGLang也反馈采纳了我们的缓解措施。)

5. 讨论与未来展望

我们的研究再次表明,高性能不应成为忽视底层系统安全的理由。本研究证明,即便模型本身无懈可击,外围缓存框架的设计缺陷仍足以瓦解整个系统的信任基石;特别是在云端共享算力场景下,必须实施严格的多租户隔离与键值空间分离以防御跨租户攻击。作为填补推理侧缓存安全空白的先行工作,本研究旨在推动社区正视这一隐蔽威胁,共同构建更稳健的大模型服务基础设施。

更多参考

想了解更多技术细节?欢迎阅读我们的学术论文或访问项目主页:

代码仓库:https://github.com/XingTuLab/Cache_Me_Catch_You

感谢您的阅读,期待能为您的AI安全研究与工程实践带来启发!

刚刚在推上看到的
ymcki 给 Kimi-Linear-48B-A3B 加上了 MLA KV cache
实测下来 1M 上下文 F16 KV cache 显存占用从 140G 降到 15G。
如果显存少一点的用户可以选择(with KV Quant )

  • q8_0: 7.9GB
  • q5_1: 5.6GB
  • q4_0: 4.2GB
    有兴趣可以玩看看

Kimi-Linear-48B 的效果


📌 转载信息
原作者:
josenlou
转载时间:
2026/1/14 10:54:29

在数学推理任务中,相比经 vLLM 优化的 Qwen3-8B,速度提升 3–6 倍
在大多数基准测试中,性能超越原始的 Qwen3-8B-Instruct
原生支持 KV Cache(兼容 FlashAttention、PagedAttention、CUDA Graphs)



📌 转载信息
原作者:
artorius
转载时间:
2025/12/30 10:02:25