GPUStack Day 0 支持 Kimi-K3:8×B300 上 vLLM 与 SGLang 推理实测

《AI实战嵌入式Agent +MCP+skill》课时2.5|定时器实战 本课讲解定时器时基单元原理,通过PSC、ARR、CNT三寄存器配合实现精确周期控制。以84MHz时钟为例,计算得PSC=8399、ARR=9999可实现1秒溢出周期。采用HAL_TIM_Base_Start_IT启动定时器更新中断,在HAL_TIM_PeriodElapsedCallback中处理周期任务,实现非阻塞、高精度的定时。相比HAL_Delay的阻塞式延时,定时器中断方案不占用主循环,支持并发操作,是嵌入式系统中实现周期任务的高效方式。 阅读详情

本文记录 Kimi-K3 在单机 8×NVIDIA B300 环境中的部署与压测过程,并对 vLLM、SGLang 两套推理引擎在 64K 与 200K 长上下文场景下的表现进行拆解。测试显示:64K 输入下 vLLM 更快,200K 输入下 SGLang + DCP 反超;真正拉开差距的不是 Prefill,而是长上下文 Decode 阶段的 KV 读取方式。

Kimi-K3 是一款面向复杂推理与长上下文任务的 MoE 模型。本次测试使用 单机 8×NVIDIA B300,通过 GPUStack 分别接入 vLLM 与 SGLang,并启用 Kimi-K3-DSpark 草稿模型进行投机解码。

先给出最值得关注的结论:

  • 64K 输入、10 路并发:vLLM 端到端耗时 100.5 秒,SGLang 为 150.8 秒,vLLM 领先约 1.5×。
  • 200K 输入、10 路并发:SGLang 端到端耗时 225.3 秒,vLLM 为 295.2 秒,SGLang 反超约 1.31×。
  • vLLM 从 64K 增长到 200K 后,稳定解码吞吐下降 3.29×;SGLang 仅下降 1.25×。
  • 性能交叉的主因是本轮 SGLang 开启了 --dcp-size=8,而 vLLM 的 decode_context_parallel_size=1。
  • 两侧 Prefill 能力接近,主要差异来自 Decode 阶段。
  • Random 数据集使 DSPARK 投机解码的接受率极低,因此本轮结果不能直接代表真实生产流量。

重要说明: 这不是严格对等的 A/B 测试。两套引擎在 DCP、显存分配、算子后端、接受判据等方面存在差异。本文更适合用来理解瓶颈与选型方向,不应被视为最终性能排名。

测试环境

本次测试环境如下:

项目配置
服务器单机
GPU8×NVIDIA B300
单卡可见显存267.69 GiB
模型Kimi-K3(MXFP4)
草稿模型Kimi-K3-DSpark
推理引擎vLLM / SGLang
测试输入64K、200K 及多种长度
输出长度3K
并发10
数据集Random

准备模型权重

使用 ModelScope 下载 Kimi-K3 主模型与 DSpark 草稿模型。

下载 Kimi-K3 主模型(MXFP4)

modelscope download \
  --model moonshotai/Kimi-K3 \
  --local_dir ./Kimi-K3

下载 vLLM 使用的 DSpark 草稿模型

modelscope download \
  --model skyai/Kimi-K3-DSpark \
  --local_dir ./Kimi-K3-DSpark

下载 SGLang 使用的 DSpark 草稿模型

modelscope download \
  --model skyai/sglang-Kimi-K3-DSpark \
  --local_dir ./Kimi-K3-DSpark

拉取推理镜像

拉取 vLLM 镜像

docker pull vllm/vllm-openai:kimi-k3

拉取 SGLang 镜像

docker pull lmsysorg/sglang:kimi-k3

镜像准备完成后,在 GPUStack 的推理后端中分别为 vLLM 和 SGLang 添加自定义版本。

在 GPUStack 中部署 vLLM

在 GPUStack 中创建 vLLM 自定义后端,选择 Kimi-K3 模型、8 张 B300,并配置所需环境变量。

vLLM 自定义后端及模型配置如下:

vLLM 环境变量

VLLM_ENABLE_K3_LATENT_MOE_TAIL_FUSION=1
VLLM_ALLREDUCE_USE_FLASHINFER=1
VLLM_ENGINE_READY_TIMEOUT_S=3600
VLLM_USE_V2_MODEL_RUNNER=1
VLLM_USE_RUST_FRONTEND=1

vLLM 启动参数

--trust-remote-code
--load-format fastsafetensors
--moe-backend auto
--gpu-memory-utilization 0.95
--tensor-parallel-size 8
--max-model-len 1000000
--kv-cache-dtype fp8
--attention-config '{"mla_prefill_backend":"TRTLLM_RAGGED","use_prefill_query_quantization":true}'
--max-num-batched-tokens 32768
--enable-prefix-caching
--enable-auto-tool-choice
--tool-call-parser kimi_k3
--reasoning-parser kimi_k3
--max-num-seqs 32
--speculative-config '{"model":"Inferact/Kimi-K3-DSpark","num_speculative_tokens":7,"method":"dspark","attention_backend":"FLASHINFER_MLA","draft_sample_method":"probabilistic","rejection_sample_method":"block"}'

--gpu-memory-utilization 0.95 在本轮测试中导致 KV 池超额提交,并触发运行期 OOM 重试。后文会给出更稳妥的调整建议。

在 GPUStack 中部署 SGLang

同样创建 SGLang 自定义后端,选择 8 张 B300,并录入模型与启动参数。

SGLang 自定义后端及模型配置如下:

SGLang 启动参数

