Intelligence artificielle

Tous les tenseurs souhaitent secrètement être eux-mêmes – Chien-Ping Lu, PhD

Tous les tenseurs souhaitent secrètement être eux-mêmes - Chien-Ping Lu, PhD


Photo par Olav Ahrens Røtneon Unsplash

16 n'est en aucun cas un grand nombre. Combien faudrait-il d'unités MAC pour calculer un réseau de neurones à convolution (CNN) afin de produire 16 canaux de sortie d'une mosaïque 16x16 à partir d'une convolution de 16 tenseur de 3 x 3 profonds en 64 horloges?

Il faudrait au moins 9 216 unités MAC sans un algorithme rapide. 9 216 unités MAC seraient couramment utilisées pour construire un tableau systolique 96 x 96, mais il faut au moins une latence de 96 horloges pour calculer une multiplication de matrice (MM) 96 x 96. Un long train de 96 multiplications matricielles 96x96 serait nécessaire pour maintenir le réseau systolique occupé.

Bienvenue dans le monde des tenseurs en IA. Il est maintenant temps de s'habituer à la malédiction de la dimensionnalité.

Le titre de cet article est inspiré et cité en réponse à une citation du professeur Charles F. Van Loan dans son exposé sur les développements du tenseur en 2010.

Tous les tenseurs souhaitent secrètement être des matrices!

Cette déclaration démontre le désir de la communauté des chercheurs en matière de tenseurs d’étudier les tenseurs en les dépliant d’abord en matrices, puis en exploitant des cadres théoriques matriciels bien établis pour les étudier. Il est également pratique courante dans l’industrie d’aplatir les tenseurs jusqu’aux matrices afin d’utiliser les bibliothèques hautement optimisées pour la multiplication matricielle (MM) ou les accélérateurs MM (MMA), bien que les tenseurs soient considérés comme le type de données le plus fondamental dans tous les principaux environnements d’intelligence artificielle. cadres. Les matrices sont généralement considérées comme des cas particuliers de tenseurs par la communauté des IA.

Voici peut-être ce que la sagesse conventionnelle dit:

1. Il existe de très bons modèles de parallélisme et de partage de données à exploiter dans MM.

2. Les matrices sont un ajustement plus naturel ou plus naturel pour le matériel programmable que le tenseur.

3. Il existe une solution d’accélération matérielle native, la matrice systolique, pour MM.

cependant,

1. Les CNN sont structurellement équivalents aux MM. Il n'est pas nécessaire d'aplanir les tenseurs pour exploiter le parallélisme MM-équivalent et les modèles de partage de données.

2. Les matrices sont bloquées de manière récursive pour la localité temporelle et compressées pour la localité spatiale tout en gravissant la hiérarchie de la mémoire. Ils deviennent finalement des micro-panneaux, qui sont de petites lignes ou colonnes de blocs, destinés à être consommés par un micro-logiciel ou un noyau de GPU shader.

3. Dans mon examen du TPU v1 de Google avec un tableau systolique de 256 x 256, le problème de l’évolutivité liée à la malédiction du carré des tableaux systoliques a été abordé. Depuis lors, il semble être courant d’utiliser plusieurs réseaux systoliques relativement plus petits. Pour cette raison, les matrices doivent être bloquées et empaquetées de la même manière avant de se présenter sous la forme de matrice carrée pouvant être consommée par les réseaux systoliques.

En conséquence, les matrices des tenseurs aplatis sont en fait bloquées et emballées dans la structure appropriée pour une exécution hautes performances, comme illustré ci-dessous. Le premier peut être qualifié de dépliage à plat, et le second de dépliage en bloc. Les matrices deviennent le type de données par défaut pour CNN et AI en général, en raison des efforts déployés depuis des décennies au cours de recherches, de la construction et de l'exploitation du cadre matriciel par blocs pour des implémentations MM hautes performances.

Blocage d'un MM

Conformément à la sagesse conventionnelle, une carte de caractéristiques dans CNN est contrainte de constituer une colonne d’une matrice et un filtre de convolution est aplati pour constituer des éléments de matrice consécutifs dans une colonne. Les possibilités de réutilisation dans l'espace et dans le temps des pixels voisins dans une carte de caractéristiques sont perdues à la suite d'un dépliage à plat.

