Aioga
AI资讯 / 产品更新
返回 AI资讯

SGLang 和 Miles 为月之暗面 2.8T 参数 Kimi K3 模型提供发布当日支持

LMSYS:Blog(Chatbot Arena 团队)Aioga 编辑团队2026-07-27T17:50:17.260Z热度 72

SGLang 和 Miles 为月之暗面开源的 2.8T 参数模型 Kimi K3 提供发布当日支持,分别负责推理和 RL 训练。K3 采用 69 层 KDA 线性注意力与 2...

产品更新LMSYS:Blog(Chatbot Arena 团队)

今日 AI 情报摘要

SGLang 和 Miles 为月之暗面开源的 2.8T 参数模型 Kimi K3 提供发布当日支持,分别负责推理和 RL 训练。

K3 采用 69 层 KDA 线性注意力与 24 层 MLA 交错的混合架构,在 SGLang 上单卡 batch-1 解码速度达约 113 tok/s,结合 DSpark 推测解码可达约 423 tok/s。

中文正文 · AI 翻译

我们很高兴地宣布,在 SGLang 和 Miles 中对 Kimi K3 的 Day-0 支持:https://platform.kimi.ai/docs/guide/kimi-k3-quickstart。K3 是第一个拥有三万亿参数级别的开源模型,其混合架构在几乎每一个服务栈假设的地方都与传统不同。通过与 Moonshot AI 和 NVIDIA 团队的合作,这两个团队在发布当天全面覆盖了 K3:SGLang 用于推理,Miles 用于强化学习训练。本文介绍了实现这一目标所需的步骤。

启动命令和每个工作负载的配置指南在 Kimi K3 食谱中:https://docs.sglang.io/cookbook/autoregressive/Moonshotai/Kimi-K3。

Kimi K3:https://platform.kimi.ai/docs/guide/kimi-k3-quickstart 是第一个拥有三万亿参数级别的开源模型:参数为 2.8T,拥有 1M token 的上下文窗口,并具备原生视觉理解能力。其前身 K2.5 在架构上与 SGLang 已经很好支持的模型非常接近,因此大部分栈直接适用。K3 并非如此 — 它在多个独立位置同时偏离了传统:

每一行都是一个服务问题。混合注意力栈使得 1M 上下文成为可承受,但这意味着服务器同时持有两种状态:每个请求旁边有一个固定大小的 KDA 状态以及 MLA 的每 token KV — 下文的内存管理部分正是关于这个。注意力残差将一组注意力输出贯穿整个栈,这破坏了 SGLang 标准层工具链的假设,并在诸如 DP 注意力等地方迫使使用 K3 专用路径。LatentMoE 在下投影潜在空间中使用 SiTU 激活函数而非 SwiGLU 来路由 16 个 896 个专家,因此没有现有的 MoE 内核可以开箱即用。视觉路径——塔、投影器、处理器以及 Kimi 的 XTML 媒体格式——都是从零开始搭建的。下面的各节都基于这一搭建过程。

注意 KV 是仅追加的。一旦一个令牌的 KV 被计算出来,它就永远不会改变,这就是调度器可以在每个共享前缀的请求之间共享一个物理副本、将其保存在基数树中,并在迭代中无须第二次考虑就进行流水线处理的原因。KDA 层的状态则恰恰相反,是一个固定大小的递归缓冲区,每个令牌都会在原地被覆盖。因此,调度器免费提供的所有 KV,从前缀缓存到重叠调度器、从推测解码到分页,都必须为一个在读取时会变化的值重建。K3 将 69 个 KDA 层与 24 个 MLA 层交错,因此这并不是一个特殊情况。这占据了模型的大部分。接下来是这种重建,它唯一令人满意的特性是每个部分都由原地覆盖的事实强制生成,没有任何是附加的。

