Egység 8 / 11

Teljesítmény- és akkumulátoroptimalizálás: gyors és hatékony alkalmazások mesterséges intelligenciával

Nyereség:

  • Először készítsen egy profilt és mérje meg a valós szűk keresztmetszetet, az optimalizálást adatokon, nem pedig találgatásokon alapul, és a profil kimenetét mesterséges intelligencia értelmezi.
  • Az indítási idő, a folyékonyság, a memória és az akkumulátor tekintetében a legdrágább műveletek megcélzása, valamint a nehéz munka eltávolítása a főszálról
  • Képes kezelni az AI-képességek akkumulátor- és processzorköltségét, például az eszközön belüli modellt és a felhőhívást mintavételezéssel és kötegelt feldolgozással

A mobilhasználók türelmetlenek. Ha az alkalmazás lassan nyílik meg, görgetés közben lefagy, vagy gyorsan lemeríti az akkumulátort, akkor a felhasználó törli, és csillaggal értékeli az áruházban. A teljesítmény és az akkumulátor hatékonysága a mobilalkalmazások túlélésének kérdése; Közvetlenül befolyásolja mind a felhasználói elégedettséget, mind a boltok rangsorát. Az AI hatékony segítség a teljesítmény szűk keresztmetszetek (szűk keresztmetszetek) felderítésében, a mérési eredmények értelmezésében és az optimalizálás ajánlásában. De az aranyszabály továbbra is érvényes: előbb mérj, utána optimalizálj. Ebben az egységben megtanuljuk a teljesítmény- és akkumulátorproblémák adatalapú megoldását mesterséges intelligencia segítségével. Különösen fontos probléma a korábbi egységekben hozzáadott mesterséges intelligencia-képességek akkumulátorra és teljesítményére gyakorolt ​​hatásának kezelése (eszközön belüli modell, felhőhívás).

Optimalizálás mérés nélkül

A tapasztalatlan fejlesztő legnagyobb hibája a prediktív optimalizálás: időt vesztegetni azzal, hogy "eznek lassúnak kell lennie". Az igazi szűk keresztmetszet szinte mindig váratlan helyen van. Tehát először a profil készül (profilozás – annak mérése, hogy az alkalmazás melyik része mennyi időt/memóriát/akkumulátort fogyaszt). Az Android Studio Profiler és az Xcode Instruments erre a munkára való. A mérési adatok AI-nak való átadása felgyorsítja az értelmezést; De mérés nélkül, ha azt mondjuk AI-nak, hogy „az alkalmazásom lassú, gyorsítsd fel” azt jelenti, hogy vakon jóslatokat készítünk.

A teljesítmény négy fő tengelye a következő:

tengely

tünet

tipikus ok

Kezdés időpontja

A jelentkezés későn nyílik meg

Nehéz munka a főszálon

Folyékonyság (jank)

A tekercs elakad

Hosszú feldolgozás, szükségtelen újrarajzolás a felhasználói felületen

memória

duzzanat, összeomlás

Szivárgás, nagy kép, a gyorsítótár ellenőrizetlen

akkumulátor/fűtés

gyors magömlés

Folyamatos helymeghatározás, hálózat, érzékelő, háttérmunka

Tipp: Ha teljesítményproblémáról kérdezi az AI-t, adja meg a profil kimenetét (melyik függvény mennyi ideig tart, memóriagrafikon). Az olyan kemény adatok, mint a „Ez a funkció 30 ms-ot vesz igénybe képkockánként”, lehetővé teszik az AI számára, hogy a valódi szűk keresztmetszetre összpontosítson; Egy olyan szubjektív kifejezés, mint a „lassú”, általános és haszontalan választ ad.

Az AI képességek akkumulátorköltsége

