Comment Qualcomm a apporté d'énormes améliorations à l'IA sur le Snapdragon 865

Qualcomm a fait d'énormes progrès dans les performances de l'IA avec le nouveau SoC Snapdragon 865. Nous analysons les changements apportés par Qualcomm pour accélérer l'apprentissage automatique.

Il semble que nous ne pouvons pas passer une journée sans voir « l’intelligence artificielle » dans l’actualité, et la semaine dernière n’a pas fait exception, en grande partie grâce au Snapdragon Tech Summit. Chaque année, Qualcomm dévoile la pléthore d'améliorations qu'il apporte à son Hexagon DSP et au Qualcomm AI Engine, un terme qu'ils utilisent pour l'ensemble de leur plate-forme de calcul hétérogène - CPU, GPU et DSP - lorsqu'ils parlent d'IA charges de travail. Il y a quelques années, l’insistance de Qualcomm à éloigner la conversation des sujets de discussion traditionnels, tels que l’amélioration des performances du processeur d’une année sur l’autre, semblait un peu étrange. Pourtant, en 2019 et avec le Snapdragon 865, nous constatons que l'informatique hétérogène est bel et bien à la tête de leur poussée informatique mobile, alors que l'IA et les charges de travail accélérées par le matériel semblent se faufiler dans un large éventail de cas d'utilisation et d'applications, des médias sociaux aux activités quotidiennes. prestations de service.

Le Snapdragon 865 apporte le moteur AI de 5e génération de Qualcomm, et avec lui des améliorations juteuses en termes de performances et d'efficacité énergétique – mais il fallait s'y attendre. Dans un océan de spécifications, de chiffres de performances, de termes techniques sophistiqués et de mots à la mode marketing fastidieux, il est facile de perdre de vue ce que signifient réellement ces améliorations. Que décrivent-ils? Pourquoi ces mises à niveau sont-elles si significatives pour ceux qui mettent en œuvre l’IA dans leurs applications aujourd’hui, et peut-être plus important encore, pour ceux qui cherchent à le faire à l’avenir ?

Dans cet article, nous ferons une visite guidée à la fois accessible et approfondie du Qualcomm AI Engine en passant en revue son historique, ses composants et les mises à niveau du Snapdragon 865, et surtout, pourquoi ou comment chacun d’eux a contribué à l’expérience smartphone d’aujourd’hui, des filtres amusants aux assistants numériques.

Le DSP Hexagon et le moteur AI Qualcomm: quand la marque fait la différence

Même si je n’ai pas pu assister au Snapdragon Tech Summit de cette semaine, j’ai néanmoins assisté à tous les autres depuis 2015. Si vous vous en souvenez, que C'était l'année du désastre qu'était le Snapdragon 810, et les journalistes de ce loft de Chelsea à New York étaient impatients de découvrir comment le Snapdragon 820 rachèterait l'entreprise. Et c'était un excellent chipset, d'accord: il promettait des améliorations de performances saines (sans aucune limitation) en revenant aux cœurs personnalisés alors éprouvés pour lesquels Qualcomm était connu. Mais je me souviens aussi d'une annonce très subtile qui, rétrospectivement, aurait dû faire l'objet de plus d'attention: la Hexagon 680 DSP de deuxième génération et ses extensions vectorielles Hexagon à instruction unique et données multiples (SIMD), ou HVX. Peut-être que si les ingénieurs n’avaient pas nommé cette fonctionnalité, elle aurait reçu l’attention qu’elle méritait.

Ce coprocesseur permet aux threads matériels de l'unité DSP scalaire d'accéder aux « contextes » HVX (fichiers de registre) pour de larges capacités de traitement vectoriel. Il a permis de décharger d'importantes charges de travail de calcul du CPU ou du GPU gourmand en énergie vers le DSP économe en énergie afin que les tâches d'imagerie et de vision par ordinateur s'exécutent à des performances considérablement améliorées par milliwatt. Ils sont parfaits pour appliquer des opérations identiques sur des éléments vectoriels contigus (à l’origine uniquement des entiers), ce qui les rend parfaitement adaptés aux charges de travail de vision par ordinateur. Nous avons déjà écrit un article détaillé sur le DSP et le HVX., notant que l'architecture HVX se prête bien à la parallélisation et, évidemment, au traitement de grands vecteurs d'entrée. À l'époque, Qualcomm faisait la promotion du DSP et du HVX presque exclusivement en décrivant les améliorations qu'ils apportaient. apporterait aux charges de travail de vision par ordinateur telles que le détecteur de coin Harris et d'autres fenêtres coulissantes méthodes.

