# Tesla Dojo

Tesla Dojo est un supercalculateur conçu par Tesla pour les traitements et la reconnaissance vidéo de vision par ordinateur afin de former ses modèles d'apprentissage automatique pour assister son système avancé d'assistance à la conduite Autopilot. L'accent mis par Dojo sur l'apprentissage automatique a conduit à une architecture considérablement différente des conceptions des supercalculateurs conventionnels. L'objectif principal de Dojo est l'évolutivité.

## Architecture

L'unité fondamentale de Dojo est la puce D1, conçue par une équipe complète de Tesla. Selon G. Venkataramanan, directeur principal du matériel de pilotage automatique de Tesla, "Tesla place 25 de ces puces sur une seule 'carte d'entraînement', ce qui correspond à plus d'un exaflop [un million de téraflops] de puissance". En tant que mise à jour lors de "IA Day" en 2022, Tesla a annoncé que Dojo évoluerait en déployant plusieurs ExaPOD, qui le contiendront.
À titre de comparaison, selon Nvidia, en août 2021, le centre de formation Tesla AI (préversion de Dojo) utilisait 720 nœuds, chacun avec huit GPU Nvidia A100 Tensor Core pour 5 760 GPU au total, fournissant éventuellement jusqu'à 1,8 exaflops de performances.

### Puce D1

Chaque nœud (cœur de calcul) de la puce de traitement D1 est un processeur 64 bits classique. Il prend en charge le parallélisme interne de toutes les instructions et comprend le multithreading simultané (SMT). Cependant il ne prend pas en charge la mémoire virtuelle et utilise des mécanismes limités de protection complète de la mémoire. Les logiciels développés pour le système Dojo gèrent les ressources de la puce directement.
Le jeu d'instructions dénommé D1 prend en charge les instructions scalaires 64 bits et SIMD 64 bits. L'unité entière mélange RISC-V et des instructions customisées, prenant en charge les entiers. L'unité mathématique vectorielle prend en charge plusieurs formats de données, dont beaucoup sont sélectionnables par le compilateur. Jusqu'à 16 formats vectoriels peuvent être utilisés en même temps.

#### Nœud

Chaque nœud D1 utilise une fenêtre d'extraction de 32 bits qui contient huit instructions. Un décodeur large de huit prend en charge deux threads par cycle. Ce frontal alimente un planificateur scalaire SMT à quatre voies et quatre largeurs qui a deux unités entières, deux unités d'adresse et un fichier/thread de base.
Le routeur réseau sur puce (NOC) relie les cœurs dans un système de maillage 2D. Il peut envoyer un paquet entrant et en même temps un paquet sortant dans les quatre directions vers chaque nœud voisin par cycle, avec une lecture 64 bits et une écriture 64 bits vers la SRAM locale par cycle.
Les données de base transfèrent des données à travers les mémoires et les processeurs, et les contraintes de sémaphore et de barrière. La mémoire DDR4 à l'échelle du système fonctionne comme un stockage de masse.

#### Mémoire

Chaque cœur possède 1,25 Mo de mémoire principale SRAM. Les vitesses de chargement et de stockage atteignent 400 Go/s et 270 Go/s, respectivement. La puce a des instructions de transfert de données cœur à cœur. Chaque SRAM possède un système qui alimente une paire de décodeurs et un système de collecte qui alimente le fichier de registre vectoriel, qui ensemble peuvent transférer directement des informations entre les nœuds.

#### Matrice

En 2021, il a été annoncé que le D1 utilise un " procédé de fabrication de 7 nanomètres, avec 362 téraflops de puissance de traitement". Douze nœuds sont regroupés dans un bloc local. Les nœuds (cœurs) sont disposés en un réseau 18 × 20 sur une seule matrice, dont 354 cœurs sont disponibles pour les applications. De plus, la matrice tourne à 2 GHz et totalise 440 Mo de SRAM (360 cœurs × 1,25 Mo/cœur). Elle atteint 376 téraflops en BF16 ou en CFloat8, une proposition de Tesla pour un format 8 bits configurable, et 22 téraflops en FP32.
Chaque matrice a 576 canaux SerDes (en) bidirectionnels le long du périmètre pour se connecter à d'autres puces, et fournit 8 To/s sur les quatre bords de la puce. La matrice couvre 645 millimètres carrés. Chaque puce D1 a une puissance de conception thermique d'environ 400 watts.

### "Carte d'entraînement"

La carte d'entraînement (ou "tuile" d'entraînement) regroupe 25 puces D1 dans une matrice 5 × 5 et a un refroidissement liquide. Chaque carte prend en charge 36 To/s de bande passante agrégée via 40 puces d'E/S - la moitié de la bande passante du maillage de puces. Chaque carte a 11 Go de mémoire SRAM (25 puces D1 × 360 cœurs/D1 × 1,25 Mo/cœur). Chaque carte atteint 9 pétaflops à la précision BF16/CFloat8 (25 puces D1 × 376 TFLOP/D1). Chaque carte consomme 15 kilowatts, soit 288 ampères à 52 volts.

