使用 LiteRT 解锁 Qualcomm NPU 的峰值性能

发布: (2025年12月17日 GMT+8 18:12)
9 min read

Source: Google Developers Blog

概览

NOV 24, 2025

Lu Wang – 高级员工软件工程师

现代智能手机配备了复杂的 SoC(系统级芯片),其中包括 CPU、GPU 和 NPU,使得设备端的生成式 AI(GenAI)体验比仅依赖服务器的方案更具交互性和实时性。GPU 是 AI 任务中最常见的加速器,约有 90 % 的 Android 设备配备了 GPU 计算能力。然而,仅依赖 GPU 可能会导致性能瓶颈——尤其是在构建复杂、交互式的 GenAI 体验时。

示例场景

  • 在设备上运行计算密集型的文本到图像生成模型。
  • 同时使用基于机器学习的分割模型处理实时摄像头画面。

即使是最强大的移动 GPU,在这种组合负载下也会捉襟见肘,导致画面卡顿,用户体验受损。

视频(占位符)

抱歉,您的浏览器不支持此视频的播放。

GPU vs. NPU/GPU Parallel Processing

使用完整 GPU 推理时的性能瓶颈(左)以及使用 NPU/GPU 并行处理时的流畅用户体验(右)。在搭载 Qualcomm Snapdragon 8 Elite 的 Samsung Galaxy S25 Ultra 上捕获。使用完整 GPU 推理时的性能瓶颈(左)与使用 NPU/GPU 并行处理时的流畅用户体验(右)。在搭载 Qualcomm Snapdragon 8 Elite 的 Samsung Galaxy S25 Ultra 上捕获。

为什么 NPU 很重要

  • 高吞吐量 – 提供 数十 TOPS(tera‑operations‑per‑second) 的专用 AI 计算,远超移动 GPU 所能维持的水平。
  • 功耗效率 – 提供远高于 CPU 或 GPU 的 每瓦特 TOPS,是电池供电设备的关键因素。
  • 普及度 – 已不再是小众特性;超过 80 % 的最新 Qualcomm SoC 现在都内置 NPU。
  • 并行性 – 与 GPU 和 CPU 并行运行,可将大量 AI 处理任务卸载到 NPU,而 GPU 负责渲染,CPU 管理主线程逻辑。

这种现代架构释放出流畅、响应迅速且高速的性能,满足当代 AI 应用的需求。

介绍 LiteRT Qualcomm AI Engine Direct 加速器

为了将 NPU 能力引入 LiteRT(Google 的高性能端侧机器学习框架),我们很高兴宣布一次重大升级:LiteRT Qualcomm AI Engine Direct (QNN) 加速器。该加速器与 Qualcomm 紧密合作开发,取代了之前的 TFLite QNN delegate。

对开发者的新变化?

1. 统一、简化的移动部署工作流

您不再需要:

  • 与低层、厂商特定的 SDK 交互 —— LiteRT 将 SoC 编译器和运行时集成,并通过单一、简洁的 API 对外暴露。
  • 针对单个 SoC 版本进行适配 —— LiteRT 抽象了芯片之间的碎片化,让您能够同时面向多个 SoC 扩展部署。

现在,您可以使用 提前编译 (AOT)端侧编译,在所有受支持的设备上无缝部署模型。这使得将预训练的 .tflite 模型(例如来自 Qualcomm AI Hub)集成到生产环境中变得前所未有的简单。

2. 领先的端侧性能

  • 支持广泛的 LiteRT 操作,能够实现 完整模型委托 并最大化 NPU 利用率。
  • 包含针对复杂大语言模型(LLM)和生成式 AI(GenAI)模型的专用内核和优化,为 GemmaFastVLM 等模型提供业界领先的性能。

卓越性能,真实世界成果

我们对新的 LiteRT QNN 加速器 在 72 个涵盖视觉、音频和自然语言处理的典型机器学习模型上进行基准测试。结果显示原始性能出现大幅跃升:

  • 最高可比 CPU 加速 100 倍
  • 最高可比 GPU 加速 10 倍

加速器支持 90 个 LiteRT ops,使 72 个模型中有 64 个能够完整委托给 NPU

实时影响

在高通最新旗舰 SoC Snapdragon 8 Elite Gen 5 上,性能提升显著:

  • > 56 个模型的运行速度为 11,000 tokens / s
  • 解码吞吐量: > 100 tokens / s

这些数据使移动设备上实现流畅、实时、交互式的 AI 体验成为可能。

现场演示:场景理解

我们构建了一个实时场景理解演示,能够处理并描述您周围的世界。

注意: 并非所有浏览器都支持视频播放。

Sorry, your browser doesn't support playback for this video.

使用 FastVLM 视觉模态在 Snapdragon 8 Elite Gen 5 上运行,配合 Xiaomi 17 Pro Max 进行场景理解。

Source:

快速上手 3 步

在任何 Qualcomm SoC 的 NPU 上部署 .tflite 模型,使用 LiteRT 的统一工作流。预训练、生产级模型可从诸如 Qualcomm AI Hub 等来源获取。

第 1 步 (可选)– 针对目标 SoC 进行 AOT 编译

离线预编译模型(AOT)是可选的,但它可以减少设备端的初始化时间和峰值内存占用——尤其是对于大型模型。

1️⃣ 在主机上使用 LiteRT 编译

from ai_edge_litert.aot import aot_compile as aot_lib
from ai_edge_litert.aot.vendors.qualcomm import target as qnn_target