Il a fallu attendre l’avènement du deep learning dans les applications mobiles grand public pour que le DSP, son vecteur les unités de traitement (et maintenant, un accélérateur tensoriel) se marieraient avec l'IA et les réseaux de neurones, en particulier. Mais avec le recul, c'est tout à fait logique: l'architecture du processeur de signal numérique (DSP), conçue à l'origine pour gérer les signaux numérisés. entrées de signaux du monde réel ou analogiques, se prête à bon nombre des mêmes charges de travail que de nombreux algorithmes d'apprentissage automatique et neuronaux réseaux. Par exemple, les DSP sont conçus pour les noyaux de filtres, les opérations de convolution et de corrélation, les calculs 8 bits, une tonne de opérations d'algèbre linéaire (produits vectoriels et matriciels) et opérations de multiplication-accumulation (MAC), toutes plus efficaces lorsque parallélisé. Le temps d’exécution d’un réseau neuronal dépend également fortement de la multiplication de grands vecteurs, matrices et/ou tenseurs. il est tout à fait naturel que les avantages en termes de performances du DSP se traduisent parfaitement dans les architectures de réseaux neuronaux comme Bien. Nous reviendrons sur ce sujet en bref !

Au cours des années suivantes, Qualcomm a continué à souligner qu'il n'offrait pas juste chipsets, mais plateformes mobiles, et qu'ils ne se concentrent pas juste sur l'amélioration de composants particuliers, mais en fournissant un calcul "hétérogène". En 2017, ils ont publié leur SDK Snapdragon Neural Processing Engine (pour l'accélération de l'exécution) sur le réseau de développeurs Qualcomm, et début 2018, ils a annoncé le moteur d'intelligence artificielle Qualcomm pour consolider ses différents composants matériels (CPU, GPU, DSP) et logiciels compatibles avec l'IA sous un seul nom. Grâce à cette nomenclature utile, ils ont pu annoncer clairement leurs améliorations de performances d'IA sur le Snapdragon 855 et Snapdragon 865, capable d'épeler confortablement le nombre de milliards d'opérations par seconde (TOPS) et le pourcentage d'une année sur l'autre améliorations. Exploiter les améliorations générationnelles en matière de CPU, GPU et DSP - qui voient tous leur propre objectif axé sur l'IA mises à niveau - l'entreprise est en mesure d'afficher des références impressionnantes par rapport à ses concurrents, que nous passerons en revue prochainement. Grâce aux récents efforts marketing de l’entreprise et à ses messages unifiés et cohérents sur l’informatique hétérogène, sa marque IA gagne enfin du terrain auprès des journalistes et des passionnés de technologie.

Démystifier les réseaux de neurones: un tas banal d'algèbre linéaire

Pour démêler beaucoup de jargon que nous rencontrerons plus tard dans l’article, nous avons besoin d’une brève introduction sur qu'est-ce qu'un réseau neuronal et ce dont vous avez besoin pour aller plus vite. Je souhaite passer très brièvement en revue certains des fondements mathématiques des réseaux de neurones, en évitant autant que possible le jargon et la notation. Le but de cette section est simplement d'identifier ce que fait fondamentalement un réseau de neurones: les opérations arithmétiques il exécute, plutôt que la base théorique qui justifie lesdites opérations (c'est bien plus compliqué !). N'hésitez pas à passer à la section suivante si vous souhaitez passer directement aux mises à niveau de Qualcomm AI Engine.

"Les mathématiques vectorielles sont le fondement de l'apprentissage profond." – Travis Lanier, directeur principal de la gestion des produits chez Qualcomm lors du Snapdragon Tech Summit 2017

Vous trouverez ci-dessous un schéma de réseau neuronal entièrement connecté à réaction très typique. En réalité, le diagramme donne l’impression que l’ensemble du processus est un peu plus compliqué qu’il ne l’est (du moins, jusqu’à ce que vous vous y habituiez). Nous calculerons une passe directe, ce qui est en fin de compte ce que fait un réseau chaque fois qu'il produit un inférence, un terme que nous rencontrerons également plus loin dans l’article. Pour le moment, nous nous concentrerons uniquement sur la machine et ses pièces, avec de brèves explications sur chaque composant.

