Përshpejtimi i harduerit me LiteRT Next

Përshpejtimi i harduerit është përdorimi i pajisjeve kompjuterike të specializuara për të përmirësuar shpejtësinë e ekzekutimit dhe efikasitetin e një modeli AI. 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 konkluzionet e AI, si dhe udhëzimet vektoriale të Njësive të Përpunimit Qendror për qëllime të përgjithshme (CPU).

LiteRT mbështeti përshpejtimin e harduerit nëpërmjet përdorimit të TFLite Delegates , i cili merr përsipër pjesë të grafikut LiteRT duke zëvendësuar operacionet e veta në grafik. LiteRT Next përmirëson këtë proces duke trajtuar përshpejtimin e harduerit përmes dy hapave:

  1. Përpilimi: përgatit një model për t'u ekzekutuar me një pajisje specifike.
  2. Dispetch: ekzekutoni operacionet e zgjedhura në harduerin përkatës.

Faza e përpilimit modifikon një model LiteRT me një ndërfaqe të re që ofron më shumë fleksibilitet përmes shtojcave të përpiluesit. Kompilimi i modelit ndodh përpara kohe (AOT), përpara se grafiku të ekzekutohet dhe përshtat një grafik specifik për të ekzekutuar në pajisje.

Llojet e përshpejtuesve

LiteRT ofron tre lloje përshpejtuesish: NPU, GPU dhe CPU.

  • Përshpejtimi NPU mbështet harduerin e specializuar të unifikuar pas një ndërfaqe të vetme. Mbështetja e NPU-së është e disponueshme përmes një Programi të Qasjes së Hershme .
  • Përshpejtimi i GPU-së mbështet pajisjet e aktivizuara WebGL dhe OpenCL.
  • Përshpejtimi i CPU-së mbështet një sërë procesorësh përmes përdorimit të bibliotekës XNNPack . Ky është niveli i paracaktuar i përshpejtimit dhe është gjithmonë i disponueshëm.

Këta përshpejtues mund të kombinohen për të marrë performancën më të mirë të mundshme kur disa operacione komplekse nuk janë të disponueshme në një pajisje të caktuar. Kur përshpejtuesit konkurrojnë mbi 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ë së LiteRT Next, mund të krijoni bufera hyrëse dhe dalëse të përshtatshme për GPU-në, të arrini kopjim zero me të dhënat tuaja në memorien GPU dhe të ekzekutoni detyra në mënyrë asinkrone për të maksimizuar paralelizmin. LiteRT Next përdor një delegat të ri dhe të përmirësuar GPU, që nuk ofrohet nga LiteRT.

Ekzekutimi i modeleve në GPU me LiteRT kërkon krijimin e qartë të delegatëve, thirrjet e funksioneve dhe modifikimet e grafikut. Me LiteRT Next, thjesht specifikoni përshpejtuesin:

// 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ërshpejtimin e GPU me LiteRT Acceleration

Përshpejtimi i NPU

LiteRT Next ofron një ndërfaqe të unifikuar për të shfrytëzuar NPU-të pa ju detyruar të lundroni individualisht në kompiluesit, kohëzgjatjen ose varësitë e bibliotekës specifike të shitësve. Përdorimi i LiteRT Next për përshpejtimin e NPU shmang shumë komplikime specifike për shitësin dhe pajisjen, rrit performancën për konkluzionet në kohë reale dhe të modeleve të mëdha dhe minimizon kopjet e kujtesës me përdorimin e buferit të harduerit me zero kopje.

Përdorimi i NPU-ve me LiteRT përfshin konvertimin dhe përpilimin e një modeli me Play for On-Device AI (PODAI) dhe vendosjen e modelit me Play AI Pack dhe Feature Module.