Kaip „Qualcomm“ padarė didžiulius „Snapdragon 865“ AI patobulinimus

„Qualcomm“ padarė didžiulius dirbtinio intelekto šuolius su naujuoju „Snapdragon 865 SoC“. Analizuojame pakeitimus, kuriuos „Qualcomm“ padarė, kad paspartintų mašininį mokymąsi.

Atrodo, kad negalime nė dienos nepamatyti „dirbtinio intelekto“ naujienose, o ši praėjusi savaitė buvo ne išimtis dėl „Snapdragon Tech Summit“. Kiekvienais metais „Qualcomm“ pristato daugybę patobulinimų, kuriuos teikia „Hexagon DSP“ ir „Qualcomm AI Engine“, terminas, kurį jie vartoja visai nevienalytei skaičiavimo platformai – CPU, GPU ir DSP – kalbėdami apie AI darbo krūviai. Prieš kelerius metus „Qualcomm“ reikalavimas nukreipti pokalbį nuo tradicinių pokalbių temų, tokių kaip procesoriaus našumo kasmet tobulinimas, atrodė šiek tiek keistai. Tačiau 2019 m. ir naudojant „Snapdragon 865“ matome, kad heterogeninis skaičiavimas iš tikrųjų yra jų mobiliojo skaičiavimo vairas, nes AI ir atrodo, kad aparatinės įrangos pagreitintas darbo krūvis patenka į daugybę naudojimo atvejų ir programų, nuo socialinės žiniasklaidos iki kasdienybės paslaugos.

„Snapdragon 865“ pristato „Qualcomm“ 5-osios kartos dirbtinio intelekto variklį, o kartu su juo žymiai pagerina našumą ir energijos vartojimo efektyvumą, tačiau to ir reikia tikėtis. Daugelyje specifikacijų, našumo rodiklių, įmantrių inžinerinių terminų ir varginančių rinkodaros žodžių lengva pamiršti, ką šie patobulinimai iš tikrųjų reiškia. Ką jie apibūdina? Kodėl šie naujinimai tokie reikšmingi tiems, kurie šiandien diegia dirbtinį intelektą savo programose, o galbūt dar svarbiau – tiems, kurie ketina tai padaryti ateityje?

Šiame straipsnyje apžvelgsime prieinamą, tačiau nuodugnią „Qualcomm AI Engine“ apžvalgą, išnagrinėsime jo istoriją, komponentus ir „Snapdragon 865“ atnaujinimus, o svarbiausia, kodėl arba kaip kiekvienas iš jų prisidėjo prie šiandieninių išmaniųjų telefonų naudojimo – nuo ​​juokingų filtrų iki skaitmeninių asistentų.

„Hexagon DSP“ ir „Qualcomm AI Engine“: kai prekės ženklas turi skirtumą

Nors negalėjau dalyvauti šios savaitės Snapdragon Tech Summit susitikime, vis dėlto dalyvavau kas antrame nuo 2015 m. Jei prisimeni, kad buvo „Snapdragon 810“ karštos netvarkos metai, todėl Niujorko „Chelsea“ lofto žurnalistai nekantrauja išsiaiškinti, kaip „Snapdragon 820“ išpirks įmonę. Ir tai buvo puikus mikroschemų rinkinys, gerai: jis pažadėjo sveikus našumo patobulinimus (be jokio stabdymo), grįžtant prie tuomet išbandytų ir tikrų pasirinktinių branduolių, kuriais garsėjo „Qualcomm“. Tačiau taip pat prisimenu labai subtilų pranešimą, į kurį, žvelgiant atgal, turėjo būti skiriama daugiau dėmesio: antrosios kartos Hexagon 680 DSP ir jo viena instrukcija, keli duomenys (SIMD) šešiakampio vektoriaus plėtiniai arba HVX. Galbūt, jei inžinieriai nebūtų pavadinę šios funkcijos, ji būtų sulaukusi tokio dėmesio, kokio nusipelnė.

Šis koprocesorius leidžia skaliarinio DSP įrenginio aparatinės įrangos gijomis pasiekti HVX „kontekstus“ (registro failus), kad būtų galima apdoroti platų vektorių. Tai leido perkelti didelę skaičiavimo darbo apkrovą iš energijos reikalaujančio procesoriaus arba GPU į energiją taupantis DSP, kad vaizdo gavimo ir kompiuterinio matymo užduotys būtų vykdomos žymiai pagerintu našumu už milivatą. Jie puikiai tinka taikyti identiškas operacijas gretiems vektoriniams elementams (iš pradžių tik sveikiesiems skaičiams), todėl jie puikiai tinka kompiuterinio matymo darbo krūviams. Anksčiau esame parašę išsamų straipsnį apie DSP ir HVX, pažymėdamas, kad HVX architektūra puikiai tinka lygiagretavimui ir, žinoma, didelių įvesties vektorių apdorojimui. Tuo metu „Qualcomm“ reklamavo tiek DSP, tiek HVX beveik vien apibūdindama jų patobulinimus. atneštų kompiuterio regėjimui darbo krūvius, tokius kaip Harris kampinis detektorius ir kiti stumdomi langai metodus.