### Bloc système

Six cartes d'entraînement sont regroupées dans un bloc système, qui est intégré à une interface hôte. Chaque interface hôte comprend 512 cœurs x86, fournissant un environnement utilisateur basé sur Linux. Il dispose de 53 100 cœurs D1, évalués à 1 exaflops aux formats BF16 et CFloat8. Il a 1,3 To de mémoire SRAM intégrée et 13 To de mémoire double en ligne à large bande passante (HBM).

#### Processeur d'interface Dojo

Les cartes de Processeur d'Interface Dojo (PID) reposent sur les bords des matrices et sont accrochées au maillage. Les systèmes "hôtes" alimentent les PID et exécutent plusieurs fonctions de gestion du système. Une mémoire PID et un coprocesseur d'E/S contiennent 32 Go de mémoire HBM partagée (soit HBM2e ou HBM3) - ainsi que des interfaces Ethernet qui contournent le maillage. Chaque carte DIP dispose de 2 processeurs d'E/S avec 4 banques de mémoire totalisant 32 Go avec 800 Go/s de bande passante.
Le PID se branche sur un slot PCI Express 4.0 x16 qui offre 32 Go/s de bande passante par carte. Cinq cartes offrent 160 Go/s de bande passante vers les serveurs hôtes et 4,5 To/s à la tuile.

#### Protocole de transport Tesla

Tesla Transport Protocol (TTP) est un protocole propriétaire mais sur port standard PCI Express. La liaison de protocole TTP Go/s fonctionne sur Ethernet (400 Port Gb/s ou plusieurs 200 Ports Gb/s). Parcourir l'ensemble du maillage 2D peut prendre 30 itérations, tandis que TTP sur Ethernet ne prend que quatre itérations, ce qui réduit notablement la latence.

## Logiciel

Dojo prend en charge PyTorch, plutôt que C, C++ ou CUDA. La SRAM se présente comme un espace d'adressage unique.
Tesla a conçu des formats à virgule flottante configurables 8 et 16 bits (CFloat8 et CFloat16, respectivement) qui permettent au compilateur de définir dynamiquement la mantisse et l'exposant, acceptant une précision inférieure en échange d'un traitement vectoriel plus rapide et d'exigences de stockage réduites$^,$.

## Histoire

Le cluster précurseur sans nom utilisant 5 760 GPU Nvidia A100 a été présenté par Andrej Karpathy lors de la 4e Conférence internationale conjointe sur la vision par ordinateur et la reconnaissance de formes (CCVPR 2021) comme "à peu près le cinquième supercalculateur au monde" à environ 81,6 pétaflops, basé sur la mise à l'échelle des performances du supercalculateur Nvidia Selene, qui utilise des composants similaires. Cependant, les performances du cluster GPU Tesla ont été contestées, car il n'était pas clair si cela avait été mesuré en FP32 ou FP64. Tesla exploite également un deuxième cluster de 4 032 GPU pour l'entraînement et un troisième cluster de 1 752 GPU pour l'étiquetage automatique$^,$.
Le principal cluster GPU Tesla sans nom a été utilisé pour traiter un million de clips vidéo, chacun d'une durée de dix secondes, extraits de caméras Tesla Autopilot fonctionnant dans le monde réel, fonctionnant à 36 images par seconde. Collectivement, les clips vidéo contenaient six milliards d'étiquettes d'objets, avec des données de profondeur et de vitesse ; la taille totale de l'ensemble de données était de 1,5 PB ; cet ensemble de données a été utilisé pour former un réseau de neurones destiné à aider les ordinateurs de bord du pilote automatique à comprendre les routes. En août 2022, Tesla avait mis à niveau le cluster GPU principal à 7 360 GPU.
Dojo a été mentionné une première fois par Elon Musk en avril 2019 lors de la "Journée des investisseurs en autonomie". En août 2020$^,$, Musk a déclaré qu'il était "(prévu) dans environ un an" en raison de problèmes d'alimentation et thermiques.
Il a été officiellement annoncé par Musk lors de la Journée de l'IA de Tesla le 19 août 2021. Lors de l'AI Day 2021, Tesla a révélé les détails de la puce D1 et ses plans pour "Project Dojo", un centre de données qui abriterait 3 000 puces D1 ; la première « tuile d'entraînement » avait été achevée et livrée la semaine précédente. En octobre 2021, Tesla a publié un livre blanc «Dojo Technology» décrivant les formats à virgule flottante Configurable Float8 (CFloat8) et Configurable Float16 (CFloat16) et les opérations arithmétiques en tant qu'extension de IEEE 754.
Lors de la journée de suivi de l'IA en septembre 2022, Tesla a annoncé qu'elle avait construit plusieurs plateaux système (system tray) et une armoire (cabinet). Lors d'un test, il a été affirmé par la société que Project Dojo avait consommé jusqu'à 2,3 MW avant de déclencher une sous-station locale à San Jose, en Californie. À l'époque, Tesla assemblait une tuile d'entraînement par jour.