Une caractéristique essentielle du déploiement de blocs matriciel récursif dans MM est que les localisations spatiales et temporelles de haut niveau sont préservées lorsque les matrices se rapprochent du métal nu du matériel. Il devrait être intéressant de voir si les localités de données dans CNN peuvent être conservées de la même manière sous la forme tenseur.

Il est judicieux de concevoir une carte de caractéristiques en mosaïques tout en conservant la structure de mosaïque pour pouvoir réutiliser les filtres, en exploitant des algorithmes rapides pour les petites mosaïques et en réalisant un parallélisme de type SIMD à grain fin. Les tenseurs doivent rester comme des tenseurs tout en approchant du métal nu pour conserver la structure de la mosaïque et la localisation des données dans une carte de caractéristiques intactes.

En outre, les modèles de localisation parmi les cartes de caractéristiques en entrée et les cartes de caractéristiques en sortie doivent être traités. La première permet de partager les données de plusieurs cartes de caractéristiques en entrée pour le calcul de plusieurs cartes de caractéristiques en sortie. Ce dernier permet à un public plus large de partager les cartes de caractéristiques en entrée. Le problème, c'est que vous ne pouvez pas partager le tout et toutes les cartes de caractéristiques depuis la production d'un pixel de sortie ne nécessitent pas toutes les cartes de caractéristiques en entrée, et il serait peu pratique de conserver toutes les cartes de caractéristiques sur une puce. Pour conclure, toutes les dimensions doivent être partitionnées ou bloquées dans une certaine mesure, et une telle considération conduit à la partition des tenseurs en des plus petits et à leur tenseurs de bloc.

Un tenseur de bloc est un tenseur dont les entrées sont des tenseurs. Il s’agit d’une contrepartie de la matrice de blocs. Le concept de tenseurs de blocs peut être utilisé pour remédier à la malédiction de la dimensionnalité et préserver la localité des données dans CNN, comme le faisait l’industrie du calcul haute performance (HPC) pour MM. Paquets de tenseurs, équivalant à des micro-panneaux ou à des sous-matrices carrées dans MM, sont définies comme les unités de tenseur de base qui doivent être traitées de manière atomique pour tirer parti de la localisation spatiale dans toutes les dimensions. UNE bloc tenseur, composé de paquets de tenseurs, est défini comme les unités de tenseurs qui doivent être transférées entre les unités de calcul et la mémoire externe dans leur ensemble pour faciliter la localisation temporelle parmi les paquets de tenseurs.

L'opération de paquet de tenseur atomique est définie pour produire un nombre minimal suffisant de canaux de sortie de dalles de taille minimale suffisante à partir d'un nombre minimal minimal de canaux d'entrée. En raison de la malédiction de la dimensionnalité dans les tenseurs, le traitement de tels paquets de tenseurs pourrait devenir un gros effort même si chaque paquet de tenseurs est de petite taille dans chaque dimension. Il peut être itéré ou appliqué simultanément dans un bloc de tenseurs pour résoudre des problèmes plus importants. Les idées sont élaborées de manière semi-formelle dans le reste du poste.

Contribution UNE et sortie C d’un CNN se composent de plusieurs cartes de caractéristiques en entrée (IFM) et de cartes de caractéristiques en sortie (OFM), respectivement. Ils peuvent être considérés comme des tenseurs tridimensionnels, avec des dimensions X, y pour les cartes de caractéristiques, profondeur d'entrée w pour indexer les IFM et la profondeur de sortie z pour indexer les OFM. Pour obtenir un parallélisme SIMD à grain fin et exploiter des algorithmes rapides avec une localisation spatiale, chaque carte de caractéristiques peut être encore partitionnée X et y dimensions en carreaux. L'indice composé (tx, ty) est utilisé pour identifier une mosaïque d'entrée et une mosaïque de sortie, respectivement. Pour chaque paire unique d'un IFM w et un OFM z, il y a un filtre B(w, z), généralement constitué de paramètres de filtre 3x3. Les tenseurs d’entrée et de sortie deviennent des tenseurs de blocs de tuiles, comme illustré ci-dessous.

CNN en termes de tenseurs de blocs de tuiles