Az ebben a modulban hozzáadott mesterséges intelligencia funkciók erőteljesek, de nem ingyenesek. Az eszközön lévő modell kibontása megterheli a processzort és az akkumulátort; A folyamatosan futó képfelismerés (pl. a kamera minden képkockát feldolgoz) perceken belül felmelegíti a telefont és lemeríti az akkumulátort. A Cloud AI-hívások viszont lemerítik az akkumulátort azáltal, hogy a hálózati rádiót (az adatokat küldő és fogadó antennát) folyamatosan bekapcsolva tartják. Megoldások: csak szükség esetén futtassa az eszközön lévő modellt, minden képkocka helyett másodpercenként néhányszor mintát vegyen a kamerából, felhőkérések kötegelt küldése, töltés közben vagy üresjáratban végezze el a nehéz terheket.

Figyelem: A folyamatosan futó mesterséges intelligencia funkció (élő fordítás, folyamatos objektumfelismerés) nagyon gyorsan lemerítheti az akkumulátort, felmelegítheti az eszközt, és a rendszer lefojthatja. Olyan funkció, amely miatt a felhasználó úgy érzi, hogy ez a költség törlődik. Mindig megkérdezem az AI-t, hogy "hogyan tehetem ezt a funkciót akkumulátorbaráttá?" Tedd fel a kérdést is.

Az optimalizálás lépései

  1. Mérje meg. Találja meg az igazi szűk keresztmetszetet a Profilerrel; ne tippelj.
  2. Válassza ki a legnagyobb problémát. Ne hajszoljon 1%-os javulást; Törekedjen a legdrágább tranzakcióra.
  3. Kérdezze meg az AI-t az adatokkal. Kérjen optimalizálási javaslatot profilkimenettel + releváns kóddal.
  4. Alkalmazza és mérje meg újra. Valós a javulás? Leesett a szám?
  5. Regressziós kontroll. Eltört valamit az optimalizálás? Ismételje meg a vizuális és funkcionális tesztelést.

három mini tok

1. eset – Rossz helyen végzett keresés. Az egyik csapat úgy gondolta, hogy a listák elakadtak, és hetekig átdolgozták a görgetőkódot, hiába. Amikor átvették a profilkészítőt és betáplálták az adatokat az MI-be, kiderült, hogy az igazi szűk keresztmetszet a hálózaton keresztül minden sorral újratöltött képek jelentik. A vizuális gyorsítótár hozzáadásával a folyékonyság 42 FPS-ről 60 FPS-re nőtt. Tanulság: a mérés elkerüli a hetekig tartó hiábavaló erőfeszítéseket.

2. eset – Akkumulátor szörny funkció. Egy fordítóalkalmazás hozzáadott élő szövegfordítást kamerával; A felhasználók panaszkodtak, hogy "a telefon 15 perc alatt felmelegedett, és az akkumulátor 30%-a lemerült". Amikor az MI-vel konzultáltak, a kamera másodpercenként 30 képkockát dolgozott fel; Amikor ezt 5 képkockára csökkentették, és az eredményt néhány képkocka különbséggel frissítették, az akkumulátorfogyasztás harmadára csökkent, a minőség pedig nem volt észrevehető. Tanulság: Az AI-t mindig az akkumulátorszemmel állítsa be.

3. eset – Lassú kezdés. Egy alkalmazás 4,5 másodperc alatt megnyílt; A felhasználók 20%-a kilépett az indításkor. A profil azt mutatta, hogy minden kezdeti munka (analitika, adatbetöltés, modell-előkészítés) szekvenciálisan történt a főszálon. Az AI-javaslattal ezeket elhalasztották és háttérbe szorították; A nyitási idő 1,3 másodpercre csökkent, az elhagyási arány pedig felére csökkent. Tanulság: kezdetben csak a lényeges munkát végezze el.

Gyenge felszólítás / Erős felszólítás

Gyenge felszólítás: "Az alkalmazásom lassú, gyorsítsa fel."

Hatékony prompt: "A lista görgetése elakad (jank) az Android-alkalmazásomban. Profilkészítő adatok: bindImageView 28 ms-ot vesz igénybe minden képkocka, a képek minden alkalommal betöltődnek a hálózatról, nincs gyorsítótár. Kapcsolódó kód: [RecyclerView adapter kód]. Javasolja a 3 leghatékonyabb optimalizálást hatások sorrendjében. Csökkentse a várható képminőséget, és ne csökkentse a lehetséges mellékhatásokat."

