Hoe Qualcomm enorme verbeteringen heeft aangebracht in de AI op de Snapdragon 865

Qualcomm heeft enorme sprongen gemaakt in AI-prestaties met de nieuwe Snapdragon 865 SoC. We analyseren de veranderingen die Qualcomm heeft doorgevoerd om machine learning te versnellen.

Het lijkt erop dat we geen dag kunnen doorgaan zonder ‘kunstmatige intelligentie’ in het nieuws te zien, en de afgelopen week was geen uitzondering, niet in de laatste plaats dankzij de Snapdragon Tech Summit. Elk jaar onthult Qualcomm de overvloed aan verbeteringen die het aanbrengt aan zijn Hexagon DSP en de Qualcomm AI Engine, een term die ze gebruiken voor hun hele heterogene computerplatform – CPU, GPU en DSP – als ze het over AI hebben werkdruk. Een paar jaar geleden leek de nadruk van Qualcomm om het gesprek af te leiden van traditionele gespreksonderwerpen, zoals jaar-op-jaar verbeteringen in de CPU-prestaties, een beetje vreemd. Maar in 2019 en met de Snapdragon 865 zien we dat heterogeen computergebruik inderdaad aan het roer staat van hun mobiele computerpush, aangezien AI en door hardware versnelde werklasten lijken hun weg te vinden naar een breed scala aan gebruiksscenario's en toepassingen, van sociale media tot alledaagse toepassingen Diensten.

De Snapdragon 865 brengt de 5e generatie AI-engine van Qualcomm, en daarmee gepaard gaande sappige verbeteringen in prestaties en energie-efficiëntie – maar dat is te verwachten. In een zee van specificaties, prestatiecijfers, mooie technische termen en vervelende marketing-buzzwoorden, is het gemakkelijk om uit het oog te verliezen wat deze verbeteringen eigenlijk betekenen. Wat beschrijven ze? Waarom zijn deze upgrades zo betekenisvol voor degenen die vandaag de dag AI in hun apps implementeren, en misschien nog belangrijker, voor degenen die dit in de toekomst willen doen?

In dit artikel geven we een laagdrempelige maar grondige rondleiding door de Qualcomm AI Engine, waarbij we de geschiedenis, de componenten en de upgrades van de Snapdragon 865 doornemen, en het allerbelangrijkste: Waarom of Hoe elk van deze heeft bijgedragen aan de hedendaagse smartphone-ervaring, van grappige filters tot digitale assistenten.

De Hexagon DSP en Qualcomm AI Engine: wanneer branding een verschil maakt

Hoewel ik de Snapdragon Tech Summit van deze week niet kon bijwonen, heb ik sinds 2015 toch alle andere bezocht. Als je het je herinnert, Dat was het jaar van de hete puinhoop die de Snapdragon 810 was, en dus wilden journalisten op dat Chelsea-hok in New York City graag weten hoe de Snapdragon 820 het bedrijf zou verlossen. En het was een geweldige chipset, oké: het beloofde gezonde prestatieverbeteringen (zonder enige beperking) door terug te gaan naar de toen beproefde aangepaste kernen waar Qualcomm bekend om stond. Toch herinner ik me ook een heel subtiele mededeling die achteraf gezien meer aandacht had moeten krijgen: de tweede generatie Hexagon 680 DSP en zijn enkele instructie, meerdere data (SIMD) Hexagon Vector eXtensions, of HVX. Als ingenieurs de functie niet een naam hadden gegeven, zou deze misschien de aandacht hebben gekregen die het verdiende.

Deze coprocessor zorgt ervoor dat de hardwarethreads van de scalaire DSP-eenheid toegang krijgen tot HVX-‘contexten’ (registerbestanden) voor brede vectorverwerkingsmogelijkheden. Het maakte het mogelijk om aanzienlijke rekenwerklasten over te brengen van de energieverslindende CPU of GPU naar de energiezuinige DSP, zodat beeldvormings- en computervisietaken met aanzienlijk betere prestaties zouden kunnen worden uitgevoerd per milliwatt. Ze zijn perfect voor het toepassen van identieke bewerkingen op aaneengesloten vectorelementen (oorspronkelijk alleen gehele getallen), waardoor ze goed geschikt zijn voor computer vision-werklasten. We hebben in het verleden een diepgaand artikel geschreven over de DSP en HVX, waarbij wordt opgemerkt dat de HVX-architectuur zich goed leent voor parallellisatie en, uiteraard, voor het verwerken van grote invoervectoren. Destijds promootte Qualcomm zowel de DSP als de HVX vrijwel uitsluitend door de verbeteringen ervan te beschrijven zou computer vision-werklasten met zich meebrengen, zoals de Harris-hoekdetector en ander schuifraam methoden.