DSP, jo vektorius, atsirado tik tada, kai atsirado gilus mokymasis vartotojų mobiliosiose programose apdorojimo įrenginiai (o dabar tenzoriaus greitintuvas) susietų su AI ir neuroniniais tinklais, ypač. Tačiau žiūrint atgal, tai visiškai logiška: skaitmeninio signalo procesoriaus (DSP) architektūra, iš pradžių sukurta skaitmeniniam apdorojimui. realaus pasaulio ar analoginio signalo įvestis, tinka daugeliui tų pačių darbo krūvių, kaip ir daugelis mašininio mokymosi algoritmų ir neuroninių tinklus. Pavyzdžiui, DSP yra pritaikyti filtrų branduoliams, konvoliucijos ir koreliacijos operacijoms, 8 bitų skaičiavimams, daugybei tiesinė algebra (vektoriaus ir matricos sandaugai) ir daugybos-akumuliavimo (MAC) operacijos, kurios yra efektyviausios, kai lygiagretus. Neuroninio tinklo veikimo laikas taip pat labai priklauso nuo didelių vektorių, matricų ir (arba) tenzorių dauginimo, todėl natūralu, kad DSP našumo pranašumai tiksliai perkeliami į neuroninių tinklų architektūrą kaip gerai. Trumpai apžvelgsime šią temą!

Vėlesniais metais „Qualcomm“ ir toliau pabrėžė, kad nesiūlo tiesiog mikroschemų rinkiniai, bet mobiliosios platformos, ir kad jie nesikoncentruoja tiesiog tobulinant tam tikrus komponentus, tačiau pateikiant „heterogeninius“ skaičiavimus. 2017 m. jie išleido savo Snapdragon Neural Processing Engine SDK (skirtas vykdymo laikui pagreitinti) Qualcomm kūrėjų tinkle, o 2018 m. paskelbė „Qualcomm Artificial Intelligence Engine“, kad sujungtų kelis su dirbtiniu intelektu palaikančius aparatūros (CPU, GPU, DSP) ir programinės įrangos komponentus į vieną. vardas. Naudodami šią naudingą nomenklatūrą, jie galėjo tvarkingai reklamuoti savo AI našumo patobulinimus tiek Snapdragon 855, tiek „Snapdragon 865“, galintis patogiai nurodyti trilijonų operacijų per sekundę skaičių (TOPS) ir procentą per metus. patobulinimai. Panaudoti kartos CPU, GPU ir DSP patobulinimus – visi jie yra orientuoti į DI atnaujinimai - įmonė gali paskelbti įspūdingus palyginimus su konkurentais, kuriuos mes peržiūrėsime netrukus. Dėl pastarojo meto įmonės rinkodaros pastangų ir vieningų, nuoseklių pranešimų apie heterogeninį skaičiavimą, jų AI prekės ženklas pagaliau įgauna trauką tarp žurnalistų ir technologijų entuziastų.

Neuroninių tinklų demistifikavimas: kasdienė tiesinės algebros krūva

Norėdami atskirti daug žargono, su kuriuo susidursime vėliau straipsnyje, mums reikia trumpo pradmenų apie kas yra neuroninis tinklas ir ko reikia, kad tai būtų greičiau. Noriu labai trumpai apžvelgti kai kuriuos matematinius neuroninių tinklų pagrindus, vengiant kuo daugiau žargono ir žymėjimo. Šio skyriaus tikslas yra tiesiog nustatyti, ką daro neuroninis tinklas, iš esmės: aritmetines operacijas ji vykdo, o ne teorinį pagrindą, pagrindžiantį minėtas operacijas (tai daug sudėtingiau!). Nedvejodami pereikite prie kito skyriaus, jei norite pereiti tiesiai prie „Qualcomm AI Engine“ atnaujinimų.

„Vektorinė matematika yra gilaus mokymosi pagrindas“. – Travis Lanier, „Qualcomm“ produktų valdymo vyresnysis direktorius 2017 m. „Snapdragon Tech Summit“ susitikime

Žemiau rasite labai tipišką, visiškai prijungto neuroninio tinklo diagramą. Tiesą sakant, diagramoje visas procesas atrodo šiek tiek sudėtingesnis nei yra (bent jau kol priprasite). Mes apskaičiuosime pirmyn praėjimą, kurį galiausiai daro tinklas, kai sukuria išvada, terminas, su kuriuo susidursime ir vėliau straipsnyje. Šiuo metu mes kalbėsime tik apie mašiną ir jos dalis, trumpai paaiškindami kiekvieną komponentą.

