Comment fonctionne l'ASIC pour l'accélération de l'IA?

9

Nous pouvons lire sur la page Wikipedia que Google a construit une puce ASIC personnalisée pour l'apprentissage automatique et adaptée à TensorFlow qui aide à accélérer l'IA.

Étant donné que les puces ASIC sont spécialement personnalisées pour une utilisation particulière sans possibilité de changer son circuit, il doit y avoir un algorithme fixe qui est invoqué.

Alors, comment fonctionne exactement l'accélération de l'IA à l'aide de puces ASIC si son algorithme ne peut pas être modifié? Quelle partie accélère exactement?

Kenorb
la source
1
Aucune technique d'IA à ma connaissance ne nécessite de modification de l' algorithme , bien que la plupart dépendent de la capacité de modifier les données (forces de connexion, membres de la population), etc.
NietzscheanAI
Donc, la seule partie dynamique comme l'état du réseau est conservée sur une mémoire flash ou un lecteur?
kenorb
Selon en.wikipedia.org/wiki/Application-specific_integrated_circuit , les ASIC modernes peuvent avoir de la RAM ...
NietzscheanAI

Réponses:

4

Opérations tenseur

Le travail majeur dans la plupart des applications ML est simplement un ensemble d'opérations tensorielles (très importantes), par exemple la multiplication matricielle. Vous pouvez faire cela facilement dans un ASIC, et tous les autres algorithmes peuvent simplement exécuter au - dessus de cela.

Peter est
la source
1
Un point important est que le TPU utilise une multiplication sur 8 bits, qui peut être implémentée beaucoup plus efficacement que la multiplication plus large offerte par le CPU. Une telle faible précision est suffisante et permet d'emballer plusieurs milliers de ces multiplicateurs sur une seule puce.
maaartinus
3

Je pense que l'algorithme a changé de façon minimale, mais le matériel nécessaire a été coupé jusqu'à l'os.

Le nombre de transitions de porte est réduit (peut-être les opérations flottantes et la précision aussi), tout comme le nombre d'opérations de déplacement de données, économisant ainsi à la fois la puissance et le temps d'exécution. Google suggère que leur TPU réalise une économie de 10 fois pour faire le même travail.

https://cloudplatform.googleblog.com/2016/05/Google-supercharges-machine-learning-tasks-with-custom-chip.html

Excité
la source
1

ASIC - Il signifie IC spécifique à l'application. Fondamentalement, vous écrivez des programmes pour concevoir une puce en HDL . Je vais prendre des cas de la façon dont les ordinateurs modernes fonctionnent pour expliquer mon point:

  • CPU - Les CPU sont essentiellement un microprocesseur avec de nombreux circuits intégrés d'assistance effectuant des tâches spécifiques. Dans un microprocesseur, il n'y a qu'une seule unité de traitement arithmétique (terme composé) appelée accumulateur dans laquelle une valeur doit être stockée, car les calculs sont effectués uniquement et uniquement les valeurs stockées dans l'accumulateur. Ainsi, chaque instruction, chaque opération, chaque opération R / W doit être effectuée via l'accumulateur (c'est pourquoi les anciens ordinateurs se figeaient lorsque vous écriviez à partir d'un fichier sur un appareil, bien que de nos jours le processus ait été affiné et ne nécessite pas d'accumulateur à venir entre les deux spécifiquement DMA). Maintenant, dans les algorithmes ML, vous devez effectuer des multiplications matricielles qui peuvent être facilement parallélisées, mais nous avons dans notre a une seule unité de traitement et les GPU sont également venus.
  • GPU - Les GPU ont des centaines d'unités de traitement, mais ils n'ont pas les fonctionnalités polyvalentes d'un CPU. Ils sont donc bons pour les calculs parallélisables. Comme il n'y a pas de chevauchement de mémoire (la même partie de la mémoire étant manipulée par 2 processus) dans la multplication matricielle, les GPU fonctionneront très bien. Bien que le GPU ne soit pas multifonctionnel, il ne fonctionnera que aussi rapidement qu'un processeur injectera des données dans sa mémoire.
  • ASIC - ASIC peut être n'importe quel GPU, CPU ou processeur de votre conception, avec n'importe quelle quantité de mémoire que vous souhaitez lui donner. Disons que vous voulez concevoir votre propre processeur ML spécialisé, concevoir un processeur sur ASIC. Vous voulez un numéro FP 256 bits? Créez un processeur 256 bits. Vous voulez que votre sommation soit rapide? Implémenter un additionneur parallèle jusqu'à un nombre de bits plus élevé que les processeurs conventionnels? Tu veuxnnombres de coeurs? Aucun problème. Vous souhaitez définir le flux de données depuis différentes unités de traitement vers différents endroits? Tu peux le faire. Aussi, avec une planification minutieuse, vous pouvez obtenir un compromis entre la zone ASIC et la puissance contre la vitesse. Le seul problème est que pour tout cela, vous devez créer vos propres normes. Généralement, certaines normes bien définies sont suivies dans la conception des processeurs, comme le nombre de broches et leur fonctionnalité, la norme IEEE 754 pour la représentation en virgule flottante, etc., qui ont été élaborées après de nombreux essais et erreurs. Donc, si vous pouvez surmonter tout cela, vous pouvez facilement créer votre propre ASIC.

Je ne sais pas ce que Google fait avec leurs TPU, mais apparemment, ils ont conçu une sorte de standard Integer et FP pour leurs cœurs 8 bits en fonction des besoins. Ils l'implémentent probablement sur ASIC pour des considérations de puissance, de zone et de vitesse.

DuttaA
la source
0

La faible précision permet un calcul de parallélisme élevé dans les couches Convo et FC. Architecture fixe CPU et GPU, mais ASIC / FPGA peut être conçu sur la base d'une architecture de réseau neuronal

Mahi
la source