Qu'est-ce que le moteur neuronal ?
Le moteur neuronal fait partie des processeurs Apple - par exemple l'Apple Silicon M1 que vous avez étiqueté.
La puce M1 comporte de nombreuses parties qui constituent le processeur. Il s'agit d'un CPU, d'un GPU, du moteur neuronal, des caches, de la mémoire vive et d'autres éléments plus petits.
Chacune de ces parties est à nouveau constituée de parties plus petites :
L'unité centrale est en fait constituée d'un certain nombre de cœurs de performance et d'un certain nombre de cœurs d'efficacité. Le GPU se compose d'un certain nombre de modules, que l'on peut considérer comme des cœurs de GPU. Enfin, le moteur neuronal se compose d'un certain nombre de cœurs NPU (Neural Processing Units).
Le moteur neuronal est-il un composant similaire au CPU et au GPU ?
En termes généraux, on peut considérer les cœurs de CPU, les cœurs de GPU et les cœurs de NPU comme une sorte de "boîte noire" qui reçoit des commandes (instructions, ou quel que soit le nom qu'on leur donne), communique avec le reste du processeur et les périphériques (par exemple en chargeant/stockant des données dans la mémoire vive ou en communiquant sur les bus) et effectue une sorte de calcul.
L'Apple M1 est structuré selon une architecture de mémoire unifiée, ce qui signifie que ces différents sous-systèmes accèdent tous à la même mémoire principale. Il n'y a pas de "mémoire matricielle" spéciale pour le GPU, comme vous l'indiquez dans votre question.
Le moteur neuronal est spécialement conçu pour effectuer les types de calculs nécessaires à l'exécution de modèles d'apprentissage automatique. En règle générale, il s'agit d'optimiser les multiplications matricielles très rapides.
A-t-il un jeu d'instructions ou des langages de programmation uniques ?
Le moteur neuronal dispose d'un "jeu d'instructions" unique (bien qu'il ne fasse pas partie du jeu d'instructions ARM). Comme pour les programmes du CPU et du GPU, un compilateur transforme les programmes (modèles) écrits dans un langage de plus haut niveau en commandes et structures de données compréhensibles par le moteur neuronal.
D'un point de vue pratique, les développeurs ordinaires interagiront avec le moteur neuronal en utilisant CoreML. Cela signifie qu'ils utilisent essentiellement un "langage" unique et spécifique pour leurs modèles.
Le moteur neuronal peut-il faire quelque chose de mieux que le CPU ou le GPU ?
Le moteur neuronal n'est pas strictement "meilleur" que le CPU ou le GPU pour effectuer ce type de calculs. Les modèles d'apprentissage automatique peuvent être exécutés sur le CPU, le GPU et le moteur neuronal. Le moteur neuronal n'ouvre donc pas un nouveau type de calcul impossible à réaliser sans lui.
La principale raison d'utiliser le moteur neuronal plutôt que d'avoir des cœurs de processeur supplémentaires est que le moteur neuronal est spécialement conçu pour quelques types de calculs spécifiques courants dans les modèles d'apprentissage automatique. Cela signifie qu'il effectue généralement ces calculs en utilisant moins d'énergie électrique que si vous utilisiez un cœur d'unité centrale (ou autrement dit, vous obtenez de meilleures performances avec la même quantité d'énergie électrique). En outre, il est possible que le CPU et le GPU fassent autre chose pendant que le moteur neuronal effectue son travail. Cela signifie une plus longue durée de vie de la batterie, moins de bruit de ventilateur, une latence perçue plus faible, etc.
Les concurrents sont-ils présents sur le marché ?
Il existe de nombreuses autres unités de traitement neuronal sur le marché. Ce n'est pas quelque chose d'unique à Apple. Par exemple, Google a son TPU, Nvidia a le NVDLA, Amazon a Inferentia, etc.
Toutefois, Apple se trouve peut-être dans une situation unique où l'écrasante majorité des utilisateurs de ses systèmes d'exploitation (iOS, iPadOS et MacOS) disposent de leur moteur neuronal (dans une version ou une autre) et utilisent des logiciels compatibles. Cela signifie qu'ils peuvent en tirer parti de manière agressive dans leurs applications et leurs services d'arrière-plan.