Njësia 8 / 11

Performanca dhe optimizimi i baterisë: Aplikime të shpejta dhe efikase me inteligjencë artificiale

Fitimet:

  • Duke marrë fillimisht një profil dhe duke matur pengesën reale, duke bërë optimizimin bazuar në të dhëna dhe jo në supozime dhe duke pasur rezultatin e profilit të interpretuar nga inteligjenca artificiale
  • Aftësia për të synuar operacionin më të shtrenjtë për sa i përket kohës së fillimit, rrjedhshmërisë, kujtesës dhe baterisë dhe për të hequr punën e rëndë nga filli kryesor
  • Aftësia për të menaxhuar koston e baterisë dhe procesorit të aftësive të AI, si modeli në pajisje dhe thirrjet në renë kompjuterike përmes marrjes së mostrave dhe përpunimit grupor

Përdoruesit e celularëve janë të paduruar. Nëse aplikacioni hapet ngadalë, varet gjatë lëvizjes ose e zbraz baterinë shpejt, përdoruesi e fshin atë dhe i jep një vlerësim me yje në dyqan. Performanca dhe efikasiteti i baterisë janë çështje e mbijetesës së një aplikacioni celular; Ajo ndikon drejtpërdrejt si në kënaqësinë e përdoruesit ashtu edhe në renditjen e dyqaneve. Inteligjenca artificiale është një ndihmë e fuqishme në zbulimin e pengesave të performancës (fyte të ngushta), interpretimin e rezultateve të matjes dhe rekomandimin e optimizimeve. Por rregulli i artë mbetet: matni së pari, optimizoni më vonë. Në këtë njësi, ne do të mësojmë të zgjidhim problemet e performancës dhe baterisë në një mënyrë të bazuar në të dhëna me AI. Një çështje veçanërisht e rëndësishme është menaxhimi i ndikimit në bateri dhe performanca e aftësive të AI që kemi shtuar në njësitë e mëparshme (modeli në pajisje, telefonata në renë kompjuterike).

Optimizimi pa matje

Gabimi më i madh i një zhvilluesi pa përvojë është optimizimi parashikues: humbja e kohës duke thënë "kjo duhet të jetë e ngadaltë". Gryka e ngushtë e vërtetë është pothuajse gjithmonë në një vend të papritur. Pra, fillimisht merret profili (profilimi - matja se cila pjesë e aplikacionit harxhon sa kohë/memorie/bateri). Android Studio Profiler dhe Xcode Instruments janë për këtë punë. Dhënia e të dhënave të matjes për AI shpejton interpretimin; Por pa matje, të thuash AI "aplikacioni im është i ngadalshëm, shpejtoje" do të thotë të bësh verbërisht parashikime.

Katër akset kryesore të performancës janë:

boshti

simptomë

shkak tipik

Koha e fillimit

Aplikimi hapet vonë

Punë e rëndë në fillin kryesor

Rrjedhshmëri (jank)

Lëvizja ngec

Përpunim i gjatë, rivizatim i panevojshëm në fillin e ndërfaqes së përdoruesit

memorie

ënjtje, kolaps

Rrjedhje, imazh i madh, cache i pakontrolluar

bateri/ngrohje

derdhje e shpejtë

Vendndodhja e vazhdueshme, rrjeti, sensori, puna në sfond

Këshillë: Kur pyesni AI për një problem të performancës, jepni daljen e profilit (cili funksion kërkon sa kohë, grafiku i memories). Të dhënat e forta si "Ai funksion kërkon 30 ms për kornizë" lejon që AI të fokusohet në ngushticën e vërtetë; Një frazë subjektive si "i ngadalshëm" prodhon një përgjigje të përgjithshme dhe të padobishme.

Kostoja e baterisë e aftësive të AI