Un réseau neuronal est constitué de séquences couches, chacun composé de plusieurs « neurones » (représentés sous forme de cercles dans le diagramme) reliés par poids (représenté sous forme de lignes dans le diagramme). De manière générale, il existe trois types de couches: couche d'entrée, qui prend l'entrée brute; calques cachés, qui calculent les opérations mathématiques de la couche précédente, et le couche de sortie, qui fournit les prédictions finales. Dans ce cas, nous n’avons qu’une seule couche cachée, avec trois unités cachées. Le saisir se compose d’un vecteur, d’un tableau ou d’une liste de nombres d’une dimension ou d’une longueur particulière. Dans l’exemple, nous aurons une entrée bidimensionnelle, disons [1.0, -1.0]. Ici le sortir du réseau est constitué d’un nombre scalaire ou unique (et non d’une liste). Chaque unité cachée est associée à un ensemble de poids et un terme de biais, affiché à côté et sous chaque nœud. Pour calculer le somme pondérée sortie d’une unité, chaque poids est multiplié par chaque entrée correspondante, puis les produits sont additionnés. Ensuite, nous ajouterons simplement le terme de biais à cette somme de produits, ce qui donnera la sortie du neurone. Par exemple, avec notre contribution de [1.0,-1.0], la première unité cachée aura une sortie de 1.0*0.3 + (-1.0) * 0.2 + 1.0 = 1.1. Simple, non ?

L'étape suivante du diagramme représente un fonction d'activation, et c'est ce qui nous permettra de produire le vecteur de sortie de chaque couche cachée. Dans notre cas, nous utiliserons le très populaire et extrêmement simple unité linéaire rectifiée ou RéLU, qui prendra un nombre d'entrée et affichera soit (i) zéro, si ce nombre est négatif, soit zéro (ii) le nombre d'entrée lui-même, si le nombre est positif. Par exemple, ReLU(-0,1) = 0, mais ReLU(0,1) = 0,1. À l'instar de notre contribution telle qu'elle se propage Grâce à cette première unité cachée, la sortie de 1,1 que nous avons calculée serait transmise à la fonction d'activation, ce qui donnerait ReLU(1.1)=1.1. La couche de sortie, dans cet exemple, fonctionnera comme une unité cachée: elle multipliera les sorties des unités cachées par ses poids, puis ajoutera son terme de biais de 0.2. La dernière fonction d'activation, la fonction étape, transformera les entrées positives en 1 et les valeurs négatives en 0. Connaissant le fonctionnement de chacune des opérations du réseau, nous pouvons écrire le calcul complet de notre inférence comme suit :

C’est tout ce qu’il y a à faire dans notre calcul de réseau neuronal rétroactif. Comme vous pouvez le constater, le les opérations sont presque entièrement constituées de produits et de sommes de nombres. Notre fonction d'activation ReLU(x) peut également être implémenté très facilement, par exemple en appelant simplement maximum (x, 0), de sorte qu'il renvoie x chaque fois que l'entrée est supérieure à 0, mais sinon, il renvoie 0. Noter que étape (x) peut être calculé de la même manière. Il existe de nombreuses fonctions d'activation plus compliquées, telles que fonction sigmoïde ou la tangente hyperbolique, impliquant différents calculs internes et mieux adaptés à différents objectifs. Une autre chose que vous pouvez déjà commencer à remarquer est que nous peut exécuter les calculs des trois unités cachées et leurs applications ReLU, en parallèle, car leurs valeurs ne sont pas nécessaires en même temps jusqu'à ce que nous calculions leur somme pondérée au niveau du nœud de sortie.