同一路径同时服务于重叠调度器、推测解码和 page_size > 1 的情况,这些组合在以前的递归状态模型中是相互排斥的。一个请求可以击中已缓存的前缀、恢复递归状态、运行多令牌草稿、验证它并提交,同时调度器提前一步准备下一批。

一个请求的实时状态位于单个工作槽中,每次前向传播都会在原地读取并覆盖它。缓存它意味着要从 GPU 正在积极修改的内存中复制数据,这会产生两个竞争条件。恢复操作可能与正在写入该槽的前向传播冲突。而刷新缓存的快照可能与仍在读取前一个快照的 donate 操作冲突。两者都在未进行设备级同步且热路径上无锁的情况下完成。

首先,每个状态副本都是串行前向流上的一个内核。将已缓存的检查点恢复到工作槽的写时复制操作,以及在 track 边界捕获状态的快照操作,会排队在生成和使用该状态的前向传播之间,因此同一流的顺序提供了先行发生(happens-before)关系。每个 prefill 块和解码期间的每个轨道间隔都会进行一次快照。

其次,唯一不会传输字节的操作是请求操作。快照落在我们称为额外缓冲区的乒乓对中,其中一个槽位保存最新的快照,另一个槽位用于下一个快照,这个第二个槽位只在需要的边界上分配,并在之后立即释放。缓存会在每次预填充块之后、从预填充过渡到解码时,以及请求完成时,将最新快照的槽索引捐赠给树。一个新的槽会回填缓冲区,因此快照的写入目标与捐赠的读取源永远不会是同一个物理槽位。

The three KDA state moves, copy-on-write, snapshot and donate, and where each sits relative to the serial forward stream.

三种状态操作。写时复制、快照和捐赠,以及它们相对于顺序前向流的位置。

因为可重用的前缀检查点存在于共享、可淘汰的基数树中,运行中的请求仅需要保留少量临时槽,最少四个。它们是工作槽、一个用于快照的额外缓冲槽,以及两个保留空间槽:一个用于必须保留的已提交前缀状态,另一个用于分支副本所需的复制。大部分缓存状态在整个树中摊销,而不是按请求收费,所以状态池不必随每个请求保持热数据的历史数量而增长。

循环状态不能在任意标记处截取,因为你无法将其倒回到早期位置,所以它仅在块边界处建立检查点,即使在边界上也很稀疏。每条路径的上限和LRU策略仅保留每条路径上的少量检查点,且检查点可以独立于其标注的键值被淘汰,使节点变为墓碑。分支点获得特别处理,该思路源自Marconi:https://arxiv.org/abs/2411.19379。一个分叉是每个未来分支都保证共享的前缀,因此当请求在边缘中间分叉时,它从上方最近的检查点重放,并在块对齐的分叉处设置新检查点。下一条分支会直接在此处恢复,无需重放。

Sparse KDA state checkpoints overlaid on the radix tree, and the branching point where a new request diverges from a cached prefix.

基数树上的检查点。稀疏检查点叠加层和分支点。

这些都不是独立添加到其它功能上的附加特性。它们是同一事实的四个后果,也就是状态会自我覆盖,这就是为什么设计即使同时吸收了重叠调度器、推测解码、分页和前缀缓存,仍然保持紧凑的原因。

以上内容管理每种状态在其自己的池中,而这些池本身就是设计中唯一的猜测。两个分配单元相差三个数量级:每个请求一个大的 KDA 状态块(在 TP=8 时约 54 MB,涵盖所有 69 个 KDA 层),每个 token 一个小的 MLA KV 块(约 27 KB,涵盖所有 24 个 MLA 层),所以它们今天存在于两个独立的池中,并在启动时确定大小。这个大小是对流量的一种押注,当押注失误时,一个池的服务器会耗尽内存,而另一个仍有剩余。

统一内存用一个池代替两个池:KDA 状态从一端填充,MLA KV 块从另一端填充,中间未使用的字节形成一个单一的空闲区域。

Unified memory: two static pools versus one pool holding both kinds of state, and the freeing sequence

