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:
- Kompilacja: przygotowanie modelu do działania na określonym sprzęcie.
- 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.