Mais nous ne devons pas nous arrêter là. Ci-dessus, vous pouvez voir le même calcul, mais cette fois représenté avec des opérations de multiplication matricielle et vectorielle. Pour arriver à cette représentation, nous «augmentons» notre vecteur d'entrée en y ajoutant un 1,0 (teinte plus claire), de sorte que lorsque nous mettons notre poids et notre biais (teinte plus claire) dans la matrice comme indiqué ci-dessus, la multiplication résultante donne la même unité cachée les sorties. Ensuite, nous pouvons appliquer ReLU sur le vecteur de sortie, élément par élément, puis « augmenter » la sortie ReLU pour la multiplier par les poids et les biais de notre couche de sortie. Cette représentation simplifie grandement la notation, car les paramètres (poids et biais) d'une couche cachée entière peuvent être regroupés sous une seule variable. Mais plus important encore pour nous, cela montre clairement que les calculs internes du réseau sont essentiellement des multiplications matricielles et vectorielles ou des produits scalaires. Étant donné que la taille de ces vecteurs et matrices évolue avec la dimensionnalité de nos entrées et le nombre de paramètres de notre réseau, la majeure partie du temps d'exécution sera consacrée à ce type de calculs. Un tas d'algèbre linéaire !

Notre exemple de jouet est, bien sûr, très portée limitée. En pratique, les modèles modernes d’apprentissage profond peuvent comporter des dizaines, voire des centaines de couches cachées et des millions de paramètres associés. Au lieu de notre exemple d'entrée vectorielle bidimensionnelle, ils peuvent accepter des vecteurs avec des milliers d'entrées, dans une variété de formes, telles que des matrices (comme les images monocanal) ou des tenseurs (RVB à trois canaux images). Rien n’empêche également notre représentation matricielle de prendre en compte plusieurs vecteurs d’entrée à la fois, en ajoutant des lignes à notre entrée d’origine. Les réseaux de neurones peuvent également être « câblés » différemment de notre réseau de neurones à action directe, ou exécuter différentes fonctions d'activation. Il existe un vaste zoo d'architectures et de techniques de réseau, mais en fin de compte, elles surtout se décomposent en mêmes opérations arithmétiques parallèles que celles que nous trouvons dans notre exemple de jouet, mais à une échelle beaucoup plus grande.

Exemple visuel de couches de convolution opérant sur un tenseur. (Crédit image: Vers la science des données)

Par exemple, le populaire réseaux de neurones convolutifs (CNN) dont vous avez probablement entendu parler ne sont pas « entièrement connectés » comme notre réseau fictif. Les « poids » ou paramètres de ses couches convolutives peut être considéré comme une sorte de filtre, une fenêtre glissante appliquée séquentiellement à de petits patchs d'une entrée comme indiqué ci-dessus - cette "convolution" n'est en réalité qu'un produit scalaire glissant! Cette procédure aboutit à ce qu'on appelle souvent un carte des caractéristiques. Les couches de regroupement réduisent la taille d'une entrée ou d'une sortie d'une couche convolutive, en calculant la valeur maximale ou moyenne des petites parcelles de l'image. Le reste du réseau se compose généralement de couches entièrement connectées, comme celles de notre exemple, et de fonctions d'activation comme ReLU. Ceci est souvent utilisé pour l'extraction de caractéristiques dans les images où les cartes de caractéristiques des premières couches convolutives peuvent « détecter » des motifs tels que des lignes ou des bords, et les calques ultérieurs peuvent détecter des caractéristiques plus complexes telles que des visages ou des éléments complexes. formes.

Tout ce qui a été dit est strictement limité à l'inférence, ou évaluer un réseau de neurones après que ses paramètres ont été trouvés via entraînement ce qui est une procédure beaucoup plus compliquée. Et encore une fois, nous avons exclu de nombreuses explications. En réalité, chacun des composants du réseau est inclus dans un but précis. Par exemple, ceux d'entre vous qui ont étudié l'algèbre linéaire peuvent facilement constater que sans le fonctions d'activation non linéaires, notre réseau se simplifie en un modèle linéaire avec des prévisions prédictives très limitées capacité.

Un moteur AI amélioré sur le Snapdragon 865 – Un résumé des améliorations

Grâce à cette compréhension pratique des composants d’un réseau neuronal et de leurs opérations mathématiques, nous pouvons commencer à comprendre exactement pourquoi l’accélération matérielle est si importante. Dans la dernière section, nous pouvons observer que la parallélisation est vitale pour accélérer le réseau étant donné permet, par exemple, de calculer plusieurs produits scalaires parallèles correspondant à chaque neurone Activation. Chacun de ces produits scalaires est lui-même constitué d'opérations de multiplication-addition sur des nombres, généralement avec une précision de 8 bits dans le cas des applications mobiles, qui doivent être effectuées le plus rapidement possible. Le moteur AI propose divers composants pour décharger ces tâches en fonction des considérations de performances et d'efficacité énergétique du développeur.