统一内存。上图:今天两种状态有独立的池,在启动时确定大小,所以一个可以闲置而另一个已满。中图:使用统一内存时,两种状态都从同一个池分配,从相对两端增长,中间有一个单一的空闲区域。下图:释放中间的状态块会留下一个间隙,然后将末端的块移动到该间隙中,使空闲区域保持完整。

释放同样简单。当请求完成、被中止或在压力下收回时,其块会被释放。如果中间因此留下间隙,则从末端移动一个块填补,以保持空闲区域完整。

这种布局提供了灵活的页面大小且没有内存碎片:54 MB 的 KDA 状态块和 27 KB 的 MLA KV 块从相同的字节中抽取,且没有强制统一的页面大小,上述的移动操作以可忽略的状态移动成本保持两端紧凑,因此空闲空间始终是一片连续区域,可由任一种状态使用。所以容量随着工作负载而变化,而不是启动标志:许多短请求填满状态块的池,少数长上下文填满 KV,任一情况都无需重新配置。

统一内存通过 --enable-unified-memory 进行选择性启用。接下来的帖子将详细介绍实现过程。

K3 配备了 DSpark 阻止投机解码,这是由我们为 K3 训练的草稿模型驱动的:https://huggingface.co/RadixArk/Kimi-K3-DSpark。集成的两个部分值得单独讲述:只在有价值的地方花费验证预算,以及让 K3 的循环 KDA 状态在投机下得以存活。

DSpark 每步提出一块草稿令牌,目标会在一次前向传播中验证整块。对于批量大小 1,额外的验证位置几乎是免费的:步骤受延迟限制,多几个令牌并无大碍。随着批量增加,情况就不再如此。验证令牌现在与同一时间步的所有其他请求争夺时间,大多数令牌最终仍会失败:在聊天工作负载下,接受长度约为 2.7,所以在典型步骤中被验证的八个位置中有五个会被拒绝。验证所有令牌意味着需要为服务器最终丢弃的令牌支付全价。

解决方案的组件已经在系统中。草稿携带一个训练过的置信头,它可以预测每个位置令牌通过验证的可能性。另一方面,服务器的一次性性能分析记录了在每个负载水平下额外验证令牌的实际成本。每步规划器将两者结合:每个请求只保留那些预期价值覆盖边际成本的验证令牌,其余的在目标前向传播开始前被裁减。剩下的部分如同以前一样经过验证,因此输出保持无损。权衡是略短的接受运行以获得更低成本的步骤。

Decode throughput vs batch size, verify-all vs confidence-scheduled trim, on a chat panel and a few-shot math panel.

在高负载下裁剪可以获益。解码吞吐量,在聊天面板(接受 ~2.7 左)和少量示例的数学面板(接受 ~5.0 右)上,验证全部 vs 裁剪。达到批量大小 8 时持平,随后随着批量增加差距扩大:批量大小 256 时 +68% 和 +24%,接受长度从 2.7 降至 2.2,从 5.0 降至 4.3,同时吞吐量上升。

测量的成本曲线是有趣的部分。验证令牌的边际成本并不平滑。它像阶梯一样:平坦的平台上,另一个令牌几乎不费力地插入当前的内核波动,而陡峭的上升段则意味着它开始新的波动。规划器读取这个表面。当请求的下一个令牌位于廉价的平台上时,它会保留它们;当它们将开始上升段时,规划器就在此处剪断。在数据中,这表现为接受长度曲线的小幅摆动,而吞吐量保持平滑且单调:规划器是在“冲浪”真实硬件平台,而不是噪声。

在批量大小小于8时,几乎没有减负压力,因此剪裁在此时是打平或轻度负效应;在规划器中,已知的后续操作是小批量的提前退出。