Les CNN en mosaïque peuvent être représentés de manière plus compacte et plus précise dans les notations théoriques du tenseur comme suit:

La notation de deux points signifie prendre toutes les données de cette dimension. UNE(:,:,, w) représente l'IFM w, car il prend toutes les tuiles de cet IFM.

La sagesse conventionnelle dit que nous devons déplier à plat les tensions entre matrices pour tirer parti du parallélisme et des modèles de partage de données dans les MM. Cependant, c'est en réalité l'inverse. Les CNN sont structurellement équivalents aux MM en ce qui concerne leur parallélisme et leurs modèles de partage de données, comme indiqué ci-dessous. C'est la raison pour laquelle les MM ont été utilisés de manière si répandue dans les CNN.

Les CNN sont structurellement équivalents aux MM

Les rangées de UNE peut être bloqué depuis les calculs de lignes dans C sont indépendants. De manière équivalente, une carte de caractéristiques peut être mise en mosaïque puisque les pixels peuvent être calculés indépendamment.

Le modèle de parallélisme et de partage de données équivalent à MM reste intact en ce qui concerne les mosaïques.

Les mosaïques en sortie de la même carte d'entités partagent les mêmes filtres mais pas les mêmes mosaïques en entrée. Les mosaïques en sortie le long de la dimension en sortie partagent les mêmes mosaïques en entrée, mais pas les mêmes filtres. L'équivalence entre MM et CNN peut être décrite de manière plus compacte en notations théoriques du tenseur dans le tableau suivant:

Désormais, la taille de la mémoire intégrée sur puce est limitée et il est souhaitable d'exploiter pleinement les modèles de partage de données équivalents à la MM dans les CNN parmi les MFI, les OFM et les filtres dans un bloc de données que nous apportons sur puce. À quoi devrait ressembler la géométrie du bloc de données? Il doit avoir suffisamment (X, y) réutiliser les filtres, suffisant w d'avoir suffisamment de données d'entrée à partager et suffisamment z pour partager efficacement les données d'entrée comme illustré ci-dessous:

Les tampons sur puce doivent avoir une couverture suffisante sur toutes les dimensions

Cette observation conduit à un blocage w et z dimensions en plus du blocage X et y dimensions, ce que nous avons déjà fait. Cela permet de s’assurer que les blocs de données en entrée et en sortie couvrent un nombre minimal d’IFM et d’OFM, respectivement. Nouveaux index tw et tz sont introduits pour identifier un groupe de MFI et un groupe de MFI, respectivement. Nous définissons un paquet tenseur d'entrée UNE(tx, ty, tw) en tant que groupe de (tx, ty) tuiles alignées du groupe IFM tw. De même, nous définissons C(tx, ty, tz) en tant que groupe de (tx, ty) tuiles alignées du groupe OFM tz. B(tw,tz) représente un groupe de filtres, chacun pour une paire d'un IFM du groupe tw, et un OFM du groupe tz. C'est ce qu'on appelle un paquet filtre tenseur. Les tenseurs d’entrée, de sortie et de filtrage sont désormais des tenseurs de blocs de paquets de tenseurs, comme indiqué ci-dessous

CNN en termes de tenseurs de blocs de paquets de tenseurs

Le parallélisme en équivalent MM et le schéma de partage des données restent intacts en ce qui concerne les paquets de tenseurs.

UNE micro-noyau tensor dans un logiciel ou un moteur de paquet tenseur dans le matériel pourrait être conçu pour gérer l'opération atomique de convolution d'un paquet tenseur d'entrée UNE(tx, ty,tw) avec un paquet filtre tenseur B(tw, tz) comme illustré ci-dessous:

Fonctionnement des paquets de tenseurs atomiques

Supposons que les mosaïques d'entrée et de sortie sont 6x6 et 4x4, respectivement, et utilisent 8 comme taille d'un groupe IFM et d'un groupe OFM. Sans utiliser un algorithme rapide pour la convolution 3x3, il faut 2 304 unités MAC pour terminer cette opération en 4 horloges. Le parallélisme à 2 304 voies est investi de manière à peu près égale entre toutes les dimensions, y compris X et y le long d'une carte de fonction, profondeur d'entrée wet profondeur de sortie z. Le blocage avec des pavés de petite taille tels que 4x4 permet d'utiliser un algorithme rapide tel que Winograd, de sorte qu'un parallélisme à 2 304 voies peut être obtenu avec seulement 576 unités MAC.

