Aioga
AI资讯 / 行业动态
返回 AI资讯

Ling-3.0-flash 在 4 块 Blackwell GPU 上如何将批处理 1 解码延迟降低 54%

LMSYS:Blog(Chatbot Arena 团队Aioga 编辑团队2026-08-21T17:56:25.000Z热度 72

蚂蚁 Ling Infra 团队与 RadixArk SGLang 团队将 Ling-3.0-flash 混合线性注意力 MoE 模型的单请求解码速度从 288 tok/s 提...

行业动态LMSYS:Blog(Chatbot Arena 团队)

今日 AI 情报摘要

蚂蚁 Ling Infra 团队与 RadixArk SGLang 团队将 Ling-3.0-flash 混合线性注意力 MoE 模型的单请求解码速度从 288 tok/s 提升至 606

tok/s,平均 TPOT 从 3.33 ms 降至 1.53 ms。 🔗 阅读原文 via AIHOT · https://aihot.virxact.com/items/cmt393qov0kfhro6tuwhxhubl

中文正文 · AI 翻译

批量1解码变得越来越重要。例如,小米MiMo在6月发布了MiMo-V2.5-Pro UltraSpeed:https://mimo.xiaomi.com/blog/mimo-tilert-1000tps,声称在一个万亿参数的MoE模型上实现每秒1000个token的解码。

批量1给推理堆栈留下的开销空间非常有限。没有批量可以分摊启动成本,也没有并发来填充流水线空隙,并且算术强度不足以让巧妙的平铺获得收益。关键路径上的每一微秒都是用户等待的微秒。

本文讨论的是如何在4块NVIDIA Blackwell GPU上将Ling-3.0-flash(一个混合线性注意力MoE模型)的这一底线推低。它涵盖了两种推测解码路径。在NEXTN/MTP路径上,我们将单请求解码速度从288 tok/s提升至606 tok/s,平均TPOT从3.33 ms降低到1.53 ms。第二条路径是DSpark,这是一个基于相同堆栈构建的、使用置信度调度的推测解码器:1000请求运行达到1120 tok/s,平均TPOT为0.78 ms,接收长度为9.95。最后的比较是受控的:NEXTN和DSpark在同一台机器上使用相同命令测量,平均TPOT降低了1.9倍(从1.53 ms降到0.78 ms)。本文其余部分将介绍这些时间都花在了哪里,以及如何将其找回。

Headline results across the four configurations

图1. 在四个配置下的主要结果。

在GSM8K上,相同堆栈得分为:准确率0.889,无效0.000,延迟341.5秒,输出吞吐量511.1 tok/s。

所有运行均使用4块Blackwell GPU上的Ling-3.0-flash,TP4,bf16,并发1,贪婪解码,以及相同的固定8192输入/1024输出随机工作负载。从左到右,列显示初始NEXTN基线、修复draft-extend图后的NEXTN、最终调优后的NEXTN以及DSpark。前两列为较短的实验检查点;后两列为受控比较,每列在同一台机器上测量相同的1000个请求。峰值吞吐量仅在最后两次运行中比较,因为它是固定一秒窗口中的最大值。

这里有两个定义很重要,因为它们一起解释了为什么输出吞吐量并不是平均 TPOT 的简单倒数,即使在并发为 1 时也如此:SGLang 的 TPOT 不包括 TTFT,而输出吞吐量则是将总输出令牌数除以基准测试总墙钟时间(参见 bench_serving 指南:https://github.com/sgl-project/sglang/blob/main/docs/developer_guide/bench_serving.md)。本文中的所有主要基准测试运行都使用了合成随机工作负载;accept length 特别依赖于提示和输出分布,因此 9.95 是此工作负载的 accept length,而不是模型的。

Ling-3.0-Flash architecture: 42 layers interleaving 35 KDA linear-attention layers with 7 MLA full-attention layers over a 512-expert MoE

图 2. Ling-3.0-Flash 架构:42 层,交错排列 35 层 KDA 线性注意力层和 7 层 MLA 全注意力层,基于 512 专家 MoE。

Ling-3.0-flash 是一个混合注意力 MoE 模型(BailingMoeV3),以下大部分内容来自“混合”这个词。

每六层注意力层中有五层是 KDA。这就是为什么在最终分析中,MLA 注意力在 8k 上下文中的每步耗时仅为 244 微秒的原因,也是该模型一开始就是一个优秀的 batch-1 目标的原因:由于注意力开销小且批量非常小,剩余的关键路径就是权重带宽和启动延迟,这正是本文讨论的场景。

我们在 steps=5, topk=1, draft_tokens=6 的情况下使用 NEXTN 推测解码进行解码。一次解码步骤是在一个中继中进行的三个 CUDA 图。

Three graphs per decode step

图 3. 每步三个图。草稿模型提出一个 6 令牌链,目标模型在一次前向中评分全部六个,extend 图使用目标模型的真实隐藏状态重放已接受的前缀,以生成下一轮的种子。判定本身(eagle_sample)发生在 verify 图中;主机迟一步才知道接受了多少令牌。

草稿是一个单层 NEXTN 模型,自回归运行:五步但仅四次前向,因为第一个候选来自前一轮的种子,第五个从第四次前向的 top-k 中读取。Verify 是对全部六个链位置执行一次包含 42 层的目标模型前向。Extend 修复草稿的 KV 缓存,该缓存仅见过草稿自身的猜测,并将种子交回下一轮。

CPU上的三个图之间交叉的部分实际上是没有的。固定形状加上填充使每个依赖接受的计数成为GPU索引,而不是主机值;持久缓冲区让生产者图直接写入消费者缓冲区;而真正需要CPU值的决策(EOS、停止字符串、去标记化)则通过一个旁路D2H流和一个延迟一步消费的copy_done事件来处理。下面的一切都基于这个特性。

当我们开始时,GPU在每步中大约有三分之二的时间处于繁忙状态。在批量为1时的空闲时间有两种类型,它们需要分别诊断,因为解决方法完全不同:

Two shapes of idle time at batch 1

图4. 两种类型的空闲。上图:主机循环比GPU的工作长,因此空隙少而宽,并落在图之间的缝隙中。下图:一旦主机被隐藏,剩下的是几百个运行时间为1.5-6 µs的核节点,它们的启动开销相当于计算时间,加上权重读取本身。

这两种空闲描述了TPOT的每步时间侧。另一个杠杆是每步提交的令牌数:平均TPOT≈步长时间/平均接受长度。本文其余部分都基于这些杠杆。主机运行预读和缝隙工作消除主机模式下的空闲;PDL、数据类型更改、融合和重新调优缩短GPU关键路径;投机调优和DSpark增加每个目标步骤提交的令牌数。DSpark之后在阻塞D2H读取重新引入主机固定时,会重新审视第一类空闲。

测量设置的三个特性塑造了下面的每一个数值。

分析器会夸大主机端事件。CUPTI 会为它记录的每个主机事件增加开销。在相同配置下,一个被分析的步骤测量为 5.2 毫秒,而实际步骤(通过在未分析运行中从 TPOT × 接受长度反向计算)为 4.9 毫秒。那 0.3 毫秒的差距与我们想要分析的主机端效应同数量级,因此分析轨迹可能显示跨节点等待,而在未分析情况下并不存在。GPU 内核的持续时间来源于硬件时间戳,比主机端计时更可靠,但也不是免疫的:追踪仍然会扰动启动时机、并发性、缓存状态以及 CUDA 图执行,而且 Nsight Systems 文档指出 CUDA 和图节点追踪可能产生显著开销(用户指南:https://docs.nvidia.com/nsight-systems/UserGuide/index.html)。因此这里每个主机端结论都先进行了分析与未分析的校准。

微基准测试对冷权重内核运行时过于乐观。一个循环重复调用同一个内核会保持其 2.6 MB 门控权重驻留在 L2 中,而真实模型在连续调用同一层之间会通过大约 94 MB 的专家流量刷新 L2。热态 7 微秒,冷态 11 微秒:足以反转与库 GEMV 的排名。

峰值吞吐量是单窗口统计。基准测试的峰值是固定 1 秒网格上的最大值,因此大致存在 ±5% 的相位带:TTFT/TPOT 偏移会重新切分网格,而一个提高平均吞吐量 2.3% 的变化可能显示为从 909 降到 858。两个读数在固定种子下完全可复现,因此可复现性并不能区分信号与相位。在这里的 A/B 决策是基于平均 TPOT × 平均接受长度。该乘积是步骤时间的派生估计,而非测量值(两个聚合的乘积并非乘积的聚合),但它在各次运行中稳定,并且对这些运行中的接受长度漂移不敏感,这正是 A/B 判定所需的。我们报告峰值,但从未针对其进行优化。

正确性有它自己的门控,应用于每一次更改,确保更改生效之前:对256标记的贪婪生成进行逐字节比较,接受长度在0.05以内不变,并在交错温度采样请求后进行贪婪重运行以捕获状态污染。合法地改变舍入的更改(如bf16门控、单舍入合并)会在提交信息中说明,并在接受和任务指标上进行验证,而不是通过位一致性。

这是整个活动其余部分依赖的结构性更改,同时它也是一个主机模式空闲修复。

From lockstep to deep pipelining

图5。锁步到深度流水线。之前:每一步主机都在resolve_seq_lens_cpu中阻塞,等待前一个验证图在GPU上完成,因此提前执行的深度重置为零,每个主机准备段都变成GPU气泡。之后:队列完全加深,每次启动验证k+1时其执行领先一步,唯一剩下的同步是延迟一步消费的copy_done事件。

cudaGraphLaunch一直是异步的,并且GPU上的draft → verify → extend顺序是免费的:同一流,FIFO。因此问题从来不是验证是否等待草稿,而是主机是否每一步都被绑定到GPU进度上。

确实是这样。在spec-v2下,调度器不知道接受长度,因此FutureMap.resolve_seq_lens_cpu()在构建下一批次时从GPU拉回new_seq_lens:以发布事件为门控,在私有流上拷贝,然后进行同步()。主机不是在等待微秒级别的拷贝,而是在等待前一个验证图完成执行。中位成本:每步485 µs,并且每一步运行深度重置为零。

原因是needs_cpu_seq_lens标志,在spec-v2涉及的每个后端上通过OR进行组合。trtllm_mla在三种角色中都声明为False;兄弟线性注意力后端GDNAttnBackend和Mamba2AttnBackend都显式声明为False。KDAAttnBackend从未声明该标志,并继承基类默认值True,尽管它运行与两个兄弟相同的基类元数据代码。

声明needs_cpu_seq_lens = False会折叠OR并移除每步同步。正确性论点是逐点的:KDA的元数据从未读取CPU镜像,并且回放填充来源于forward_batch.num_padding。

主机怎么敢在不知道步骤 k 接受了什么的情况下启动步骤 k+1?因为这些值从未接触 CPU。FutureMap 是驻留在 GPU 上的中继:步骤 k 的图将输出 token、新的序列长度、top-k 概率和隐藏状态写入由 req_pool_idx 索引的设备缓冲区,而步骤 k+1 的图通过相同的索引读取它们。主机只处理索引,而这些索引它已经知道。

Where the run-ahead slack lives

图 6。松弛所在的位置。面板 A:主机循环(约 4.3 毫秒)小于 GPU 步骤(约 4.9 毫秒),所以它完全被隐藏。面板 B:当抖动(一次 gloo 广播或一次垃圾回收暂停)超过松弛,主机结束得晚,而 GPU 在下一个验证边界等待,这里图中的第一个集体操作吸收了跨秩的偏差。

提前执行也改变了主机消耗的形态。不是每个秩在每一步都直接支付其主机时间,只有耗尽队列松弛的秩才会支付。在一个四秩的跟踪中,正好有一个秩处于这种状态:它的调度器段运行时间是其同伴的 5-10 倍,它的草稿图启动晚了 40-80 微秒,它的草稿→验证接口比其他秩的中位数多 +165 微秒,并显示周期性的 400-750 微秒峰值,带有垃圾回收特征。其他三个秩在每次汇合时都在自旋等待它。普遍适用的诊断:一个内核的持续时间并不是它的工作。一个显示 150-480 微秒的 20 KB embedding 全归约并不是慢的全归约;它在吸收偏差,只有跨秩的时间对齐才能告诉你哪个秩延迟了。

随着锁步绑定的取消,图之间的接口值得缩短。在 CUDA 图重放之前,特定步骤的注意力元数据(kv 索引、块表、mamba 状态槽)必须从实时的 req_to_token 和 seq_lens 重建到图的捕获静态缓冲区中。这种补充在每一步都会主动执行,并且占接口的大部分。在批次 1 时,它纯粹受主机约束:每个操作调度时间为 5-15 微秒,执行时间为 1-4 微秒。

我们从两个层面进行攻击。首先,融合索引链:assign_extend_cache_locs_uniform 在内核中计算结束偏移量(统一的 draft_token_num 扩展使得跨行前缀和不再必要),而 _fused_state_indices_kernel 将 gather、translate、padding-sentinel 写入和 copy_ 合并到一次启动中,仔细保留两者副作用,包括在填充行上将 req_pool_indices 置零,该函数本身不需要,但图中其他捕获的内核依赖它来进行边界内的 gather。

其次,将 refill 本身捕获到由 (bs, forward_mode) 键控的小型 CUDA 图中。这可行的原因是回放契约已经保证的指针稳定性属性:replay ForwardBatch 视图仅向后端提供静态缓冲区和驻池张量,因此整个准备序列具有固定地址。周围有四个安全机制:两个主动预热,使 Triton JIT 和自动调优在捕获之外发生;每次回放前恢复每个后端的 forward_metadata 对象快照(图回放设备操作,快照恢复 Python 指针);捕获失败时的永久主动回退和警告;以及针对于 padding、TBO、pdmux 和 LoRA 的保护。此功能通过 SGLANG_ENABLE_METADATA_GLUE_GRAPH 选择性启用,并且对于 DFLASH 系列推测强制禁用,因为该路径每步都在主机上重建注意力计划,如果捕获 refill,将在捕获时冻结计划。

关于可捕获内容存在硬性边界。标准是:由纯设备内核写入持久缓冲区的 refill 可捕获;任何通过 FlashInfer 风格 plan() 的操作则不可捕获。draft 端失败的原因是:多步骤 draft 后端重新 plan() 主 EAGLE 图已捕获的 wrapper,将该重新 plan 记录到次级图中会在回放时破坏 wrapper 的内部状态。相关要求是捕获必须是幂等的。trtllm_mla 的 _init_cuda_graph_metadata 过去会在每次调用时分配新的张量并替换其 decode_cuda_graph_metadata[bs] 条目,这会导致第二次捕获后早期图读取已释放的内存。

批处理-1 步骤在短时间窗口内执行数百个内核节点。在这种规模下,启动和前奏的开销大约与计算量相当。程序化依赖启动(PDL)允许消费者内核在其生产者仍在运行时被调度到SM上:消费者执行所有不依赖于生产者输出的操作,并且只在依赖读取前在 gdc_wait() 处设置屏障。

图7. 路由器路径上的PDL。没有PDL时,每个内核只能在前一个完全完成后才开始,而门控矩阵向量乘的冷HBM权重加载会成为关键路径。应用PDL后,权重块加载与生产者无关,因此它在 gdc_wait() 之前就发出,2.6 MB 的冷读取可以在生产者尾部下方执行;路由器 top-k 也是以同样的方式预取其偏置。

我们连接了三个链:MoE 主链(moe_align→up-GEMM→激活→down-GEMM→combine→all-reduce)、路由器链(norm→gate matvec→top-k)和 KDA 链(conv1d_update→循环 delta-rule→门控范数)。有两个设计点很重要。

与生产者无关的加载应在等待之前完成。这就是图中的全部技巧,也是使 PDL 对延迟受限的内核而言不仅仅是去除启动开销的原因。

感应内核不能携带PDL属性。小型M的MoE combine是由torch.compile生成的内核;加入链意味着用仓库的Triton reduction加上GDC来替换它。这带来了数值上的副作用:fp32求和 × 缩放只进行一次最终类型转换,而旧路径则进行了两次四舍五入。结果略微更精确,但不逐位相等,提交信息中有说明。

后来,在 PTX 的 griddepcontrol 中发现了一个问题后,我们升级了语义:launch_dependents 仅释放依赖网格的启动,而消费者的等待始终会在生产者网格完全完成时起到栅栏作用。将触发器从生产者的末尾移动到生产者自身等待之后立即触发,使消费者的前序可以与生产者主体的更多部分重叠,而不仅仅是它的尾部,但有一个前提条件:消费者在提前启动和每次读取生产者输出之间,仍然必须保持自己的 gdc_wait()。这是每个消费者自身的属性,而不是普遍保证,因此我们对每个内核进行了检查,并转换了六个。提前触发获得的收益也是不确定的:驱动程序可能会提前启动依赖网格,实际重叠的程度取决于当时的调度和资源压力 (CUDA 编程指南:https://docs.nvidia.com/cuda/cuda-programming-guide/04-special-topics/programmatic-dependent-launch.html)。fused_moe 将其限制在 M ≤ 512 的检查下:在预填充形状时,提前释放大型消费者网格会从生产者偷取 SM,而在解码形状时完全是收益。

PDL 是纯调度语义。累积顺序未改变的更改保持位级一致;gate matvec 通过了 4/4 GDC 开启/关闭的比特比较。

moe_align,在 pair 轴上。Triton 融合 MoE 的 GEMM 在 block_size 瓦片中消费 token,每行共享一个专家,而 moe_align_block_size 构建该排列。通用路径需要两次内核启动:在每个专家的偏移量最终确定之前,不能放置任何 token,这些偏移量来源于全网格扫描,并且设备范围内的屏障仅存在于内核边界。存在单次启动的变体,但它会将每个线程的专家计数器存放在共享内存中,因此限制为 64 个或更少专家;对于 513 个专家的解码,总是需要两次启动。

替换操作基于配对轴:[NP, NP] 的成对比较能一次性为每个 (token, slot) 对在其桶内及桶的总体人口中分配一个稳定的排名;随后,每个桶的排名为0的代表派生出填充计数、桶顺序的专属偏移量、公布总数以及每块的专家ID。任何操作都不会随着专家数量的增加而扩展,因此专家数量限制消失。显而易见的替代方案是对填充的专家轴(最多1024个桶)进行直方图和累积和操作,这种方法是正确的,但会在关键路径上增加大约3倍的单SM工作量,相比它替换的两个内核。这也是配对轴在这里承担负载的原因。

从参考中有两个刻意的偏离,两者都是基于消费者不变量的论证:桶内顺序在配对索引中保持稳定,而不是在原子调度顺序中(每对写入自己的输出行,所以消费者对顺序不敏感);发布总数之后的缓存尾部保持未写(消费者CTA在读取前提前退出)。一个悬崖点:成对张量是 O(NP²)。在 NP=64 时,它们完全驻留在寄存器中(约4 µs,与 CUDA 的两内核路径相当),在 NP=256 时溢出到本地内存,每次启动大约耗时 230 µs。分发门槛严格限制 numel ≤ 64;较大的批次则退回到 CUDA 路径。

SwiGLU 在 up-GEMM 尾部。将 silu(gate) * up 折叠到 MoE up-GEMM 尾部,可以去掉每个 MoE 层独立的激活内核,以及中间缓存的全部写后读操作。布局技巧是在加载权重时对 w13 进行按专家行交错,使 gate 和 up 在同一输出块的相邻偶/奇列中对齐。由于每个 GEMM 输出列是独立的点乘,因此交错在位级上是中性的。

位奇偶性是关注重点。被替换的内核使用 -use_fast_math 编译,因此尾部逐条指令复现它:mul + ex2.approx.ftz 用于 __expf,div.approx.ftz,还有对乘积的最终单次舍入。微妙之处:FlashInfer 将激活仿函数实例化为 float,所以 silu 在乘法前从未进入 bf16。若在此处舍入,则结果会双重舍入,并在大量输入上产生偏差。这在文档中是不可见的,对容差检查也是不可见的;必须对整个输入范围逐元素进行位级比较才能发现。

KDA 链式验证块经济学。融合的 conv1d + 门控 delta 规则的验证内核已经存在;这些提交重新调整了它。在带有图内计时的旋转冷测试中,T=6 时的 Blackwell 曲线是单调的:BV=4 时 11.56 µs,8 时 12.53,16 时 12.83,32 时 14.26,64 时 20.7,128 时 38。BV=4 每次调用最多赢 19%,因为 256 个 CTA 在 148 个 SM 上是 1.7 波次,并且将 q/k 卷积复制 32 次仍然比缩短串行链便宜。V 维度的平铺从不触碰 K 维度的归约顺序,因此在 num_warps=4 时,每个 BV 在位级上与基线完全相同,重新调整没有数值风险。

最大的单一后结构变化是 dtype 的变化。在 batch 1 时,路由器门和 lm_head 完全受带宽限制:每个解码步骤都会冷读取每个 MoE 层的门权重(bf16 下为 2.6 MB)和词汇并行的 lm_head 投影,并且两者都没有算术操作来掩盖读取。将两者改为 bf16 而不是 fp32 可以减少一半的字节;端到端来看,大约带来 +10% 的提升,是主机预运行修复后的最大单项增益。像上文提到的其他舍入变化一样,这个也在提交信息中声明,并通过 accept length 和任务指标验证,而不是位级一致性。

被拒绝的推测 token 会使 KV 缓存项无害地过时,但它已经原地破坏了循环状态。线性注意力与推测不能免费共存。

使其工作的方案:在验证期间,递归运行时禁用状态更新,并将每个链位置的后状态写入中间缓冲区;在得到结果后,commit_mamba_states_after_verify 将最后一个被接受位置的状态复制到持久槽中。先 staging,再提交。这也是为什么紧凑型 spec 缓存限制为 topk=1:有链时,被接受的前缀是唯一的,状态可以按位置索引;有树时,被接受的路径是众多路径之一,状态必须按树路径索引。

分析显示 KDA 解码受带宽限制,主要是 K×V 状态的 HBM 流量,因此除了融合和平铺重新调整之外,没有太多改进空间。我们没有对比实际带宽与 Blackwell 峰值,因此应将其视为形状观察而非 roofline 结果。

权重-带宽优势有一个反直觉的推论:验证更多代币几乎是免费的。验证4个令牌和验证6个令牌的权重完全相同。在第一批加深的投机中,每增加一步就多花一个廉价的draft(draft为单层),加上KDA链验证递发中的增量序列成本,以及购买接受长度。

我们选择了扫掠它而不是假设它(该扫频发生在聚变丛之前;最优点随后移动,如下所述):

步进时间列是TPOT,×接受长度,这是一种推导估计,而非直接测量。每增加一步大约耗时4-9%,而边际接受增益呈几何衰减(d5→d6仅增加0.08)。盈亏平衡条件大致为 Δ 接受 > 0.05 ×接受。最优配置也会变化:聚变束落地后,步进时间减少,(5, 6)成为更好的配置;一旦FP8配重进一步压缩固定底座,就需要再扫一次。

调优NEXTN的深度是固定形状算法中的一个一维旋钮。更大的杠杆是改变算法,战役后半段则用来让DSpark对抗同一目标,并给予它同样的批次-1处理。

DSpark 算法本身是公开的。这里的工作是将该公开配方改编为Ling-3.0闪存、长上下文在线蒸馏和第一批Blackwell的服务栈。我们的适应有四个方面的不同。

分布对齐的数据。我们主要基于Ling-3.0闪存的训练后数据进行提炼,因此草图训练时将面临的分布。我们还在蒸馏过程中使用多重采样设置,以提升轨迹多样性和推测解码下的鲁棒性。

一种消融驱动的草图设计。我们没有直接继承Ling-3.0闪存架构,而是对关键草稿选择进行了系统性的消融分析,包括是否重用Ling-3注意力结构以及采用哪种RoPE变体(部分或交错)。我们保留了在接受长度和延迟之间最佳权衡的设计。

一个配套的在线训练系统。针对长上下文和大规模在线训练,我们构建了 SplitServe Trainer,这是一种单节点 8 GPU 框架,将资源在训练和 SGLang 推理之间平均分配。在训练过程中,推理端执行目标前向计算以生成诸如草稿的目标隐藏状态等监督信号。这保持了生成-训练循环在本地进行,减少了 IO 开销,并提高了长上下文工作负载的训练效率。

情报判断

Aioga 编辑摘要

LMSYS 博客称,蚂蚁 Ling Infra 与 RadixArk SGLang 团队在 4 块 NVIDIA Blackwell GPU 上优化 Ling-3.0-flash,将单请求解码速度从 288 tok/s 提升至 606 tok/s,平均 TPOT 从 3.33 ms 降至 1.53 ms。

背景分析

Ling-3.0-flash 是混合线性注意力 MoE 模型,架构包含 42 层,其中 35 层为 KDA 线性注意力层、7 层为 MLA 全注意力层,并使用 512 专家 MoE。测试采用 TP4、bf16、并发 1、贪心解码及固定长度随机负载。

Aioga 观点

Aioga 判断,这项工作的重点不只是峰值速度,而是针对 Batch-1 场景压缩推理栈开销。博客同时比较了 NEXTN 与 DSpark,但两者的吞吐和延迟指标应结合各自配置及测试口径理解。

影响与后续

可能的行业影响是,单请求低延迟会继续成为模型服务优化的重要指标,推测式解码、图执行修复和底层调优的组合价值值得关注。不过,结果来自合成随机负载,不能直接代表所有真实应用场景。 后续评估应优先复现相同硬件、模型、输入输出长度和解码设置,并分别核对 TTFT、TPOT、总墙钟时间、接受长度与任务准确率,避免仅以 tok/s 判断服务收益。

来源与版权说明

本页正文由公开来源页面提取并按原有信息整理,同时保留来源、发布时间和原文入口。版权归原作者及来源网站所有,请通过原文链接核验和阅读来源版本。

抓取通道: 摘要聚合 · 原始域名: lmsys.org

来源: LMSYS:Blog(Chatbot Arena 团队

原文链接: 打开原始来源

Aioga 归档: 查看情报页

Content record: source-page · Updated: 2026-08-21T17:56:25.000Z

API 中转站
API RELAY · DEVELOPER INFRASTRUCTURE

API 中转站

统一接入主流 AI 模型 API,为开发、测试与生产环境提供稳定调用入口。

立即访问 api.w173.com
AIOGA SHARE POSTER

分享这篇 AI 情报

蚂蚁 Ling Infra 团队与 RadixArk SGLang 团队将 Ling-3.0-flash 混合线性注意力 MoE 模型的单请求解码速度从 288 tok/s 提...

LMSYS:Blog(Chatbot Arena 团队2026-08-21T17:56:25.000Z
扫码打开文章详情扫码直达文章详情

Aioga 自动聚合全球 AI 动态,并保留来源信息用于核验与引用。