Karakteristikat e AI që kemi shtuar në këtë modul janë të fuqishme, por ato nuk janë falas. Nxjerrja e një modeli në pajisje sforcon procesorin dhe baterinë; Një njohje imazhi që funksionon vazhdimisht (p.sh. kamera që përpunon çdo kornizë) do të ngrohë telefonin dhe do ta shkarkojë baterinë brenda pak minutash. Thirrjet Cloud AI, nga ana tjetër, hanë baterinë duke e mbajtur radion e rrjetit (antenën që dërgon dhe merr të dhëna) të ndezur gjatë gjithë kohës. Zgjidhjet: ekzekutoni modelin në pajisje vetëm kur është e nevojshme, provoni kamerën disa herë në sekondë në vend të çdo kuadri, dërgoni në grup kërkesat në renë kompjuterike, bëni ngritjen e rëndave ndërsa pajisja është duke u ngarkuar ose në punë.

Kujdes: Një funksion i vazhdueshëm i AI (përkthim i drejtpërdrejtë, njohje e vazhdueshme e objekteve) mund ta shkarkojë baterinë shumë shpejt, ta ngrohë pajisjen dhe mund të mbytet nga sistemi. Një veçori që e bën përdoruesin të ndiejë se kjo kosto është fshirë. Unë gjithmonë pyes AI "si ta bëj këtë funksion miqësor me baterinë?" Gjithashtu bëni pyetjen.

Hapat e optimizimit

  1. Masa. Gjeni pengesën e vërtetë me Profiler; mos merr me mend.
  2. Zgjidhni problemin më të madh. Mos ndiqni 1% përmirësim; Synoni për transaksionin më të shtrenjtë.
  3. Pyet AI me të dhëna. Kërko sugjerim optimizimi me daljen e profilit + kodin përkatës.
  4. Aplikoni dhe matni përsëri. A është i vërtetë përmirësimi? A ka rënë numri?
  5. Kontrolli i regresionit. A prishi ndonjë gjë optimizimi? Përsëritni testimin vizual dhe funksional.

tre mini kuti

Rasti 1 - Kërkimi në vendin e gabuar. Një ekip mendoi se listat ishin ngecur dhe e ripunuan kodin e lëvizjes për javë të tëra pa dobi. Kur ata morën profilin dhe ushqyen të dhënat në AI, doli se pengesa e vërtetë ishin imazhet që rifreskoheshin në rrjet me çdo rresht. Kur u shtua cache vizuale, rrjedhshmëria u rrit nga 42 FPS në 60 FPS. Mësimi: matja shmang javët e përpjekjeve të kota.

Rasti 2 - Tipari i përbindëshit të baterisë. Një aplikacion përkthimi shtoi përkthim të drejtpërdrejtë të tekstit me kamerë; Përdoruesit u ankuan se "telefoni u nxeh në 15 minuta dhe 30% e baterisë ishte zhdukur". Kur u konsultua me AI, u zbulua se kamera po përpunonte 30 korniza në sekondë; Kur kjo u reduktua në 5 korniza dhe rezultati u përditësua me disa korniza larg njëri-tjetrit, konsumi i baterisë u ul në një të tretën dhe cilësia nuk ishte e dukshme. Mësimi: Vendosni gjithmonë AI me syrin e baterisë.

Rasti 3 - Fillimi i ngadaltë. Një aplikacion u hap në 4,5 sekonda; 20% e përdoruesve po dilnin në fillim. Profili tregoi se e gjithë puna fillestare (analitika, ngarkimi i të dhënave, përgatitja e modelit) u krye në mënyrë sekuenciale në fillin kryesor. Me propozimin e UA-së, këto janë shtyrë dhe janë vënë në prapavijë; Koha e hapjes u reduktua në 1.3 sekonda dhe shkalla e braktisjes u përgjysmua. Mësimi: bëni vetëm punë thelbësore në fillim.

Prompt i dobët / Prompt i fortë

Prompt i dobët: "Aplikacioni im është i ngadalshëm, shpejtoje".

Prompt i fuqishëm: "Lëvizja e listës ngec (jank) në aplikacionin tim Android. Të dhënat e profilit: bindImageView merr 28 ms në çdo kornizë, imazhet ngarkohen nga rrjeti çdo herë, nuk ka cache. Kodi përkatës: [kodi i përshtatësit RecyclerView]. Rekomandoni 3 optimizimet më efektive. Rekomandoni 3 optimizimet më efektive. mos reduktoni efektet anësore të mundshme në rendin e ndikimit. cilësi."

Modele të kopjueshme

