使用 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:OpenCL 後端,以及使用已編譯模型 API 的 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,不必個別瀏覽廠商專屬的編譯器、執行階段或程式庫依附元件。無論是 AOT 或裝置端編譯路徑,都支援 Qualcomm 和 MediaTek NPU。

搭配使用 NPU 與 LiteRT 通常需要透過 Play for On-device AI (PODAI) 轉換及編譯模型,並透過 Play AI Pack 和功能模組部署模型。