Un diagramme d'un CNN pour l'ensemble de données populaire MNIST, présenté sur scène lors du Snapdragon Summit de cette année. L'unité de traitement vectoriel convient parfaitement aux couches entièrement connectées, comme dans notre exemple fictif. Pendant ce temps, le processeur tensoriel gère les couches convolutives et de pooling qui traitent plusieurs glissements. noyaux en parallèle, comme dans le diagramme ci-dessus, et chaque couche convolutive peut produire de nombreuses fonctionnalités distinctes Plans.

Intéressons-nous d’abord au GPU, dont on parle habituellement dans le cadre des jeux 3D. Le marché grand public des jeux vidéo stimule le développement du matériel de traitement graphique depuis des décennies, mais pourquoi les GPU sont-ils si importants pour les réseaux neuronaux? Pour commencer, ils parcourent simultanément des listes massives de coordonnées 3D des sommets des polygones pour suivre l’état du monde dans le jeu. Le GPU doit également effectuer de gigantesques opérations de multiplication matricielle pour convertir (ou cartographier) ces images 3D. coordonnées sur des coordonnées planaires 2D à l'écran, et gère également les informations de couleur des pixels dans parallèle. Pour couronner le tout, ils offrent une bande passante mémoire élevée pour gérer les énormes tampons de mémoire pour les bitmaps de texture superposés sur la géométrie du jeu. Ses avantages en matière de parallélisation, de bande passante mémoire et les capacités d'algèbre linéaire qui en résultent répondent aux exigences de performances des réseaux neuronaux.

La gamme de GPU Adreno a donc un rôle important à jouer dans le moteur AI Qualcomm, et sur scène, Qualcomm a déclaré que ce composant mis à jour dans le Snapdragon 865 permet deux fois plus de capacités en virgule flottante et deux fois le nombre de TOPS par rapport à la génération précédente, ce qui est surprenant étant donné qu'ils n'ont affiché qu'une amélioration des performances de 25 % pour le rendu graphique. Pourtant, pour cette version, la société revendique un Augmentation de 50 % du nombre d'unités arithmétiques et logiques (ALU), bien que comme d’habitude, ils n’ont pas divulgué les fréquences de leur GPU. Qualcomm a également répertorié la précision mixte instructions, ce qui est exactement ce à quoi cela ressemble: une précision numérique différente entre les opérations dans une seule méthode de calcul.

C’est sur le DSP Hexagon 698 que nous constatons une grande partie des gains de performances offerts par le Snapdragon 865. Cette année, la société n’a pas communiqué d’améliorations dans les extensions vectorielles de son DSP (dont les performances ont quadruplé par rapport aux 855 de l’année dernière), ni dans ses unités scalaires. Cependant, ils notent que pour l’accélérateur Tensor de ce bloc, ils ont atteint quatre fois les TOP par rapport à la version introduite l'année dernière dans l'Hexagon 695 DSP, tout en pouvant offrir Efficacité énergétique 35 % supérieure. C’est un gros problème compte tenu de la prévalence des architectures de réseaux neuronaux convolutifs dans les cas d’utilisation modernes de l’IA, allant de la détection d’objets image à la reconnaissance automatique de la parole. Comme expliqué ci-dessus, l'opération de convolution dans ces réseaux produit un tableau 2D de sorties matricielles pour chaque filtre, ce qui signifie que lorsqu'elle est empilée, la sortie d'une couche de convolution est un tableau 3D ou tenseur.

Qualcomm a également fait la promotion de son « nouveau et unique » compression de bande passante d'apprentissage profond technique, qui peut apparemment compresser les données sans perte d'environ 50 %, déplaçant à son tour la moitié des données et libérant de la bande passante pour d'autres parties du chipset. Cela devrait également permettre d’économiser de l’énergie en réduisant le débit de données, même si nous n’avons reçu aucun chiffre et que la compression des données devrait également entraîner un faible coût en énergie.