--trust-remote-code
--model-path <Kimi-K3 模型路径>
--tp-size 8
--dcp-size 8
--disable-custom-all-reduce
--enable-symm-mem
--mem-fraction-static 0.85
--reasoning-parser kimi_k3
--tool-call-parser kimi_k3
--mamba-full-memory-ratio 0.86
--host 0.0.0.0
--port 30000
--speculative-algorithm DSPARK
--speculative-draft-model-path <Kimi-K3-DSpark 模型路径>
--speculative-dspark-block-size 7
--enable-linear-replayssm-spec
--chunked-prefill-size 32768
--max-prefill-tokens 32768
--context-length 1000000
--kv-cache-dtype fp8_e4m3

服务启动后,可在 GPUStack 中查看实时日志、吞吐与 KV Cache 状态。

64K / 3K、10 路并发对比

首先使用 64K 输入、3K 输出、10 路并发进行测试。

vLLM 测试结果

SGLang 测试结果

测试期间的推理日志如下:

不同输入长度下的测试

除 64K 外,本轮还测试了多种输入长度,用于观察上下文增长对 TTFT、TPOT、ITL 与端到端耗时的影响。

vLLM

SGLang

核心结果:64K 与 200K 之间发生性能交叉

从客户端可信指标与引擎日志综合看,两套引擎在 64K 和 200K 之间发生了明显的性能交叉:

场景vLLMSGLang结果
64K 端到端耗时100.5 s150.8 svLLM 领先约 1.5×
200K 端到端耗时295.2 s225.3 sSGLang 领先约 1.31×
64K 稳定解码吞吐约 501 tok/s约 335 tok/svLLM 领先约 1.5×
200K 稳定解码吞吐约 163 tok/s约 268 tok/sSGLang 领先约 1.64×
64K→200K 解码退化3.29×1.25×SGLang 扩展性更好

一句话解释: vLLM 在较短上下文中没有 DCP 通信开销,因此更快;上下文增长后,SGLang 的 DCP=8 将每张卡需要读取的 KV 数据量大幅分摊,长上下文 Decode 反而更有优势。

但读完两边源码后,这个差异不是“vLLM 忘了开”那么简单:vLLM 在代码里明确禁止 DCP 与 DSPARK 投机解码共存,想要 DCP 就必须放弃投机;SGLang 允许二者共存,代价是投机退化为非自适应模式。也就是说,这是一道架构层的取舍题,而不是配置疏漏。

为什么会发生性能交叉

1. Decode 扩展性是决定性因素

取 10 路请求全部进入解码后的稳定段:

解码聚合吞吐:10 路并发稳定段均值,单位 tok/s;数据来源为引擎自报日志。

vLLM(DCP=1)

  • 64K:稳定段约 439~537 tok/s,峰值 537 tok/s。
  • 折算单请求约 53.7 tok/s,即约 18.6 ms/token。
  • 200K:稳定段约 157.8~166.6 tok/s,均值约 163 tok/s。
  • 折算单请求约 16.3 tok/s,即约 61.3 ms/token。
  • 上下文增长约 3.1×,解码性能下降 3.29×,呈近似线性退化。

SGLang(DCP=8)

  • 64K:稳定段约 313~418 tok/s,均值约 335 tok/s。
  • 折算单请求约 33.5 tok/s,即约 29.9 ms/token。
  • 200K:稳定段约 252~288 tok/s,均值约 268 tok/s。
  • 折算单请求约 26.8 tok/s,即约 37.3 ms/token。
  • 上下文增长约 3.1×,解码性能仅下降 1.25×。

在 64K 场景中,DCP 每一步增加的通信成本还没有被 KV 读取收益抵消,所以 vLLM 更快;到了 200K,KV 读带宽成为主要瓶颈,SGLang 的 DCP 优势开始显现。

2. Prefill 能力基本打平

两侧的 chunked-prefill / max-num-batched-tokens 都设置为 32768,稳定 Prefill 聚合吞吐约为 19K~23K tok/s。这说明在 8×B300 上,Kimi-K3 的 MoE + MLA 预填充能力已经比较接近,整体差距主要出现在 Decode 阶段。

需要注意的是,vLLM 的 64K Prefill 数据受到两类运行时事件干扰:

  • 8 张卡共出现 32 次软 OOM 重试;
  • 4 个算子在推理期发生 JIT 编译。

这些事件都集中在 64K 测试初期,因此 vLLM 该轮的 Prefill 聚合值和首批 TTFT 偏悲观。200K 测试中未复现,SGLang 日志中也没有对应的 OOM / JIT 记录。

3. SGLang 日志揭示了长上下文 Prefill 衰减

SGLang 会逐 chunk 输出 input throughput。在 200K 场景中,同一请求的 6 个 chunk 吞吐依次约为:

22265 → 21064 → 19628 → 18475 → 17243 → 16408 tok/s

切换到下一个请求后,吞吐又回到约 22K tok/s。这直接反映了随着已缓存上下文变长,注意力计算成本逐步上升。

vLLM 的 Avg prompt tput 是 10 秒窗口聚合值,粒度更粗,因此不会直接呈现这一结构。对比两侧日志时,需要注意可观测口径并不完全一致。

DSPARK 投机解码:本轮基本没有带来收益

本轮压测使用 Random 数据集。随机 token 序列本身几乎不可预测,因此草稿模型很难连续命中。

两套引擎都使用 Kimi-K3-DSpark,并设置 7 个投机 token;但在 200K 场景下,双方平均接受长度都接近 1:

  • vLLM:约 1.05~1.17;
  • SGLang:约 1.05~1.17。

这意味着系统为草稿模型付出了额外算力,却几乎没有获得投机解码收益。vLLM 200K 轮中,Drafted throughput 约 990 tok/s,而 Accepted throughput 仅约 21 tok/s,约 98% 的草稿计算被丢弃。

不同场景下的接受长度与接受率如下:

场景引擎接受长度接受率 / 草稿命中率解释
64KvLLM2.27~2.5118%~21%唯一还有实质收益的一档:每次前向多落地约 1.5 token
64KSGLang1.21~1.553%~8%同样数据、同样草稿模型,却明显弱于 vLLM——值得单独查
200KvLLM1.05~1.171.1%~2.5%完全崩塌;草稿算力 98% 浪费
200KSGLang1.05~1.171%~2%同样崩塌

结论: 本轮测到的是“投机解码纯负担”场景,不能直接外推到真实生产流量。下一轮应改用 ShareGPT、真实业务请求或其他自然语言数据集。

两套引擎的接受判据也不同

两边草稿权重同源,但验证策略不同:

  • vLLM 显式设置 draft_sample_method=probabilistic 和 rejection_sample_method=block,采用更宽松的概率式分块验证。
  • SGLang 的 DSPARK 路径采用严格的 greedy 逐位匹配;块内第一个 token 不匹配,后续 token 会全部作废。

因此,在相同草稿模型下,两套引擎仍可能出现明显不同的平均接受长度。若要严格验证投机解码收益,需要统一数据集、采样参数、gamma 与接受判据。

客户端指标:先排除不可信的吞吐列

四组客户端测试的可信指标汇总如下:

指标vLLM 64KSGLang 64KvLLM 200KSGLang 200K
总耗时(s)100.5150.82295.21225.34
请求延迟均值(s)84.42141.53284.58217.83
TTFT 均值(ms)34,838.841,670.6125,210.859,002.0
TTFT P50(ms)34,181.140,391.9125,189.254,104.0
TTFT P90(ms)36,987.953,525.0126,667.0103,336.0
TPOT 均值(ms)12.2847.1845.2172.6
ITL 均值(ms)9.9433.33.4752.96
失败 / 未完成0 / 00 / 00 / 00 / 0

截图中的部分吞吐字段无法与总 token 数、并发和耗时相互校验。例如:

  • vLLM 200K 显示输出吞吐 1111.61 tok/s;
  • 但按 10 × 3000 ÷ 295.21 计算,物理上限约为 101.6 tok/s;
  • 64K 测试也存在接近 11× 的固定偏差。

因此,本文只采用 TTFT、TPOT、ITL、延迟与总耗时;吞吐统一以引擎日志为准。

TTFT 口径也需要统一

启用 --reasoning-parser kimi_k3 后,思维链输出位于 delta.reasoning,而不是 delta.content。如果压测工具只从 delta.content 计算首 token,两套引擎的 TTFT 都会被系统性抬高。

对于推理模型,更合理的口径是:

time-to-first-any-delta

即收到第一个 reasoning 或 content 增量时就停止 TTFT 计时。

此外,vLLM 该轮还出现长 Prefill 挤占 Decode 调度预算的现象:当 long_prefill_token_threshold=0 时,队首长请求可能一次吃满 32768 token 预算,导致其他已经进入运行态的请求拿不到一个 token 的 Decode 调度,从而形成较平的高 TTFT。

显存分配与 KV Cache 容量

每张 B300 可见显存为 267.69 GiB,两侧模型权重占用接近,但剩余显存分配策略差异很大。

vLLM

项目数值
模型权重及 non-torch197.72 GiB
峰值激活12.82 GiB
CUDA Graph5.13 GiB
KV Cache43.76 GiB

KV 池容量为 2,687,776 token,1M 上下文下理论最大并发约为 2.69×。

但当前配置存在超额提交。vLLM 日志提示:若要真正落入 0.95 显存预算,KV Cache 应降至 38.48 GiB,而本轮实际分配了 43.76 GiB。这也是运行期 OOM 重试的主要来源。

可选择以下一种方式修正:

方案一:降低显存利用率

--gpu-memory-utilization 0.92

方案二:显式限制 KV Cache

--kv-cache-memory 41317885440

SGLang

项目数值
模型权重195.86 GiB
全注意力 KV Cache11.80 GiB
草稿模型 KV(K-V)8.74 GiB
Mamba / SSM 状态10.93 GiB
剩余空间17.08 GiB

全注意力池容量为 916,672 token,草稿池容量为 7,333,376 token。

当前配置声明 context-length=1000000,但全注意力池只有 916,672 token,比目标上下文少约 8.3%。也就是说,单条满 1M 请求无法完整放入 KV 池。

同时,max_running_requests 从 48 被压缩到 39,瓶颈来自 Mamba 状态缓存,而非普通 KV Cache。对于 1M 长上下文高并发场景,vLLM 当前的容量余量更大。

冷启动开销

两套引擎总冷启动时间都在 10 分钟左右,但耗时分布不同:

阶段vLLMSGLang备注
容器创建完成17:06:2118:01:45GPUStack 创建时间
权重加载163.8 s141.0 svLLM 12 shard / fastsafetensors;SGLang 96 shard / 多线程
权重体积(单卡)194.54 GiB195.86 GBMXFP4 MoE + compressed-tensors
算子预热CuTeDSL 25 单元 13.8~16.9 s + KDA TritonKDA prefill / vision FA4 / RoPE 预编译两侧都有 K3 专用 JIT 预热
CUDA Graph 捕获85~88 s / 5.13 GiB / 51 档约 5.5 min / 67 档SGLang 档位更密,且含 DSpark 草稿图折叠
引擎初始化合计409.61 s约 370 svLLM 显式打印;SGLang 由时间戳推算
服务可用约 17:16:5718:11:59SGLang:server is fired up
容器→可用总时长约 10.6 min约 10.2 min同量级
  • vLLM 的主要耗时来自 profile、KV 分配与 warmup,约 409.6 秒;
  • SGLang 的主要耗时来自 CUDA Graph 捕获,约 5.5 分钟。

如果服务需要频繁扩缩容,应把冷启动时间纳入容量规划,并尽量通过常驻实例、预热或分批扩容降低影响。

配置并不完全对等

本轮两套技术栈的主要差异如下:

项目vLLMSGLang可能影响
解码上下文并行DCP=1(关闭)DCP=8,comm=a2a,复制 Q 投影主导:长上下文解码的全部差距
All-ReduceFlashInfer + Custom + SymmMem,且与 RMSNorm 融合显式 --disable-custom-all-reduce;多播不可用→回退普通 NCCL高:小批解码通信占比大
MLA 预填充后端TRTLLM_RAGGED + 查询量化trtllm_mla中
MLA 解码后端FLASHINFER_MLAcutedsl_mla(混合后端,官方标注 experimental)中
线性注意力(KDA)FlashKDA 预填充内核Triton(decode / verify / extend 全 Triton)中:Triton 相对手写 CUDA 通常有差距
MoE 后端FLASHINFER_TRTLLM_MXFP4_MXFP8,autotune 被关flashinfer_mxfp4(trtllm-gen SiTU cubin)中:autotune 关闭意味着 GEMM tiling 未调
KV 页大小block 32,为对齐 Mamba 抬到 attn block 1536page_size 64中:1536 对齐带来内部碎片
torch.compile被 BREAKABLE_CUDAGRAPH 自动关闭(即 mode=none)未启用中:仅剩手写 custom_ops + 三个融合
前端Rust frontend(VLLM_USE_RUST_FRONTEND=1)Python / uvicorn低~中:高并发下 tokenize / SSE 开销
显存占用系数0.950.92低~中:直接反映在 KV 池大小
并发上限max_num_seqs=6448→39(Mamba 状态缓存封顶)中:本轮并发仅 10,未触发
Model RunnerV2 + 异步调度标准调度 + overlap schedule待评估

日志中值得处理的告警

两边共有:FP8 KV Cache 缺少 scaling factor

两侧日志均提示 FP8 KV Cache 未提供 scaling factor,并回退到 1.0。该配置可能影响精度,而本轮没有进行输出质量对齐。

在对性能数字下最终结论前,应先使用固定评测集验证精度,确认 FP8 KV Cache 没有造成不可接受的质量损失。

两边共有:slow tokenizer

两套引擎都出现 Using a slow tokenizer 告警。对于 64K / 200K 长输入,Tokenizer 耗时会直接进入 TTFT,应优先更换或启用 fast tokenizer。

SGLang:设备名识别异常

日志中一处将设备识别为 NVIDIA L20D,但其他位置又正确识别为 B300 / GB300、SM100 / SM103。DCP 通信后端会根据设备名查表选择,建议确认 a2a 是否由错误条目触发。

同时,日志提示:

DeepGemm is enabled but the scale_fmt of checkpoint is not ue8m0

这可能在 Blackwell 平台上带来精度问题,需要进一步验证。

vLLM:显存利用率设置过高

--gpu-memory-utilization 0.95 使 KV Cache 超额提交。运行期每张卡需要额外约 4.52 GB,但当时只剩约 2.67 GB,于是触发多轮分配器清缓存与重试。

建议将显存利用率降至 0.92,或使用日志给出的 --kv-cache-memory 值显式限制。

vLLM:部分“已启用”融合可能未实际生效

日志显示 norm_quant、act_quant 与 allreduce_rms 已启用,但这些属于 Inductor 编译期 pass;Kimi-K3 自动开启 VLLM_USE_BREAKABLE_CUDAGRAPH 后,编译模式可能被强制设为 NONE,因此对应融合未必真正应用。

此外,本轮还关闭了 FlashInfer autotune。vLLM 的结果可能低于其最佳状态,复测时应重新检查实际生效的编译与算子配置。

代码层根因:DCP 与投机解码在两个引擎中的取舍

这是整份分析里最硬的一条结论,而且它不是调参能绕开的。

前面 200K 场景的性能反转,表面看起来像是“vLLM 忘了开 DCP”。但源码显示并非如此:vLLM 结构性地不允许 DCP 和 DSPARK 同时开启。当 decode_context_parallel_size > 1 遇到 K3DSparkModel 时会直接抛出异常(config/speculative.py:978-986)。

因此,在 vLLM 上若要获得长上下文的 KV 分片收益,就必须整条放弃投机解码。

SGLang 可以同时开启 DCP 与 DSPARK,但同样需要付出代价:dcp_size > 1 会强制设置 SGLANG_RAGGED_VERIFY_MODE=static(overrides.py:356-362)。此时 DSPARK 的 SPS 成本表、STS 温度校准、置信度 planner 和块接受率估计器等自适应机制均不再激活,每个请求都会验证完整的 8-token 窗口,无法进行自适应裁剪。

这也解释了为什么 SGLang 能在 200K 场景中保住 DCP 的长上下文收益,但投机接受长度始终偏低。

能力组合vLLMSGLang对选型的含义
DCP + 投机解码不允许,启动即抛异常允许,但投机降级为非自适应长上下文场景两边都需要取舍,只是取舍点不同
长上下文 KV 分片只能关闭投机后使用可与投机共存SGLang 在 200K 的优势具有结构性来源
自适应投机(SPS / STS / planner)无此机制,依靠 block 验证提高接受率有,但开启 DCP 后失效两边都没有“长上下文 + 高接受率”的现成配置
接受判据可调性两个显式参数,均可向更宽松方向调整阈值在 kernel 内硬编码为 1.0SGLang 侧没有现成旋钮可调

其余几个只有读代码才能发现的点

SGLang 的 KDA 融合验证内核大概率没有运行

启动参数解析得到 linear_attn_verify_backend=nv_cutedsl,但 dispatcher 在赋值时直接将 verify_kernel 指向 triton_kernel(kda_backend.py:97-98)。融合 CuTe 路径只会在运行期通过 _can_run_dspark_cutedsl_mtp() 的严格形状约束后尝试。