# 为 **所有** 支持的 SoC 编译
compiled_models = aot_lib.aot_compile(tflite_model_path)

# 或者为 **特定** Qualcomm SoC 版本编译
# 示例:Snapdragon 8 Elite Gen5 (SM8850)
sm8850_target = qnn_target.Target(qnn_target.SocModel.SM8850)
compiled_models = aot_lib.aot_compile(
    tflite_model_path,
    target=[sm8850_target],
)

2️⃣ 将编译好的模型导出为 Google Play AI Pack

from ai_edge_litert.aot.ai_pack import export_lib as ai_pack_export

# 将模型变体 + 元数据打包,以便 Play 能够交付正确的版本
ai_pack_export.export(
    compiled_models,
    ai_pack_dir,
    ai_pack_name,
    litert_model_name,
)

完整示例: 请参阅 LiteRT AOT Compilation notebook

第 2 步 – 使用 Google Play for On‑device AI 部署

将模型(或 AI Pack)添加到 Android 项目中。

📦 设备端编译

将原始 .tflite 文件复制到 app/src/main/assets/

📦 AOT 编译

将第 1 步生成的完整 AI Pack 复制到项目根目录,并在 Gradle 中引用:

// my_app/settings.gradle.kts
include(":ai_pack:my_model")
// my_app/app/build.gradle.kts
android {
    // …
    assetPacks.add(":ai_pack:my_model")
}

3️⃣ 获取 Qualcomm NPU 运行时库

# 对于 AOT 编译
./litert_npu_runtime_libraries/fetch_qualcomm_library.sh   # 下载 litert_npu_runtime_libraries.zip

# 对于设备端(JIT)编译
# ./litert_npu_runtime_libraries/fetch_qualcomm_library.sh   # 下载 litert_npu_runtime_libraries_jit.zip

4️⃣ 将运行时库添加为动态特性模块

// my_app/settings.gradle.kts
include(":litert_npu_runtime_libraries:runtime_strings")
include(":litert_npu_runtime_libraries:qualcomm_runtime_v79")
// my_app/app/build.gradle.kts
android {
    // …
    dynamicFeatures.add(":litert_npu_runtime_libraries:qualcomm_runtime_v79")
}

dependencies {
    // NPU 运行时库的字符串资源
    implementation(project(":litert_npu_runtime_libraries:runtime_strings"))
}

完整指南: 请参阅官方的 Play for On‑device AI 教程

第 3 步 – 使用 LiteRT Runtime API 在 NPU 上运行推理

LiteRT 隐藏了 SoC 细节,并在 NPU 不可用时提供内置的回退(CPU/GPU)。AOT 编译的模型同样支持部分委托。

// 1️⃣ 加载模型(若 NPU 缺失则回退到 GPU)
val model = CompiledModel.create(
    context.assets,
    "model/mymodel.tflite",
    CompiledModel.Options(Accelerator.NPU, Accelerator.GPU)
)

// 2️⃣ 分配输入 / 输出缓冲区
val inputBuffers  = model.createInputBuffers()
val outputBuffers = model.createOutputBuffers()

// 3️⃣ 填充第一个输入缓冲区
inputBuffers[0].writeFloat(/* your input data */)

// 4️⃣ 运行推理
model.run(inputBuffers, outputBuffers)

// 5️⃣ 读取输出
val result = outputBuffers[0].readFloat()

📱 示例应用

image‑segmentation 示例(Kotlin + NPU) 中体验完整工作流。

I’m ready to translate the text for you, but it looks like the content to be translated wasn’t included in your message. Could you please provide the text you’d like me to translate?

接下来

新的 LiteRT Qualcomm AI Engine Direct (QNN) Accelerator 是 LiteRT 的重大成就,弥合了硬件原始潜力与实际应用性能之间的差距。我们非常期待看到你用这股力量构建的作品。

祝开发愉快!

致谢

特别感谢 Google ODML 团队和 Qualcomm LiteRT 团队对本项目的重要贡献。

Google ODML 团队

  • Alice Zheng
  • Advait Jain
  • Andrew Zhang
  • Arian Arfaian
  • Chintan Parikh
  • Chunlei Niu
  • Cormac Brick
  • Gerardo Carranza
  • Gregory Karpiak
  • Jingjiang Li
  • Jing Jin
  • Julius Kammerl
  • Lu Wang
  • Luke Boyer
  • Marissa Ikonomidis
  • Maria Lyubimtseva
  • Matt Kreileder
  • Matthias Grundmann
  • Na Li
  • Ping Yu
  • Quentin Khan
  • Rishika Sinha
  • Sachin Kotwani
  • Sebastian Schmidt
  • Steven Toribio
  • Teng‑Hui Zhu
  • Terry (Woncheol) Heoi
  • Vitalii Dziuba
  • Weiyi Wang
  • Yu‑Hui Chen
  • Zichuan We

Qualcomm LiteRT 团队

  • Alen Huang
  • Bastiaan Aarts
  • Brett Taylor
  • Chun‑Hsueh Lee (Jack)
  • Chun‑Po Chang (Jerry)
  • Chun‑Ting Lin (Graham)
  • Felix Baum
  • Jiun‑Kai Yang (Kelvin)
  • Krishna Sridhar
  • Ming‑Che Lin (Vincent)
  • William Lin
Back to Blog

相关文章

阅读更多 »