Neuroninį tinklą sudaro nuoseklūs sluoksniai, kiekvienas sudarytas iš kelių „neuronų“ (schemoje pavaizduotų kaip apskritimai), sujungtų svoriai (schemoje pavaizduotos kaip linijos). Apskritai, yra trijų rūšių sluoksniai: įvesties sluoksnis, kuri paima neapdorotą įvestį; paslėptus sluoksnius, kurie apskaičiuoja matematines operacijas iš ankstesnio sluoksnio, ir išvesties sluoksnis, kuriame pateikiamos galutinės prognozės. Šiuo atveju turime tik vieną paslėptą sluoksnį su trimis paslėpti vienetai. The įvestis susideda iš vektoriaus, masyvo arba tam tikro matmens ar ilgio skaičių sąrašo. Tarkime, pavyzdyje turėsime dvimatę įvestį [1.0, -1.0]. Čia, išvestis tinklo sudaro skaliarinis arba vienas skaičius (ne sąrašas). Kiekvienas paslėptas vienetas yra susietas su rinkiniu svoriai ir a šališkumo terminas, rodomas šalia kiekvieno mazgo ir po juo. Norėdami apskaičiuoti svertinė suma Vieneto išvestis, kiekvienas svoris padauginamas iš kiekvieno atitinkamo įvesties, o tada produktai sudedami. Tada mes tiesiog pridėsime šališkumo terminą prie šios produktų sumos, kad gautume neurono išvestį. Pavyzdžiui, su mūsų įvestimi [1.0,-1.0], pirmojo paslėpto vieneto išvestis bus 1.0*0.3 + (-1.0) * 0.2 + 1.0 = 1.1. Paprasta, tiesa?

Kitas diagramos žingsnis reiškia an aktyvinimo funkcija, ir tai leis mums sukurti kiekvieno paslėpto sluoksnio išvesties vektorių. Mūsų atveju naudosime labai populiarų ir itin paprastą ištaisytas tiesinis vienetas arba ReLU, kuris paims įvesties skaičių ir išves (i) nulį, jei šis skaičius yra neigiamas, arba nulį (ii) patį įvesties skaičių, jei skaičius yra teigiamas. Pavyzdžiui, ReLU(-0,1) = 0, bet ReLU(0,1) = 0,1. Pagal mūsų įvesties pavyzdį plinta per tą pirmąjį paslėptą vienetą, mūsų apskaičiuota 1.1 išvestis būtų perduota į aktyvinimo funkciją, ReLU(1.1)=1.1. Šiame pavyzdyje išvesties sluoksnis veiks kaip paslėptas vienetas: jis padaugins paslėptų vienetų išvestis iš savo svorių, o tada pridės šališkumo terminą 0.2. Paskutinė aktyvinimo funkcija, žingsnio funkcija, teigiamas įvestis pavers 1, o neigiamas reikšmes – 0. Žinodami, kaip veikia kiekviena tinklo operacija, galime užrašyti visą savo išvados skaičiavimą taip:

Tai viskas, kas yra mūsų grįžtamojo neuroninio tinklo skaičiavime. Kaip matote, operacijos susideda beveik vien iš sandaugų ir skaičių sumų. Mūsų aktyvinimo funkcija ReLU(x) gali būti įdiegta ir labai paprastai, pavyzdžiui, tiesiog paskambinus maks. (x, 0), kad jis grąžintų x, kai įvestis yra didesnė nei 0, bet kitu atveju grąžina 0. Prisimink tai (x) žingsnis galima apskaičiuoti panašiai. Yra daug sudėtingesnių aktyvinimo funkcijų, tokių kaip sigmoidinė funkcija arba hiperbolinis tangentas, apimantys skirtingus vidinius skaičiavimus ir geriau pritaikyti skirtingiems tikslams. Kitas dalykas, kurį jau galite pastebėti, yra tai, kad mes taip pat gali lygiagrečiai vykdyti trijų paslėptų vienetų skaičiavimus ir jų ReLU programas, nes jų reikšmės nereikalingos tuo pačiu metu, kol neapskaičiuosime jų svertinės sumos išvesties mazge.

Bet mes neturime sustoti. Aukščiau galite pamatyti tą patį skaičiavimą, bet šį kartą pavaizduotą matricos ir vektorių daugybos operacijomis. Kad gautume šį vaizdą, mes „papildome“ savo įvesties vektorių, pridėdami prie jo 1,0 (šviesesnis atspalvis), kad įdėjus svoriai ir mūsų poslinkis (šviesesnis atspalvis) matricoje, kaip parodyta aukščiau, gautas dauginimas duoda tą patį paslėptą vienetą išėjimai. Tada galime pritaikyti ReLU išvesties vektoriui, atsižvelgiant į elementus, ir tada „padidinti“ ReLU išvestį, kad ją padaugintume iš mūsų išvesties sluoksnio svorių ir poslinkių. Šis vaizdavimas labai supaprastina žymėjimą, nes viso paslėpto sluoksnio parametrai (svoriai ir poslinkiai) gali būti paslėpti po vienu kintamuoju. Bet mums svarbiausia, kad tai aišku vidiniai tinklo skaičiavimai iš esmės yra matricos ir vektorių daugybos arba taškinės sandaugos. Atsižvelgiant į tai, kaip šių vektorių ir matricų dydis priklauso nuo mūsų įvesties matmenų ir parametrų skaičiaus mūsų tinkle, didžioji vykdymo laiko dalis bus skirta atliekant tokius skaičiavimus. Linijinės algebros krūva!

