优化模型以快速进行代码生成(8分钟阅读)

TLDR AI 产品

摘要

Morph LLC描述了三种关键技术——基于编码输出训练投机模型、在廉价GPU上自动搜索内核、以及编写自定义互连——以大幅加速像Qwen和DeepSeek这样的开放模型在编码代理工作负载上的运行,实现了最高3倍的投机解码加速,并在7000美元的GPU上达到97-162 tok/s。

Morph LLM通过训练一个基于编码输出(而非互联网)的起草器来加速投机解码,从而优化开放编码模型,实现了3.07倍的加速。Autoresearch自动化了针对低需求GPU(如NVIDIA和AMD)的内核调优,增强了warp-decode内核,使其在价格合理的硬件上达到162 tok/s。基于PCIe的自定义内核互连取代了昂贵的NVLink,通过TCP共享缓存来保持性能,将首次生成时间减少了84%。
查看原文
查看缓存全文

缓存时间: 2026/06/22 13:31

# 优化模型以实现快速代码生成 来源:https://www.morphllm.com/blog/codegen-inference-research 编辑操作本质上是对文件复制一份副本。智能体每轮都要重新读取同一仓库。当前轮次的上下文大部分继承自上一轮。而通用推理栈会丢弃所有这些内容,每解码一个新 token 都像从未见过一样。 这种浪费正是机会所在。权重是免费下载的,速度才是产品。 我们为单一工作负载(编码智能体)提供开源模型,包括 Qwen、GLM、DeepSeek、MiniMax。让它们变快取决于三件开源栈无法替你完成的事情。 - **训练投机者。** 一个基于模型自身编码输出(而非互联网内容)训练的草稿模型。通用草稿加速比为 1.93x;针对目标训练的草稿达到 3.07x。 - **自动研究内核。** 内核要么正确要么错误,因此我们自动搜索它们,使用那些没人愿意调优的廉价 GPU。在 7000 美元显卡上达到 97 到 162 tok/s。 - **编写互连。** 通过 PCIe 进行全规约,并使用普通 TCP 跨 NVLink 禁用的机器共享前缀缓存。 每一处都是通用栈止步不前,而我们继续深入的地方。 ## 1. 我们训练投机者。开源栈只给你一个空插槽。 推测解码:一个小型草稿模型猜测接下来几个 token,目标模型一次性验证它们,直到首次出错时才丢弃。一个数字决定一切:接受率,即目标模型保留猜测的频率。 通用草稿猜测能力很差。在 Vicuna-13B 上,现成的 68M 草稿达到 1.93x;而基于目标模型自身输出训练的草稿达到 3.07x (https://arxiv.org/html/2503.01840v1),使用相同的目标模型和设置。这个差距就是本节内容。 架构是公开且优秀的。EAGLE-3 (https://arxiv.org/html/2503.01840v1) 允许草稿在原始数据上训练,而非复制目标模型的特征,接受长度从 3.96 提升至 6.62。DFlash (https://www.lmsys.org/blog/2026-06-15-next-generation-speculative-decoding-dflash-v2/),SGLang 的 Spec V2(2026 年 6 月起),一次性草拟整个块:无损加速超过 6 倍,在 HumanEval 上达到 3.2 倍(EAGLE-3 为 2.2 倍)。 但架构只是一个空插槽。没有人会直接给你一个针对你的目标和你的工作负载训练好的草稿器。你要么自己训练,要么使用通用草稿并接受 1.93x 的加速比。 训练一个好的草稿器属于小型模型训练,而这正是我们擅长的领域。Fast Apply 和 Compact 使我们成为该领域全球顶尖团队之一。在 300 亿参数规模以下你学到的是:前缘缩放定律不再适用。Chinchilla 法则认为约 20 token/参数为计算最优,但那是假设训练是成本。对于只训练一次却服务数十亿次的模型而言,并非如此,最优解强烈偏向小型且过度训练。 - **Llama 3:** 在 15T tokens (https://ai.meta.com/blog/meta-llama-3/) 上仍在提升,超过其 Chinchilla 点的两个数量级。 - **SmolLM2:** 一个 1.7B 的模型训练到 11T (https://huggingface.co/HuggingFaceTB/SmolLM2-1.7B),接近 6500 tokens/参数。 - **Sardana 等人:** 47 个模型训练到 10000 tokens/参数 (https://arxiv.org/abs/2401.00448),质量仍在提高。 一份投机者恰恰属于这种类型:小型、过度训练、适配单一分布。 因此,我们为每个开源模型训练一个投机者,使用编码输出而非网页文本。生成的代码复用模板和屏幕上已有的符号,而编辑操作本质上是对文件复制一份副本。读过数百万个 diff 的草稿能预测这些 token。只读过互联网的草稿做不到,这就是为什么对于每种推测方法,代码都是加速比最高的任务 (https://arxiv.org/html/2406.16858v1)。对于 Fast Apply,我们直接基于输入-输出相似性,每步草拟 64 个 token:apply 运行速度为 10500 tok/s,compaction 为 33000 tok/s。同样是你可以下载的 Qwen 权重,但我们的更快,因为其搭载的投机者是由我们根据实际任务训练出来的。 ## 2. 我们自动研究内核。其他人都在为 H100 手动调优。 智能体的提示在每轮之间几乎不变。相同的系统提示、相同的工具、相同的仓库、再次读取相同的文件。在真实工作负载中,编程任务的 97% 前缀 tokens 是共享的,提示比输出长 37 到 2494 倍 (https://arxiv.org/html/2407.00023v2)。缓存前缀后,下一次请求只需为新 tokens 付费。命中率就是成本。 缓存抽象是开源的,我们正在使用它:RadixAttention (https://www.lmsys.org/blog/2024-01-17-sglang/) 将前缀保存在树中,一个缓存感知路由器 (https://www.lmsys.org/blog/2024-12-04-sglang-v0-4/) 将命中率从 20% 提升到 75%,HiCache (https://www.lmsys.org/blog/2025-09-10-sglang-hicache/) 将树溢出到主机内存和远程存储,在 Qwen3-Coder-480B 上将命中率从 40% 提升到 80%,吞吐量翻倍。 但这些都不是难点。难点在于内核。缓存只有在查找、驱逐、复制和在树上执行注意力操作时,在你实际使用的 GPU 上全部快速,才有效。而默认内核是为前沿实验室购买的显卡调优的。如果不对架构进行重新调优就直接移植,性能只有最优的 7% (https://arxiv.org/pdf/2505.03780)。要在 AMD 的 Mi250 上达到最先进水平,需要手动重写 40% 的 flash-attention 内核。 因此,我们不手动编写内核。内核是可验证的:要么与参考输出一致,要么不一致。这使得内核优化变成搜索问题,而搜索是可以自动化的。 我们的测试框架在那些无人问津的低需求 NVIDIA 和 AMD 设备上运行这个循环。提出一个内核,用生产环境 trace 验证,基准测试,发布胜出者。KernelBench (https://arxiv.org/abs/2502.10517) 说明了为什么需要自动化:在正确且更快的评分下,前沿模型冷启动时在不到 20% 的任务上通过。只有大量尝试和紧密的验证循环才是解决之道。 一个成果:我们的 warp-decode 内核 (https://github.com/morphllm/fp4-warp-decode) 在 7000 美元的 RTX PRO 6000 上,针对 80B MoE 模型达到 162 tok/s,高于之前的 97,并且超过了 25000 美元 H100 的 120 tok/s。没有精度损失,代码开源。这之所以可行,是因为算力稀缺 (https://www.morphllm.com/blog/compute-scarcity-kernels),从而为通用栈所忽视的缝隙赋予了价值。 ## 3. 我们编写了互连。开源数字假设了我们没有购买的架构。 廉价 GPU 有个陷阱:没有 NVLink。 NVLink 在 GPU 之间以 900 GB/s 传输 (https://www.nvidia.com/en-us/data-center/h100/)。而廉价设备上的总线 PCIe Gen5 每个方向速率为 64 GB/s,相差 14 倍。在将模型拆分到多张 GPU 之前,这一点不为人知;一旦拆分,问题就暴露了:张量并行需要在每一层执行全规约,这个全规约在 NVLink 上消耗步骤时间的 8-11%,而在 PCIe 上消耗 40-75% (https://arxiv.org/abs/2406.06858)。没有快速互连,通信就会占据前向传播的大部分时间。 标准解决方案是购买 NVLink。我们则编写了另一种方案。 我们为这些设备编写裸金属内核。PCIe 上的全规约与计算重叠 (https://arxiv.org/abs/2406.06858),以隐藏大部分 14 倍的差距。以及一个跨机器在普通 TCP 上共享的前缀缓存。 HiCache 已经定义了一个远程 L3 层,其后端包含三个函数:get、exist、set (https://docs.sglang.io/advanced_features/hicache_design.html)。这可以在任何传输层上运行。但问题是其公布的成绩是在 RDMA 上取得的,其中传输延迟亚毫秒,仅占请求延迟的 0.1% 以下 (https://arxiv.org/html/2401.09670v3)。普通 TCP 慢了一个数量级。在仅使用 PCIe 的设备上,开源栈会默默崩溃,因为它给你引用的数字假设了你没有的硬件。 因此,TCP 的优势不能来自传输层。它来自命中率。经过训练的投机者和自动研究的内核将命中率提高到足够高,使得在 GPU 和主机内存中未命中的前缀可以从邻居节点通过 TCP 拉取,而不是重新计算;而跳过 prefill 所带来的收益超过了慢速获取的代价。相比完全重新计算,这种获取方式将首 token 时间减少了 84% (https://www.lmsys.org/blog/2025-09-10-sglang-hicache/)。 众人购买快速架构以避免的问题,我们用内核替代了。我们运行市场抛弃的 GPU,并以本应需要未购买硬件才能达到的命中率运行。 ## 单一工作负载 三样东西,一个循环: - 投机者草拟模型自身的编码输出。 - 内核在无人支持的硬件上保持缓存热度。 - 网络跨从未连线共享任何东西的设备共享缓存。 没有一样是通用的。但全都指向编码智能体——AI 中最高流量的工作负载。同样的开源权重,每个人都有。速度是我们的。 如果你正在开发编码智能体,整个栈只需一个导入即可使用 (https://docs.morphllm.com/)。

相似文章

DeepSeek 开源推理优化,生成速度提升 60–85% [pdf]

Hacker News Top

DeepSeek 开源了 DeepSpec,这是一个用于训练和评估推测解码草稿模型的全栈代码库,可实现 60-85% 的生成速度提升。它包含数据准备、训练和评估脚本,支持多种草稿模型算法(DSpark、DFlash、Eagle3)。

更少专家,更快解码:面向混合专家模型的成本感知推测解码

arXiv cs.CL

本文提出EcoSpec,一种针对混合专家模型的成本感知推测解码框架,在草稿选择阶段考虑了专家激活成本。通过在无需修改目标模型验证规则的情况下减少专家足迹,该方法在DeepSeek-V3.1、Qwen3-235B-A22B和GPT-OSS-120B等大规模MoE模型上实现了高达1.62倍的加速。