推测解码一次验证 γ+1 个草稿令牌,并可能只接受前缀。对于 MLA 来说,这是免费的,因为 KV 是只追加的,拒绝的草稿仅释放其槽。正如前一节所述,KDA 层的状态每个令牌都会自我覆盖,因此基线通过暴力方法实现可逆性,并在每个草稿步骤之后对整个 K×V 状态做快照。在 K=V=128 时,每个请求、层和头部占用 64 KB,再乘以 γ+1 步。跨越 K3 的 69 个 KDA 层和完整批次,它会超过与之竞争的持久状态池,并且由于这是为每个正在执行的请求预留的,因此会限制并发。

存储输入,而不是状态。ReplaySSM:https://tridao.me/blog/2026/replayssm/ 取消了快照。验证内核读取已提交的检查点而从不写入它,在此过程中它还存储每一步的原始输入 Sᵢ = (vᵢ, kᵢ, gkᵢ, βᵢ),大约 1 KB,相比一个快照的 64 KB 少很多。一旦采样器确定接受长度,一个覆盖所有层和头的单一折叠内核就从检查点重放被接受的前缀,并在原地推进。被拒绝的草稿永远不会重放,因此回滚成本为零。草稿窗口从 512 KB 减少到 16 KB,大约减少了 32 倍。

准确,不是近似。fold 是对 verify 递归的逐字克隆,使用相同的 tile 和相同的归约顺序,并且它直接使用 verify 内核自身存储的 gate 值,而不是重新计算它们。第二部分不是可选的。早期版本在 torch 端使用略有不同的公式重新计算 gate,这导致每个输出看起来都是正确的,但状态在底层悄悄漂移。现在重建的状态与递归基线将提交的状态在比特级别上完全相同。

收益在于容量,而不是速度。每步解码时间保持不变,因为这是内存换计算的权衡,而不是更快的内核。快照缓存只是规格上的固定成本,会随着批量大小和 γ 增长,因此在 γ 足够大值得使用时,它对状态池的压力最大。归还这部分内存可以显著提升并发上限。在旧上限以内,两条路径表现相当,ReplaySSM 为 fold 和缓冲写入付出一些代价;超过旧上限时,基线排队,而 ReplaySSM 继续接收请求,这就是差距产生的地方。

KDA ReplaySSM: the verify kernel reads the committed checkpoint and stores each draft step's raw inputs in a small per-slot buffer; after acceptance a single fold kernel replays only the accepted prefix and advances the state in place.

KDA ReplaySSM。Verify(每层一次融合启动)读取检查点 h₀ 而不写入,并将每个草稿步骤的原始输入存储到每个 slot 缓冲中,每层每个头一个。在采样器确定接受长度后,fold 内核(一次启动覆盖所有层和头)仅重放被接受的前缀并就地覆盖 slot,使用 verify 内核自身存储的 gate 值运行逐字递归,因此重建状态在比特层面上与递归基线完全相同。

在 2.8T 混合模型上的单序列解码步骤不是计算受限的——这是一个启动次数和延迟问题:每个 token 有 93 层注意力(69 层 KDA + 24 层 MLA)加上 92 层 latent-MoE,在启动时每步触发数百个小内核。优化过程是基于分析的:融合一件事,用固定协议进行 A/B 测试,在 GSM8K 上进行验证,然后重复。

bs=1 optimization-category waterfall

启动与拷贝消除(P1–P4,+19.9 tok/s)。缩小步骤,而不是加快内核:MoE 前端折叠为一个 GEMM,KDA 的配对瘦投影合并(P1);基于分析的优化扫除每层的上采样、拷贝和多余启动(P2, P3);routing 变为对 [M, 896] logits 的一遍寄存器驻留基数选择(P4)。

NVIDIA 计算内核(P5–P8,+10.3 tok/s)。在四个阶段中切换使用与 NVIDIA 共同开发或由其提供的内核,针对 bs=1 形状默认值错误的情况:融合的 KDA 解码内核、trtllm-gen W4A8 SiTU MoE cubins(在我们的路由绕过后面)、TMA 注意力-残差聚合和 CuTe-DSL TGV bf16 GEMMs(在小 M 时替代 cuBLAS)——每一个都通过与其他所有内容相同的 A/B 和准确性门控。