En matière de bande passante, le Snapdragon 865 prend en charge Mémoire LPDDR5, ce qui bénéficiera également aux performances de l’IA car cela augmentera la vitesse à laquelle les ressources et les données d’entrée sont transférées. Au-delà du matériel, le nouveau Qualcomm Boîte à outils d'efficacité des modèles d'IA rend la compression facile des modèles et les économies d'efficacité énergétique qui en résultent à la disposition des développeurs. Les réseaux de neurones comportent souvent un grand nombre de paramètres « redondants »; par exemple, ils peuvent rendre les calques cachés plus larges que nécessaire. L'une des fonctionnalités de l'AI Toolkit discutée sur scène est donc compression du modèle, deux des méthodes citées étant la décomposition spatiale en valeurs singulières (SVD) et la compression bayésienne, toutes deux qui élague efficacement le réseau neuronal en éliminant les nœuds redondants et en ajustant la structure du modèle en conséquence. requis. L'autre technique de compression de modèle présentée sur scène concerne la quantification et implique de modifier la précision numérique des paramètres de poids et des calculs des nœuds d'activation.

La précision numérique des poids des réseaux neuronaux indique si les valeurs numériques utilisées pour le calcul sont stockées, transférées et traitées sous forme de valeurs 64, 32, 16 (demi-précision) ou 8 bits. L’utilisation d’une précision numérique inférieure (par exemple, INT8 par rapport à FP32) réduit l’utilisation globale de la mémoire et les vitesses de transfert de données, permettant une bande passante plus élevée et des inférences plus rapides. De nombreuses applications d'apprentissage profond d'aujourd'hui sont passées à des modèles de précision 8 bits pour l'inférence, ce qui peut sembler surprenant: une plus grande précision numérique ne permettrait-elle pas des prédictions plus « précises » en matière de classification ou de régression? Tâches? Pas nécessairement; une précision numérique plus élevée, en particulier lors de l'inférence, peut être gaspillée car les réseaux neuronaux sont entraînés à gérer des entrées bruyantes ou de petites perturbations tout au long de l'entraînement de toute façon, et l'erreur sur la représentation des bits inférieurs d'une valeur donnée (FP) est uniformément « aléatoire » assez. En un sens, la faible précision des calculs est traitée par le réseau comme une autre source de bruit, et les prédictions restent utilisables. Mis à part les explications heuristiques, il est probable que vous subirez une pénalité de précision lors de la quantification médiocre d'un modèle. sans prendre en compte certaines considérations importantes, c'est pourquoi de nombreuses recherches sont consacrées à la sujet

Retour à la boîte à outils Qualcomm AI: grâce à elle, ils proposent quantification sans données, permettant de quantifier les modèles sans réglage fin des données ou des paramètres tout en obtenant des performances de modèle proches de l'original sur diverses tâches. Essentiellement, il adapte les paramètres de poids pour la quantification et corrige l’erreur de biais introduite lors du passage à des poids de précision inférieure. Compte tenu des avantages apportés par la quantification, l'automatisation de la procédure dans le cadre d'un appel API simplifierait la production et le déploiement de modèles, et Qualcomm affirme plus de quatre fois la performance par watt lors de l’exécution du modèle quantifié.

Mais encore une fois, ce n’est pas choquant: les modèles de quantification peuvent offrir d’énormes avantages en termes de bande passante et de stockage. La conversion d'un modèle en INT8 vous permet non seulement de réduire la bande passante de 4 fois, mais également de bénéficier de calculs d'entiers plus rapides (en fonction du matériel). Il va donc de soi que les approches accélérées par le matériel, tant pour la quantification que pour le calcul numérique, généreraient des gains de performances considérables. Sur son blog, par exemple, Pete Warden de Google a écrit qu'une collaboration entre les équipes Qualcomm et Tensorflow permet aux modèles 8 bits de fonctionner jusqu'à sept fois plus rapidesur le DSP HVX que sur le CPU. Il est difficile de surestimer le potentiel d'une quantification facile à utiliser, en particulier compte tenu de la manière dont Qualcomm s'est concentré sur les performances de l'INT8.

Le processeur Kryo basé sur ARM du Snapdragon 865 reste un composant important du moteur d'IA. Même si l'accélération matérielle évoquée dans les paragraphes ci-dessus est préférable, il arrive parfois que nous ne peut pas éviter les applications qui ne tirent pas correctement parti de ces blocs, ce qui entraîne des problèmes de CPU retomber. Dans le passé, ARM avait introduit des jeux d'instructions spécifiques visant à accélérer les calculs matriciels et vectoriels. Dans les processeurs ARMv7, nous avons assisté à l'introduction d'ARM NEON, une extension de l'architecture SIMD permettant des instructions de type DSP. Et avec la microarchitecture ARMv8.4-A, nous avons assisté à l'introduction d'une instruction spécifiquement pour les produits scalaires.

