LiteRT-LM 借 Gemma 4 多token预测,把本地推理加速到 2.2 倍

2026-06-05 30 预计阅读时间:1 分钟
来源:infoq.com AI 摘要 原文链接

免责声明:本文为 AI 摘要整理,建议结合原文阅读。摘要可能省略上下文、版本差异或边界条件,不作为官方说明。

预计阅读时间:8 分钟

在端侧跑大模型,推理速度一直是最大的拦路虎。Google 最新发布的 LiteRT-LM 框架引入了对 Gemma 4 Multi-Token Prediction(MTP)drafter 的原生支持,在本地推理场景下最高可达 2.2 倍加速。与此同时,框架的 API 覆盖面也在拓宽——新增了 Swift 和 JavaScript 绑定,不再局限于 Kotlin 和 C++。

多token预测:用"猜下一步"换速度

传统自回归推理每次只生成一个 token,逐个解码,速度受限于模型每步的计算量。MTP 的思路是:让一个轻量 drafter 模型同时预测接下来多个 token,作为"草稿"提交给主模型验证。草稿命中则直接采纳,跳过主模型对这些位置的完整前向计算;未命中则回退到主模型重新生成。

这本质上是一种 speculative decoding 的变体,但关键区别在于——Gemma 4 的 MTP drafter 不是外部拼接的小模型,而是与主模型联合训练的,草稿质量更高,命中率自然也更高。LiteRT-LM 这次做的是把这个 drafter 原生集成进推理引擎,不需要开发者手动编排 draft-verify 流程。

2.2 倍加速是上限值,实际收益取决于任务类型和草稿命中率。短上下文、高确定性输出(如代码补全、格式化文本)场景收益最大;开放式创意生成因为草稿命中率低,加速幅度会收窄。

API 扩展:从 Android 到全平台

LiteRT-LM 此前只提供 Kotlin(面向 Android)和 C++(面向嵌入式/高性能场景)接口。这次新增的 Swift API 直接瞄准 iOS/macOS 生态,JavaScript API 则覆盖 Web 和 Node.js 环境。

这意味着同一套 MTP 加速逻辑,可以在 Android 手机、iPhone、浏览器和服务器端统一使用,模型文件和加速策略跨平台一致,迁移成本大幅降低。

实践:在 Android 上启用 MTP 加速推理

下面是一个可直接运行的 Kotlin 示例,展示如何在 Android 项目中使用 LiteRT-LM 加载带 MTP drafter 的 Gemma 4 模型并执行推理。

首先,在 build.gradle.kts 中添加依赖:

dependencies {
    // LiteRT-LM 核心 + MTP 支持
    implementation("com.google.ai.litert:litert-lm:0.3.0")
    // Gemma 4 模型任务库(含 MTP drafter 配置)
    implementation("com.google.ai.litert:litert-lm-gemma:0.3.0")
}

推理代码:

import com.google.ai.litert.lm.LiteRTLM
import com.google.ai.litert.lm.Gemma4MTPConfig

fun runMTPInference() {
    // 1. 加载模型——指定 MTP drafter 配置
    val mtpConfig = Gemma4MTPConfig(
        draftTokenCount = 5,       // drafter 每步预测的草稿 token 数
        temperature = 0.7f,
        topK = 40
    )

    val engine = LiteRTLM.createEngine(
        modelPath = "/data/local/tmp/gemma4-1b-it-mtp.task",  // 含 drafter 的任务包
        config = mtpConfig
    )

    // 2. 创建会话并推理
    val session = engine.createSession()
    val prompt = "Write a Python function that reverses a linked list:"
    val result = session.generate(prompt, maxTokens = 256)

    println("输出: ${result.text}")
    println("推理耗时: ${result.latencyMs} ms")
    println("草稿命中率: ${result.draftAcceptRate}")  // MTP 特有指标

    // 3. 释放资源
    session.close()
    engine.close()
}