日志最终显示 verify=TritonKDAKernel,说明实际回退到了 Triton,验证侧仍有一部分性能潜力没有释放。

SGLang“第二个 KV 池”的身份

日志中的 7,333,376 = 916,672 × 8,正好是 dcp_size 的倍数。它并不是第二种架构池,而是草稿 worker 的 MHA KV 池按 DCP 虚拟 token 空间寻址的结果。

草稿模型使用 trtllm_mha 稠密注意力,因此 K/V 分开记账,各占约 4.37 GB。

vLLM 的 1536 attention block 是由 Mamba 对齐要求产生的

混合模型要求 attention 页的字节数不小于 Mamba 页,因此 block 从 32 被提高到 1536,再通过约 0.70% 的 Mamba 页 padding 使两类页的字节数对齐(platforms/interface.py:890-940)。

代价是约 0.7% 的字节浪费和更粗的前缀缓存粒度。这个 1536 边界又会反馈给 align 模式的分块切分,间接参与前文提到的 Decode 饿死问题。

vLLM 2.69× 并发上限的来源

限制并不是 KV 总量不足,而是 scheduler_reserve_full_isl=True 默认要求在请求准入时就按完整最大序列长度预留 KV。

如果将 --max-model-len 从 1M 调整为实际业务长度,并发能力会立即提高。

选型建议

输入不超过 64K,吞吐优先

优先选择 vLLM。

本轮 64K 场景中,vLLM 解码吞吐约领先 1.5~1.6×,端到端耗时领先约 1.5×。在较短上下文中,避免 DCP 通信开销更有利。

200K 及以上长文服务

优先考虑 SGLang + DCP。

本轮 200K 场景中,SGLang 解码约领先 1.64×,并且随上下文增长的性能退化明显更缓。不过上线前必须先将 KV 池提高到不低于目标 context-length。

它也是当前两侧中唯一可以同时保留 DCP 与投机解码的一方,但开启 DCP 后,DSPARK 会退化为非自适应验证模式。

长上下文 + 高并发

当前配置下更倾向 vLLM,但需要复测。

vLLM 在 1M 上下文下理论 KV 容量约为 2.69 路,而 SGLang 当前全注意力池不足 1M,且 Mamba 状态缓存将最大运行请求数压缩到 39。

如果 SGLang 调整 KV / Mamba 内存比例后,再与“关闭投机、开启 DCP”的 vLLM 进行对照,结论可能发生变化。

下一轮如何做严格复测

新版源码分析显示,vLLM 无法同时开启 DCP 与 DSPARK,因此不能简单地“给 vLLM 也开 DCP”来进行二方对齐。更合理的方式是增加 SGLang 关闭 DCP 的第三组,并同时优化两侧各自可修复的问题。

#动作对象理由
1设置 --long-prefill-token-threshold 4096vLLM单条 Prefill 分块独占 32768 预算,导致 Decode 饿死;这是本次 vLLM 长上下文吃亏的头号可修项
2换掉 Random 数据集,改用 ShareGPT / 真实长文档压测平台当前投机解码接受率 1%~8%,测到的是“投机纯做负担”,与生产完全脱节
3改用 time-to-first-any-delta 计算 TTFT压测平台思维链输出位于 delta.reasoning;从 delta.content 计算首 token 会同时抬高两侧 TTFT
4修复压测平台的吞吐统计口径压测平台vLLM 输出吞吐被稳定虚高约 11×,且出现总吞吐小于输入吞吐的矛盾
5将 gpu-memory-utilization 降到 0.92,或钉住 --kv-cache-memory=38.48GiBvLLM消除 8 卡×4 轮的运行期 OOM 重试;当前 KV 池存在超额提交
6增加“SGLang 关闭 DCP”测试组,进行三方对照SGLangvLLM 无法同时开启 DCP + DSPARK,只能通过反向对齐验证 DCP 与 static 验证模式的代价
7将 --max-model-len 降到真实业务长度vLLM并发受 scheduler_reserve_full_isl 满长预留支配,当前 1M 设置白白压低并发能力
8扩展 warmup,覆盖 4 个现场 JIT 的算子形状vLLM首批请求的 TTFT 被 Triton 现场编译拉高
9去掉 --no-enable-flashinfer-autotunevLLMMoE 运行在 FLASHINFER_TRTLLM_MXFP4_MXFP8 上,却只使用启发式 tactic
10去掉 --disable-custom-all-reduce,排查多播不可用SGLang小批 Decode 的通信占比高;vLLM 侧已经使用 FlashInfer AR + RMSNorm 融合
11确认 KDA 融合验证内核没有走 CuTe 路径的原因SGLangverify 实际回退到 Triton,验证侧仍有一部分性能潜力没有释放
12提供 FP8 KV scaling factor,并进行精度回归两侧两边都在 scale=1.0 下运行 FP8 KV,性能结论缺少精度前提
13抬高 --mamba-full-memory-ratio 或改用 bf16 SSM,并抬高 KV 池SGLang解除 39 路并发上限,并让 max_total_num_tokens ≥ 1M
14补充 P99 与更高并发(≥64 路)档位压测平台当前并发 10 远未触及两侧调度器和并发上限的差异

总结

这次 8×B300 单机测试最有价值的地方,不是简单得出“谁更快”,而是清楚展示了上下文长度如何改变推理瓶颈:

  • 64K 阶段,通信开销更敏感,vLLM 更有优势;
  • 200K 阶段,KV 读带宽成为核心瓶颈,SGLang + DCP 反超;
  • Prefill 不是主要差距来源,Decode 扩展性才是关键;
  • 投机解码在 Random 数据集下几乎完全失效;
  • 显存分配、TTFT 口径和客户端吞吐统计都会显著影响结论。

因此,生产选型不能只看单一 TPS。上下文长度、并发规模、KV 容量、DCP 配置、真实请求分布与输出质量,必须放在同一套评测体系中综合判断。

