使用 LiteRT 进行硬件加速

硬件加速是指使用专用计算机硬件来提高 AI 模型的执行速度和效率。对于 LiteRT,这主要涉及使用图形处理单元 (GPU) 或神经处理单元 (NPU) 进行 AI 推理,以及使用通用中央处理单元 (CPU) 向量指令。

LiteRT 编译模型 API 通过两个步骤处理加速:

  1. 编译:准备在特定硬件上运行的模型。
  2. 调度:在相关硬件上运行所选操作。

编译阶段通过编译器插件使用新接口修改 LiteRT 模型,从而提供更高的灵活性。模型编译在图执行之前提前进行 (AOT),并定制要在设备上运行的特定图。

加速器类型

LiteRT 提供三种类型的加速器:NPU、GPU 和 CPU。

  • NPU:目前是 Qualcomm AI Engine Direct 和 MediaTek NeuroPilot 的统一接口。
  • GPU:使用 Compiled Model API 的 OpenCL 后端以及 WebGPU 和 Metal 后端。
  • CPU:XNNPACK 优化执行是默认设置,并且始终可用。

当给定硬件上无法执行某些复杂操作时,可将这些加速器组合起来,以尽可能获得最佳性能。当加速器争用某项操作时,LiteRT 会按以下优先级顺序使用加速器:NPU、GPU、CPU。

GPU 加速

借助 LiteRT GPU 加速,您可以创建 GPU 友好的输入和输出缓冲区,在 GPU 内存中实现数据零复制,并以异步方式执行任务,从而最大限度地提高并行性。无需委托管道,只需在编译时指定加速器:

// Create a compiled model targeting GPU
LITERT_ASSIGN_OR_RETURN(auto compiled_model,
    CompiledModel::Create(env, model, kLiteRtHwAcceleratorGpu));

如需详细了解 GPU 加速,请参阅 使用 LiteRT 进行 GPU 加速

NPU 加速

LiteRT 提供了一个统一的接口来利用 NPU,而无需您单独浏览特定于供应商的编译器、运行时或库依赖项。它支持 Qualcomm 和 MediaTek NPU,可用于 AOT 和设备端编译路径。

将 NPU 与 LiteRT 搭配使用通常需要使用 Play On-device AI (PODAI) 转换和编译模型,并使用 Play AI Pack 和功能模块部署模型。