Mūsų žaislų pavyzdys, žinoma, yra labai ribotos apimties. Praktiškai šiuolaikiniai gilaus mokymosi modeliai gali turėti dešimtis, jei ne šimtus paslėptų sluoksnių ir milijonus susijusių parametrų. Vietoj mūsų dvimačio vektorinio įvesties pavyzdžio, jie gali priimti vektorius su tūkstančiais įrašų, įvairių formų, tokių kaip matricos (pvz., vieno kanalo vaizdai) arba tenzoriai (trijų kanalų RGB vaizdai). Taip pat niekas netrukdo mūsų matricos vaizdavimui vienu metu priimti kelis įvesties vektorius, pridedant eilutes prie pradinės įvesties. Neuroniniai tinklai taip pat gali būti „sujungti“ kitaip nei mūsų grįžtamasis neuroninis tinklas arba atlikti skirtingas aktyvinimo funkcijas. Yra didžiulis tinklo architektūrų ir metodų zoologijos sodas, bet galiausiai jie daugiausia suskaidyti į tas pačias lygiagrečias aritmetines operacijas, kurias randame žaislo pavyzdyje, tik daug didesniu mastu.

Vaizdinis konvoliucijos sluoksnių, veikiančių tenzoriumi, pavyzdys. (Vaizdo kreditas: Duomenų mokslo link)

Pavyzdžiui, populiarus konvoliuciniai neuroniniai tinklai (CNN) apie kuriuos tikriausiai skaitėte, nėra „visiškai prijungti“, kaip mūsų netikras tinklas. Paslėpti jo „svoriai“ arba parametrai konvoliuciniai sluoksniai gali būti laikomas tam tikru filtru, slankiuoju langu, kuris nuosekliai taikomas mažoms įvesties vietoms, kaip parodyta aukščiau – ši „konvoliucija“ iš tikrųjų yra tik slankiojantis taškas! Dėl šios procedūros atsiranda tai, kas dažnai vadinama a funkcijų žemėlapis. Sujungimo sluoksniai sumažina įvesties arba konvoliucinio sluoksnio išvesties dydį, apskaičiuodami didžiausią arba vidutinę mažų vaizdo dėmių vertę. Likusią tinklo dalį paprastai sudaro visiškai sujungti sluoksniai, kaip ir mūsų pavyzdyje, ir aktyvinimo funkcijos, pvz., ReLU. Tai dažnai naudojama vaizdų, kuriuose ankstyvųjų konvoliucinių sluoksnių ypatybių žemėlapiai gali „aptikti“, išgauti ypatybes. raštai, tokie kaip linijos ar kraštai, o vėlesni sluoksniai gali aptikti sudėtingesnes savybes, tokias kaip veidai ar kompleksas formos.

Viskas, kas pasakyta, yra griežtai apsiribojama išvadomis, arba neuroninio tinklo įvertinimas po to, kai buvo rasti jo parametrai mokymas kuri yra daug sudėtingesnė procedūra. Ir vėl atmetėme daugybę paaiškinimų. Tiesą sakant, kiekvienas tinklo komponentas yra įtrauktas tam tikram tikslui. Pavyzdžiui, tie iš jūsų, kurie studijavo tiesinę algebrą, gali lengvai pastebėti, kad be Netiesinės aktyvinimo funkcijos, mūsų tinklas supaprastinamas iki linijinio modelio su labai ribotu nuspėjamumu talpa.

Atnaujintas AI variklis „Snapdragon 865“ – patobulinimų santrauka

Su šiuo patogiu neuroninio tinklo komponentų ir jų matematinių operacijų supratimu galime pradėti tiksliai suprasti, kodėl aparatinės įrangos pagreitis yra toks svarbus. Paskutiniame skyriuje galime pastebėti, kad lygiagretinimas yra gyvybiškai svarbus norint pagreitinti tinklą leidžia, pavyzdžiui, apskaičiuoti kelis lygiagrečius taškinius produktus, atitinkančius kiekvieną neuroną aktyvinimas. Kiekvienas iš šių taškinių produktų yra sudarytas iš skaičių dauginimo operacijų, paprastai 8 bitų tikslumu mobiliųjų programų atveju, kurios turi įvykti kuo greičiau. AI variklis siūlo įvairius komponentus, skirtus šioms užduotims atlikti, atsižvelgiant į kūrėjo našumą ir energijos vartojimo efektyvumą.