Pas met de komst van deep learning in mobiele consumententoepassingen werd de DSP de vector verwerkingseenheden (en nu een tensorversneller) zouden trouwen met AI en neurale netwerken bijzonder. Maar terugkijkend is het volkomen logisch: de architectuur van de digitale signaalprocessor (DSP), oorspronkelijk ontworpen voor gedigitaliseerde verwerking real-world of analoge signaalinvoer, leent zich voor veel van dezelfde werklasten als veel machine learning-algoritmen en neurale netwerken. DSP's zijn bijvoorbeeld op maat gemaakt voor filterkernels, convolutie- en correlatiebewerkingen, 8-bits berekeningen, een heleboel lineaire algebra (vector- en matrixproducten) en vermenigvuldig-accumulatie- (MAC)-bewerkingen, allemaal het meest efficiënt wanneer geparallelliseerd. De looptijd van een neuraal netwerk is ook sterk afhankelijk van het vermenigvuldigen van grote vectoren, matrices en/of tensoren. het is niet meer dan normaal dat de prestatievoordelen van de DSP zich netjes vertalen naar neurale netwerkarchitecturen Goed. We komen binnenkort nog eens op dit onderwerp terug!

In de daaropvolgende jaren bleef Qualcomm benadrukken dat ze dat niet aanbieden zojuist chipsets, maar mobiele platforms, en dat ze zich niet concentreren zojuist op het verbeteren van bepaalde componenten, maar het leveren van "heterogene" rekenkracht. In 2017 brachten ze hun Snapdragon Neural Processing Engine SDK (voor runtime-versnelling) uit op het Qualcomm Developer Network, en begin 2018 brachten ze heeft de Qualcomm Artificial Intelligence Engine aangekondigd om hun verschillende AI-compatibele hardware (CPU, GPU, DSP) en softwarecomponenten onder één enkele te consolideren naam. Met deze nuttige nomenclatuur konden ze netjes reclame maken voor hun AI-prestatieverbeteringen op zowel de Snapdragon 855 als Leeuwebek 865, die comfortabel het aantal biljoenen operaties per seconde (TOPS) en het jaar-op-jaar-percentage kan spellen verbeteringen. Benutting van de generatieverbeteringen in CPU, GPU en DSP, die allemaal hun eigen AI-gericht zien upgrades - het bedrijf is in staat indrukwekkende benchmarks te plaatsen ten opzichte van concurrenten, die we zullen bespreken binnenkort. Met de recente marketinginspanningen van het bedrijf en de uniforme, consistente berichtgeving over heterogeen computergebruik wint hun AI-branding eindelijk grip onder journalisten en technologieliefhebbers.

Demystificerende neurale netwerken: een alledaagse stapel lineaire algebra

Om veel jargon te ontwarren dat we later in het artikel tegenkomen, hebben we een korte inleiding nodig wat een neuraal netwerk is En wat je nodig hebt om het sneller te maken. Ik wil heel kort ingaan op enkele van de wiskundige onderbouwingen van neurale netwerken, waarbij ik zoveel mogelijk jargon en notatie vermijd. Het doel van deze sectie is eenvoudigweg om te identificeren wat een neuraal netwerk fundamenteel doet: de rekenkundige bewerkingen het voert uit, in plaats van de theoretische basis die deze operaties rechtvaardigt (dat is veel ingewikkelder!). Ga gerust door naar het volgende gedeelte als u direct naar de Qualcomm AI Engine-upgrades wilt gaan.

“Vectorwiskunde is de basis van diepgaand leren.” – Travis Lanier, Senior Director Product Management bij Qualcomm op de Snapdragon Tech Summit 2017

Hieronder vindt u een zeer typisch feedforward volledig verbonden neuraal netwerkdiagram. In werkelijkheid zorgt het diagram ervoor dat het hele proces er iets ingewikkelder uitziet dan het is (tenminste, totdat je eraan gewend raakt). We zullen een forward pass berekenen, wat uiteindelijk is wat een netwerk doet wanneer het een gevolgtrekking, een term die we later in het artikel ook zullen tegenkomen. Op dit moment zullen we ons alleen bezighouden met de machine en zijn onderdelen, met een korte uitleg van elk onderdeel.