About GPUStack

GPUStack 是由 GPUStack.ai 所推出的开源项目。GPUStack.ai 成立于2022年,是 AI Infra 解决方案提供商,目前已完成5300万元种子轮融资。创始团队成员均来自业界应用广泛的 Kubernetes 管理平台 Rancher 的核心团队。其中,联合创始人及 CTO 梁胜博士是前 SUSE 全球工程及创新总裁,加入 SUSE 之前,梁胜博士于2014年9月创立全球著名的容器管理平台公司 Rancher Labs 并担任 CEO。

我们的愿景是赋能企业可以在任意环境使用人工智能以实现业务的卓越运营。GPUStack 是实现这一目标的重要一步。

使用 GPUStack 迅速搭建你的专属 MaaS 平台!开始在本地快速构建 GPU 集群,运行和使用各种 AI 模型,赋能您的 AI 应用。

Anomalib实战:5分钟搞定图像异常检测模型训练(附完整代码) 本文提供了一份基于Anomalib框架的图像异常检测快速实战指南。文章详细介绍了从环境搭建、数据准备到模型训练与推理的完整流程,重点推荐了训练速度快、效果稳定的PatchCore模型,并附带了可运行的完整代码,旨在帮助开发者快速上手工业质检等实际应用。 阅读详情

相关推荐

unity pc运行包导入glb

本文介绍了在Unity中实现GLB/GLTF模型动态导入的方法。主要使用glTFast插件进行模型导入,配合StandaloneFileBrowser实现文件选择功能。文章提供了详细的插件安装方式(包括国内镜像源),并给出了核心导入脚本代码。脚本实现了模型加载、父对象设置、材质修复等功能,解决了常见的材质显示异常问题。该方法支持编辑器和PC平台,兼容不同版本的glTFastAPI,通过简易UI操作即可完成模型导入,适合需要运行时加载3D模型的Unity项目开发。

懒懒的蓝的博客 543

GPUStack Day 0 支持 Kimi-K3:8×B300 上 vLLM 与 SGLang 推理实测与 TaoToken 统一 Key 接入

在 8×B300 上用 GPUStack Day 0 部署 Kimi-K3,实测 vLLM 与 SGLang 在 64K/200K 上下文下的推理差异:64K 时 vLLM 领先约 1.5 倍,200K 时 SGLang 反超约 1.31 倍。文中给出可复制的启动参数、TTFT 口径与 401 排障清单,并通过 TaoToken 统一 Key 接入压测通道,官网 https://taotoken.net/?utm_source=taotoken_aicg_blog_end 。

weixin_42593130的博客 122

STM32CubeIDE之SHT3X温湿度传感器移植HAL库

有了前面的OLED的学习,这个学习起来也很快。 分以下几步走 1.你要有个温度传感器,SHT3X这个型号的,因为我要讲这个 2.你要有个STM32开发板(我用的是STM32L431RCT) 3.顺便找台电脑下载一个STM32CubeIDE 4.简单的找一个SHT3X的驱动,我是去某宝嫖的,一般卖这个的都有,这个驱动分两个文件,是.c和.h的,我直接把这两个放在下边 读了我上一篇的人,看这个应该很熟悉吧,一样的套路,学习方法是一样的,你就照搬就行 下面是sht3x.c的原文档,里面有个CRC..

qq_47736089的博客 2314

6 款电商 AI 图片生成软件实测|国内 + 跨境卖家工具清单

电商 AI 作图工具已经从 "能不能用" 进入了 "好不好用" 的阶段。对于绝大多数卖家而言,现在的 AI 工具已经可以覆盖 60%-80% 的基础商品图需求,显著降低拍摄和设计成本。选择工具的核心逻辑不是 "哪款最强",而是 "哪款最适配你的品类、平台规模和团队能力"。垂直电商工具胜在工作流效率,通用生图工具强在创意上限,模板类工具赢在上手速度。建议根据自身业务阶段,搭配 1-2 款主力工具 + 1 款辅助工具,形成适合自己的视觉生产流程。

Mardi_Ladin的博客 326

TwinCAT3 主站动态配置 PDO 的实战技巧与性能优化

本文深入探讨了TwinCAT3主站动态配置PDO的实战技巧与性能优化策略。通过对比静态PDO的局限,阐述了动态配置在提升系统灵活性、降低网络负载和保障实时性方面的核心优势。文章提供了从环境准备、代码实现到错误排查的完整流程,并重点解析了PDO映射、SDO通道区别以及分布式时钟同步等关键概念,帮助工程师掌握EtherCAT网络性能调优的核心方法。

weixin_29213525的博客 346

AI赚钱新思路 利用RPA+KIMI实现小红书全自动制作发布(详细攻略)

我已经事先准备好了文案素材,现在就利用Kimi的智能,根据我们已有的文案来创作出新的文案吧。之前我写过一篇关于【:一个戴着用百元大钞制成的简约头饰的少女,她坐在小车里,手里拿着一叠港元,整个画面洋溢着现实主义动漫风格和治愈系的温暖气息。通过这篇文章,我们已经一步步地完成了小红书治愈系文案的创作、治愈系图片的生成,以及笔记的发布,实现了整个流程的自动化。不慌不忙,快乐常在 在繁忙的日常中,给自己的心灵留一片净土,感受内心深处的平静与安宁。接下来,我将展示如何使用影刀来编写自动化脚本,以生成治愈系的图文图片。

weixin_42172073的博客 3684

视频隐私脱敏工程化:CSRT/KCF追踪算法在本地推理中的实现与边界

在短视频内容合规审查中,动态遮挡(Dynamic Masking)是高频且高耗时的环节。传统手动关键帧打码不仅效率低下,且在目标快速移动或遮挡时极易出现遮罩漂移。本文从计算机视觉工程角度,解析基于CSRT与KCF算法的目标追踪方案在视频隐私处理中的技术路径、性能权衡及落地实践。

