Il software basato sul Machine Learning sta ormai diventando onnipresente e la fame di prestazioni sempre maggiori in quest’ambito ha raggiunto anche gli smartphone negli 2-3 anni: lo dimostra l’incredibile aumento prestazionale portato dalle Neural Processing Unit integrate nei SoC mobili di ultima generazione, che hanno raggiunto le stesse prestazioni di inferenza di processori desktop a 8 core moderni e di schede grafiche dedicate di pochi anni fa.

Il nuovo Kirin 990 di Huawei supera tutti i SoC per dispositivi Android e riesce persino a surclassare la CPU Intel Core i7 9700K: la cosa incredibile è che lo fa mantenendo consumi inferiori ai 5 Watt, mentre il processore di Intel spinto al massimo può tranquillamente raggiungere i 200 Watt. Continuando ad esaminare il grafico qui sotto, vediamo come Huawei  potrebbe arrivare tranquillamente a superare le prestazioni di GPU come la Tesla K80, che integra quasi 5000 cuda core e 24 GB di memoria GDDR5 (e non parliamo ancora della differenza nei consumi).

Nel grafico non figurano, ma i primi SoC con circuiti dedicati al deep learning sono apparsi prima, naturalmente con prestazioni ridotte: parliamo dello Snapdragon 820, del Kirin 970 e dell’Exynos 8895. Ci sono quindi state diverse generazioni di SoC mobili con “NPU”, a partire dalla prima che potremmo definire legacy e che però non permetteva di accelerare task di machine learning direttamente tramite Android, ma solamente con librerie apposite che sfruttavano le GPU integrate.

Seconda generazione:

Qualcomm: Snapdragon 845 (acceleration: Hexagon 685 + Adreno 630), Snapdragon 710 (acceleration: Hexagon 685), Snapdragon 670 (acceleration: Hexagon 685).
Huawi: HiSilicon Kirin 970 (acceleration: NPU, Cambricon).
Samsung: Exynos 9810 (acceleration: Mali-G72 MP18), Exynos 9610 (acceleration: Mali-G72 MP3), Exynos 9609 (acceleration: Mali-G72 MP3).
MediaTek: Helio P70 (acceleration: APU 1.0 + Mali-G72 MP3), Helio P60 (acceleration: APU 1.0 + Mali-G72 MP3), Helio P65 (acceleration: Mali-G52 MP2).

Questi SoC sono i primi a permettere di accelerare alcuni modelli e sono rappresentativi delle prestazioni generali riguardanti l’IA nel 2018.

Terza generazione:

Qualcomm: Snapdragon 855 Plus (acceleration: Hexagon 690 + Adreno 640), Snapdragon 855 (acceleration: Hexagon 690 + Adreno 640), Snapdragon 730 (acceleration: Hexagon 688 + Adreno 618), Snapdragon 675 (acceleration: Hexagon 685 + Adreno 612), Snapdragon 665 (acceleration: Hexagon 686 + Adreno 610).
Huawei: HiSilicon 980 (acceleration: NPU x 2, Cambricon).
Samsung: Exynos 9825 (acceleration: NPU + Mali-G76 MP12), Exynos 9820 (acceleration: NPU + Mali-G76 MP12).
MediaTek: Helio P90 (acceleration: APU 2.0), Helio G90 (acceleration: APU 1.0 + Mali-G76 MP4).

Questi SoC del 2019 accelerano invece tutti i tipi di modelli esistenti.

Quarta generazione: 

Solo Huawei è entrata in questa nuova era, con i SoC HiSilicon Kirin 990, HiSilicon Kirin 810 e Unisoc Tiger T710.

 

 

Vediamo ora un po’ di benchmark, rappresentanti sia le prestazioni per l’inferenza floating-point, sia per quella quantizzata. In cosa differiscono? La prima permette di utilizzare gli stessi identici modelli allenati su server e computer desktop di vario genere senza conversioni, ma in alcuni casi non è applicabile poiché alcune trasformazioni richiedono fino a 8 GB di RAM e risorse computazionali che non sono disponibili su smartphone.

L’inferenza quantizzata consiste nel trasformare i modelli dall’essere rappresentati da numeri floating-point a 16 bit a interi a 8-bit, risultano in una grossa accelerazione dei tempi di esecuzione e di una riduzione del fabbisogno di memoria di sistema di quattro volte: chiaramente questo tipo di inferenza è più efficiente anche dal punto di vista energetico, ma il lato negativo è una generale riduzione della precisione del modello. In alcuni casi può sostituire l’inferenza floating-point quasi perfettamente, mentre in altri ha una precisione praticamente nulla risultando quindi inutilizzabile.

Prendendo sotto esame i SoC di Huawei, vediamo come l’azienda sia riuscita in soli due anni ad aumentare le prestazioni nel primo caso di ben 7 volte e mezzo, passando dal Kirin 970 al Kirin 990. Se la cava benissimo anche nel caso quantizzato Qualcomm, che in un solo anno nel passaggio da Snapdragon 845 a 855 Plus è riuscita ad aumentare le prestazioni del proprio DSP Hexagon di 3,5 volte. Da notare anche come MediaTek, spesso sottovalutata, mantenga prestazioni in linea a Samsung, Huawei e Qualcomm in entrambi i casi con il suo Helio P90.

Bisogna infine sottolineare come Samsung sia penalizzata nei risultati a causa dei driver Arm NN OpenCL, poichè non riescono a sfruttare totalmente le GPU Mali: utilizzando l’implementazione custom dei driver si possono infatti ottenere prestazioni fino a 10 volte superiori in alcuni casi specifici.

 

A cosa servono queste nuove ed enormi capacità computazionali dei SoC mobili di ultima generazione? Un esempio lampante ce lo forniscono smartphone come Google Pixel 4 e Pixel 4 XL, che sfruttano le NPU per l’ottima fotografica computazionale, per sottotitolare in tempo reale ogni filmato che appare a schermo, per cercare precise parti di un discorso all’interno delle registrazioni e conseguentemente per le trascrizioni in tempo reale e infine per utilizzare il potere dell’Assistente Google senza dover passare per i server, riducendo praticamente a zero il ritardo delle risposte.

Vai a: recensione Google Pixel 4 XL.