通信融合(P9, P12, P13, +27.6 tok/s)。这是最大的一代:为 CustomAllReduceV2 的对称内存平面上的 MNNVL 结构设计的融合全归约系列——对小消息进行一次性多播存储,对大消息进行 NVLS 交换机内归约,残差加法和 RMSNorm 内嵌在集合操作中(P9)。然后 MoE finalize 移入集合操作的分段传递中(P12),上投影从复制 GEMM 转变为列并行 GEMM,并通过多播全聚集完成(P13)。

重叠 & 前导融合(P10, P11, P14, P15, +10.4 tok/s)。其余部分修剪了剩余的关键链条:步进输入的 MXFP8 量化(P10)、残差写回融合到上游内核尾部并在侧流上有独立分支(P11)、KDA 的 GEMV 链与 qkvg GEMM 重叠(P14)、MLA 解码前导融合到一个内核中,PDL 在其后触发注意力内核(P15)。

四条进度柱背后的时间顺序:

总结的经验。全归约是一个同步点,因此在那里节省的微秒会一比一地转换为步骤时间;一个内核驻留在另一个流的重叠空闲时间,大约转换为十分之一。在写入内核之前检查轨迹中的关键路径成员身份,是本次优化活动中杠杆作用最大的习惯。

¹ 一次重置将 P5 基线从 64.2 移动到 63.8;步骤是针对重置后的基线测量的。² P13 是合并窗口后的重新校准的规范基线,而非单一 PR 归因。³ 进入 P1–P4 的片段也包含随后被取代的临时优化(全归约拼接 → P9;微/1-CTA GEMV → P8;基数路由器 v1 → P4;Marlin top-k 求和 → P6/P12;早期注意力-残差加 → P7);它们的短期收益在曲线上体现,但没有命名点。

对于 K3 的混合架构,传统的并行选择不再适用。张量并行无法分片 MLA 的 KV 缓存(每个 KV 头只有一个,无法拆分),因此每个节点都持有完整副本;它还将每个 GEMM 切成八份,并在每层支付一次集合通信成本。纯 DP 注意力反而在每个节点上复制注意力权重,大约 61 GB 用于 KDA,加上 MLA 的 11 GB,用于存储 KV 缓存和 KDA 状态。在这些成本下,预填充和解码的表现不同,因此 K3 按阶段拆分解决方案:预填充采用分块流水线并行,解码采用上下文并行。

在 TP 预填充中,每层都以 AllReduce 结束,这是一个无法与计算重叠的屏障。流水线并行改为按层切分模型:K3 的 93 层变成 8 个阶段,并将提示切成块流经它们:

分块流水线并行预填充。各阶段同时处理不同的块。阶段之间的交接在该阶段计算下一个块时进行,因此在 K3 上隐藏了 91% 的通信。在 TP(底部条)下,每层都以 AllReduce 结束,所有节点都必须等待。

这一方法在三方面获胜。唯一剩下的通信,即传递给下一阶段的过程,被下一个块的计算所隐藏。每个节点运行完整的层,因此 GEMM 扩展八倍,更高效。此外,每个阶段只保存其约 12 层的 KV 和激活状态,使得处理非常长的提示进行预填充变得舒适。流水线确实需要足够深:浅层的 PP4×TP2 无法覆盖其交接成本,仍需支付 TP2 的 AllReduce,且其基准性能不优于 TEP8。

在 2×4 GB300 上测量 8K 预填充,拓扑结构为唯一变量:

深度 PP 在两个维度上都占优势。左图:超过 c1–c4 交叉点后,PP8×TP1 上升至约 TEP8 上限的 1.7 倍,TTFT 更低。右图:每节点 FLOPs 相等时每 1k 预填充 token 的成本;PP4×TP2 和 TEP8 在计算与通信之间权衡并持平,PP8 在两方面成本最低。