Mysssone的博客 171

保姆级教程:用Anaconda+PyCharm搞定YOLOv8本地部署(附避坑指南)

本文提供了一份详细的YOLOv8本地部署指南,涵盖Anaconda环境配置、PyCharm集成到模型部署的全过程。特别针对国内开发者需求,整合了镜像加速和常见报错解决方案,帮助快速完成目标检测模型的本地部署与实战应用。

weixin_42528090的博客 433

我用 GPUWorks 在 M1 Pro 上搭了个发票识别原型

公司里经常要看电子发票。我想先做个小原型:把 PDF 发给一个自己部署的图文模型,让它提取发票类型、日期、交易双方和金额,再把结果交给同事核对。这个原型不用先接财务系统,先看看从部署到调用要走多少步,模型返回的内容能不能帮上忙。

鸽芷咕的博客 1万+

钉钉多维表格开发

从0到1完成钉钉多维表格开发SDK对接与实践案例。

沉修所长,勇逐新机;安而不怠,静而思变 3605

上海计算机学会2020年5月月赛C++乙组T2经济普查

中国正在以前所未有的力度推进脱贫攻坚,国家计划在2020年使得在现行标准下的贫困人口实现全面脱贫,为此,需要对居民的经济状况进行普查。 题目描述 给定一个正整数n,表示人口数量。一开始,每个居民拥有的财产记为a1​,a2​,⋯,an​,财产可能发生两种变化: 一种来源于个体,由某个居民的经济活动而产生。在某个时刻,某个居民的财产会直接变成某个数值,可能升高也可能降低。 一种来源于政策,在某个时刻,国家会对财产低于某个标准线全部的居民,实施政策支持,使得他们的财产全部正好到达标准线。 给定这些变

长春高老师编程 905

医疗 AI 有两种,别混着谈:一个改流程,一个改范式

InfoXMed 是面向医生、医学生和医学科研人员的 AI 医学工具平台,提供文献检索、全文翻译、AI 解读、指南查询和题库练习等功能,辅助临床学习、科研汇报与医学备考。原文是日本医学会杂志(JMA Journal)的一篇综述(Review Article):基本事实:这一点必须先说清:这篇论文提出的是一个研究纲领。它文中的"预测"指的是科学设想,不是可以拿来用的临床预测能力。文中甚至自己承认了一个硬缺口(见第三节)。本文只谈它的术语辨析与科学方法论,不转述任何可作为临床依据的预测或处置主张。这篇论文的全部

2601_96948740的博客 217

【LLC快速上手系列】LLC轻载时:开关频率 + 死区时间 联合优化!

轻载优化,频率别飞天,死区要有耐心。两手一起抓,效率高到笑。😎。

weixin_43199439的博客 1182

在Codex 让AI模型 拥有长期智能记忆

本文介绍Claude-Mem V15新功能——智能记忆召回,解决AI遗忘、重复提示、执行不一致等问题。通过本地部署claude-mem,实现自动记录决策(如数据库选型)、跨会话智能召回,支持记忆写入、检索、遗忘全流程闭环。相比传统记忆方案,其基于Hooks自动捕获工具调用,结构化存储,可追溯、可共享、可清理,显著提升工程效率与协作一致性,是长期项目中理想的“工作黑匣子”与“工程脑”。

米莱虾 264

计算机控制技术及应用

《计算机控制技术及应用》通过总结作者的科研成果和吸收国内外的先进理论、方法和技术,以计算机控制系统的网络化、开放化、智能化和集成化发展趋势为主线索,主要介绍计算机控制系统的基本概念和计算机控制系统的典型形式,计算机控制系统的数学描述与基本分析方法,以及数字PID控制器、最少拍控制系统、达林算法、状态变量设计法等设计方法及其各种改进算法。重点突出计算机控制系统输入输出通道接口的设计方法和典型控制系统的设计案例与实现方法等。

pscad IEEE标准系统搭建说明

pscad IEEE标准系统搭建说明,包含典型的IEEE 9节点、14节点、30节点、39节点和118节点系统。内含标准测试系统的原始数据和潮流结果。

您您这可以把问小白的多个会话比如说。左侧的多个会话一次性导出吗?不是单条会话里面的多次会对话。AI导出鸭

第三层是格式编译层。这个决策背后的判断很清晰:一个批量导出工具的价值,不在于“试三次”,而在于你真正用它处理了几十份技术文档、访谈记录或课程讲义之后,它是否值得留在你的工作流里。问小白的会话列表通过分页接口加载,AI导出鸭 在页面运行时建立旁路监听,捕获每一次分页请求返回的完整对话清单,包括会话 ID、标题、时间戳和隐藏的元数据字段。让AI导出回归优雅——这句话说的是:导出不该是体力活,而应该是一次完整的、可预期的文件交付。注意:这里的“批量”指的是左侧列表里的多个独立会话,不是一条会话内的多轮对话。

laoyunsi的博客 227

C# WinForm 基于DirectShow.dll编写的程序,可边预览边保存视频,音频和图片

基于微软的DirectShow.dll的二次开发1.自动识别连接的摄像头跟麦克风且可以对其进行选择(默认选中第一个)2.可录制wmv和avi两种格式的视频并且都带有音频,avi可以录制的分辨率和帧数进行选择,wmv默认进行了淸晰度优化如不喜欢可去除代码中有相关提示3.可在预览点开之后进行拍照,也可边录制视频边拍照4.添加了视频和音频的压缩功能(酌情使用)这次二次开发发现C#对DirectShow的相关信息太少,这次做完也不敢藏私共享出来,还望大家指正

河道漂浮物目标检测数据集

目标检测,yolo,河道漂浮物目标检测数据集

DL_data_set的博客 183

