Module 5 — L'accélérateur IA 🎯
Le but final : comprendre et construire le circuit qui fait tourner les réseaux de neurones.
5.1 — Que calcule une IA, au juste ?
Derrière ChatGPT, la reconnaissance d'images ou la voix de ton téléphone, il y a une seule opération répétée des milliards de fois : le neurone artificiel. Il fait trois choses :
- multiplier chaque entrée par un poids :
x₁·w₁, x₂·w₂, … - additionner le tout (+ un biais b)
- passer le résultat dans une fonction d'activation (ex : ReLU = « si négatif, mettre 0 »)
Soit : sortie = ReLU(x₁w₁ + x₂w₂ + … + b). « Apprendre », c'est juste ajuster les poids. « Réfléchir » (l'inférence), c'est calculer cette formule en cascade sur des millions de neurones.
5.2 — Des neurones aux matrices
Une couche de réseau de neurones = plein de neurones qui lisent les mêmes entrées. Mathématiquement, ça s'écrit en une seule opération : y = W·x — une multiplication matrice × vecteur. Tout le deep learning n'est que ça :
image 224×224 → vecteur x de 150 528 nombres couche 1 : y₁ = ReLU(W₁ · x) ← des millions de multiplications couche 2 : y₂ = ReLU(W₂ · y₁) ← encore des millions … sortie : « c'est un chat » 🐱
Un GPU ou un TPU n'est rien d'autre qu'une machine à multiplier des matrices très vite. Et le circuit champion pour ça, celui du TPU de Google, c'est le réseau systolique.
5.3 — Le réseau systolique : le cœur de ta puce
L'idée géniale : une grille de petites cellules MAC (Multiply-ACcumulate). Chaque cellule fait UNE chose : acc ← acc + (a × b), puis passe a à sa voisine de droite et b à sa voisine du bas. Les données « pulsent » à travers la grille comme le sang dans un cœur (d'où systolique) — et la multiplication de matrices émerge toute seule, sans chef d'orchestre.
Une cellule MAC = un multiplicateur + ton additionneur du Module 1 + un registre du Module 3. Tu connais déjà toutes les pièces.
5.4 — La cellule MAC en Verilog
Le cœur de ton accélérateur tient en quelques lignes — et tu peux maintenant lire chacune d'elles :
module mac_cell ( input clk, input [7:0] a_in, b_in, // données qui arrivent output reg [7:0] a_out, b_out, // transmises aux voisines output reg [15:0] acc // l'accumulateur ); always @(posedge clk) begin // Module 3 : registres + horloge acc <= acc + a_in * b_in; // Module 1 : multiplier + additionner a_out <= a_in; // passer à la voisine de droite b_out <= b_in; // passer à la voisine du bas end endmodule // Ta puce IA = ce module instancié en grille N×N. C'est tout.
5.5 — Le chemin vers le silicium réel
- Simuler : écrire la grille complète en Verilog + testbench (Icarus Verilog sur ce serveur — on l'installera ensemble)
- FPGA (~20-60€) : charger ton design sur une Tang Nano 9K ou ULX3S — ta puce IA fonctionne physiquement, sur ton bureau
- Y connecter un vrai modèle : un petit réseau entraîné sur MNIST (chiffres manuscrits), poids quantifiés en 8 bits
- Tiny Tapeout (~150-300€) : ton design gravé sur une vraie puce de silicium partagée, fabriquée en usine (SkyWater 130 nm), livrée chez toi 🏆
5.6 — Le quiz final
Réponds juste aux 5 questions du quiz pour débloquer.