Un paquet de tenseurs est l'unité fondamentale à consommer dans sa totalité par les unités de calcul. Afin de préserver la localité des données et la structure de tuilage parmi les tuiles, nous introduisons un niveau de bloc intermédiaire entre le paquet tenseur et le paquet tenseur, le bloc tenseur, d'inclure les paquets de tenseurs que nous voulons apporter sur la puce dans leur intégralité. Il s'agit de l'unité fondamentale pour la localisation temporelle parmi les mosaïques et pour la localisation spatiale lorsqu'il existe suffisamment d'unités de calcul, de mémoire sur puce et de largeur de bande. Un bloc tenseur est identifié avec (bx, par, bz) le long de X, y et z dimensions.

Vous trouverez ci-dessous un exemple de blocage récursif de tenseurs. Un tenseur entier est un tenseur de bloc de 4x4x2 tenseur de bloc de 1x1x8 tenseur de bloc de 4x4 tuiles, où (dx, mourir) est un décalage pour trouver un pixel dans une tuile.

Blocage récursif des tenseurs pour préserver la localité dans une carte de caractéristiques

Les blocs tenseurs sont stockés linéairement en mémoire. Nous n'avons pas à nous soucier de savoir comment exactement ils sont commandés. Pour un bloc de tenseurs, il y aurait deux ordres de déploiement de blocs différents, l'un optimisé pour stocker un bloc de tenseurs dans une mémoire DRAM et l'autre optimisé pour le présenter à l'unité de calcul. Un mécanisme de transposition dans le logiciel et / ou le matériel serait nécessaire pour transposer d'un format à un autre à la volée, comme illustré ci-dessous.

Transposition d'un bloc tenseur

La latence de la transposition peut être couverte par un double tampon. Lorsqu'un bloc de tenseurs est présenté aux unités de calcul, il est déplié en paquets de tenseurs dans la (tx, ty) afin que les paquets de tenseurs puissent être traités en parallèle dans (X, y) domaine avec les unités de calcul disposées en conséquence.

Le professeur Van Loan a également déclaré dans un exposé sur le déploiement en bloc des tenseurs de bloc:

Le déroulement du bloc préserve la structure et la localité des données. … À mon avis, le blocage aura finalement le même impact dans les calculs de tenseurs que dans les calculs matriciels.

Les tenseurs sont dépliés par blocs en blocs de tenseurs pour la localisation temporelle dans plusieurs dimensions, de sorte que, une fois intégrées, les données peuvent être partagées selon plusieurs dimensions. Un bloc de tenseurs est en outre déplié en blocs en paquets de tenseurs qui ont une couverture minimale suffisante dans toutes les dimensions. Dans le cas présent, il faudrait un grand parallélisme à 2 304 voies pour traiter de tels paquets de tenseurs. Les modèles de parallélisme équivalent-MM et de partage de données sont appliqués aux paquets de tenseurs dans un bloc de tenseurs.

À notre connaissance, ce qui a été discuté dans cet article pourrait être le premier effort de l'histoire informatique à adopter le concept de tenseurs de blocs au métal nu. Plus grand parallélisme évolutif X et y Il est possible d’atteindre des dimensions pour les applications traitant des vidéos / images haute résolution. CNN pourrait être la première application meurtrière des tenseurs de bloc avec son pouvoir révolutionnaire et son enracinement profond dans les tenseurs.

Tous les tenseurs souhaitent secrètement devenir eux-mêmes des tenseurs de bloc, s'attendant à ce que leur potentiel ne soit pas exploité pour permettre des percées dans le matériel AI.

Show More

SupportIvy

SupportIvy.com : Un lieu pour partager le savoir et mieux comprendre le monde. Meilleure plate-forme de support gratuit pour vous, Documentation &Tutoriels par les experts.

Related Articles

Laisser un commentaire

Votre adresse de messagerie ne sera pas publiée. Les champs obligatoires sont indiqués avec *

Close
Close