Qualcomm teki valtavia hyppyjä tekoälyn suorituskyvyssä uudella Snapdragon 865 SoC: lla. Analysoimme Qualcommin tekemät muutokset koneoppimisen nopeuttamiseksi.
Näyttää siltä, että emme voi olla päivääkään näkemättä "tekoälyä" uutisissa, ja tämä kulunut viikko ei ollut mikään poikkeus Snapdragon Tech Summitin ansiosta. Joka vuosi Qualcomm paljastaa lukuisia parannuksia, joita se tuo Hexagon DSP: ään ja Qualcomm AI Engineen, termi, jota he käyttävät koko heterogeeniselle laskenta-alustalleen - CPU, GPU ja DSP - puhuessaan tekoälystä työmäärät. Muutama vuosi sitten Qualcommin vaatimus siirtää keskustelu pois perinteisistä puheenaiheista, kuten prosessorin suorituskyvyn vuosittaisista parannuksista, vaikutti hieman oudolta. Silti vuonna 2019 ja Snapdragon 865:n kanssa näemme, että heterogeeninen tietojenkäsittely on todellakin heidän mobiilityöskentelynsä ruorissa, kuten tekoäly ja laitteistokiihdytetyt työmäärät näyttävät tunkeutuvan moniin käyttötapauksiin ja sovelluksiin sosiaalisesta mediasta jokapäiväiseen palvelut.
Snapdragon 865 tuo Qualcommin viidennen sukupolven tekoälymoottorin, ja sen mukana tulee mehukkaita parannuksia suorituskykyyn ja tehon tehokkuuteen – mutta se on odotettavissa. Eritelmien, suorituskykylukujen, hienojen suunnittelutermien ja väsyttävien markkinoinnin muotisanojen meressä on helppo unohtaa, mitä nämä parannukset todellisuudessa tarkoittavat. Mitä ne kuvaavat? Miksi nämä päivitykset ovat niin merkityksellisiä niille, jotka ottavat tekoälyä sovelluksiinsa tänään, ja mikä ehkä vielä tärkeämpää, niille, jotka haluavat tehdä niin tulevaisuudessa?
Tässä artikkelissa teemme lähestyttävän mutta perusteellisen kierroksen Qualcomm AI Enginestä, jossa käydään läpi sen historiaa, sen komponentteja ja Snapdragon 865:n päivityksiä, ja mikä tärkeintä, miksi tai Miten jokainen näistä on edistänyt tämän päivän älypuhelinkokemusta hauskoista suodattimista digitaalisiin avustajiin.
Hexagon DSP ja Qualcomm AI Engine: Kun brändäyksellä on merkitystä
Vaikka en voinut osallistua tämän viikon Snapdragon Tech Summitiin, olen kuitenkin osallistunut joka toiseen vuoden 2015 jälkeen. Jos muistat, että oli Snapdragon 810:n kuuman sotkun vuosi, ja siksi Chelsea-parven toimittajat New Yorkissa olivat innokkaita selvittämään, kuinka Snapdragon 820 lunastaisi yrityksen. Ja se oli hieno piirisarja, okei: se lupasi terveellisiä suorituskyvyn parannuksia (ilman mitään kuristusta) palaamalla silloisiin kokeiltuihin mukautettuihin ytimiin, joista Qualcomm tunnettiin. Silti muistan myös hyvin hienovaraisen ilmoituksen, johon jälkikäteen katsottuna olisi pitänyt kiinnittää enemmän huomiota: toisen sukupolven Hexagon 680 DSP ja sen yksi käsky, useat tiedot (SIMD) Hexagon Vector Extensions tai HVX. Ehkä jos insinöörit eivät olisi nimenneet ominaisuutta, se olisi saanut ansaitsemansa huomion.
Tämä apuprosessori mahdollistaa skalaari-DSP-yksikön laitteistosäikeiden pääsyn HVX: n "konteksteihin" (rekisteritiedostoihin) laajan vektorinkäsittelykyvyn saavuttamiseksi. Se mahdollisti merkittävien laskentakuormien purkamisen virtaa kaipaavalta CPU: lta tai GPU: lta energiatehokas DSP, jotta kuvantamis- ja tietokonenäkötehtävät suoriutuisivat huomattavasti paremmalla suorituskyvyllä per milliwatti. Ne sopivat täydellisesti identtisten operaatioiden soveltamiseen vierekkäisiin vektorielementteihin (alun perin vain kokonaislukuihin), joten ne sopivat hyvin tietokonenäön työkuormiin. Olemme kirjoittaneet aiemmin perusteellisen artikkelin DSP: stä ja HVX: stä, huomauttaa, että HVX-arkkitehtuuri soveltuu hyvin rinnakkaisin ja luonnollisesti suurten tulovektoreiden käsittelyyn. Tuolloin Qualcomm mainosti sekä DSP: tä että HVX: ää lähes yksinomaan kuvailemalla niiden tekemiä parannuksia. toisi tietokonenäköön työkuormia, kuten Harris-kulmailmaisimen ja muut liukuvat ikkunat menetelmiä.
Vasta syvän oppimisen ilmaantuessa kuluttajien mobiilisovelluksiin DSP, sen vektori prosessointiyksiköt (ja nyt tensorikiihdytin) naimisiin tekoälyn ja hermoverkkojen kanssa. tietty. Mutta taaksepäin katsottuna se on täysin järkevää: digitaalisen signaaliprosessorin (DSP) arkkitehtuuri, joka on alun perin suunniteltu käsittelemään digitoitua reaalimaailman tai analogiset signaalitulot, soveltuvat moniin samoihin työkuormiin kuin monet koneoppimisalgoritmit ja neurologiset verkkoja. Esimerkiksi DSP: t on räätälöity suodatinytimille, konvoluutio- ja korrelaatiooperaatioille, 8-bittisille laskelmille, lineaarialgebra (vektori- ja matriisitulot) ja kertokeräys (MAC) -operaatiot, jotka kaikki ovat tehokkaimpia, kun rinnastettu. Neuroverkon ajonaika on myös erittäin riippuvainen suurten vektorien, matriisien ja/tai tensorien kertomisesta, joten on vain luonnollista, että DSP: n suorituskykyedut muuttuvat siististi hermoverkkoarkkitehtuureiksi hyvin. Palataan tähän aiheeseen lyhyesti!
Seuraavina vuosina Qualcomm korosti edelleen, että he eivät tarjoa vain piirisarjat, mutta mobiilialustoilleja että he eivät keskity vain parantaa tiettyjä komponentteja, mutta tuottaa "heterogeenisen" laskennan. Vuonna 2017 he julkaisivat Snapdragon Neural Processing Engine SDK: n (ajonaikaiseen kiihdytykseen) Qualcomm Developer Networkissa, ja vuoden 2018 alussa he julkaisivat julkisti Qualcomm Artificial Intelligence Enginen yhdistämään useat tekoälyä tukevat laitteistonsa (CPU, GPU, DSP) ja ohjelmistokomponentit yhdeksi nimi. Tämän hyödyllisen nimistön avulla he pystyivät mainostamaan siististi tekoälyn suorituskyvyn parannuksia sekä Snapdragon 855:ssä että Snapdragon 865, joka pystyy mukavasti ilmaisemaan biljoonien toimintojen määrän sekunnissa (TOPS) ja vuosittaisen prosenttiosuuden parannuksia. Sukupolvien parannusten hyödyntäminen prosessorissa, grafiikkasuorittimessa ja DSP: ssä – jotka kaikki ovat omia tekoälykeskeisiä päivitykset - yritys pystyy julkaisemaan vaikuttavia vertailuarvoja kilpailijoihin nähden, jotka käymme läpi pian. Yrityksen viimeaikaisten markkinointiponnistelujen ja yhtenäisen, johdonmukaisen viestinnän ansiosta heterogeenisestä tietojenkäsittelystä heidän tekoälybrändinsä on vihdoin saamassa vetovoimaa toimittajien ja teknologian harrastajien keskuudessa.
Demystifying hermoverkot: arkipäiväinen kasa lineaarista algebraa
Jotta voimme erottaa paljon myöhemmin artikkelissa kohtaamaansa ammattislangia, tarvitsemme lyhyen alukkeen mikä on neuroverkko ja mitä tarvitset nopeuttaaksesi sitä. Haluan käydä hyvin lyhyesti läpi joitakin neuroverkkojen matemaattisia perusteita välttäen mahdollisimman paljon ammattislangia ja merkintöjä. Tämän osion tarkoituksena on yksinkertaisesti tunnistaa, mitä neuroverkko tekee, pohjimmiltaan: aritmeettiset operaatiot se suorittaa pikemminkin kuin teoreettinen perusta, joka oikeuttaa mainitut toiminnot (se on paljon monimutkaisempaa!). Voit siirtyä seuraavaan osaan, jos haluat siirtyä suoraan Qualcomm AI Engine -päivityksiin.
"Vektorimatiikka on syvän oppimisen perusta." – Travis Lanier, Qualcommin tuotehallinnan johtaja vuoden 2017 Snapdragon Tech Summitissa
Alta löydät hyvin tyypillisen myötäkytkentäisen, täysin kytketty hermoverkkokaavion. Todellisuudessa kaavio saa koko prosessin näyttämään hieman monimutkaisemmalta kuin se on (ainakin kunnes tottuu siihen). Laskemme eteenpäin kulkevan, mikä on viime kädessä mitä verkko tekee aina, kun se tuottaa päättely, termi, jonka kohtaamme myös myöhemmin artikkelissa. Tällä hetkellä käsittelemme vain konetta ja sen osia, joissa on lyhyt selitys jokaisesta komponentista.
Neuraaliverkko koostuu peräkkäisistä kerroksia, joista jokainen koostuu useista "neuroneista" (kuvattu ympyröinä kaaviossa), joita yhdistää painot (kuvattu viivoina kaaviossa). Yleisesti ottaen kerroksia on kolmenlaisia: syöttökerros, joka ottaa raakasyötteen; piilotetut kerrokset, jotka laskevat matemaattisia operaatioita edellisestä tasosta, ja lähtökerros, joka tarjoaa lopulliset ennusteet. Tässä tapauksessa meillä on vain yksi piilotettu kerros, kolmella piilotetut yksiköt. The syöttö koostuu vektorista, taulukosta tai luettelosta tietyn ulottuvuuden tai pituuden omaavista numeroista. Esimerkissä meillä on esimerkiksi kaksiulotteinen syöte [1.0, -1.0]. Tässä, ulostulo Verkon luku koostuu skalaarista tai yhdestä luvusta (ei luettelosta). Jokainen piilotettu yksikkö liittyy joukkoon painot ja a puolueellinen termi, joka näkyy kunkin solmun vieressä ja alla. Laskemaan painotettu summa yksikön tuotos, jokainen paino kerrotaan kullakin vastaavalla syötteellä ja sitten tuotteet lasketaan yhteen. Sitten yksinkertaisesti lisäämme bias-termin tähän tulojen summaan, mikä johtaa neuronin ulostuloon. Esimerkiksi syötteellämme [1.0,-1.0], ensimmäisen piilotetun yksikön tulos on 1.0*0.3 + (-1.0) * 0.2 + 1.0 = 1.1. Yksinkertaista, eikö?
Kaavion seuraava vaihe edustaa an aktivointitoiminto, ja sen avulla voimme tuottaa kunkin piilotetun kerroksen tulosvektorin. Meidän tapauksessamme käytämme erittäin suosittua ja erittäin yksinkertaista oikaistu lineaarinen yksikkö tai ReLU, joka ottaa syötenumeron ja tulostaa joko (i) nollan, jos luku on negatiivinen, tai nollan (ii) itse syötenumeron, jos luku on positiivinen. Esimerkiksi, ReLU(-0,1) = 0, mutta ReLU(0,1) = 0,1. Syötöksemme esimerkkiä noudattaen sellaisenaan leviää tuon ensimmäisen piilotetun yksikön kautta laskemamme 1.1:n tulos siirrettäisiin aktivointifunktioon, jolloin ReLU(1.1)=1.1. Tässä esimerkissä tuloskerros toimii aivan kuten piilotettu yksikkö: se kertoo piilotettujen yksiköiden lähdöt painoillaan ja lisää sitten bias-terminsä 0.2. Viimeinen aktivointitoiminto, askeltoiminto, muuttaa positiiviset syötteet arvoksi 1 ja negatiiviset arvot 0:ksi. Kun tiedämme, kuinka verkon kukin operaatio toimii, voimme kirjoittaa päätelmämme täydellisen laskelman seuraavasti:
Siinä kaikki syötetyn neuroverkon laskennassamme. Kuten näette, toiminta koostuu lähes kokonaan tuotteista ja lukujen summista. Aktivointitoimintomme ReLU(x) voidaan toteuttaa myös erittäin helposti, esimerkiksi soittamalla max (x, 0), joten se palauttaa x: n aina, kun syöte on suurempi kuin 0, mutta muuten se palauttaa 0:n. Ota huomioon, että vaihe (x) voidaan laskea samalla tavalla. On olemassa monia monimutkaisempia aktivointitoimintoja, kuten sigmoidinen toiminto tai hyperbolinen tangentti, joka sisältää erilaisia sisäisiä laskelmia ja sopii paremmin eri tarkoituksiin. Toinen asia, jonka voit jo alkaa huomata, on se, että myös me voi suorittaa kolmen piiloyksikön laskelmia ja niiden ReLU-sovelluksia rinnakkain, koska niiden arvoja ei tarvita samanaikaisesti, kunnes laskemme niiden painotetun summan lähtösolmussa.
Mutta meidän ei tarvitse pysähtyä tähän. Yllä näet saman laskutoimituksen, mutta tällä kertaa sen sijaan matriisi- ja vektorin kertolaskuoperaatioilla. Päästäksemme tähän esitykseen lisäämme syöttövektoriamme lisäämällä siihen 1.0 (vaaleampi sävy), niin että kun laitamme painot ja harha (vaaleampi sävy) matriisissa kuten yllä on esitetty, tuloksena oleva kertolasku tuottaa saman piilotetun yksikön ulostulot. Sitten voimme soveltaa ReLU: ta lähtövektoriin elementtikohtaisesti ja sitten "lisätä" ReLU-lähtöä kertoaksemme sen tuloskerroksen painoilla ja biasilla. Tämä esitys yksinkertaistaa huomattavasti merkintää, koska koko piilotetun kerroksen parametrit (painot ja poikkeamat) voidaan piilottaa yhden muuttujan alle. Mutta mikä tärkeintä meille, se tekee sen selväksi verkon sisäiset laskelmat ovat olennaisesti matriisi- ja vektorikerto- tai pistetuloja. Ottaen huomioon, kuinka näiden vektorien ja matriisien koko skaalautuu syötteidemme ulottuvuuksien ja verkkomme parametrien lukumäärän kanssa, suurin osa ajoajasta kuluu tällaisten laskelmien tekemiseen. Joukko lineaarista algebraa!
Meidän leluesimerkkimme on tietysti erittäin rajoitettu laajuus. Käytännössä nykyaikaisissa syväoppimismalleissa voi olla kymmeniä ellei satoja piilotettuja kerroksia ja miljoonia niihin liittyviä parametreja. Kaksiulotteisen vektorisyöttöesimerkkimme sijaan he voivat ottaa vektoreita, joissa on tuhansia merkintöjä, eri muodoissa, kuten matriiseina (kuten yksikanavaiset kuvat) tai tensoreina (kolmikanavainen RGB kuvat). Mikään ei myöskään estä matriisiesitystämme ottamasta useita syötevektoreita kerralla lisäämällä rivejä alkuperäiseen syötteeseemme. Neuraaliverkot voidaan myös "johdottaa" eri tavalla kuin myötäkytkentäinen hermoverkkomme tai suorittaa erilaisia aktivointitoimintoja. Verkkoarkkitehtuureja ja tekniikoita on valtava eläintarha, mutta lopulta ne enimmäkseen hajota samoihin rinnakkaisiin aritmeettisiin operaatioihin, jotka löydämme leluesimerkistämme, vain paljon suuremmassa mittakaavassa.
Visuaalinen esimerkki konvoluutiokerroksista, jotka toimivat tensorilla. (Kuvan luotto: Kohti tietotieteitä)
Esimerkiksi suosittu konvoluutiohermoverkot (CNN) joista olet todennäköisesti lukenut, eivät ole "täysin yhteydessä" kuten valeverkkomme. Sen "painot" tai parametrit piilotettu konvoluutiokerroksia voidaan ajatella eräänlaisena suodattimena, liukuvana ikkunana, joka liitetään peräkkäin syötteen pieniin tiloihin, kuten yllä on esitetty - tämä "konvoluutio" on todellakin vain liukuva pistetuote! Tämä menettely johtaa siihen, mitä usein kutsutaan a ominaisuus kartta. Tasojen yhdistäminen pienentää syötteen tai konvoluutiokerroksen lähdön kokoa laskemalla kuvan pienten tilojen maksimi- tai keskiarvon. Muu osa verkkoa koostuu yleensä täysin yhdistetyistä kerroksista, kuten esimerkissämme, ja aktivointitoiminnoista, kuten ReLU. Tätä käytetään usein piirteiden poimimiseen kuvista, joissa varhaisten konvoluutiokerrosten piirrekartat voivat "tunnistaa" kuviot, kuten viivat tai reunat, ja myöhemmät tasot voivat havaita monimutkaisempia piirteitä, kuten kasvoja tai komplekseja muodot.
Kaikki sanottu on rajoittuu tiukasti päätelmiin, tai neuroverkon arvioiminen sen jälkeen, kun sen parametrit on löydetty koulutusta mikä on paljon monimutkaisempi toimenpide. Ja jälleen, olemme sulkeneet pois monia selityksiä. Todellisuudessa jokainen verkon komponentti sisältyy tiettyyn tarkoitukseen. Esimerkiksi ne teistä, jotka ovat opiskelleet lineaarista algebraa, voivat helposti havaita, että ilman ei-lineaariset aktivointitoiminnot, verkkomme yksinkertaistuu lineaariseksi malliksi, jolla on hyvin rajoitettu ennuste kapasiteettia.
Päivitetty tekoälymoottori Snapdragon 865:ssä – yhteenveto parannuksista
Tämän kätevän hermoverkon komponenttien ja niiden matemaattisten toimintojen ymmärtämisen avulla voimme alkaa ymmärtää tarkalleen, miksi laitteistokiihdytys on niin tärkeä. Viimeisessä osiossa voimme havaita, että rinnakkaisuus on elintärkeää verkon nopeuttamiseksi antaa meille mahdollisuuden esimerkiksi laskea useita rinnakkaisia pistetuloja, jotka vastaavat kutakin hermosolua aktivointi. Jokainen näistä pistetuotteista muodostuu itse numeroiden kertolaskuoperaatioista, yleensä 8-bitin tarkkuudella mobiilisovellusten tapauksessa, ja sen on tapahduttava mahdollisimman nopeasti. AI Engine tarjoaa erilaisia komponentteja näiden tehtävien purkamiseen kehittäjän suorituskyvyn ja tehokkuuden näkökohtien mukaan.
Kaavio suositun MNIST-tietojoukon CNN: stä, joka näytettiin lavalla tämän vuoden Snapdragon Summitissa. Vektorikäsittely-yksikkö sopii hyvin täysin yhdistetyille kerroksille, kuten malliesimerkissämme. Samaan aikaan tensoriprosessori käsittelee konvoluutio- ja poolauskerroksia, jotka käsittelevät useita liukuvia ytimiä rinnakkain, kuten yllä olevassa kaaviossa, ja jokainen konvoluutiokerros saattaa tuottaa useita erillisiä ominaisuuksia kartat.
Katsotaanpa ensin GPU: ta, josta yleensä puhumme 3D-pelien yhteydessä. Videopelien kuluttajamarkkinat ovat stimuloineet grafiikankäsittelylaitteiden kehitystä vuosikymmeniä, mutta miksi GPU: t ovat niin tärkeitä hermoverkoille? Ensinnäkin he pureskelevat läpi valtavia monikulmion kärkien 3D-koordinaatteja kerralla seuratakseen pelin sisäistä maailmantilaa. GPU: n on myös suoritettava jättimäisiä matriisin kertolaskuoperaatioita näiden 3D: n muuntamiseksi (tai kartoittamiseksi). koordinaatit 2D-tasoon, näytön koordinaatit ja käsittelevät myös pikselien väritietoja rinnakkain. Kaiken huipuksi ne tarjoavat suuren muistin kaistanleveyden käsittelemään massiivisia muistipuskureita pintakuviobittikartoille, jotka on peitetty pelin sisäisen geometrian päälle. Sen edut rinnakkaismuodossa, muistin kaistanleveys ja tuloksena olevat lineaariset algebra-ominaisuudet vastaavat hermoverkkojen suorituskykyvaatimuksia.
Adreno GPU -linjalla on siis suuri rooli Qualcomm AI Enginessä, ja lavalla Qualcomm totesi, että tämä päivitetty komponentti Snapdragon 865:ssä mahdollistaa kaksi kertaa enemmän liukulukukykyä ja kaksinkertainen määrä TOPSeja edelliseen sukupolveen verrattuna, mikä on yllättävää, kun otetaan huomioon, että grafiikan renderöinnin suorituskyky parani vain 25 %. Silti tämän julkaisun osalta yhtiö ylpeilee a 50 % lisäys aritmeettisten logiikkayksiköiden (ALU) määrässä, vaikka tavalliseen tapaan he eivät ole paljastaneet GPU-taajuuksiaan. Qualcomm listasi myös sekatarkkuuden ohjeet, jolta se kuulostaa: erilainen numeerinen tarkkuus operaatioiden välillä yhdellä laskentamenetelmällä.
Hexagon 698 DSP on paikka, jossa näemme valtavan osan Snapdragon 865:n tarjoamista suorituskyvyn lisäyksistä. Tänä vuonna yritys ei ole ilmoittanut parannuksista DSP: n vektorilaajennuksiin (jonka suorituskyky nelinkertaistui viime vuoden 855:ssä) eikä niiden skalaariyksiköissä. He kuitenkin huomauttavat, että he ovat saavuttaneet tämän lohkon Tensor Accelerator -kiihdytin neljä kertaa TOP: t verrattuna viime vuonna Hexagon 695 DSP: ssä esiteltyyn versioon, mutta pystyy myös tarjoamaan 35 % parempi tehokkuus. Tämä on iso asia, kun otetaan huomioon konvoluutiohermoverkkoarkkitehtuurien yleisyys nykyaikaisissa tekoälyn käyttötapauksissa aina kuvaobjektin havaitsemisesta automaattiseen puheentunnistukseen. Kuten edellä selitettiin, konvoluutiotoiminto näissä verkoissa tuottaa 2D-matriisiulostulojen jokainen suodatin, mikä tarkoittaa, että pinottuna yhteen konvoluutiokerroksen tulos on 3D-taulukko tai tensori.
Qualcomm mainosti myös heidän "uutta ja ainutlaatuista" syvän oppimisen kaistanleveyden pakkaus tekniikkaa, joka ilmeisesti voi pakkaa tiedot häviöttömästi noin 50 %, mikä puolestaan siirtää puolet tiedoista ja vapauttaa kaistanleveyttä piirisarjan muille osille. Sen pitäisi myös säästää virtaa vähentämällä tätä tiedonsiirtokapasiteettia, vaikka meille ei annettu mitään lukuja, ja myös tietojen pakkaamisesta pitäisi aiheutua pieni sähkökustannus.
Kaistanleveyden osalta Snapdragon 865 tukee LPDDR5 muisti, mikä hyödyttää myös tekoälyn suorituskykyä, koska se lisää resurssien ja syöttötietojen siirtonopeutta. Laitteiston lisäksi Qualcommin uutta AI Model Efficiency Toolkit mahdollistaa helpon mallin pakkaamisen ja siitä johtuvat tehonsäästöt kehittäjien käytettävissä. Neuroverkoissa on usein suuri määrä "redundantteja" parametreja; ne voivat esimerkiksi tehdä piilotetuista kerroksista leveämpiä kuin niiden tarvitsee olla. Yksi lavalla käsitellyistä AI Toolkit -ominaisuuksista on näin mallin pakkaus, jossa kaksi mainituista menetelmistä ovat spatial singular value decomposition (SVD) ja Bayesian pakkaus, molemmat joka karsii tehokkaasti hermoverkkoa poistamalla ylimääräiset solmut ja säätämällä mallin rakennetta as edellytetään. Toinen lavalla esitelty mallipakkaustekniikka liittyy kvantisointiin, jossa muutetaan painoparametrien numeerista tarkkuutta ja aktivointisolmulaskentaa.
Neuraaliverkkojen painojen numeerinen tarkkuus viittaa siihen, tallennetaanko, siirretäänkö ja käsitelläänkö laskennassa käytetyt numeroarvot 64, 32, 16 (puolitarkkuus) vai 8-bittisinä arvoina. Matalamman numeerisen tarkkuuden käyttäminen (esimerkiksi INT8 vs. FP32) vähentää kokonaismuistin käyttöä ja tiedonsiirtonopeuksia, mikä mahdollistaa suuremman kaistanleveyden ja nopeammat päätelmät. Monet nykypäivän syväoppimissovellukset ovat siirtyneet 8-bittisiin tarkkuusmalleihin johtopäätösten tekemiseksi, mikä saattaa kuulostaa yllättävää: eikö suurempi numeerinen tarkkuus mahdollistaisi "tarkempia" ennusteita luokittelussa tai regressiossa tehtäviä? Ei välttämättä; suurempi numeerinen tarkkuus, erityisesti päättelyn aikana, voi mennä hukkaan, koska neuroverkot on koulutettu selviytymään meluisista tuloista tai pieniä häiriöitä harjoituksen aikana joka tapauksessa, ja virhe tietyn (FP) arvon alemman bitin esityksessä on tasaisesti "satunnainen" tarpeeksi. Eräässä mielessä laskelmien alhaista tarkkuutta verkko käsittelee toisena kohinan lähteenä ja ennusteet pysyvät käyttökelpoisina. Heuristiset selittäjät syrjään, on todennäköistä, että sinulle kertyy tarkkuussakko, kun kvantisoit mallia surkeasti ottamatta huomioon joitakin tärkeitä näkökohtia, minkä vuoksi paljon tutkitaan aihe
Takaisin Qualcomm AI Toolkittiin: Sen kautta he tarjoavat datavapaa kvantisointi, jonka avulla malleja voidaan kvantisoida ilman datan tai parametrien hienosäätöä ja silti saavuttaa lähes alkuperäinen mallin suorituskyky erilaisissa tehtävissä. Pohjimmiltaan se mukauttaa painoparametreja kvantisointia varten ja korjaa harhavirheen, joka syntyy, kun vaihdetaan pienempään tarkkuuteen. Kun otetaan huomioon kvantisoinnista koituvat edut, menettelyn automatisointi API-kutsun alla yksinkertaistaisi mallin tuotantoa ja käyttöönottoa sekä Qualcomm-vaatimuksia. yli neljä kertaa teho per watti kvantisoitua mallia ajettaessa.
Mutta jälleen kerran, tämä ei ole järkyttävää: kvantisointimallit voivat tarjota valtavia kaistanleveys- ja tallennusetuja. Mallin muuntaminen INT8:ksi ei ainoastaan vähennä kaistanleveyttä nelinkertaisesti, vaan myös hyötyy nopeammista kokonaislukulaskelmista (laitteistosta riippuen). On siis selvää, että laitteistokiihdytetyt lähestymistavat sekä kvantisoinnissa että numeerisessa laskennassa tuottaisivat valtavat suorituskyvyn lisäykset. Hänen blogissaanEsimerkiksi Googlen Pete Warden kirjoitti, että Qualcommin ja Tensorflow-tiimien yhteistyö mahdollistaa 8-bittisten mallien käytön seitsemän kertaa nopeampiHVX DSP: ssä kuin CPU: ssa. Helppokäyttöisen kvantisoinnin mahdollisuuksia on vaikea yliarvioida, varsinkin kun Qualcomm on keskittynyt INT8-suorituskykyyn.
Snapdragon 865:n ARM-pohjainen Kryo-suoritin on edelleen tärkeä osa tekoälymoottoria. Vaikka yllä olevissa kappaleissa käsitelty laitteistokiihdytys on parempi, joskus me ei voi välttää sovelluksia, jotka eivät hyödynnä kunnolla näitä lohkoja, mikä johtaa CPU: hon perääntyä. Aiemmin ARM oli ottanut käyttöön erityisiä käskysarjoja, joiden tarkoituksena oli nopeuttaa matriisi- ja vektoripohjaisia laskelmia. ARMv7-prosessoreissa esiteltiin ARM NEON, SIMD-arkkitehtuurilaajennus, joka mahdollistaa DSP: n kaltaiset ohjeet. Ja ARMv8.4-A-mikroarkkitehtuurissa näimme ottavan käyttöön ohjeen erityisesti pistetuotteille.
Kaikki nämä julkaistut suorituskyvyn parannukset liittyvät moniin edellisessä osiossa kuvatuihin työkuormiin, mutta on myös syytä pitää mielessä, että nämä Snapdragon 865 -päivitykset ovat vain uusimmat parannuksia Qualcommin tekoälyominaisuuksiin. Vuonna 2017 dokumentoimme heidän tekoälykykynsä kolminkertaistuneen Hexagon 685 DSP: n ja muiden piirisarjapäivitysten avulla. Viime vuonna he esittelivät tensorikiihdytin ja integroidun tuen epälineaarisille funktioille (kuten edellä mainittu ReLU!) laitteistotasolla. Ne myös tuplasivat vektorikiihdyttimien määrän ja paransivat skalaariprosessointiyksikön suorituskykyä 20%. Qualcomm yhdistää kaiken tämän CPU-puolen parannuksiin, kuten ARM: n tarjoamiin nopeampiin pistetuotetoimintoihin ja grafiikkasuorittimen ALU: ihin. kolminkertaistunut myös raaka AI-ominaisuudet.
Käytännön hyötyjä ja laajennettuja käyttötapauksia
Kaikki nämä päivitykset ovat johtaneet viisinkertaiseen tekoälykykyyn Snapdragon 865:ssä verrattuna vain kaksi vuotta sitten, mutta Ehkä tärkeintä on, että parannukset toivat mukanaan myös paremman suorituskyvyn milliwattia kohden, mikä on kriittinen mittari mobiililaitteille laitteet. Snapdragon Summit 2019 -tapahtumassa Qualcomm antoi meille muutamia vertailuarvoja, jotka vertasivat heidän tekoälymoottoriaan kahteen kilpailijaan eri luokitusverkostoissa. Nämä luvut näyttävät kerättävän AIMarkilla, joka on monialustainen benchmarking-sovellus, joka mahdollistaa vertailut Applen A-sarjan ja Huawein HiSilicon-prosessoreihin. Qualcomm väittää, että nämä tulokset käyttävät koko tekoälymoottoria, ja meidän on odotettava lisää perusteellinen benchmarking, jotta kunkin komponentin vaikutus voidaan erottaa kunnolla ja miten nämä testit olivat suoritettu. Osoittavatko esimerkiksi yrityksen B tulokset suorittimen varaosia? Sikäli kuin tiedän, AIMark ei tällä hetkellä hyödynnä esimerkiksi Kirin 990:n NPU: ta Mate 30 Pro -yksiköissämme. Mutta se tukee Snapdragon Neural Processing Engineä, joten se varmasti hyödyntää Qualcomm AI Engineä; Koska kyseessä on sisäinen testaus, ei ole selvää, käyttääkö vertailuarvo kilpailijoilleen oikeita kirjastoja tai SDK: ta.
On myös sanottava, että Qualcomm vertaa tehokkaasti Snapdragon 865:n tekoälyprosessointiominaisuuksia aiemmin ilmoitettuihin tai julkaistuihin piirisarjoihin. On hyvin todennäköistä, että sen kilpailijat tuovat mukanaan yhtä vaikuttavat suorituskyvyn parannukset seuraavalla syklillä, ja jos se on Siinä tapauksessa Qualcomm säilyttäisi kruunun vain noin puoli vuotta siitä hetkestä, kun Snapdragon 865 -laitteet saapuivat hyllyille. Nämä ovat kuitenkin edelleen osoitus siitä, millaisia kuoppia voimme odottaa Snapdragon 865:ltä. Qualcomm on yleensä ollut erittäin tarkka tiedottaessaan suorituskyvyn parannuksista ja tulevien julkaisujen vertailutuloksista.
Kaikki näissä vertailuarvoissa esitetyt verkot luokittelevat kuvia tietokannoista, kuten ImageNetistä, vastaanottavat ne syötteinä ja tulostavat yhden sadoista luokista. Jälleen ne luottavat samanlaisiin operaatioihin, joita kuvailimme toisessa osassa, vaikka niiden arkkitehtuurit ovat paljon monimutkaisempia kuin nämä esimerkit, ja niitä on pidetty julkaisuhetkellä huippuluokan ratkaisuina. Parhaimmillaan heidän lähin kilpailijansa tuottaa alle puolet johtopäätösten määrästä sekunnissa.
Mitä tulee virrankulutukseen, Qualcomm tarjosi johtopäätöksiä wattia kohden näyttääkseen, kuinka paljon tekoälyprosessointi on mahdollista tietyllä tehomäärällä. Parhaimmillaan (MobileNet SSD) Snapdragon AI Engine voi tarjota kaksinkertaisen määrän päätelmiä samalla tehobudjetilla.
Virta on erityisen tärkeää mobiililaitteille. Ajattele esimerkiksi hermoverkkopohjaista Snapchat-suodatinta. Todellisuudessa tietokonenäön putki poimii kasvotietoja ja lisää maskin tai syötteen transformaation tarvitsee vain suorittaa nopeudella 30 tai 60 valmistumista sekunnissa nesteen saavuttamiseksi kokea. Raaka tekoälyn suorituskyvyn lisääminen mahdollistaisi korkeamman resoluution tulojen ja paremman näköisten suodattimien tulostamisen, mutta se saattaa kannattaa myös tyytyä HD-resoluutioon nopeamman latauksen ja virrankulutuksen ja lämpökuristuksen vähentämiseksi. Monissa sovelluksissa "nopeampi" ei välttämättä ole "parempi", ja sitten voidaan hyötyä parantuneesta tehotehokkuudesta.
Snapdragon Summitin toisena päivänä Snapchatin vanhempi suunnittelujohtaja Yurii Monastyrshyn nousi lavalle näyttämään, kuinka Hexagon Direct NN nopeuttaa huomattavasti heidän uusimpia syvään oppimiseen perustuvia suodattimiaan käyttämällä Snapdragonin Hexagon 695 DSP: tä. 865.
Sen lisäksi, kun kehittäjät pääsevät käyttämään helpompia neuroverkkototeutuksia ja yhä useammat sovellukset alkavat käyttää tekoälytekniikoita, samanaikaiset käyttötapaukset saavat enemmän valokeilassa, koska älypuhelimen on käsiteltävä useita rinnakkaiset AI-putkilinjat kerralla (joko yhdelle sovellukselle, joka käsittelee eri lähteistä tulevia tulosignaaleja tai niin monta sovellusta toimii erikseen laitteessa). Vaikka näemmekin DSP: n, GPU: n ja CPU: n virrantehokkuuden parannuksia, Qualcomm Sensing Hub käsittelee aina käytössä olevia käyttötapauksia kuunnellakseen laukaisevia sanoja erittäin alhaisella virrankulutuksella. Se mahdollistaa äänen, videon ja anturisyötteiden valvonnan alle 1 mA: n virralla, jolloin laite voi havaita tietyt äänimerkit (kuten vauvan itku) tuttujen digitaalisen avustajan avainsanojen lisäksi. Tässä mielessä Snapdragon 865 mahdollistaa avainsanan lisäksi myös sen puhujan tunnistamisen, valtuutetun käyttäjän tunnistamisen ja sen mukaisen toimimisen.
Lisää tekoälyä Edge-laitteissa
Nämä parannukset voivat viime kädessä tuottaa konkreettisia etuja käyttäjäkokemuksellesi. Palvelut, jotka sisältävät kääntämisen, objektien tunnistamisen ja merkitsemisen, käyttöennusteet tai tuotesuositukset, luonnollisen kielen ymmärtäminen, puheen jäsentäminen ja niin edelleen hyötyvät nopeammasta toiminnasta ja vähemmän kuluttamisesta tehoa. Suurempi laskentabudjetti mahdollistaa myös uusien käyttötapausten ja -kokemusten luomisen sekä aiemmin pilvessä tapahtuneiden prosessien siirtämisen laitteellesi. Tekoälyä on käytetty terminä epäilyttävällä, harhaanjohtavalla ja jopa virheellisellä tavalla aiemmin (jopa OEM-valmistajissa), monet palveluistasi, joista pidät nykyään, perustuvat lopulta koneoppimisalgoritmeihin jossain muodossa tai toinen.
Mutta Qualcommin lisäksi muut piirisarjan valmistajat ovat toistaneet ja parantaneet nopeasti myös tällä alalla. Esimerkiksi 990 5G toi 2+1 NPU: n ytimen suunnittelun, mikä johti jopa 2,5 kertaa Kirin 980:n suorituskykyyn ja kaksi kertaa Apple A12:n suorituskykyyn. Kun prosessori julkistettiin, sen osoitettiin tarjoavan jopa kaksi kertaa enemmän kehyksiä (päätelmiä) sekunnissa Snapdragon 855:stä INT8 MobileNetissä, jota on vaikea yhdistää Qualcommin toimittamiin tuloksiin. Apple A13 Bionic sen sijaan tarjosi kuusi kertaa nopeamman matriisin kertolaskunsa edeltäjäänsä verrattuna ja paransi sen kahdeksanytimisen hermomoottorin rakennetta. Meidän on odotettava, kunnes voimme testata Snapdragon 865:tä kaupallisilla laitteilla sen nykyisiä ja tulevia kilpailijoita vastaan, mutta se on on selvää, että kilpailu tällä alalla ei koskaan pysy paikallaan, koska kolme yritystä ovat käyttäneet paljon resursseja tekoälynsä parantamiseen esitys.