Populiaraus MNIST duomenų rinkinio CNN diagrama, parodyta šių metų „Snapdragon Summit“ scenoje. Vektoriaus apdorojimo blokas puikiai tinka visiškai sujungtiems sluoksniams, kaip ir mūsų pavyzdyje. Tuo tarpu tensorinis procesorius tvarko konvoliucinius ir telkimo sluoksnius, kurie apdoroja kelis slydimus branduoliai lygiagrečiai, kaip aukščiau esančioje diagramoje, ir kiekvienas konvoliucinis sluoksnis gali išvesti daug atskirų funkcijų žemėlapiai.

Pirmiausia pažvelkime į GPU, apie kurį paprastai kalbame 3D žaidimų kontekste. Vartotojų vaizdo žaidimų rinka dešimtmečius skatino grafikos apdorojimo aparatinės įrangos plėtrą, tačiau kodėl GPU tokie svarbūs neuroniniams tinklams? Pirmiausia jie kramto didžiulius daugiakampių viršūnių 3D koordinačių sąrašus, kad galėtų stebėti žaidimo pasaulio būseną. GPU taip pat turi atlikti milžiniškas matricos daugybos operacijas, kad konvertuotų (arba susietų) šiuos 3D koordinates 2D plokštumoje, ekrano koordinates, taip pat tvarko pikselių spalvų informaciją lygiagrečiai. Be viso to, jie siūlo didelį atminties pralaidumą, kad būtų galima apdoroti didžiulius atminties buferius, skirtus tekstūros bitų žemėlapiams, perdengtiems ant žaidimo geometrijos. Jo paralelizacijos, atminties pralaidumo ir dėl to atsirandančios tiesinės algebros privalumai atitinka neuroninių tinklų veikimo reikalavimus.

Taigi Adreno GPU linija vaidina svarbų vaidmenį Qualcomm AI variklyje, o scenoje Qualcomm pareiškė, kad šis atnaujintas Snapdragon 865 komponentas leidžia dvigubai daugiau slankiojo kablelio galimybių ir dvigubai daugiau TOPS palyginti su ankstesne karta, o tai stebina, nes jie paskelbė tik 25 % grafikos atvaizdavimo našumo padidėjimą. Vis dėlto už šį leidimą bendrovė gali pasigirti a 50 % padidėjęs aritmetinių loginių vienetų (ALU) skaičius, nors, kaip įprasta, jie neatskleidė savo GPU dažnių. „Qualcomm“ taip pat nurodė mišraus tikslumo nurodymus, kaip tik tai skamba: skirtingas skaitinis tikslumas atliekant operacijas vienu skaičiavimo metodu.

„Hexagon 698 DSP“ yra ta vieta, kur matome didžiulę „Snapdragon 865“ siūlomo našumo padidėjimo dalį. Šiais metais bendrovė nepranešė apie savo DSP vektorinių plėtinių patobulinimus (kurių našumas išaugo keturis kartus, palyginti su praėjusiais metais – 855), nei apie jų skaliarinius vienetus. Tačiau jie pažymi, kad šio bloko Tensor Accelerator jie pasiekė keturis kartus viršija TOP palyginti su praėjusiais metais pristatyta versija Hexagon 695 DSP, o taip pat gali pasiūlyti 35 % geresnis energijos vartojimo efektyvumas. Tai yra didelis dalykas, atsižvelgiant į konvoliucinių neuroninių tinklų architektūrų paplitimą šiuolaikiniuose AI naudojimo atvejais, pradedant vaizdo objektų aptikimu ir baigiant automatiniu kalbos atpažinimu. Kaip paaiškinta pirmiau, konvoliucijos operacija šiuose tinkluose sukuria 2D matricos išvesties masyvą kiekvienas filtras, o tai reiškia, kad sudėjus kartu, konvoliucijos sluoksnio išvestis yra 3D masyvas arba tenzoras.

„Qualcomm“ taip pat reklamavo savo „naują ir unikalią“ gilus mokymosi pralaidumo suspaudimas technika, kuri, matyt, gali suspausti duomenis be nuostolių maždaug 50 %, savo ruožtu perkeliant pusę duomenų ir atlaisvinant pralaidumą kitoms mikroschemų rinkinio dalims. Tai taip pat turėtų sutaupyti energijos, nes sumažina duomenų pralaidumą, nors mums nebuvo pateikti jokie skaičiai, o duomenų glaudinimas taip pat turėtų kainuoti mažai.