Een neuraal netwerk bestaat uit sequentiële lagen, elk bestaande uit verschillende "neuronen" (weergegeven als cirkels in het diagram) verbonden door gewichten (weergegeven als lijnen in het diagram). Over het algemeen zijn er drie soorten lagen: de invoerlaag, die de onbewerkte invoer gebruikt; verborgen lagen, die wiskundige bewerkingen uit de vorige laag berekenen, en de uitvoerlaag, dat de definitieve voorspellingen oplevert. In dit geval hebben we slechts één verborgen laag, met drie verborgen eenheden. De invoer bestaat uit een vector, array of lijst met getallen met een bepaalde dimensie of lengte. In het voorbeeld hebben we bijvoorbeeld een tweedimensionale invoer [1.0, -1.0]. Hier de uitgang van het netwerk bestaat uit een scalair of enkelvoudig nummer (geen lijst). Elke verborgen eenheid is gekoppeld aan een set gewichten en een bias term, weergegeven naast en onder elk knooppunt. Om de te berekenen gewogen som output van een eenheid, elk gewicht wordt vermenigvuldigd met elke overeenkomstige input, en vervolgens worden de producten bij elkaar opgeteld. Vervolgens voegen we eenvoudigweg de bias-term toe aan die som van producten, wat resulteert in de output van het neuron. Bijvoorbeeld met onze inbreng van [1.0,-1.0], zal de eerste verborgen eenheid een uitvoer hebben van 1.0*0.3 + (-1.0) * 0.2 + 1.0 = 1.1. Simpel, toch?

De volgende stap in het diagram vertegenwoordigt een activeringsfunctie, en is wat ons in staat zal stellen de uitvoervector van elke verborgen laag te produceren. In ons geval zullen we het zeer populaire en uiterst eenvoudige gebruiken gelijkgerichte lineaire eenheid of ReLU, waarvoor een invoernummer nodig is en ofwel (i) nul, als dat getal negatief is, of nul (ii) het invoernummer zelf, als het getal positief is. Bijvoorbeeld, ReLU(-0,1) = 0, Maar ReLU(0,1) = 0,1. Naar aanleiding van het voorbeeld van onze inbreng als it propageert via die eerste verborgen eenheid zou de uitvoer van 1.1 die we hebben berekend, worden doorgegeven aan de activeringsfunctie, wat oplevert ReLU(1,1)=1,1. De uitvoerlaag zal in dit voorbeeld net als een verborgen eenheid functioneren: hij zal de uitvoer van de verborgen eenheden vermenigvuldigen met zijn gewichten, en vervolgens de bias-term van 0.2. De laatste activeringsfunctie, de stap functie, zal positieve invoer in 1 en negatieve waarden in 0 veranderen. Als we weten hoe elk van de bewerkingen in het netwerk werkt, kunnen we de volledige berekening van onze gevolgtrekking als volgt opschrijven:

Dat is alles wat er is voor onze feedforward neurale netwerkberekening. Zoals u kunt zien, is de operaties bestaan ​​vrijwel geheel uit producten en sommen van getallen. Onze activatiefunctie ReLU(x) kan ook heel eenvoudig worden geïmplementeerd, bijvoorbeeld door simpelweg te bellen maximaal (x, 0), zodat het x retourneert wanneer de invoer groter is dan 0, maar anders 0 retourneert. Let daar op stap (x) kan op dezelfde manier worden berekend. Er bestaan ​​veel meer gecompliceerde activeringsfuncties, zoals de sigmoïdale functie of de hyperbolische tangens, waarbij verschillende interne berekeningen betrokken zijn en die beter geschikt zijn voor verschillende doeleinden. Een ander ding dat je al kunt opmerken, is dat wij dat ook doen kan de berekeningen van de drie verborgen eenheden en hun ReLU-toepassingen parallel uitvoeren, omdat hun waarden niet tegelijkertijd nodig zijn totdat we hun gewogen som op het uitvoerknooppunt berekenen.

Maar daar hoeven we niet te stoppen. Hierboven ziet u dezelfde berekening, maar deze keer weergegeven met matrix- en vectorvermenigvuldigingsbewerkingen. Om tot deze weergave te komen, ‘vergroten’ we onze invoervector door er een 1,0 aan toe te voegen (lichtere tint), zodat wanneer we onze invoervector plaatsen gewichten en onze bias (lichtere tint) in de matrix zoals hierboven weergegeven, levert de resulterende vermenigvuldiging dezelfde verborgen eenheid op uitgangen. Vervolgens kunnen we ReLU elementair op de uitvoervector toepassen en vervolgens de ReLU-uitvoer “vergroten” om deze te vermenigvuldigen met de gewichten en bias van onze uitvoerlaag. Deze representatie vereenvoudigt de notatie enorm, omdat de parameters (gewichten en biases) van een hele verborgen laag onder één enkele variabele kunnen worden verborgen. Maar het allerbelangrijkste voor ons is dat het dat duidelijk maakt de innerlijke berekeningen van het netwerk zijn in wezen matrix- en vectorvermenigvuldiging of puntproducten. Gegeven hoe de grootte van deze vectoren en matrices schaalt met de dimensionaliteit van onze invoer en het aantal parameters in ons netwerk, zal de meeste runtime worden besteed aan dit soort berekeningen. Een stelletje lineaire algebra!

