使用 LiteRT Next 进行硬件加速

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

LiteRT 通过使用 TFLite 代理支持硬件加速,代理会通过在图中替换自己的操作来接管 LiteRT 图的部分内容。LiteRT Next 通过以下两个步骤处理硬件加速,从而改进了此流程:

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

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

加速器类型

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

  • NPU 加速支持在单个接口后面统一专用硬件。您可以通过抢先体验计划获得 NPU 支持。
  • GPU 加速支持启用了 WebGL 和 OpenCL 的设备。
  • CPU 加速功能通过使用 XNNPack 库支持各种处理器。这是默认的加速级别,始终可用。

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

GPU 加速

借助 LiteRT Next 的 GPU 加速功能,您可以创建适合 GPU 的输入和输出缓冲区,在 GPU 显存中实现零拷贝数据,并异步执行任务以最大限度地提高并行性。LiteRT Next 使用了经过改进的新版 GPU 代理,LiteRT 不提供此代理。

使用 LiteRT 在 GPU 上运行模型需要显式创建代理、调用函数和修改图表。使用 LiteRT Next 时,只需指定加速器即可:

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

如需详细了解 GPU 加速,请参阅使用 LiteRT 加速功能实现 GPU 加速

NPU 加速

LiteRT Next 提供了一个统一的接口来利用 NPU,而无需您单独浏览特定于供应商的编译器、运行时或库依赖项。使用 LiteRT Next 进行 NPU 加速可避免许多特定于供应商和特定于设备的复杂问题,提升实时和大型模型推理的性能,并通过零拷贝硬件缓冲区使用来最大限度地减少内存复制。

将 NPU 与 LiteRT 搭配使用需要使用 Play for On-device AI (PODAI) 转换和编译模型,并使用 Play AI Pack 和 Feature Module 部署模型。