Kalbant apie pralaidumą, „Snapdragon 865“ palaiko LPDDR5 atmintis, kuris taip pat bus naudingas AI našumui, nes padidins išteklių ir įvesties duomenų perdavimo greitį. Be techninės įrangos, „Qualcomm“ naujiena AI modelio efektyvumo įrankių rinkinys leidžia kūrėjams lengvai suspausti modelį ir sutaupyti energijos vartojimo efektyvumo. Neuroniniai tinklai dažnai turi daug „perteklinių“ parametrų; pavyzdžiui, jie gali padaryti paslėptus sluoksnius platesnius nei reikia. Viena iš scenoje aptartų AI įrankių rinkinio funkcijų yra tokia modelio suspaudimas, kai du iš nurodytų metodų yra erdvinis vienaskaitos vertės skaidymas (SVD) ir Bajeso glaudinimas, abu kurios efektyviai apkarpo neuroninį tinklą, atsikratydami perteklinių mazgų ir koreguodami modelio struktūrą kaip reikalaujama. Kitas scenoje pateiktas modelio suspaudimo metodas yra susijęs su kvantavimu, o tai apima svorio parametrų skaitinio tikslumo ir aktyvinimo mazgų skaičiavimų keitimą.

Neuroninių tinklų svorių skaitinis tikslumas reiškia, ar skaičiavimui naudojamos skaitinės reikšmės yra saugomos, perkeliamos ir apdorojamos kaip 64, 32, 16 (pusiau tikslumo) ar 8 bitų reikšmės. Naudojant mažesnį skaitinį tikslumą (pavyzdžiui, INT8, palyginti su FP32), sumažėja bendras atminties naudojimas ir duomenų perdavimo greitis, todėl gaunamas didesnis pralaidumas ir greitesnės išvados. Daugelis šiuolaikinių gilaus mokymosi programų perjungė į 8 bitų tikslumo modelius, kad padarytų išvadas, o tai gali atrodyti nenuostabu: ar didesnis skaitinis tikslumas neleistų „tikslesnių“ klasifikavimo ar regresijos prognozių užduotys? Nebūtinai; didesnis skaitinis tikslumas, ypač darant išvadas, gali būti išeikvotas, nes neuroniniai tinklai yra išmokyti susidoroti su triukšmingomis įvestimis arba bet kokiu atveju nedideli trikdžiai treniruotės metu, o tam tikros (FP) reikšmės apatinio bito vaizdavimo klaida yra vienodai „atsitiktinė“ pakankamai. Tam tikra prasme mažas skaičiavimų tikslumas tinklas traktuojamas kaip dar vienas triukšmo šaltinis, o prognozės išlieka tinkamos naudoti. Atmetus euristinius paaiškinimus, tikėtina, kad sukaupsite tikslumo nuobaudą, kai šlykščiai kvantuojate modelį neatsižvelgiant į kai kuriuos svarbius aspektus, todėl atliekama daug tyrimų tema

Grįžti į „Qualcomm AI Toolkit“: per jį jie siūlo kvantavimas be duomenų, leidžianti modelius kvantuoti be duomenų ar parametrų tikslinimo, tuo pačiu užtikrinant beveik originalų modelio našumą atliekant įvairias užduotis. Iš esmės jis pritaiko svorio parametrus kvantavimui ir ištaiso paklaidą, atsirandančią pereinant prie mažesnio tikslumo svorio. Atsižvelgiant į naudą, kurią teikia kvantavimas, automatizavus procedūrą pagal API iškvietimą būtų supaprastinta modelio gamyba ir diegimas bei Qualcomm pretenzijos. daugiau nei keturis kartus didesnis našumas vienam vatui kai vykdomas kvantuotas modelis.

Bet vėlgi, tai nėra šokiruojanti: modelių kvantavimas gali pasiūlyti didžiulę pralaidumo ir saugojimo naudą. Konvertavus modelį į INT8, pralaidumas sumažėja ne tik 4 kartus, bet ir greitesnis sveikųjų skaičių skaičiavimas (atsižvelgiant į aparatinę įrangą). Nenuostabu, kad aparatinės įrangos pagreitintas kvantavimo ir skaitinio skaičiavimo metodas duotų didžiulį našumo padidėjimą. Savo dienoraštyjePavyzdžiui, Google Pete Warden rašė, kad Qualcomm ir Tensorflow komandų bendradarbiavimas leidžia 8 bitų modeliams veikti iki septynis kartus greičiauHVX DSP nei CPU. Sunku pervertinti lengvai naudojamo kvantavimo galimybes, ypač atsižvelgiant į tai, kaip „Qualcomm“ daugiausia dėmesio skyrė INT8 našumui.

„Snapdragon 865“ ARM pagrįstas „Kryo“ procesorius vis dar yra svarbus AI variklio komponentas. Nors pirmiau pateiktose pastraipose aptartas aparatinės įrangos pagreitis yra pageidautinas, kartais mes negali išvengti programų, kurios netinkamai naudojasi šiais blokais, todėl CPU atsitraukti. Anksčiau ARM pristatė specialius instrukcijų rinkinius, skirtus paspartinti matricomis ir vektoriais pagrįstus skaičiavimus. ARMv7 procesoriuose buvo pristatytas ARM NEON – SIMD architektūros plėtinys, įgalinantis į DSP panašias instrukcijas. O su ARMv8.4-A mikroarchitektūra pamatėme, kad buvo pristatyta specialiai taškiniams produktams skirta instrukcija.

