<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:content="http://purl.org/rss/1.0/modules/content/"><channel><title>Gemma on Hypho - AI Agent 技术博客</title><link>https://blog.hypho.cn/tags/gemma/</link><description>Recent content in Gemma on Hypho - AI Agent 技术博客</description><image><title>Hypho - AI Agent 技术博客</title><url>https://blog.hypho.cn/papermod-cover.png</url><link>https://blog.hypho.cn/papermod-cover.png</link></image><generator>Hugo -- 0.148.2</generator><language>zh-cn</language><lastBuildDate>Wed, 06 May 2026 10:03:32 +0800</lastBuildDate><atom:link href="https://blog.hypho.cn/tags/gemma/index.xml" rel="self" type="application/rss+xml"/><item><title>Gemma 4 的多 token 预测：LLM 推理加速不该只盯着量化</title><link>https://blog.hypho.cn/posts/gemma-4-multi-token-prediction-inference/</link><pubDate>Wed, 06 May 2026 10:03:32 +0800</pubDate><guid>https://blog.hypho.cn/posts/gemma-4-multi-token-prediction-inference/</guid><description>Google 在 Gemma 4 中引入多 token 预测草稿器，宣称推理最高可提速 3 倍。本文从 speculative decoding、MTP 训练目标、推理框架调度和生产部署取舍角度分析：为什么 LLM 推理优化不能只盯着量化，哪些场景适合多 token 预测，哪些场景仍要谨慎评估。</description><content:encoded><![CDATA[<p>如果你最近还在把“LLM 推理优化”等同于量化，我建议停一下。</p>
<p>量化当然重要，尤其是本地部署和消费级 GPU 场景。但 Google 刚发的 Gemma 4 多 token 预测（Multi-Token Prediction, MTP）让我更确信一件事：下一轮推理加速的主战场，不只是在“把模型压小”，而是在<strong>减少大模型被调用的次数</strong>。</p>
<p>Google 在官方博客里说，Gemma 4 通过 MTP drafters 在推理阶段最高可以做到 <a href="https://blog.google/innovation-and-ai/technology/developers-tools/multi-token-prediction-gemma-4/">up to 3x faster</a>。这个数字本身很抓眼球，但我更关心它背后的工程含义：如果草稿器能一次猜中多个后续 token，大模型就不必老老实实一个 token 一个 token 地跑完整前向传播。</p>
<p>说白了就是：以前是大模型每吐一个字都要“亲自审批”；现在是小模型先写一小段，大模型批量盖章。</p>
<h2 id="为什么一个-token-一次前向这么浪费">为什么“一个 token 一次前向”这么浪费</h2>
<p>自回归 LLM 的默认解码方式很朴素：给定上下文，预测下一个 token；把这个 token 拼回上下文，再预测下一个。这个循环看起来合理，但对硬件很不友好。</p>
<p>每生成一个 token，模型都要访问大量权重。对于 27B、70B 这种规模，瓶颈往往不是矩阵乘法算不动，而是显存带宽和调度开销被小步循环吃掉。你可以把它理解成：GPU 明明适合一次搬一大车货，结果我们让它每次只送一个快递。</p>
<p>这也是为什么我之前写 <a href="https://blog.hypho.cn/posts/dflash-ddtree-speculative-decoding-llm-inference/">DFlash + DDTree 投机解码</a> 时，最看重的不是某个 benchmark 数字，而是“平均接受长度”。只要一次验证能接受更多 token，大模型前向次数就会下降，吞吐自然上来。</p>
<p>Gemma 4 的 MTP 走的是同一条大方向，但实现路径更靠近模型训练本身。</p>
<p>传统 speculative decoding 通常需要一个独立的小 draft model。经典论文 <a href="https://arxiv.org/abs/2302.01318">Speculative Sampling</a> 的思路就是：小模型先生成候选，大模型并行验证，最后用修正过的采样过程保证输出分布不变。这套方法很漂亮，但工程上有两个麻烦：你要维护两个模型，还要处理 tokenizer、KV cache、调度和显存布局。</p>
<p>MTP 的反直觉之处在于，它不一定非要靠“另一个完整小模型”来猜。Meta 的论文 <a href="https://arxiv.org/abs/2404.19737">Better &amp; Faster Large Language Models via Multi-token Prediction</a> 提出，在训练时让模型不只预测下一个 token，而是同时预测未来多个 token。技术上可以看成在共享 trunk 上接多个输出 head，训练目标从“只看一步”扩展到“顺手看几步”。</p>
<p>人话翻译：模型训练时被迫学习“接下来一小段会怎么走”，而不是只盯着下一个词。</p>
<h2 id="gemma-4-的关键变化草稿器变成模型能力的一部分">Gemma 4 的关键变化：草稿器变成模型能力的一部分</h2>
<p>Google 这次讲 Gemma 4 的重点，是把 MTP drafters 用在推理加速上。按照官方描述，Gemma 4 会用多 token 预测草稿器生成候选 token，然后由主模型验证，从而降低延迟、提高吞吐。Gemma 系列本身是 Google 面向开发者开放的轻量模型家族，相关文档可以在 <a href="https://ai.google.dev/gemma/docs">Gemma 官方文档</a> 里看到；如果你更关心本地 C++ 推理，Google 也维护了 <a href="https://github.com/google/gemma.cpp">gemma.cpp</a>，这是一个专门服务 Gemma 模型的轻量推理引擎。</p>
<p>这里有个细节很重要：MTP 不只是“再外挂一个小模型”。如果训练阶段就把多步预测能力纳入目标函数，草稿器的命中率可能会比临时找一个小模型更稳定。命中率越高，大模型一次验证接受的 token 越多，加速越接近理论上限。</p>
<p>但我不会把它理解成“所有 LLM 推理都要马上换 MTP”。工程上至少有三件事要先问清楚。</p>
<p>第一，<strong>你的场景是 latency-bound 还是 throughput-bound</strong>。如果是单用户聊天，用户感知最明显的是首 token 延迟和流式输出节奏；MTP 可能让后续 token 更快，但未必显著改善 first token。如果是代码补全、批量生成、离线摘要，MTP 的收益通常更实在，因为这些任务可以吃到连续 token 的批量验证红利。</p>
<p>第二，<strong>你的输出是否足够可预测</strong>。代码、结构化文本、模板化报告通常更容易被草稿器猜中；开放式创意写作、强采样、多轮工具调用则不一定。草稿命中率一低，验证成本还在，加速就会打折。</p>
<p>第三，<strong>推理框架是否真的支持这套调度</strong>。很多人看到论文数字就想上线，但真正难的是 runtime：KV cache 怎么复用、draft tokens 怎么批量验证、失败回退怎么处理、batch 内不同请求的接受长度不同怎么办。Google 自家栈可以先做起来，不代表你今天拿 vLLM、llama.cpp 或自研服务就能无缝吃到同样收益。</p>
<p>这也是我对 Gemma 4 MTP 的判断：它是一个值得跟进的推理方向，但不是“替代量化”的银弹。</p>
<h2 id="量化投机解码mtp-应该怎么选">量化、投机解码、MTP 应该怎么选</h2>
<p>如果你在做生产部署，我会按这个顺序考虑。</p>
<p>先做量化，因为它最确定。INT8、INT4、GGUF、AWQ、GPTQ 这些路线解决的是“能不能装下、能不能便宜跑”的问题。我之前在 <a href="https://blog.hypho.cn/posts/local-llm-inference-engine-ollama-llama-cpp/">本地 LLM 推理引擎对比</a> 里也提过，本地推理首先要选对 runtime，否则模型再小也会被后端拖垮。</p>
<p>然后再看 speculative decoding 或 MTP，因为它解决的是“同样一次大模型计算，能不能多吐几个 token”。这类优化对服务端很诱人：吞吐上来，单位 token 成本下降；延迟下降，用户体验也更接近即时反馈。</p>
<p>但别跳过验证。至少要测四个指标：</p>
<ul>
<li>平均接受长度：一次验证平均能保留多少 draft token</li>
<li>首 token 延迟：用户是不是更快看到第一个字</li>
<li>端到端 tokens/s：包含草稿、验证、回退后的真实吞吐</li>
<li>质量一致性：高温采样、代码生成、长上下文下是否偏离原模型</li>
</ul>
<p>最后一个指标经常被忽略。Speculative Sampling 论文强调可以保持目标模型分布，这是理论上很强的保证；但到了具体工程实现，采样参数、数值精度、batch 调度都可能引入偏差。生产环境里，性能优化只要悄悄改变输出行为，就不是纯优化，而是一次模型行为变更。</p>
<h2 id="我真正看好的是什么">我真正看好的是什么</h2>
<p>我看好 MTP，不是因为“Gemma 4 快 3 倍”这个宣传数字，而是因为它把推理加速从外部 hack 推向了模型原生能力。</p>
<p>过去两年，LLM 基础设施的很多优化都是补丁式的：量化、PagedAttention、KV cache、FlashAttention、投机解码，各自解决一段瓶颈。MTP 的意义在于，训练目标本身开始为推理效率让路。模型不再只学“下一个 token”，而是学“未来一小段”。这听起来只是训练技巧，实际上会改变 runtime 的设计假设。</p>
<p>不过我也保留一点怀疑：Google 现在给出的还是官方博客级别的结果，真实开源权重、不同硬件、不同任务上的收益需要社区复现。尤其是中文、代码、长上下文和 agent 工具调用场景，接受长度可能差异很大。这里我也不敢拍胸脯说一定有效。</p>
<p>如果你今天要做决策，我的建议很简单：</p>
<ul>
<li>本地/边缘部署：先关注量化和 runtime，MTP 等生态成熟</li>
<li>服务端高吞吐生成：尽快把 speculative decoding / MTP 纳入 benchmark</li>
<li>代码生成和结构化输出：优先测试，因为草稿命中率可能最高</li>
<li>Agent 工具调用：谨慎，工具边界会打断连续生成，收益未必稳定</li>
</ul>
<p>Gemma 4 这次提醒我们，LLM 推理优化不能只盯着“模型变小”。更大的机会可能在于：让大模型少干重复劳动，把它真正用在验证和决策上。</p>
<p>这条路才刚开始。</p>
]]></content:encoded></item></channel></rss>