Tous ces gains de performances affichés concernent de nombreuses charges de travail que nous avons décrites dans la section précédente, mais il convient également de garder à l'esprit que ces mises à niveau du Snapdragon 865 sont seulement le dernier améliorations des capacités d’IA de Qualcomm. En 2017, nous avons documenté le triplement de leurs capacités d'IA avec le Hexagon 685 DSP et d'autres mises à jour du chipset. L'année dernière, ils ont présenté leur accélérateur tensoriel et intégré la prise en charge des fonctions de non-linéarité (comme le ReLU susmentionné !) au niveau matériel. Ils ont également doublé le nombre d’accélérateurs vectoriels et amélioré les performances de l’unité de traitement scalaire de 20 %. En associant tout cela à des améliorations du côté du processeur, comme ces opérations de produits scalaires plus rapides grâce à ARM, et les ALU supplémentaires dans le GPU, Qualcomm en fin de compte triplé capacités brutes d’IA également.

Gains pratiques et cas d'utilisation étendus

Toutes ces mises à niveau ont permis de multiplier par cinq les capacités d'IA du Snapdragon 865 par rapport à il y a seulement deux ans, mais Peut-être plus important encore, les améliorations se sont également accompagnées d'une meilleure performance par milliwatt, une mesure essentielle pour les appareils mobiles. dispositifs. Lors du Snapdragon Summit 2019, Qualcomm nous a donné quelques benchmarks comparant son moteur AI à deux concurrents sur différents réseaux de classification. Ces chiffres semblent être collectés à l’aide d’AIMark, une application d’analyse comparative multiplateforme, qui permet des comparaisons avec les processeurs de la série A d’Apple et HiSilicon de Huawei. Qualcomm affirme que ces résultats utilisent l'intégralité du moteur AI, et nous devrons attendre jusqu'à plus tard. une analyse comparative approfondie pour démêler correctement l'effet de chaque composant et déterminer comment ces tests ont été menée. Par exemple, les résultats de la société B indiquent-ils un repli du processeur? Pour autant que je sache, AIMark ne profite actuellement pas du NPU du Kirin 990 sur nos unités Mate 30 Pro, par exemple. Mais il prend en charge le moteur de traitement neuronal Snapdragon, il profitera donc certainement du moteur Qualcomm AI; étant donné qu'il s'agit de tests internes, il n'est pas explicitement clair si le benchmark utilise correctement les bonnes bibliothèques ou SDK pour ses concurrents.

Il faut également dire que Qualcomm compare efficacement les capacités de traitement de l’IA du Snapdragon 865 aux chipsets précédemment annoncés ou publiés. Il est très probable que ses concurrents apporteront des améliorations de performances tout aussi impactantes au cours du prochain cycle, et si tel est le cas, Dans ce cas, Qualcomm ne détiendrait la couronne que pendant environ six mois à partir du moment où les appareils Snapdragon 865 seraient commercialisés. Cela dit, cela reste révélateur du type de bosses auxquelles nous pouvons nous attendre du Snapdragon 865. Qualcomm a généralement été très précis lors de la communication des améliorations de performances et des résultats de référence des versions à venir.

Tous les réseaux présentés dans ces benchmarks classent les images provenant de bases de données comme ImageNet, les reçoivent en entrées et génèrent une catégorie parmi des centaines. Encore une fois, ils s'appuient sur les mêmes types d'opérations que nous avons décrits dans la deuxième section, bien que leurs architectures soient très différentes. plus compliqués que ces exemples et ils ont été considérés comme des solutions de pointe au moment de leur publication. Dans le meilleur des cas, leur concurrent le plus proche fournit moins de la moitié du nombre d’inférences par seconde.

En termes de consommation d'énergie, Qualcomm a proposé des inférences par watt pour montrer la quantité de traitement d'IA possible avec une quantité de puissance donnée. Dans le meilleur des cas (MobileNet SSD), le Snapdragon AI Engine peut offrir le double du nombre d'inférences avec le même budget de puissance.

