Akceleracja sprzętowa z LiteRT

Akceleracja sprzętowa to wykorzystanie specjalistycznego sprzętu komputerowego do zwiększenia szybkości i wydajności działania modelu AI. W przypadku LiteRT polega to głównie na używaniu procesorów graficznych (GPU) lub procesorów sieci neuronowych (NPU) do wnioskowania AI, a także instrukcji wektorowych procesorów ogólnego przeznaczenia (CPU).

Skompilowany interfejs API modelu LiteRT obsługuje akcelerację w 2 krokach:

  1. Kompilacja: przygotowanie modelu do działania na określonym sprzęcie.
  2. Wysyłanie: uruchamia wybrane operacje na odpowiednim sprzęcie.

W fazie kompilacji model LiteRT jest modyfikowany za pomocą nowego interfejsu, który zapewnia większą elastyczność dzięki wtyczkom kompilatora. Kompilacja modelu odbywa się z wyprzedzeniem (AOT), zanim zostanie wykonany graf, i dostosowuje konkretny graf do działania na urządzeniu.

Rodzaje akceleratorów

LiteRT udostępnia 3 typy akceleratorów: NPU, GPU i CPU.

  • NPU: ujednolicony interfejs dla Qualcomm AI Engine Direct i MediaTek NeuroPilot.
  • GPU: backend OpenCL oraz backendy WebGPU i Metal korzystające z interfejsu Compiled Model API.
  • Procesor: domyślne i zawsze dostępne jest wykonywanie zoptymalizowane pod kątem XNNPACK.

Akceleratory te można łączyć, aby uzyskać jak najlepszą wydajność, gdy niektóre złożone operacje nie są dostępne na danym sprzęcie. Gdy akceleratory konkurują o operację, LiteRT stosuje następującą kolejność ważności: NPU, GPU, CPU.

Akceleracja GPU

Dzięki akceleracji GPU LiteRT możesz tworzyć bufory wejściowe i wyjściowe przyjazne dla GPU, osiągać zerowe kopiowanie danych w pamięci GPU i wykonywać zadania asynchronicznie, aby zmaksymalizować równoległość. Nie musisz konfigurować delegata – wystarczy, że określisz akcelerator w czasie kompilacji:

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

Więcej informacji o akceleracji GPU znajdziesz w artykule Akceleracja GPU za pomocą LiteRT.

Akceleracja NPU

LiteRT zapewnia ujednolicony interfejs do korzystania z procesorów NPU bez konieczności indywidualnego poruszania się po kompilatorach, środowiskach wykonawczych lub zależnościach bibliotecznych poszczególnych dostawców. Obsługuje procesory NPU firm Qualcomm i MediaTek w przypadku ścieżek kompilacji AOT i na urządzeniu.

Korzystanie z NPU z LiteRT zwykle obejmuje konwertowanie i kompilowanie modelu za pomocą Play for On-device AI (PODAI) oraz wdrażanie modelu za pomocą pakietu Play AI Pack i modułu funkcji.