PP8 仅在单次请求上表现较差,而空闲的预填充工作节点本身配置不当。在 K3 的解耦服务中,预填充节点运行 PP8。它们的预填充能力是 TEP8 节点的 1.45 至 1.72 倍,因此一个预填充节点可以支撑多个解码节点。解码节点运行 TP 或 DCP,下一部分将介绍。

解码是复制的 KV 缓存绑定的地方:在 TP 下,接受一个额外的请求或多一千个上下文 token 在每个 rank 上消耗的字节数是相同的。解码上下文并行(DCP)按 token 位置而不是按 head 对 MLA 的 KV 进行分片。当 p mod N 等于 r 时,rank r 拥有位置 p,因此每个 rank 保存每个请求上下文交错的 1/N,且这种分片在注意力内核之上是不可见的:

按位置分片。在 4 个 ranks 上相同的 16 个 token 位置:TP 存储 64 个物理副本,DCP 只存储 16 个。释放的字节变成逻辑 KV 容量,在 K3 上 DCP8 可达约 7.9 倍。

位置分片会破坏 softmax,因为每个 rank 只能看到 1/N 的 key,部分 softmax 不能相加。解决方法是 FlashAttention 自己的方法:每个 rank 返回其部分注意力输出以及每个 head 的 log-sum-exp,每层进行一次全互换(all-to-all)交换,使得每个 rank 最终拥有全上下文的 1/N head。然后通过 log-sum-exp 本地合并是精确的,且结果已经是 TP 下输出投影期望的 head 布局。每层一次 collective 是整个通信开销:

解码步骤,每层。每个 rank 本地投影完整 head 的 query,仅对其拥有的位置进行 attention,然后在一次打包的 all-to-all 中发送部分输出及其 log-sum-exp。本地合并得到标准的 TP head 布局;注意力之后的部分都不变。

其他一切保持不变。DCP 组在 TP 组内构建,所以 TP8 带 DCP8 仍然是 8 个 GPU,MoE 按原本并行方式运行。KDA 是例外,它的状态是每个请求一个固定大小矩阵而非每个 token,所以没有位置维度可以分片,KDA 层保持 TP 按 head 分片。整个特性只需一个标志,--dcp-size N。

这种方法的效果在代理流量中体现出来,上百千 token 的会话堆积在缓存中。在 2×4 GB300 上重放真实编程代理会话,两个节点都用主机内存 KV 层,DCP 是唯一的区别:

DCP移除了活跃集墙。主机层拯救了重新预填充的流量,但在16个并发会话下,活跃工作集超过了TP8的设备KV,吞吐量崩溃。DCP8将逻辑KV从1.5M提升到12.2M tokens,并在48个会话下以541 tok/s处理相同的工作负载。

DCP与其余堆栈协作。DSpark验证步骤是一个解码步骤,因此它使用相同的复制Q、全对全路径;在PD解耦下,预填充端保持对DCP的不可感知性,每个解码rank只拉取它在传输边界拥有的位置,这使得PP或TP预填充可以供DCP解码使用。剩下的上限是KDA:它的每个请求状态无法按位置分片,所以一旦DCP解除MLA墙,运行请求上限成为限制因素;上文内存部分的统一内存设计处理了这个问题。

各组件如何组合最终是一个测量。将PD解耦放入循环,结合分块PP8预填充,以及解码拓扑和预填充:解码比例的变化,得到服务前沿:

服务前沿。在吞吐量方面,DCP组合:两个PP8预填充工作者喂给两个DCP8解码节点,每个GPU提供2633 tok/s,与最佳的TP8臂相当。向右移动是预填充:解码旋钮的作用:一个PP8预填充工作者喂给两个、三个、然后四个独立的TP8解码实例,交换整体吞吐量以提升每用户速度,超过每用户86 tok/s。