La puissance est particulièrement importante pour les appareils mobiles. Pensez, par exemple, à un filtre Snapchat basé sur un réseau neuronal. De manière réaliste, le pipeline de vision par ordinateur extrayant les informations faciales et appliquant un masque ou une entrée la transformation n'a besoin que de s'exécuter à un rythme de 30 ou 60 réalisations par seconde pour obtenir un fluide expérience. L'augmentation des performances brutes de l'IA vous permettrait d'utiliser des entrées de plus haute résolution et de produire des filtres plus esthétiques, mais cela pourrait Il est également simplement préférable de se contenter d'une résolution HD pour des téléchargements plus rapides et réduire la consommation d'énergie et la limitation thermique. Dans de nombreuses applications, « plus rapide » ne signifie pas nécessairement « meilleur », et l'on peut alors profiter des avantages d'une efficacité énergétique améliorée.

Au cours de la deuxième journée du Snapdragon Summit, le directeur principal de l'ingénierie chez Snapchat, Yurii Monastyrshyn, est monté sur scène pour montrer comment leurs derniers filtres basés sur l'apprentissage profond sont considérablement accélérés par Hexagon Direct NN utilisant le Hexagon 695 DSP sur le Snapdragon 865.

En plus de ça, à mesure que les développeurs ont accès à des implémentations de réseaux neuronaux plus faciles et de plus en plus d'applications commencent à employer des techniques d'IA, les cas d'utilisation de la concurrence seront davantage mis en avant car le smartphone devra gérer plusieurs pipelines d'IA parallèles à la fois (soit pour une seule application traitant les signaux d'entrée provenant de diverses sources, soit pour autant d'applications exécutées séparément sur l'appareil). Bien que nous constations des gains d'efficacité énergétique respectables sur le DSP, le GPU et le CPU de calcul, le Qualcomm Sensing Hub gère des cas d'utilisation permanents pour écouter les mots déclencheurs avec une très faible consommation d'énergie. Il permet de surveiller les flux audio, vidéo et des capteurs à moins de 1 mA de courant, permettant à l'appareil de détecter des signaux sonores particuliers (comme un bébé qui pleure), en plus des mots-clés familiers de l'assistant numérique. À ce propos, le Snapdragon 865 permet de détecter non seulement le mot-clé mais aussi celui qui le prononce, d'identifier un utilisateur autorisé et d'agir en conséquence.

Plus d'IA sur les appareils Edge

Ces améliorations peuvent finalement se traduire par des avantages tangibles pour votre expérience utilisateur. Services impliquant la traduction, la reconnaissance et l'étiquetage d'objets, les prédictions d'utilisation ou les recommandations d'articles, la compréhension du langage naturel, l'analyse de la parole, etc. bénéficieront de l'avantage de fonctionner plus rapidement et de consommer moins pouvoir. Disposer d'un budget de calcul plus élevé permet également de créer de nouveaux cas d'utilisation et de nouvelles expériences, ainsi que de déplacer les processus qui se déroulaient auparavant dans le cloud sur votre appareil. Alors que le terme IA a été utilisé de manière douteuse, trompeuse et même erronée dans le passé (même par les constructeurs OEM), bon nombre de vos services dont vous bénéficiez aujourd'hui reposent en fin de compte sur des algorithmes d'apprentissage automatique sous une forme ou une autre. un autre.

Mais au-delà de Qualcomm, d’autres fabricants de chipsets ont également rapidement réitéré et amélioré ce front. Par exemple, le 990 5G a apporté une conception de cœur NPU 2+1, ce qui donne des performances jusqu'à 2,5 fois supérieures à celles du Kirin 980 et deux fois supérieures à celles de l'Apple A12. Lorsque le processeur a été annoncé, il a été démontré qu'il offrait jusqu'à deux fois plus d'images (inférences) par seconde du Snapdragon 855 chez INT8 MobileNet, ce qui est difficile à concilier avec les résultats fournis par Qualcomm. L'Apple A13 Bionic, en revanche, offrirait une multiplication matricielle six fois plus rapide que son prédécesseur et améliorerait la conception de son moteur neuronal à huit cœurs. Nous devrons attendre de pouvoir tester correctement le Snapdragon 865 sur des appareils commerciaux par rapport à ses concurrents actuels et futurs, mais c'est Il est clair que la concurrence dans ce domaine ne reste jamais immobile, car les trois sociétés ont consacré une tonne de ressources à l'amélioration de leur IA. performance.