Akceleracja sprzętowa z LiteRT Next

Przyspieszenie sprzętowe to korzystanie ze specjalistycznego sprzętu komputerowego w celu zwiększenia szybkości i wydajności działania modelu AI. W przypadku LiteRT oznacza to przede wszystkim korzystanie z procesorów graficznych (GPU) lub procesorów neuronowych (NPU) do wnioskowania AI oraz procesorów centralnych (CPU) do instrukcji wektorowych.

LiteRT obsługiwał akcelerację sprzętową dzięki użyciu delegatów LiteRT, które przejmują części grafu LiteRT, zastępując w nim własne operacje. LiteRT Next ulepsza ten proces, obsługując akcelerację sprzętową w 2 krok:

  1. Kompilacja: przygotowanie modelu do działania na określonym sprzęcie.
  2. Przesłanie:wykonywanie wybranych operacji na odpowiednim sprzęcie.

Faza kompilacji modyfikuje model LiteRT za pomocą nowego interfejsu, który zapewnia większą elastyczność dzięki wtyczkom kompilatora. Kompilacja modelu odbywa się z wyprzedzeniem (AOT), przed wykonaniem grafu, i dostosowuje konkretny graf do działania na urządzeniu.

Rodzaje akceleratorów

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

  • Przyspieszanie przez NPU obsługuje sprzęt specjalistyczny z jednym interfejsem. Obsługa NPU jest dostępna w ramach programu wcześniejszego dostępu.
  • Akceleracja GPU obsługuje urządzenia z obsługą WebGL i OpenCL.
  • Przyspieszenie procesora obsługuje różne procesory dzięki bibliotece XNNPack. Jest to domyślny poziom przyspieszenia i jest zawsze dostępny.

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 wykonanie operacji, LiteRT stosuje następującą kolejność: NPU, GPU, CPU.

akceleracja GPU;

Dzięki akceleracji GPU w LiteRT Next możesz tworzyć przyjazne dla GPU bufory wejścia i wyjścia, osiągnąć zero kopii z danymi w pamięci GPU oraz wykonywać zadania asynchronicznie, aby zmaksymalizować równoległość. LiteRT Next korzysta z nowego i ulepszonego delegowania funkcji do procesora graficznego, które nie jest dostępne w LiteRT.

Uruchamianie modeli na GPU za pomocą LiteRT wymaga jawnego tworzenia delegowanych funkcji, wywoływania funkcji i modyfikacji grafu. W LiteRT Next wystarczy określić akcelerator:

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

Więcej informacji o przyspieszaniu przez GPU znajdziesz w artykule Przyspieszanie przez GPU za pomocą akceleracji LiteRT.

akceleracja NPU,

LiteRT Next udostępnia ujednolicony interfejs do korzystania z procesorów neuromorficznych bez konieczności korzystania z indywidualnych kompilatorów, środowisk uruchomieniowych lub zależności bibliotek. Korzystanie z LiteRT Next do przyspieszania NPU pozwala uniknąć wielu problemów związanych z konkretnym dostawcą i urządzeniem, zwiększa wydajność wnioskowania w czasie rzeczywistym i z użyciem dużych modeli oraz minimalizuje kopie pamięci dzięki wykorzystaniu bufora sprzętowego z mechanizmem zero-copy.

Korzystanie z NPU w ramach LiteRT wymaga konwersji i skompilowania modelu za pomocą Play for On-device AI (PODAI) oraz wdrożenia modelu za pomocą pakietu Play AI i modułu funkcji.