Shablloni i analizës së pikës së ngushtë: "Interpretoni të dhënat e mëposhtme të profilit dhe gjeni 3 operacionet më të shtrenjta: [dalja e profilit]. Sugjeroni shkakun e mundshëm dhe optimizimin konkret për secilën. Jepni fillimisht ndikimin më të lartë."

Shablloni i optimizimit të baterisë: "Kjo veçori e zbraz baterinë shpejt: [veçori, p.sh. vendndodhja e përhershme]. Bëje atë miqësore me baterinë:- Zvogëlo frekuencën e marrjes së mostrave- Kufizim në sfond- Përpunimi i grupit- Ekzekutoni vetëm kur është e nevojshme Renditni zgjidhjet pa ndërprerë përvojën e përdoruesit. [kodi]"

Modeli i përshpejtimit të fillimit: "Përshpejtoni fillimin e aplikacionit. Gjërat që po bëhen aktualisht në nisje: [lista]. Cilat mund të shtyhen, të vendosen në sfond ose të ngarkohen me dembelë? Ndani ato thelbësore. [kodi]"

Modeli i kostos së veçorive të AI: "Vlerëso performancën dhe koston e baterisë së veçorisë [modeli në pajisje / telefonata në renë kompjuterike] që shtova. Rendis metrikat që duhet të mas dhe strategjitë për të ulur koston. [kodi]"

Gabimet e zakonshme

  • Optimizimi pa matje. Gryka e ngushtë e vërtetë është shpesh në një vend të ndryshëm nga sa ishte parashikuar.
  • Duke ndjekur fitime të vogla. Synoni për veprimin më të shtrenjtë në vend të përmirësimit prej 1%.
  • Injorimi i kostos së baterisë së veçorive të AI. Modeli/kamera/rrjeti që funksionon vazhdimisht e konsumon baterinë.
  • Duke lodhur fillin kryesor. Ngritja e rëndë e nisjes dhe lëvizjes nuk duhet të jetë në fillin e ndërfaqes së përdoruesit.
  • Nuk rimatet pas optimizimit. Verifikoni që përmirësimi është real dhe nuk prish asgjë.
  • Matja e performancës në emulator. Shpejtësia aktuale e pajisjes, temperatura dhe bateria janë krejtësisht të ndryshme.

Në përmbledhje

Performanca dhe bateria janë çështje e mbijetesës së aplikacionit celular. Rregulli i artë: matni së pari, optimizoni më vonë. Dhënia e të dhënave të profilit tek AI përshpejton interpretimin; Dëshira e pamatshme për të "përshpejtuar" çon në hamendje të verbër. Synoni transaksionin më të shtrenjtë, mos ndiqni fitime të vogla. Aftësitë e AI të shtuara në këtë modul janë të fuqishme, por mbartin kostot e baterisë dhe procesorit; Menaxhoni këtë kosto duke reduktuar frekuencën e marrjes së mostrave, grumbullimin dhe ekzekutimin vetëm kur është e nevojshme. Matni përsëri në pajisjen reale pas çdo optimizimi.

Detyra e aplikimit

Importoni një profil në një aplikacion (projektin ose shembullin tuaj) ose krijoni një rezultat të profilit të mostrës dhe interpretojeni atë nga AI me "shabllonin e analizës së bottleneck". Aplikoni optimizimin më të lartë të ndikimit dhe matni përsëri: a ra në të vërtetë numri? Gjithashtu, vlerësoni një veçori të AI që keni shtuar në këtë modul (modeli në pajisje ose telefonatë në renë kompjuterike) për sa i përket baterisë me "modelin e kostos së veçorive AI" dhe përcaktoni të paktën një cilësim të përshtatshëm për baterinë.

listë kontrolli

  • [ ] Mora profilin para optimizimit, nuk e mora me mend
  • [ ] Synova tregtinë më të shtrenjtë, nuk u shpërndava në fitime të vogla
  • [ ] I dhashë të dhënat e profilit të AI në numra konkretë
  • [ ] Kam vlerësuar koston e baterisë/procesorit të veçorive të AI
  • [ ] E hoqa ngritjen e rëndë nga filli kryesor
  • [ ] Pas optimizimit, mata përsëri në pajisjen reale dhe kontrollova regresionin