K3的Day-0 RL与Miles共享地点进行LoRA训练:在Miles的Megatron后端上运行BF16训练器,以及在相同64 GB 300s上共享的原生打包MXFP4 SGLang部署引擎。后端涵盖KDA、NoPE-MLA、注意力-残差库和潜在MoE,以及TP/SP/PP/CP/EP。

引擎以出厂状态服务于检查点,且从不重写它。每一步仅传输 BF16 LoRA 适配器,且引擎将增量作为单独的 BF16 B(Ax) 项应用于量化的基础 GEMM 之上,因此策略更新能够在 4 位基础权重上以全精度进行推理。稠密投影通过 SGLang 的 Triton LoRA 后端处理,896 个路由专家通过 Marlin 路径上的融合 MoE-LoRA 内核处理,共享专家增量折叠进融合 MoE 前 GEMM。适配器存在于 GPU 内存池中,每次同步会原地替换,因此在展开端没有 BF16 副本,不需要全量权重重同步,也无需在循环中重新量化。

流水线并行。K3 的注意力-残差快照银行必须跨阶段边界传递,但 Megatron 的点对点传递仅携带一个隐藏状态张量,因此阶段边界将 [prefix_sum, bank] 打包到其中,并在进入时解包。Megatron 未被修改。

上下文并行。银行可以免费分片,因为每个注意力-残差操作都是按 token 进行的。MLA 也不需要任何 K3 特定代码:旋转表切片是 Megatron MLA 中唯一的 CP 感知工作,而 K3 没有旋转嵌入,因此其投影使用标准 TE 注意力核并继承 CP。KDA 是需要处理的部分,通过 fla 的 CP 上下文处理循环状态和卷积 halo。它需要一个连续的 rank-local 块,Megatron 将 zigzag 顺序存储在环形注意力中所期望的位置,因此重布局仅在 KDA 周围进行。

情报判断

Aioga 编辑摘要

LMSYS 表示,SGLang 与 Miles 在 Kimi K3 发布当日提供支持,前者覆盖推理,后者覆盖强化学习训练。K3 为月之暗面开源的 2.8T 参数模型,采用 KDA 与 MLA 交错的混合架构。

背景分析

材料称,K3 是首个处于 3 万亿参数级别的开源模型,拥有 1M-token 上下文窗口和原生视觉理解能力。其 69 层 KDA 与 24 层 MLA 交错,使服务系统需要同时管理固定大小的循环状态与逐 token 的 KV 状态。

Aioga 观点

Aioga 判断,K3 的发布重点不只是参数规模,还在于其架构改变了既有推理服务对缓存、调度和算子的假设。材料披露的 Day-0 支持,可能体现了软件栈对新型混合架构的适配速度。

影响与后续

该实现将前缀缓存、重叠调度、推测解码和分页等机制延伸到会被原地覆盖的循环状态上。材料称,SGLang 单卡 batch-1 解码约 113 tok/s,结合 DSpark 推测解码约 423 tok/s,但未说明更广泛工作负载下的表现。 值得关注后续文档和实测是否补充不同硬件、上下文长度、批量规模及视觉输入条件下的性能与资源占用。目前可确认的信息主要限于发布当日支持范围、架构适配方式和材料列出的两组速度数据。

来源与版权说明

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

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

来源: LMSYS:Blog(Chatbot Arena 团队)

原文链接: 打开原始来源

Aioga 归档: 查看情报页

Content record: source-page · Updated: 2026-07-27T17:50:17.260Z

API 中转站
API RELAY · DEVELOPER INFRASTRUCTURE

API 中转站

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

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

分享这篇 AI 情报

SGLang 和 Miles 为月之暗面开源的 2.8T 参数模型 Kimi K3 提供发布当日支持,分别负责推理和 RL 训练。K3 采用 69 层 KDA 线性注意力与 2...

LMSYS:Blog(Chatbot Arena 团队)2026-07-27T17:50:17.260Z
扫码打开文章详情扫码直达文章详情

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