VC中sqlite的使用

在VC中对sqlite的使用,实现数据库大批数据的快速插入,读取数据库中的数据在ListCtrl中显示

AI Agent之核心框架

A: 显式 Thought 有三类价值:可解释性(便于人类审计)、可调试性(定位哪一步选错工具)、学习信号(可做监督微调或评估中间步骤质量)。ReAct 把推理与 可执行行动 绑定,每一步行动后都有 真实 Observation 反馈,从而用工具结果约束生成,降低闭卷幻觉。做完不等于结束——还要 评估做得好不好,把 教训 记下来,下次 带着教训重试,反思作为 记忆,影响后续尝试的策略。工作流程:Action → Evaluation → Reflection → Retry。A: 普通 CoT 只在。

剑雨巍巍的博客 184

AI 应用开发工程师技术实践:大模型接入、通用组件封装与性能优化

本文提出AI应用从PoC到生产的核心挑战:模型调用的持续可用、可控与可优化。通过构建统一LLM网关实现多供应商路由与故障转移,封装对话、工具调用与RAG组件以解耦业务逻辑,结合前缀缓存、批处理与流式背压治理等性能优化手段,形成“接通→接稳→接快”的工程路径,最终以工程化能力决定AI应用的生产可用性。

2301_79189962的博客 534

大模型 Embedding 与向量相似度详解

Embedding 解决的问题:计算机不懂文字,但懂数字│▼文本 → 向量(1024维浮点数数组)│▼相似度解决的问题:怎么判断两个向量(文本)有多接近│▼余弦相似度:看向量方向的夹角,越接近0°越相似│▼最终效果:语义搜索——理解意思,而非字面匹配一句话总结:Embedding 把文字变成数字,余弦相似度比较数字的方向,两者结合实现了"理解语义"的搜索。

T3165919332的博客 71

AI前沿日报 · 2026-11-04 | 祛魅时刻:Astra“纯读权重“神话的崩塌

①Astra"裸权重通吃"被spaCy创始人Honnibal精准祛魅——仅1/3实验真裸读,数学能力提升依赖Python+50次迭代;②Simon Willison用Qwen 3.8-27B端侧复现权重空间编程;③Nvidia开源Auto-Ontology自动知识图谱;④$800开源全域抓取机器人Stringman;⑤OpenAI悄然重开Codex训练开关引信任危机;⑥DeepMind发布Gemini 4 Argon机器人基础模型;⑦美国科技巨头隐性AI债务达3.2万亿美元,6个月增90%。

johnsong2009的博客 515

GPT-1 架构和计算细节

下面配合框图,对 GPT-1 的每个组件做公式展开 + 数值实例(配置:12 层 × 768,12 头,FFN 3072,词表 40478,共 117M 参数)。GPT-1 把翻译模型的编码器-解码器砍掉一半,只留解码器,然后以"预测下一个词"为目标在 BooksCorpus 上预训练。与 2017 原版的四个架构差异(框图中标 ★):h0=E[token]+Epos[position],E∈R40478×768, Epos∈R512×768h^0 = E[\text{token}] + E_{pos}[\

eloudy的专栏 243

终端 AI 审计与 “龙虾” 类智能体风险治理:从可见性到闭环溯源

生成式 AI 办公普及之后,数据泄露风险逐步下沉到终端。员工将合同、源代码、客户资料粘贴至公有大模型,以及龙虾(OpenClaw)这类本地开源 AI 智能体的滥用,成为企业安全新挑战。传统网络边界防护存在审计盲区,本文从风险链路拆解、核心能力模型、分级治理策略、落地踩坑点以及技术局限性多角度,分享终端侧 AI 安全治理的实践思路。

2401_86491085的博客 621

2.53 基于极稀疏指纹的室内定位注意力图元学习

该论文发表于IEEE Transactions on Mobile Computing(TMC)2026年6月,面向极稀疏指纹条件下的WiFi室内定位,针对指纹采集人力成本高、标记指纹稀缺时定位精度大幅下降的痛点,提出注意力图元学习模型AGML(Attentional Graph Meta‑Learning),结合图神经网络、元学习、两种指纹数据增强与分布对齐技术,在标记指纹极少的场景实现高精度室内定位,同时公开了多套真实+仿真定位数据集用于基准测试。场景:二维室内空间,障碍物造成信号遮挡,

weixin_42963026的博客 319

语音识别与语音合成的技术原理及应用

语音识别 #语音合成 #人工智能 #大模型。语音识别与语音合成的技术原理及应用。一、语音识别的核心原理。二、语音合成的核心原理。三、工程落地的主要难点。五、需要关注的现实问题。

weixin_62919816的博客 188

设计师工作室 GEO 实操:如何提升 AI 实体推荐概率

设计工作室 GEO 的本质,是把创意服务转化为 AI 可理解的结构化信息。核心动作可归纳为:区分事实与审美、建立实体图谱、预判用户提问、输出脱敏内容、搭建多信源、持续测试验证。梳理工作室的 6 个实体属性:品类、城市、流程、边界、团队、渠道。在官网或作品集平台发布至少 3 篇结构化项目复盘,只陈述事实。输出 1 篇「设计报价影响因素」科普内容,覆盖甲方高频提问。争取 1 次行业媒体或本地媒体专访,形成第三方信源。每周用「XX 城市 + 品类 + 设计工作室推荐」指令测试,记录出现频率。

goujunwe的博客 321

AI作图软件技术选型:从4个技术维度出发的实测对比

AI作图软件技术选型:从4个技术维度出发的实测对比

Vbaoke的博客 196
上一篇: 怎么优雅的在GPUStack上使用minerU?
下一篇: GPUStack × TileRT × B300:GLM-5.1 高速版复现,解码吞吐 500+ TPS
GPUStack
博客等级 码龄2年 150粉丝 65原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值