Visi šie paskelbti našumo padidėjimai yra susiję su daugeliu darbo krūvių, kuriuos aprašėme ankstesniame skyriuje, tačiau taip pat verta nepamiršti, kad šie „Snapdragon 865“ naujinimai yra tik naujausias Qualcomm AI galimybių patobulinimai. 2017 m. dokumentavome, kad jų dirbtinio intelekto galimybės trigubai padidintos naudojant „Hexagon 685 DSP“ ir kitus mikroschemų rinkinio atnaujinimus. Praėjusiais metais jie pristatė savo tensorinį greitintuvą ir integruotą netiesiškumo funkcijų palaikymą (kaip ir anksčiau minėtasis ReLU!) aparatūros lygiu. Jie taip pat padvigubino vektorinių greitintuvų skaičių ir 20% pagerino skaliarinio apdorojimo bloko našumą. Sujungus visa tai su procesoriaus pusės patobulinimais, pavyzdžiui, tomis greitesnėmis taškinio produkto operacijomis, kurias suteikė ARM, ir papildomais GPU ALU, galiausiai „Qualcomm“ patrigubėjo neapdorotos AI galimybės.

Praktiniai privalumai ir išplėsti naudojimo atvejai

Dėl visų šių atnaujinimų „Snapdragon 865“ dirbtinio intelekto galimybės penkis kartus didesnės nei prieš dvejus metus, tačiau bene svarbiausia, kad patobulinimai taip pat buvo geresni vienam milivatui, kuris yra svarbus mobiliųjų įrenginių rodiklis prietaisai. 2019 m. „Snapdragon Summit“ metu „Qualcomm“ pateikė mums keletą etalonų, lygindama savo AI variklį su dviem konkurentais įvairiuose klasifikavimo tinkluose. Panašu, kad šie skaičiai bus renkami naudojant AIMark, kelių platformų lyginamąją programą, kuri leidžia palyginti su Apple A serijos ir Huawei HiSilicon procesoriais. „Qualcomm“ teigia, kad šie rezultatai naudoja visą AI variklį ir turėsime palaukti, kol bus daugiau kruopštus lyginamoji analizė, siekiant tinkamai atskirti kiekvieno komponento poveikį ir nustatyti, kaip buvo atlikti šie bandymai atliekami. Pavyzdžiui, ar įmonės B rezultatai rodo procesoriaus atsarginę dalį? Kiek žinau, AIMark šiuo metu nenaudoja Kirin 990 NPU pranašumų mūsų Mate 30 Pro įrenginiuose. Tačiau jis palaiko „Snapdragon Neural Processing Engine“, todėl tikrai pasinaudos „Qualcomm AI Engine“ pranašumais; Kadangi tai yra vidinis testavimas, nėra aiškiai aišku, ar etalonas tinkamai naudoja konkurentams tinkamas bibliotekas arba SDK.

Taip pat reikia pasakyti, kad „Qualcomm“ efektyviai lygina „Snapdragon 865“ AI apdorojimo galimybes su anksčiau paskelbtais ar išleistais mikroschemų rinkiniais. Labai tikėtina, kad jo konkurentai kitą ciklą pateiks panašaus poveikio našumo patobulinimams, o jei taip Tokiu atveju „Qualcomm“ karūną išlaikytų tik maždaug pusę metų nuo to momento, kai „Snapdragon 865“ įrenginiai pasieks lentynas. Nepaisant to, tai vis dar rodo, kokių nelygybių galime tikėtis iš „Snapdragon 865“. „Qualcomm“ paprastai buvo labai tikslus pranešdama apie būsimų leidimų našumo patobulinimus ir lyginamuosius rezultatus.

Visi šiuose etalonuose pateikti tinklai klasifikuoja vaizdus iš duomenų bazių, tokių kaip „ImageNet“, gauna juos kaip įvestis ir pateikia vieną iš šimtų kategorijų. Vėlgi, jie remiasi tomis pačiomis operacijomis, kurias aprašėme antrame skyriuje, nors jų architektūra yra daug sudėtingesni nei šie pavyzdžiai ir paskelbimo metu jie buvo laikomi naujausiais sprendimais. Geriausiais atvejais jų artimiausias konkurentas pateikia mažiau nei pusę išvadų skaičiaus per sekundę.

Kalbant apie energijos suvartojimą, „Qualcomm“ pateikė išvadas už vatą, kad parodytų, kiek dirbtinio intelekto galima apdoroti esant tam tikram energijos kiekiui. Geriausiais atvejais („MobileNet SSD“) „Snapdragon AI Engine“ gali pasiūlyti dvigubai daugiau išvadų naudojant tą patį energijos biudžetą.

