Pajisjet celulare dhe ato të integruara kanë burime të kufizuara llogaritëse, prandaj është e rëndësishme të mbani burimin e aplikacionit tuaj efikas. Ne kemi përpiluar një listë të praktikave dhe strategjive më të mira që mund të përdorni për të përmirësuar performancën e modelit tuaj TensorFlow Lite.
Zgjidhni modelin më të mirë për detyrën
Në varësi të detyrës, do t'ju duhet të bëni një shkëmbim midis kompleksitetit dhe madhësisë së modelit. Nëse detyra juaj kërkon saktësi të lartë, atëherë mund t'ju duhet një model i madh dhe kompleks. Për detyrat që kërkojnë më pak saktësi, është më mirë të përdorni një model më të vogël, sepse ato jo vetëm që përdorin më pak hapësirë në disk dhe memorie, por janë gjithashtu në përgjithësi më të shpejta dhe më efikase në energji. Për shembull, grafikët më poshtë tregojnë saktësinë dhe kompensimet e vonesës për disa modele të zakonshme të klasifikimit të imazheve.
Një shembull i modeleve të optimizuara për pajisjet celulare janë MobileNets , të cilat janë të optimizuara për aplikacionet e vizionit celular. Kaggle Models liston disa modele të tjera që janë optimizuar posaçërisht për pajisjet mobile dhe të integruara.
Ju mund të ritrajnoni modelet e listuara në grupin tuaj të të dhënave duke përdorur transferimin e të mësuarit.
Profilizoni modelin tuaj
Pasi të keni zgjedhur një model kandidat që është i duhuri për detyrën tuaj, është një praktikë e mirë të profilizoni dhe të krahasoni modelin tuaj. Mjeti i krahasimit LiteRT ka një profilues të integruar që tregon statistikat e profilizimit për operator. Kjo mund të ndihmojë në kuptimin e pengesave të performancës dhe cilët operatorë dominojnë kohën e llogaritjes.
Ju gjithashtu mund të përdorni gjurmimin LiteRT për të profilizuar modelin në aplikacionin tuaj Android, duke përdorur gjurmimin standard të sistemit Android dhe për të vizualizuar thirrjet e operatorit sipas kohës me mjetet e profilizimit të bazuara në GUI.
Profili dhe optimizimi i operatorëve në grafik
Nëse një operator i caktuar shfaqet shpesh në model dhe, bazuar në profilizimin, zbuloni se operatori harxhon më shumë kohë, mund të shikoni për optimizimin e atij operatori. Ky skenar duhet të jetë i rrallë pasi TensorFlow Lite ka versione të optimizuara për shumicën e operatorëve. Megjithatë, mund të jeni në gjendje të shkruani një version më të shpejtë të një opcioni të personalizuar nëse i dini kufizimet në të cilat ekzekutohet operatori. Shikoni udhëzuesin e operatorëve me porosi .
Optimizoni modelin tuaj
Optimizimi i modelit synon të krijojë modele më të vogla që janë përgjithësisht më të shpejta dhe më efikase në energji, në mënyrë që ato të mund të vendosen në pajisjet mobile. LiteRT mbështet teknika të shumta optimizimi, të tilla si kuantizimi.
Shikoni dokumentet e optimizimit të modelit për detaje.
Rregulloni numrin e fijeve
LiteRT mbështet kernelet me shumë fije për shumë operatorë. Ju mund të rrisni numrin e fijeve dhe të shpejtoni ekzekutimin e operatorëve. Megjithatë, rritja e numrit të fijeve do ta bëjë modelin tuaj të përdorë më shumë burime dhe fuqi.
Për disa aplikacione, vonesa mund të jetë më e rëndësishme se efikasiteti i energjisë. Ju mund të rrisni numrin e temave duke vendosur numrin e fijeve të interpretuesit. Ekzekutimi me shumë fije, megjithatë, vjen me koston e rritjes së ndryshueshmërisë së performancës në varësi të asaj që tjetër ekzekutohet njëkohësisht. Ky është veçanërisht rasti për aplikacionet celulare. Për shembull, testet e izoluara mund të tregojnë shpejtësi 2x në krahasim me një filetim të vetëm, por, nëse një aplikacion tjetër po ekzekutohet në të njëjtën kohë, mund të rezultojë në performancë më të keqe sesa me një filetim të vetëm.
Eliminoni kopjet e tepërta
Nëse aplikacioni juaj nuk është projektuar me kujdes, mund të ketë kopje të tepërta kur futni hyrjen dhe lexoni daljen nga modeli. Sigurohuni që të eliminoni kopjet e tepërta. Nëse jeni duke përdorur API të nivelit më të lartë, si Java, sigurohuni që të kontrolloni me kujdes dokumentacionin për paralajmërimet e performancës. Për shembull, Java API është shumë më i shpejtë nëse ByteBuffers
përdoren si hyrje .
Profilizoni aplikacionin tuaj me mjete specifike të platformës
Mjetet specifike të platformës si profiluesi i Android dhe Instrumentet ofrojnë një mori informacionesh profilizimi që mund të përdoren për të korrigjuar aplikacionin tuaj. Ndonjëherë gabimi i performancës mund të mos jetë në model, por në pjesë të kodit të aplikacionit që ndërveprojnë me modelin. Sigurohuni që të njiheni me mjetet specifike të profilizimit të platformës dhe praktikat më të mira për platformën tuaj.
Vlerësoni nëse modeli juaj përfiton nga përdorimi i përshpejtuesve të harduerit të disponueshëm në pajisje
LiteRT ka shtuar mënyra të reja për të përshpejtuar modelet me harduer më të shpejtë si GPU, DSP dhe përshpejtues nervorë. Në mënyrë tipike, këta përshpejtues ekspozohen përmes nënmoduleve të deleguara që marrin përsipër pjesë të ekzekutimit të përkthyesit. LiteRT mund të përdorë delegatë duke:
- Delegati i GPU është i disponueshëm në Android dhe iOS, duke përdorur respektivisht OpenGL/OpenCL dhe Metal. Për t'i provuar ato, shihni delegatin e GPU-së .
- Është e mundur të krijoni delegatin tuaj nëse keni akses në pajisje jo standarde. Shihni delegatët e LiteRT për më shumë informacion.
Kini parasysh se disa përshpejtues funksionojnë më mirë për lloje të ndryshme modelesh. Disa delegatë mbështesin vetëm modelet float ose modelet e optimizuara në një mënyrë specifike. Është e rëndësishme të krahasoni secilin delegat për të parë nëse është një zgjedhje e mirë për aplikimin tuaj. Për shembull, nëse keni një model shumë të vogël, mund të mos ia vlen ta delegoni modelin tek GPU. Në të kundërt, përshpejtuesit janë një zgjedhje e shkëlqyer për modelet e mëdha që kanë intensitet të lartë aritmetik.