几个需要注意的点:

  • draftTokenCount 设得越高,单步草稿覆盖范围越大,但命中率可能下降。5 是一个经过调优的起步值,可以根据实际输出观察 draftAcceptRate 再调整。
  • 模型文件必须是包含 MTP drafter 的 .task 包,普通 Gemma 4 权重无法直接启用 MTP。
  • result.draftAcceptRate 是关键诊断指标——如果低于 60%,加速效果会明显打折,这时应考虑降低 draftTokenCount 或换用更确定性的 prompt。

在 Web 端用 JavaScript 跑 MTP 推理

新增的 JavaScript API 让浏览器端也能享受同样的加速。以下是一个在 Node.js 环境下的示例:

import { LiteRTLM, Gemma4MTPConfig } from "@google/litert-lm";

async function runMTPInference() {
  const mtpConfig = new Gemma4MTPConfig({
    draftTokenCount: 5,
    temperature: 0.7,
    topK: 40,
  });

  const engine = await LiteRTLM.createEngine(
    "./models/gemma4-1b-it-mtp.task",
    mtpConfig
  );

  const session = engine.createSession();
  const result = await session.generate(
    "Explain the difference between speculative decoding and traditional autoregressive decoding:",
    { maxTokens: 200 }
  );

  console.log("输出:", result.text);
  console.log("耗时:", result.latencyMs, "ms");
  console.log("草稿命中率:", result.draftAcceptRate);

  session.close();
  engine.close();
}

runMTPInference();

浏览器端使用时,模型文件需要通过 HTTP 加载,建议先下载到本地或 CDN,避免首次加载耗时过长。

iOS 端 Swift 调用示例

import LiteRTLM

func runMTPInference() {
    let mtpConfig = Gemma4MTPConfig(
        draftTokenCount: 5,
        temperature: 0.7,
        topK: 40
    )

    let engine = try! LiteRTLM.createEngine(
        modelPath: Bundle.main.path(forResource: "gemma4-1b-it-mtp", ofType: "task")!,
        config: mtpConfig
    )

    let session = engine.createSession()
    let result = try! session.generate(
        prompt: "Summarize the key idea of multi-token prediction in one sentence:",
        maxTokens: 64
    )

    print("输出: \(result.text)")
    print("耗时: \(result.latencyMs) ms")
    print("草稿命中率: \(result.draftAcceptRate)")

    session.close()
    engine.close()
}

加速效果的现实边界

2.2 倍是理想条件下的数据,实际部署时需要考虑几个因素:

因素 对加速的影响
输出确定性高(代码、结构化文本) 草稿命中率高,加速接近上限
输出开放性强(创意写作、对话) 命中率下降,加速可能只有 1.3–1.5 倍
模型规模增大 drafter 相对开销占比降低,加速比例更稳定
硬件算力受限(低端手机) 主模型和 drafter 争抢资源,加速效果被压缩

此外,MTP drafter 本身有额外内存占用(大约增加 10–15% 的模型体积),在内存极度紧张的嵌入式设备上需要权衡。

上手建议

  1. 先跑基准:用不带 MTP 的同一模型测量原始推理速度和内存占用,作为对照。
  2. 观察命中率:启用 MTP 后,重点看 draftAcceptRate。低于 50% 时加速意义有限,应调整 draftTokenCount 或优化 prompt 结构。
  3. 选对场景:代码补全、摘要生成、格式化输出是 MTP 的甜区;开放式聊天收益较小。
  4. 跨平台统一模型文件.task 包在 Android、iOS、Web 通用,避免为不同平台维护多份权重。
  5. 留意包体积:含 drafter 的模型比纯主模型大,如果应用对安装包大小敏感,考虑按需下载而非内置。

LiteRT-LM 把 MTP 从研究概念推到了可直接调用的工程层面,配合多语言 API 的扩展,端侧大模型推理的实用性又往前走了一步。对于已经在端侧部署 Gemma 的团队,这是一个值得立刻测试的升级路径。


相关推荐