Galia ypač svarbi mobiliesiems įrenginiams. Pagalvokite, pavyzdžiui, apie neuroninio tinklo „Snapchat“ filtrą. Tiesą sakant, kompiuterinio matymo vamzdynas išgauna veido informaciją ir uždeda kaukę arba įvestį transformacija turi vykti tik 30 arba 60 užbaigimų per sekundę greičiu, kad būtų pasiektas skystis patirtį. Padidinus neapdorotą AI našumą, galėtumėte priimti didesnės raiškos įvestis ir išvesti geriau atrodančius filtrus, tačiau Taip pat geriau pasirinkti HD raišką, kad būtų galima greičiau įkelti ir sumažinti energijos suvartojimą bei šiluminį reguliavimą. Daugelyje programų „greitesnis“ nebūtinai yra „geresnis“, o tada galima pasinaudoti geresnio energijos vartojimo efektyvumo pranašumais.

Antrąją „Snapdragon Summit“ dieną Snapchat vyresnysis inžinerijos direktorius Yurii Monastyrshyn užlipo ant scenos parodyti, kaip jų naujausius giluminiu mokymusi pagrįstus filtrus labai pagreitina „Hexagon Direct NN“, naudodamas „Snapdragon“ „Hexagon 695 DSP“ 865.

Be to, nes kūrėjai gauna prieigą prie lengvesnių neuroninių tinklų diegimo ir vis daugiau programų pradeda naudoti AI metodus, tuo pačiu metu naudojami atvejai bus labiau dėmesio centre, nes išmanusis telefonas turės valdyti daugybę lygiagrečiai AI dujotiekiai vienu metu (vienai programai apdoroti įvesties signalus iš įvairių šaltinių arba tiek programų, kurios veikia atskirai įrenginyje). Nors matome gerus skaičiavimo DSP, GPU ir procesoriaus energijos vartojimo efektyvumo padidėjimus, „Qualcomm Sensing Hub“ tvarko visada naudojamus atvejus, kad klausytųsi paleidimo žodžių esant labai mažam energijos suvartojimui. Tai leidžia stebėti garso, vaizdo ir jutiklių tiekimą, kai srovė yra mažesnė nei 1 mA, todėl įrenginys gali pastebėti tam tikrus garso signalus (pvz., kūdikio verksmą), be žinomų skaitmeninio asistento raktinių žodžių. Atsižvelgiant į tai, „Snapdragon 865“ leidžia aptikti ne tik raktinį žodį, bet ir tai, kas jį kalba, identifikuoti įgaliotą vartotoją ir atitinkamai veikti.

Daugiau AI „Edge Devices“.

Šie patobulinimai galiausiai gali paversti apčiuopiama nauda jūsų naudotojų patirčiai. Paslaugos, apimančios vertimą, objektų atpažinimą ir žymėjimą, naudojimo prognozes arba elementų rekomendacijas, Natūralios kalbos supratimas, kalbos analizė ir t. t. veiks greičiau ir sunaudos mažiau galia. Didesnis skaičiavimo biudžetas taip pat leidžia kurti naujus naudojimo atvejus ir patirtį bei perkelti procesus, kurie anksčiau vykdavo debesyje, į jūsų įrenginį. Nors AI kaip terminas praeityje buvo vartojamas abejotinais, apgaulingais ir net klaidingais būdais (net originalių įrenginių gamintojai), daugelis jūsų paslaugų, kuriomis naudojatės šiandien, galiausiai tam tikra forma priklauso nuo mašininio mokymosi algoritmų kitas.

Tačiau ne tik „Qualcomm“, kiti mikroschemų rinkinių gamintojai taip pat greitai kartojo ir tobulėjo šioje srityje. Pavyzdžiui, 990 5G buvo 2+1 NPU branduolio dizainas, todėl iki 2,5 karto geresnis nei Kirin 980 ir dvigubai didesnis nei Apple A12. Kai buvo paskelbtas procesorius, buvo parodyta, kad jis siūlo iki dvigubai daugiau kadrų (išvadų) per sekundę „Snapdragon 855“ INT8 MobileNet, kurį sunku suderinti su „Qualcomm“ pateiktais rezultatais. Kita vertus, Apple A13 Bionic, palyginti su savo pirmtaku, pasiūlė šešis kartus greitesnį matricos dauginimą ir patobulino aštuonių branduolių neuroninio variklio konstrukciją. Turėsime palaukti, kol galėsime tinkamai išbandyti „Snapdragon 865“ komerciniuose įrenginiuose prieš dabartinius ir būsimus konkurentus, bet taip yra aišku, kad konkurencija šioje srityje niekada nenutrūksta, nes trys bendrovės įdėjo daug išteklių, kad pagerintų savo AI spektaklis.