Ons speelgoedvoorbeeld is natuurlijk erg beperkt van omvang. In de praktijk kunnen moderne deep learning-modellen tientallen, zo niet honderden verborgen lagen en miljoenen bijbehorende parameters hebben. In plaats van ons tweedimensionale vectorinvoervoorbeeld kunnen ze vectoren opnemen met duizenden invoeren, in verschillende vormen, zoals matrices (zoals afbeeldingen met één kanaal) of tensoren (driekanaals RGB afbeeldingen). Er is ook niets dat onze matrixrepresentatie ervan weerhoudt meerdere invoervectoren tegelijk op te nemen, door rijen toe te voegen aan onze oorspronkelijke invoer. Neurale netwerken kunnen ook anders ‘bedraad’ zijn dan ons feedforward neurale netwerk, of andere activeringsfuncties uitvoeren. Er is een enorme dierentuin aan netwerkarchitecturen en -technieken, maar uiteindelijk zijn ze dat wel grotendeels opgesplitst in dezelfde parallelle rekenkundige bewerkingen die we in ons speelgoedvoorbeeld vinden, alleen op een veel grotere schaal.

Visueel voorbeeld van convolutielagen die op een tensor werken. (Afbeelding tegoed: Op weg naar datawetenschap)

De populaire bijvoorbeeld convolutionele neurale netwerken (CNN's) waarover je waarschijnlijk hebt gelezen, zijn niet “volledig verbonden” zoals ons nepnetwerk. De “gewichten” of parameters ervan zijn verborgen convolutionele lagen kan worden gezien als een soort filter, een glijdend venster dat opeenvolgend wordt toegepast op kleine stukjes van een invoer, zoals hierboven weergegeven - deze "convolutie" is eigenlijk slechts een glijdend puntproduct! Deze procedure resulteert in wat vaak een kenmerkenkaart. Poolinglagen verkleinen de grootte van een invoer of de uitvoer van een convolutionele laag, door de maximale of gemiddelde waarde van kleine delen van de afbeelding te berekenen. De rest van het netwerk bestaat meestal uit volledig verbonden lagen, zoals die in ons voorbeeld, en activeringsfuncties zoals ReLU. Dit wordt vaak gebruikt voor het extraheren van kenmerken in afbeeldingen waar de kenmerkkaarten van vroege convolutionele lagen kunnen "detecteren" patronen zoals lijnen of randen, en latere lagen kunnen ingewikkelder kenmerken zoals gezichten of complexe kenmerken detecteren vormen.

Alles wat er is gezegd is strikt beperkt tot gevolgtrekking, of het evalueren van een neuraal netwerk nadat de parameters ervan zijn gevonden opleiding wat een veel ingewikkelder procedure is. En nogmaals, we hebben veel verklaringen uitgesloten. In werkelijkheid is elk van de netwerkcomponenten met een bepaald doel opgenomen. Degenen onder jullie die lineaire algebra hebben gestudeerd, kunnen dat bijvoorbeeld gemakkelijk waarnemen zonder de niet-lineaire activeringsfuncties, ons netwerk vereenvoudigt tot een lineair model met zeer beperkte voorspellende waarde capaciteit.

Een verbeterde AI-engine op de Snapdragon 865 - Een samenvatting van verbeteringen

Met dit handige inzicht in de componenten van een neuraal netwerk en hun wiskundige bewerkingen kunnen we precies gaan begrijpen waarom hardwareversnelling zo belangrijk is. In het laatste deel kunnen we zien dat parallellisatie essentieel is voor het versnellen van het gegeven netwerk stelt ons bijvoorbeeld in staat om verschillende parallelle puntproducten te berekenen die overeenkomen met elk neuron activering. Elk van deze puntproducten bestaat zelf uit vermenigvuldigingsbewerkingen op getallen, meestal met een precisie van 8 bits in het geval van mobiele toepassingen, die zo snel mogelijk moeten gebeuren. De AI Engine biedt verschillende componenten om deze taken te ontlasten, afhankelijk van de prestatie- en energie-efficiëntieoverwegingen van de ontwikkelaar.

Een diagram van een CNN voor de populaire MNIST-dataset, getoond op het podium van de Snapdragon Summit van dit jaar. De vectorverwerkingseenheid past goed bij de volledig verbonden lagen, zoals in ons proefvoorbeeld. Ondertussen verwerkt de tensorprocessor de convolutionele en poolinglagen die meerdere verschuivingen verwerken kernels parallel, zoals in het diagram hierboven, en elke convolutionele laag kan veel afzonderlijke features uitvoeren kaarten.

Laten we eerst eens kijken naar de GPU, waar we het meestal over hebben in de context van 3D-games. De consumentenmarkt voor videogames stimuleert al tientallen jaren de ontwikkeling van hardware voor grafische verwerking, maar waarom zijn GPU's zo belangrijk voor neurale netwerken? Om te beginnen kauwen ze in één keer enorme lijsten met 3D-coördinaten van polygoonhoekpunten door om de wereldstatus in de game bij te houden. De GPU moet ook gigantische matrixvermenigvuldigingsoperaties uitvoeren om deze 3D te converteren (of in kaart te brengen). coördinaten op 2D-vlakke coördinaten op het scherm, en verwerken ook de kleurinformatie van pixels in parallel. Als klap op de vuurpijl bieden ze een hoge geheugenbandbreedte om de enorme geheugenbuffers voor de textuurbitmaps over de in-game geometrie te verwerken. De voordelen op het gebied van parallellisatie, geheugenbandbreedte en daaruit voortvloeiende lineaire algebra-mogelijkheden komen overeen met de prestatie-eisen van neurale netwerken.

De Adreno GPU-lijn speelt dus een grote rol in de Qualcomm AI Engine, en op het podium verklaarde Qualcomm dat dit bijgewerkte onderdeel in de Snapdragon 865 het mogelijk maakt twee keer zoveel drijvende-kommamogelijkheden En tweemaal het aantal TOPS vergeleken met de vorige generatie, wat verrassend is gezien het feit dat ze slechts 25% prestatieverbetering boekten voor grafische weergave. Toch beschikt het bedrijf voor deze release over een 50% toename van het aantal rekenkundige logische eenheden (ALU's), hoewel ze zoals gewoonlijk hun GPU-frequenties niet hebben bekendgemaakt. Qualcomm noemde ook gemengde precisie instructies, en dat is precies hoe het klinkt: verschillende numerieke precisie bij bewerkingen in één enkele rekenmethode.

Bij de Hexagon 698 DSP zien we een groot deel van de prestatiewinst die de Snapdragon 865 biedt. Dit jaar heeft het bedrijf geen verbeteringen gecommuniceerd in de vectoruitbreidingen van hun DSP (waarvan de prestaties verviervoudigden ten opzichte van de 855 van vorig jaar), noch in hun scalaire eenheden. Ze merken echter wel op dat ze het voor de Tensor Accelerator van dit blok hebben bereikt vier keer de TOP's vergeleken met de vorig jaar geïntroduceerde versie in de Hexagon 695 DSP, terwijl deze ook kan worden aangeboden 35% betere energie-efficiëntie. Dit is een groot probleem gezien de prevalentie van convolutionele neurale netwerkarchitecturen in moderne AI-gebruiksscenario’s, variërend van detectie van beeldobjecten tot automatische spraakherkenning. Zoals hierboven uitgelegd, produceert de convolutiebewerking in deze netwerken een 2D-array van matrixuitvoer voor elk filter, wat betekent dat wanneer ze op elkaar worden gestapeld, de uitvoer van een convolutielaag een 3D-array is of tensor.

Qualcomm promootte ook hun “nieuwe en unieke” bandbreedtecompressie voor deep learning techniek, die dat blijkbaar wel kan comprimeer gegevens verliesloos met ongeveer 50%, waardoor op zijn beurt de helft van de gegevens wordt verplaatst en bandbreedte wordt vrijgemaakt voor andere delen van de chipset. Het zou ook energie moeten besparen door de gegevensdoorvoer te verminderen, hoewel we geen cijfers kregen en er ook kleine energiekosten zouden moeten zijn verbonden aan het comprimeren van de gegevens.

Wat betreft bandbreedte ondersteunt de Snapdragon 865 LPDDR5-geheugen, wat ook de AI-prestaties ten goede zal komen, omdat het de snelheid waarmee bronnen en invoergegevens worden overgedragen zal verhogen. Naast hardware is Qualcomm nieuw Toolkit voor AI-modelefficiëntie maakt eenvoudige modelcompressie en daaruit voortvloeiende besparingen op energie-efficiëntie beschikbaar voor ontwikkelaars. Neurale netwerken hebben vaak een groot aantal “redundante” parameters; Ze kunnen verborgen lagen bijvoorbeeld breder maken dan nodig is. Een van de AI Toolkit-functies die op het podium worden besproken, is dus modelcompressie, waarbij twee van de aangehaalde methoden ruimtelijke singuliere waarde-ontleding (SVD) en Bayesiaanse compressie zijn, beide die het neurale netwerk effectief snoeien door overtollige knooppunten te verwijderen en de modelstructuur aan te passen vereist. De andere modelcompressietechniek die op het podium wordt gepresenteerd, heeft betrekking op kwantisering, en dat omvat het veranderen van de numerieke precisie van gewichtsparameters en berekeningen van activeringsknooppunten.

De numerieke precisie van neurale netwerkgewichten verwijst naar de vraag of de numerieke waarden die voor de berekening worden gebruikt, worden opgeslagen, overgedragen en verwerkt als 64, 32, 16 (halve precisie) of 8-bits waarden. Het gebruik van een lagere numerieke precisie (bijvoorbeeld INT8 versus FP32) vermindert het totale geheugengebruik en de gegevensoverdrachtsnelheden, waardoor een hogere bandbreedte en snellere gevolgtrekkingen mogelijk zijn. Veel van de hedendaagse deep learning-toepassingen zijn voor gevolgtrekking overgestapt op 8-bits precisiemodellen, wat misschien klinkt verrassend: zou een hogere numerieke nauwkeurigheid geen “nauwkeurigere” voorspellingen bij classificatie of regressie mogelijk maken taken? Niet noodzakelijk; hogere numerieke precisie, vooral tijdens inferentie, kan verloren gaan als neurale netwerken worden getraind om met luidruchtige input om te gaan hoe dan ook kleine verstoringen tijdens de training, en de fout in de lagere bitrepresentatie van een bepaalde (FP) waarde is uniform ‘willekeurig’ genoeg. In zekere zin wordt de lage nauwkeurigheid van de berekeningen door het netwerk behandeld als een nieuwe bron van ruis, en blijven de voorspellingen bruikbaar. Afgezien van de heuristische verklaringen, is het waarschijnlijk dat u een nauwkeurigheidsboete krijgt als u een model slecht kwantiseert zonder rekening te houden met enkele belangrijke overwegingen. Daarom wordt er veel onderzoek naar gedaan onderwerp

Terug naar de Qualcomm AI Toolkit: hiermee bieden ze aan datavrije kwantisering, waardoor modellen kunnen worden gekwantiseerd zonder gegevens of parameterverfijning, terwijl toch vrijwel originele modelprestaties voor verschillende taken worden bereikt. In wezen past het gewichtsparameters aan voor kwantisering en corrigeert het de biasfout die wordt geïntroduceerd bij het overschakelen naar lagere precisiegewichten. Gezien de voordelen van kwantisering zou het automatiseren van de procedure onder een API-aanroep de productie en implementatie van modellen vereenvoudigen, en Qualcomm beweert meer dan vier keer zoveel prestatie per watt bij het uitvoeren van het gekwantiseerde model.

Maar nogmaals, dit is niet schokkend: kwantiseringsmodellen kunnen enorme bandbreedte- en opslagvoordelen bieden. Het converteren van een model naar INT8 levert u niet alleen een viervoudige reductie in bandbreedte op, maar ook het voordeel van snellere gehele berekeningen (afhankelijk van de hardware). Het is dan ook een no-brainer dat hardware-versnelde benaderingen van zowel de kwantisering als de numerieke berekening enorme prestatiewinsten zouden opleveren. Op zijn blogPete Warden van Google schreef bijvoorbeeld dat een samenwerking tussen de teams van Qualcomm en Tensorflow het mogelijk maakt dat 8-bits modellen kunnen oplopen tot zeven keer snellerop de HVX DSP dan op de CPU. Het potentieel van eenvoudig te gebruiken kwantisering kan moeilijk worden overschat, vooral gezien de manier waarop Qualcomm zich heeft geconcentreerd op de prestaties van INT8.

De ARM-gebaseerde Kryo CPU van de Snapdragon 865 is nog steeds een belangrijk onderdeel van de AI-engine. Ook al verdient de hardwareversnelling die in de bovenstaande paragrafen wordt besproken de voorkeur, soms ook kan applicaties niet vermijden die niet goed profiteren van deze blokken, wat resulteert in CPU terugvallen. In het verleden had ARM specifieke instructiesets geïntroduceerd die gericht waren op het versnellen van matrix- en vectorgebaseerde berekeningen. In ARMv7-processors zagen we de introductie van ARM NEON, een SIMD-architectuurextensie die DSP-achtige instructies mogelijk maakt. En met de ARMv8.4-A-microarchitectuur zagen we de introductie van een instructie specifiek voor puntproducten.

Al deze geboekte prestatieverbeteringen hebben betrekking op veel van de werklasten die we in de vorige sectie hebben beschreven, maar het is ook de moeite waard om in gedachten te houden dat deze Snapdragon 865-upgrades alleen de nieuwste verbeteringen in de AI-mogelijkheden van Qualcomm. In 2017 documenteerden we hun verdrievoudiging van de AI-mogelijkheden met de Hexagon 685 DSP en andere chipsetupdates. Vorig jaar introduceerden ze hun tensorversneller en geïntegreerde ondersteuning voor niet-lineariteitsfuncties (zoals de eerder genoemde ReLU!) Op hardwareniveau. Ze verdubbelden ook het aantal vectorversnellers en verbeterden de prestaties van de scalaire verwerkingseenheid met 20%. Door dit alles te combineren met verbeteringen aan de CPU-kant, zoals de snellere dot-productbewerkingen dankzij ARM, en de extra ALU's in de GPU, kan Qualcomm uiteindelijk verdrievoudigd ook ruwe AI-mogelijkheden.

Praktische voordelen en uitgebreide use-cases

Al deze upgrades hebben geleid tot vijf keer zoveel AI-mogelijkheden op de Snapdragon 865 vergeleken met slechts twee jaar geleden, maar Het allerbelangrijkste is misschien wel dat de verbeteringen ook gepaard gingen met betere prestaties per milliwatt, een cruciale maatstaf voor mobiel gebruik apparaten. Op de Snapdragon Summit 2019 gaf Qualcomm ons een paar benchmarks waarin hun AI Engine werd vergeleken met twee concurrenten op verschillende classificatienetwerken. Deze cijfers lijken te zijn verzameld met behulp van AIMark, een platformonafhankelijke benchmarking-applicatie, die vergelijkingen mogelijk maakt met de A-serie van Apple en de HiSilicon-processors van Huawei. Qualcomm beweert dat deze resultaten gebruik maken van de volledige AI Engine, en dat we tot meer zullen moeten wachten grondige benchmarking om het effect van elke component goed te ontwarren en te bepalen hoe deze tests waren uitgevoerd. Geven de resultaten van bedrijf B bijvoorbeeld een terugval van de CPU aan? Voor zover ik weet, profiteert AIMark momenteel niet van de NPU van de Kirin 990 op bijvoorbeeld onze Mate 30 Pro-eenheden. Maar het ondersteunt wel de Snapdragon Neural Processing Engine, dus het zal zeker profiteren van de Qualcomm AI Engine; aangezien het om interne tests gaat, is het niet expliciet duidelijk of de benchmark op de juiste manier gebruik maakt van de juiste bibliotheken of SDK voor zijn concurrenten.

Het moet ook gezegd worden dat Qualcomm de AI-verwerkingsmogelijkheden van de Snapdragon 865 effectief vergelijkt met eerder aangekondigde of uitgebrachte chipsets. Het is zeer waarschijnlijk dat zijn concurrenten in de volgende cyclus prestatieverbeteringen met een vergelijkbare impact zullen doorvoeren, en als dat zo is In dat geval zou Qualcomm de kroon slechts ongeveer een half jaar in handen hebben vanaf het moment dat Snapdragon 865-apparaten in de schappen kwamen. Dat gezegd hebbende, deze zijn nog steeds indicatief voor het soort hobbels dat we van de Snapdragon 865 kunnen verwachten. Qualcomm is over het algemeen zeer nauwkeurig geweest bij het communiceren van prestatieverbeteringen en benchmarkresultaten van aankomende releases.

Alle netwerken die in deze benchmarks worden gepresenteerd, classificeren afbeeldingen uit databases zoals ImageNet, ontvangen ze als invoer en geven één uit honderden categorieën weer. Nogmaals, ze vertrouwen op dezelfde soorten bewerkingen die we in de tweede sectie hebben beschreven, hoewel hun architecturen veel zijn ingewikkelder dan deze voorbeelden en ze werden op het moment van publicatie beschouwd als de modernste oplossingen. In het beste geval levert hun naaste concurrent minder dan de helft van het aantal gevolgtrekkingen per seconde.

Wat het stroomverbruik betreft, heeft Qualcomm conclusies per watt gegeven om de hoeveelheid AI-verwerking te laten zien die mogelijk is bij een bepaalde hoeveelheid stroom. In het beste geval (MobileNet SSD) kan de Snapdragon AI Engine het dubbele aantal gevolgtrekkingen bieden met hetzelfde stroombudget.

Stroom is vooral belangrijk voor mobiele apparaten. Denk bijvoorbeeld aan een op een neuraal netwerk gebaseerd Snapchat-filter. Realistisch gezien is de computer vision-pijplijn gezichtsinformatie extraheren en een masker of invoer toepassen transformatie hoeft slechts te worden uitgevoerd met een snelheid van 30 of 60 voltooiingen per seconde om een ​​vloeistof te bereiken ervaring. Door de onbewerkte AI-prestaties te verbeteren, zou je invoer met een hogere resolutie kunnen gebruiken en beter uitziende filters kunnen uitvoeren, maar dat zou wel kunnen het is ook beter om genoegen te nemen met HD-resolutie voor snellere uploads en om het stroomverbruik en de thermische beperking te verminderen. In veel toepassingen is “sneller” niet noodzakelijkerwijs “beter”, en kun je dan profiteren van de voordelen van een verbeterde energie-efficiëntie.

Tijdens dag 2 van de Snapdragon Summit betrad Sr. Director of Engineering bij Snapchat Yurii Monastyrshyn het podium om te laten zien hoe hun nieuwste op deep learning gebaseerde filters worden enorm versneld door Hexagon Direct NN met behulp van de Hexagon 695 DSP op de Snapdragon 865.

Daarbovenop, naarmate ontwikkelaars toegang krijgen tot eenvoudigere neurale netwerkimplementaties en steeds meer applicaties gaan gebruik maken van AI-technieken, zullen gelijktijdigheidsgebruiksscenario’s meer in de schijnwerpers komen te staan, omdat de smartphone meerdere parallelle AI-pijplijnen tegelijk (ofwel voor een enkele applicatie die invoersignalen van verschillende bronnen verwerkt, ofwel voor zoveel mogelijk applicaties die afzonderlijk worden uitgevoerd). op apparaat). Hoewel we respectabele verbeteringen in de energie-efficiëntie zien bij de compute DSP, GPU en CPU, verwerkt de Qualcomm Sensing Hub altijd-aan-gebruiksscenario's om te luisteren naar triggerwoorden bij een zeer laag stroomverbruik. Het maakt het mogelijk om audio-, video- en sensorfeeds te monitoren bij een stroomsterkte van minder dan 1 mA, waardoor het apparaat bepaalde geluidssignalen kan detecteren (zoals een huilende baby), bovenop de bekende digitale assistent-trefwoorden. Wat dat betreft maakt de Snapdragon 865 het mogelijk om niet alleen het trefwoord te detecteren, maar ook wie het uitspreekt, om een ​​geautoriseerde gebruiker te identificeren en dienovereenkomstig te handelen.

Meer AI op Edge-apparaten

Deze verbeteringen kunnen zich uiteindelijk vertalen in tastbare voordelen voor uw gebruikerservaring. Diensten die betrekking hebben op vertaling, objectherkenning en labeling, gebruiksvoorspellingen of artikelaanbevelingen, Het begrijpen van natuurlijke taal, het ontleden van spraak enzovoort zullen het voordeel hebben dat ze sneller werken en minder consumeren stroom. Als u een hoger computerbudget heeft, kunt u ook nieuwe gebruiksscenario's en ervaringen creëren en processen die voorheen in de cloud plaatsvonden, naar uw apparaat verplaatsen. Hoewel AI als term in het verleden op dubieuze, misleidende en zelfs foutieve manieren is gebruikt (zelfs door OEM’s), Veel van uw diensten waar u vandaag de dag van geniet, zijn uiteindelijk in een of andere vorm afhankelijk van machine learning-algoritmen een andere.

Maar buiten Qualcomm zijn andere chipsetfabrikanten ook op dit front snel aan het itereren en verbeteren. De 990 5G had bijvoorbeeld een 2+1 NPU-kernontwerp, wat resulteerde in tot 2,5 keer de prestaties van de Kirin 980, en tweemaal die van de Apple A12. Toen de processor werd aangekondigd, bleek deze tot tweemaal zoveel frames (gevolgtrekkingen) per seconde te bieden van de Snapdragon 855 op INT8 MobileNet, wat moeilijk te rijmen is met de resultaten van Qualcomm. De Apple A13 Bionic daarentegen bood naar verluidt zes keer snellere matrixvermenigvuldiging dan zijn voorganger en verbeterde het acht-core neurale motorontwerp. We zullen moeten wachten tot we de Snapdragon 865 op commerciële apparaten goed kunnen testen tegen zijn huidige en toekomstige concurrenten, maar het is Het is duidelijk dat de concurrentie op dit gebied nooit stilstaat, aangezien de drie bedrijven heel veel middelen hebben gestoken in het verbeteren van hun AI prestatie.