Išnagrinėkite apytikslį skaičiavimą – paradigmą, kuri mainais už tikslumą siūlo didesnį našumą ir energijos efektyvumą. Sužinokite apie jo taikymą ir iššūkius.
Netobulumo priėmimas: išsami apytikslio skaičiavimo ir tikslumo kompromiso analizė
Nenumaldomai siekdami greitesnių, galingesnių ir efektyvesnių skaičiavimų, tradiciškai vadovavomės pagrindine prielaida: kiekvienas skaičiavimas turi būti visiškai tikslus. Nuo finansinių operacijų iki mokslinių simuliacijų, bitų lygio tikslumas buvo auksinis standartas. Bet kas, jei šis tobulumo siekis tampa kliūtimi? Kas, jei didelei daliai šiuolaikinių programų būti „pakankamai geram“ yra ne tik priimtina, bet ir kur kas geriau?
Sveiki atvykę į apytikslio skaičiavimo pasaulį – revoliucinę paradigmą, kuri meta iššūkį mūsų įprastam teisingumo apibrėžimui. Tai projektavimo filosofija, kuri sąmoningai įveda kontroliuojamas, valdomas klaidas į skaičiavimus, siekiant žymiai padidinti našumą, energijos vartojimo efektyvumą ir išteklių panaudojimą. Tai nėra susiję su sugedusių sistemų kūrimu; tai – protingas nedidelio, dažnai nepastebimo, tikslumo kiekio iškeitimas į didžiulį pagerėjimą rodiklių, kurie šiandien yra svarbiausi: greičio ir energijos suvartojimo.
Kodėl dabar? Apytikslį skaičiavimą skatinančios jėgos
Perėjimas prie apytikslio skaičiavimo nėra atsitiktinis. Tai tiesioginis atsakas į fundamentalias fizines ir technologines ribas, su kuriomis susiduriame XXI amžiuje. Keletas pagrindinių veiksnių susijungia, kad ši paradigma taptų ne tik įdomi, bet ir būtina.
Eros pabaiga: Moore'o dėsnis ir Dennardo mastelio keitimas
Dešimtmečius technologijų pramonė naudojosi dviem nuspėjamomis tendencijomis. Moore'o dėsnis teigė, kad tranzistorių skaičius luste padvigubėja maždaug kas dvejus metus, o tai lemia eksponentinį apdorojimo galios augimą. Tai papildė Dennardo mastelio keitimas, kuris teigė, kad tranzistoriams mažėjant, jų galios tankis išlieka pastovus. Tai reiškė, kad galėjome sutalpinti daugiau tranzistorių, o lustas proporcingai nekaista.
Maždaug 2000-ųjų viduryje Dennardo mastelio keitimas faktiškai baigėsi. Tranzistoriai tapo tokie maži, kad nuotėkio srovės tapo didele problema, ir mes nebegalėjome proporcingai mažinti įtampos. Nors Moore'o dėsnis sulėtėjo, jo pagrindinis iššūkis dabar yra galia. Mes vis dar galime pridėti daugiau tranzistorių, bet negalime jų visų įjungti visu greičiu vienu metu, neištirpdę lusto. Tai žinoma kaip „tamsiojo silicio“ problema ir sukėlė skubų poreikį ieškoti naujų būdų pagerinti energijos vartojimo efektyvumą.
Energijos siena
Nuo milžiniškų, miesto dydžio duomenų centrų, maitinančių debesiją, iki mažų, baterijomis maitinamų jutiklių daiktų internete (IoT), energijos suvartojimas yra kritinis apribojimas. Duomenų centrai sunaudoja didelę dalį pasaulio elektros energijos, o jų energijos pėdsakas yra pagrindinės veiklos išlaidos ir aplinkosaugos problema. Kitame spektro gale, IoT įrenginio naudingumą dažnai apibrėžia jo baterijos veikimo laikas. Apytikslis skaičiavimas siūlo tiesioginį kelią sumažinti energijos suvartojimą, supaprastinant pagrindines aparatinės ir programinės įrangos operacijas.
Klaidoms atsparių programų iškilimas
Galbūt svarbiausias veiksnys yra besikeičianti mūsų darbo krūvių prigimtis. Daugelis svarbiausių ir skaičiavimams imliausių šių dienų programų turi būdingą atsparumą mažoms klaidoms. Apsvarstykite:
- Mašininis mokymasis (DI): Neuroninio tinklo sprendimas klasifikuoti vaizdą kaip „katę“ ar „šunį“ yra pagrįstas statistinėmis tikimybėmis. Mažas vieno iš milijonų svorių vertės pokytis vargu ar pakeis galutinį, aukšto lygio rezultatą.
- Daugialypės terpės apdorojimas: Žmogaus suvokimo sistema yra atlaidi. Jūs nepastebėsite, jei keli pikseliai viename 4K vaizdo kadre bus šiek tiek kitokios spalvos, arba jei garso sraute bus menkas, negirdimas artefaktas.
- Didžiųjų duomenų analizė: Analizuojant interneto masto duomenų rinkinius siekiant nustatyti tendencijas, svarbiausia yra rezultato statistinis reikšmingumas. Tiksli kelių atskirų duomenų taškų vertė iš milijardų dažnai yra nereikšmingas triukšmas.
Šioms programoms reikalauti bitų lygio tikslumo yra skaičiavimo perteklius. Tai tarsi naudoti mikrometrą futbolo aikštei matuoti – papildomas tikslumas nesuteikia praktinės naudos ir kainuoja didžiulį laiko ir energijos kiekį.
Pagrindinis principas: tikslumo, našumo ir energijos trikampis
Apytikslis skaičiavimas veikia pagal paprastą, bet galingą kompromisą. Įsivaizduokite tai kaip trikampį su trimis viršūnėmis: Tikslumas, Našumas (Greitis) ir Energija. Tradiciniame skaičiavime tikslumas yra fiksuotas ties 100%. Norėdami pagerinti našumą ar sumažinti energijos suvartojimą, turime diegti naujoves kitose srityse (pvz., architektūroje ar medžiagų moksle), o tai tampa vis sunkiau.
Apytikslis skaičiavimas paverčia tikslumą lanksčiu kintamuoju. Leidžiant nedidelį, kontroliuojamą tikslumo sumažinimą, mes atveriame naujas optimizavimo dimensijas:
- Tikslumas vs. Greitis: Paprastesni skaičiavimai vykdomi greičiau. Praleisdami sudėtingus veiksmus ar naudodami mažiau tikslią logiką, galime dramatiškai padidinti pralaidumą.
- Tikslumas vs. Energija: Paprastesnės loginės grandinės reikalauja mažiau tranzistorių ir gali veikti esant žemesnei įtampai, o tai lemia ženklų tiek statinės, tiek dinaminės galios suvartojimo sumažėjimą.
- Tikslumas vs. Plotas/Kaina: Apytiksliai aparatinės įrangos komponentai gali būti mažesni, o tai reiškia, kad daugiau apdorojimo vienetų gali tilpti viename luste, sumažinant gamybos kaštus ir didinant paralelumą.
Tikslas yra rasti „aukso vidurį“ kiekvienai programai – tašką, kuriame pasiekiame maksimalų našumo ir energijos padidėjimą su minimaliu, priimtinu kokybės praradimu.
Kaip tai veikia: apytikslio skaičiavimo metodai
Aproksimaciją galima įgyvendinti kiekviename skaičiavimo lygmenyje, nuo fundamentalių loginių elementų procesoriuje iki aukšto lygio algoritmų programoje. Šie metodai dažnai naudojami kartu, siekiant maksimaliai padidinti jų naudą.
Aparatinės įrangos lygio aproksimacijos
Šie metodai apima fizinių kompiuterio komponentų pertvarkymą, kad jie būtų iš prigimties netikslūs.
- Apytikslės aritmetinės grandinės: CPU statybiniai blokai yra aritmetinės grandinės, tokios kaip sumatoriai ir daugikliai. Tikslus 32 bitų daugiklis yra sudėtinga, daug energijos reikalaujanti logikos dalis. Apytikslis daugiklis gali būti suprojektuotas taip, kad ignoruotų mažiausiai reikšmingų bitų skaičiavimus. Tai lemia grandinę, kuri yra žymiai mažesnė, greitesnė ir efektyvesnė energijos požiūriu, o galutiniame produkte sukelia tik mažą klaidą.
- Įtampos viršijimas (VOS): Kiekvienas lustas turi minimalią saugią darbinę įtampą. Žemiau šios ribos gali atsirasti laiko klaidų, nes signalai neturi pakankamai energijos, kad laiku praeitų per grandines. VOS sąmoningai veikia lustą žemiau šios saugios įtampos. Tai drastiškai taupo energiją, bet sukelia retkarčiais pasitaikančias laiko klaidas. Apytiksliame kontekste šios atsitiktinės, nedažnos klaidos yra priimtinos, jei jų poveikis galutiniam rezultatui yra nereikšmingas.
- Apytikslė atmintis: Atminties sistemos, tokios kaip SRAM ir DRAM, yra dideli energijos vartotojai. Apytiksliai atminties projektai leidžia didesnį klaidų lygį, siekiant sutaupyti energijos. Pavyzdžiui, DRAM ląstelių atnaujinimo dažnis galėtų būti sumažintas, taupant energiją su rizika, kad kai kurie bitai apsivers. Atmintyje saugomame vaizde keli apsivertę bitai gali pasireikšti kaip nepastebimas „mirgėjimo“ triukšmas.
Programinės įrangos lygio aproksimacijos
Šiuos metodus dažnai galima įgyvendinti be jokios specialios aparatinės įrangos, todėl jie yra prieinami platesniam kūrėjų ratui.
- Ciklų perforacija: Daugelyje algoritmų daugiausiai laiko reikalaujanti dalis yra ciklas, kuris vyksta milijonus ar milijardus kartų. Ciklų perforacija sistemingai praleidžia tam tikrą skaičių šių iteracijų. Pavyzdžiui, vietoj to, kad apdorotų kiekvieną pikselį vaizdo filtre, algoritmas galėtų apdoroti kas antrą pikselį ir interpoliuoti rezultatus. Tai gali beveik perpus sumažinti vykdymo laiką su minimaliu poveikiu vaizdo kokybei.
- Tikslumo keitimas (kvantavimas): Šiuolaikiniai kompiuteriai dažnai pagal nutylėjimą naudoja 64 bitų (dvigubo tikslumo) arba 32 bitų (viengubo tikslumo) slankiojo kablelio skaičius. Tačiau daugeliui programų nereikia tokio tikslumo lygio. Naudodami mažesnius duomenų tipus, pvz., 16 bitų pusinio tikslumo slankiojo kablelio skaičius ar net 8 bitų sveikuosius skaičius, galime žymiai sumažinti atminties pėdsaką, sumažinti atminties pralaidumo reikalavimus ir įgalinti greitesnius skaičiavimus specializuotoje aparatinėje įrangoje (pvz., GPU ir DI greitintuvuose).
- Užduočių praleidimas: Realaus laiko sistemose kartais geriau atmesti užduotį, nei viską atidėti. Įsivaizduokite savavaldžio automobilio suvokimo sistemą. Jei vieno jutiklio kadro apdorojimas trunka per ilgai ir atkeliavo naujas, aktualesnis kadras, geriau praleisti senąjį ir dirbti su dabartiniais duomenimis, kad būtų išlaikytas realaus laiko atsakas.
- Memorizavimas su aproksimacija: Memorizavimas yra klasikinė optimizavimo technika, kai brangių funkcijų iškvietimų rezultatai yra talpinami į talpyklą (cache). Apytikslis memorizavimas tai išplečia, leisdamas „pakankamai artimai“ įvesčiai gauti talpykloje esantį rezultatą. Pavyzdžiui, jei prašoma `f(2.001)`, o `f(2.0)` jau yra talpykloje, sistema gali grąžinti saugomą rezultatą, sutaupydama brangų perskaičiavimą.
Taikymas realiame pasaulyje: kur netobulumas suspindi
Teorinė apytikslio skaičiavimo nauda tampa apčiuopiama, kai taikoma realioms problemoms spręsti. Tai nėra futuristinė koncepcija; ją jau naudoja didžiosios technologijų kompanijos visame pasaulyje.
Mašininis mokymasis ir DI
Tai, be abejonės, yra pagrindinė apytikslio skaičiavimo taikymo sritis. Didelių neuroninių tinklų mokymas ir vykdymas reikalauja neįtikėtinai daug išteklių. Tokios kompanijos kaip „Google“ (su savo „Tensor Processing Units“, arba TPU) ir „NVIDIA“ (su „Tensor Cores“ savo GPU) sukūrė specializuotą aparatinę įrangą, kuri puikiai atlieka mažo tikslumo matricų daugybą. Jos įrodė, kad naudojant sumažinto tikslumo formatus, tokius kaip „Bfloat16“ ar „INT8“, galima dramatiškai pagreitinti mokymą ir išvadų darymą beveik neprarandant modelio tikslumo, o tai įgalina DI revoliuciją, kurią matome šiandien.
Daugialypės terpės apdorojimas
Kiekvieną kartą, kai transliuojate vaizdo įrašą „YouTube“ ar „Netflix“, jūs naudojatės su aproksimacija susijusiais principais. Vaizdo kodekai (pvz., H.264 ar AV1) iš esmės yra „nuostolingi“. Jie išmeta vaizdinę informaciją, kurios žmogaus akis greičiausiai nepastebės, siekdami neįtikėtinų glaudinimo santykių. Apytikslis skaičiavimas gali tai dar labiau pastūmėti, įgalindamas realaus laiko vaizdo atvaizdavimą ir efektus mažos galios mobiliuosiuose įrenginiuose, apskaičiuojant spalvas ar apšvietimą su pakankamu tikslumu, kad atrodytų realistiškai.
Didžiųjų duomenų analizė ir moksliniai skaičiavimai
Ieškant konkrečios genų sekos milžiniškoje genomikos duomenų bazėje ar analizuojant petabaitus jutiklių duomenų iš dalelių greitintuvo, aproksimacija gali būti neįkainojama. Algoritmai gali būti sukurti taip, kad atliktų pradinę, greitą „apytikslę paiešką“, siekiant greitai nustatyti perspektyvias sritis, kurias vėliau galima analizuoti visu tikslumu. Šis hierarchinis požiūris sutaupo milžinišką laiko kiekį.
Daiktų internetas (IoT) ir krašto įrenginiai
Baterija maitinamam aplinkos jutikliui ilgaamžiškumas yra viskas. Įrenginio tikslas yra pranešti apie aplinkos temperatūrą. Ar svarbu, ar jis praneša 22,5°C, ar 22,51°C? Visiškai ne. Naudojant apytikslias grandines ir agresyvias energijos taupymo technikas, to jutiklio baterijos veikimo laikas gali būti pratęstas nuo mėnesių iki metų, o tai yra esminis pokytis diegiant didžiulius, mažai priežiūros reikalaujančius jutiklių tinklus išmaniesiems miestams, žemės ūkiui ir aplinkos stebėsenai.
Apytikslio skaičiavimo iššūkiai ir ribos
Nors perspektyvos yra didžiulės, kelias į platų pritaikymą nėra be didelių kliūčių. Tai aktyvi ir jaudinanti tyrimų sritis tiek akademinėje bendruomenėje, tiek pramonėje.
- Kokybės kontrolė ir klaidų ribojimas: Didžiausias iššūkis yra aproksimacijos valdymas. Kaip mes galime garantuoti, kad klaida neviršys priimtinos ribos? Mums reikia patikimų metodų analizuoti ir apriboti klaidą, užtikrinant, kad maža, kontroliuojama aproksimacija nesukeltų kaskados ir nepasklistų per sistemą, sukeldama katastrofišką gedimą. Savavaldis automobilis, klaidingai klasifikuojantis „Stop“ ženklą dėl per didelės aproksimacijos, yra nepriimtinas rezultatas.
- Programuotojų ir įrankių palaikymo trūkumas: Dabartinė programavimo ekosistema sukurta tikslumui. Kūrėjams trūksta kalbų, kompiliatorių ir derintuvų, kad galėtų lengvai nurodyti „aproksimuojamumą“. Mums reikia įrankių, kurie leistų programuotojui tiesiog pažymėti funkciją ar duomenų struktūrą kaip „apytikslę“, o kompiliatorius ir vykdymo sistema automatiškai valdytų kompromisus.
- Derinimas ir patikra: Kaip derinti programą, kuri yra sukurta gaminti kintamus ar šiek tiek neteisingus rezultatus? Tradicinis derinimas remiasi atkuriamu, deterministiniu elgesiu. Derinant apytikslias programas, reikia iš esmės pakeisti mąstyseną, sutelkiant dėmesį į statistines savybes ir išvesties kokybės pasiskirstymus, o ne į tikslias vertes.
- Perkeliamumas ir nuspėjamumas: Apytikslė programa gali duoti aukštos kokybės rezultatą vieno tipo aparatinėje įrangoje, bet nepriimtinai prastą rezultatą kitoje. Užtikrinti nuspėjamą paslaugų kokybę (QoS) skirtingose platformose yra didelis iššūkis programinės įrangos kūrėjams ir sistemų architektams.
Ateitis yra apytikslė: praktinės įžvalgos profesionalams
Apytikslis skaičiavimas reiškia paradigmos pokytį, kuris paveiks profesionalus visame technologijų spektre. Suprasti jo principus tampa labai svarbu norint išlikti konkurencingiems.
Programinės įrangos kūrėjams ir duomenų mokslininkams:
Pradėkite galvoti apie savo programas atsparumo klaidoms požiūriu. Nustatykite modulius, kuriuose tikslumas yra kritiškai svarbus (pvz., finansiniai skaičiavimai, saugumas), ir tuos, kuriuose jis nėra (pvz., vartotojo sąsajos animacijos, statistinių duomenų apdorojimas). Eksperimentuokite su mažesnio tikslumo duomenų tipais savo mašininio mokymosi modeliuose. Profiluokite savo kodą, kad rastumėte skaičiavimo „karštuosius taškus“ ir paklauskite: „O kas, jei ši dalis neturėtų būti tobula?“
Aparatinės įrangos architektams ir lustų projektuotojams:
Specializuotos aparatinės įrangos ateitis slypi aproksimacijos priėmime. Projektuodami naujos kartos ASIC ar FPGA lustus, skirtus DI, signalų apdorojimui ar kompiuterinei regai, įtraukite apytikslius aritmetinius vienetus. Tyrinėkite naujas atminties architektūras, kurios mainais už nedidelį, ištaisomą klaidų lygį siūlo mažesnį energijos suvartojimą ir didesnį tankį. Didžiausias našumo ir energijos suvartojimo santykio prieaugis bus pasiektas bendrai projektuojant aparatinę ir programinę įrangą, atsižvelgiant į aproksimaciją.
Verslo lyderiams ir technologijų strategams:
Pripažinkite, kad „pakankamai geras“ skaičiavimas yra galingas konkurencinis pranašumas. Tai gali lemti produktus, kuriuos pigiau pagaminti, greičiau paleisti ir kurie yra tvaresni. Lenktynėse dėl DI dominavimo ir daiktų interneto plėtros, įmonės, kurios įvaldys tikslumo ir efektyvumo kompromisą, bus tos, kurios pasaulinei rinkai pateiks inovatyviausius ir ekonomiškiausius sprendimus.
Išvada: naujos „teisingumo“ apibrėžties priėmimas
Apytikslis skaičiavimas nėra susijęs su ydingų rezultatų priėmimu. Tai – teisingumo apibrėžimo peržiūra programos kontekste. Tai pragmatiškas ir protingas atsakas į fizines skaičiavimo ribas, paverčiantis pačią „klaidos“ sąvoką iš problemos, kurią reikia pašalinti, į išteklių, kurį reikia valdyti. Apgalvotai paaukodami mums nereikalingą tikslumą, galime atverti našumą ir efektyvumą, kurių taip trokštame.
Judant į erą, kurioje dominuoja duomenimis pagrįstos, suvokimu paremtos programos, gebėjimas skaičiuoti „būtent tiek, kiek reikia“ bus sudėtingos ir tvarios technologijos ženklas. Skaičiavimo ateitis daugeliu atžvilgių nebus visiškai tiksli, bet ji bus neįtikėtinai protinga.