Përshpejtimi i harduerit është përdorimi i pajisjeve të specializuara kompjuterike për të përmirësuar shpejtësinë dhe efikasitetin e ekzekutimit të një modeli të inteligjencës artificiale. Për LiteRT, kjo përfshin kryesisht përdorimin e Njësive të Përpunimit Grafik (GPU) ose Njësive të Përpunimit Neural (NPU) për nxjerrjen e përfundimeve nga inteligjenca artificiale, si dhe udhëzimeve vektoriale të Njësive Qendrore të Përpunimit (CPU) për qëllime të përgjithshme.
API-ja e Modelit të Kompiluar LiteRT trajton përshpejtimin në dy hapa:
- Përpilimi: përgatitja e një modeli për t'u ekzekutuar me një harduer specifik.
- Dërgimi: ekzekutoni operacione të zgjedhura në harduerin përkatës.
Faza e kompilimit modifikon një model LiteRT me një ndërfaqe të re që ofron më shumë fleksibilitet përmes shtojcave të kompiluesit. Kompilimi i modelit ndodh paraprakisht (AOT), përpara se të ekzekutohet grafiku, dhe përshtat një grafik specifik për t'u ekzekutuar në pajisje.
Llojet e përshpejtuesve
LiteRT ofron tre lloje përshpejtuesish: NPU, GPU dhe CPU.
- NPU: ndërfaqe e unifikuar për Qualcomm AI Engine Direct dhe MediaTek NeuroPilot sot.
- GPU: Backend i OpenCL plus backend të WebGPU dhe Metal duke përdorur API-n e Modelit të Kompiluar.
- CPU: Ekzekutimi i optimizuar për XNNPACK është parazgjedhur dhe gjithmonë i disponueshëm.
Këta përshpejtues mund të kombinohen për të arritur performancën më të mirë të mundshme kur disa operacione komplekse nuk janë të disponueshme në një harduer të caktuar. Kur përshpejtuesit konkurrojnë për një operacion, LiteRT përdor rendin e mëposhtëm të përparësisë: NPU, GPU, CPU.
Përshpejtimi i GPU-së
Me përshpejtimin e GPU-së LiteRT, mund të krijoni buffer-a hyrës dhe dalës miqësorë me GPU-në, të arrini zero kopje me të dhënat tuaja në memorien e GPU-së dhe të ekzekutoni detyra në mënyrë asinkrone për të maksimizuar paralelizmin. Nuk kërkohet asnjë lloj delegati - thjesht specifikoni përshpejtuesin në kohën e kompajlimit:
// Create a compiled model targeting GPU
LITERT_ASSIGN_OR_RETURN(auto compiled_model,
CompiledModel::Create(env, model, kLiteRtHwAcceleratorGpu));
Për më shumë informacion mbi përshpejtimin e GPU-së, shihni Përshpejtimi i GPU-së me LiteRT.
Përshpejtimi i NPU-së
LiteRT ofron një ndërfaqe të unifikuar për të shfrytëzuar NPU-të pa ju detyruar të lundroni individualisht në kompilues, kohë ekzekutimi ose varësi të bibliotekave specifike të shitësit. Ai mbështet NPU-të e Qualcomm dhe MediaTek si për shtigjet e kompilimit AOT ashtu edhe për ato në pajisje.
Përdorimi i NPU-ve me LiteRT zakonisht përfshin konvertimin dhe kompilimin e një modeli me Play for On-device AI (PODAI) dhe vendosjen e modelit me Play AI Pack dhe Feature Module.