Hardwarebeschleunigung mit LiteRT

Bei der Hardwarebeschleunigung wird spezielle Computerhardware verwendet, um die Ausführungsgeschwindigkeit und Effizienz eines KI-Modells zu verbessern. Bei LiteRT geht es dabei hauptsächlich um die Verwendung von Grafikprozessoren (GPUs) oder Neural Processing Units (NPUs) für KI-Inferenz sowie von Vektoranweisungen für allgemeine CPUs.

Die Compiled Model API von LiteRT übernimmt die Beschleunigung in zwei Schritten:

  1. Kompilierung:Ein Modell für die Ausführung mit einer bestimmten Hardware vorbereiten.
  2. Ausführen:Führt ausgewählte Vorgänge auf der entsprechenden Hardware aus.

In der Kompilierungsphase wird ein LiteRT-Modell mit einer neuen Schnittstelle geändert, die durch Compiler-Plug-ins mehr Flexibilität bietet. Die Modellkompilierung erfolgt vorab (Ahead-of-Time, AOT), bevor das Diagramm ausgeführt wird. Dabei wird ein bestimmtes Diagramm für die Ausführung auf dem Gerät angepasst.

Arten von Beschleunigern

LiteRT bietet drei Arten von Beschleunigern: NPU, GPU und CPU.

  • NPU:Einheitliche Schnittstelle für Qualcomm AI Engine Direct und MediaTek NeuroPilot.
  • GPU:OpenCL-Backend sowie WebGPU- und Metal-Backends mit der Compiled Model API.
  • CPU:Die XNNPACK-optimierte Ausführung ist die Standardeinstellung und immer verfügbar.

Diese Beschleuniger können kombiniert werden, um die bestmögliche Leistung zu erzielen, wenn einige komplexe Vorgänge auf einer bestimmten Hardware nicht verfügbar sind. Wenn mehrere Beschleuniger für einen Vorgang infrage kommen, verwendet LiteRT die folgende Prioritätsreihenfolge: NPU, GPU, CPU.

GPU-Beschleunigung

Mit der LiteRT-GPU-Beschleunigung können Sie GPU-freundliche Ein- und Ausgabepuffer erstellen, Zero-Copy mit Ihren Daten im GPU-Arbeitsspeicher erreichen und Aufgaben asynchron ausführen, um die Parallelität zu maximieren. Es ist keine Delegaten-Einrichtung erforderlich. Sie müssen den Beschleuniger nur zur Kompilierzeit angeben:

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

Weitere Informationen zur GPU-Beschleunigung finden Sie unter GPU-Beschleunigung mit LiteRT.

NPU-Beschleunigung

LiteRT bietet eine einheitliche Schnittstelle für die Nutzung von NPUs, ohne dass Sie compilerspezifische Compiler, Runtimes oder Bibliotheksabhängigkeiten einzeln verwalten müssen. Es unterstützt Qualcomm- und MediaTek-NPUs für AOT- und On-Device-Kompilierungspfade.

Für die Verwendung von NPUs mit LiteRT muss ein Modell in der Regel mit Play for On-device AI (PODAI) konvertiert und kompiliert werden. Anschließend wird das Modell mit dem Play AI Pack und dem Feature-Modul bereitgestellt.