Másolható sablonok

Szűk keresztmetszet-elemző sablon: "Értelmezze a következő profiladatokat, és keresse meg a 3 legdrágább műveletet: [profilozó kimenet]. Javasoljon mindegyik lehetséges okát és konkrét optimalizálását. Először adja meg a legnagyobb hatást."

Akkumulátor-optimalizálási sablon: "Ez a funkció gyorsan lemeríti az akkumulátort: [funkció, például állandó hely]. Legyen akkumulátorbarát: - Csökkentse a mintavételi gyakoriságot - Korlátozás a háttérben - Kötegelt feldolgozás - Csak akkor futtassa, ha szükséges. A megoldások rendezése a felhasználói élmény megzavarása nélkül. [kód]"

Indítási gyorsítósablon: "Fel kell gyorsítani az alkalmazás indítását. Jelenleg az indításkor végzett dolgok: [lista]. Melyiket lehet elhalasztani, háttérbe állítani vagy lustán betölteni? A lényegeseket különítse el. [kód]"

AI funkció költségsablonja: "Értékelje ki az általam hozzáadott [eszközön található modell / felhőhívás] funkció teljesítményét és akkumulátorköltségét. Sorolja fel a mérendő mutatókat és a költségcsökkentési stratégiákat. [kód]."

Gyakori hibák

  • Optimalizálás mérés nélkül. Az igazi szűk keresztmetszet gyakran a várttól eltérő helyen van.
  • Kis nyereség hajszolása. Az 1%-os javulás helyett a legdrágább akciót célozza meg.
  • Az AI-funkciók akkumulátorköltségének figyelmen kívül hagyása. A folyamatosan futó modell/kamera/hálózat felemészti az akkumulátort.
  • Fárasztja a főszálat. Az indítás és a görgetés nehéz emelése nem lehet az UI szálon.
  • Optimalizálás után nincs újramérés. Győződjön meg arról, hogy a javulás valódi, és nem tör el semmit.
  • A teljesítmény mérése az emulátorban. Az eszköz tényleges sebessége, hőmérséklete és akkumulátora teljesen más.

Összefoglalva

A teljesítmény és az akkumulátor a mobilalkalmazások túlélésének kérdése. Az aranyszabály: előbb mérj, utána optimalizálj. A profiladatok megadása az AI-nak felgyorsítja az értelmezést; A „gyorsítás” mérhetetlen vágya vak találgatásokhoz vezet. Törekedjen a legdrágább tranzakcióra, ne hajszoljon kis haszonra. Az ebben a modulban hozzáadott mesterséges intelligencia-képességek nagy teljesítményűek, de akkumulátor- és processzorköltségekkel járnak; Kezelje ezt a költséget a mintavételezési gyakoriság csökkentésével, a kötegelésekkel és csak akkor, ha szükséges. Minden optimalizálás után végezzen mérést a valódi eszközön.

Pályázati feladat

Importáljon egy profilt egy alkalmazásban (saját projektben vagy példában), vagy hozzon létre egy mintaprofil kimenetet, és értelmezze az AI-val a "Szűk keresztmetszet-elemző sablonnal". Alkalmazza a legnagyobb hatásoptimalizálást, és mérje meg újra: valóban csökkent a szám? Ezenkívül értékelje az ebben a modulban hozzáadott mesterséges intelligencia-funkciót (eszközön lévő modell vagy felhőhívás) az akkumulátor töltöttsége szempontjából az „AI szolgáltatás költségsablonja” segítségével, és határozzon meg legalább egy akkumulátorbarát beállítást.

ellenőrző lista

  • [ ] Az optimalizálás előtt kaptam profilt, nem tippeltem
  • [ ] A legdrágább kereskedésre törekedtem, nem szórtam rá a kis haszonra
  • [ ] Az AI profil adatait konkrét számokban adtam meg
  • [ ] Felmértem az AI-funkciók akkumulátor/processzor költségét
  • [ ] Eltávolítottam a nehézemelést a főszálról
  • [ ] Optimalizálás után újra mértem a valós eszközön és ellenőriztem a regressziót