Articles · IA : les modèles de langage de l'intérieur · série terminée
Smallem : le processeur
Cette série prolonge la construction de Smallem, un modèle de langage écrit en Rust et CUDA à partir de zéro. Elle écrit un backend pour le processeur, qui exploite ses huit cœurs et l'AVX-512, et mesure ce qu'il vaut face à la carte, pour entraîner et pour générer.
Sommaire
-
1
Ce que vaut un processeur
Le maximum de calcul, les trois marches de la mémoire, et un point de départ deux mille fois en dessous
-
2
Le produit matriciel
L'ordre des boucles, les blocs de Goto, le micro-kernel, le packing et huit threads
-
3
Tout ce qui n'est pas un produit
Des threads qui attendent, une réserve de tampons, l'attention en tuiles, et entraîner en bf16
-
4
Générer sans la carte
Des poids en octets, un L3 qui ne garde que la moitié, vpdpbusd, et le bilan
Les chiffres en un coup d'œil
Sur un Ryzen 7 7700 (8 cœurs, Zen 4), face à une RTX 3090.
| Article | Mesure | Avant | Après |
|---|---|---|---|
| 1 | Maximum de calcul, f32 | 1 314 Gop/s | |
| 2 | Produit 1024³ | 0,65 Gop/s | 1 071 Gop/s |
| 3 | Pas xl (GPT-2, AdamW) | 5 tokens/s | 3 813 tokens/s |
| 3 | Rendement d'un pas xl | 46 % (la carte : 14 %) | |
| 3 | Pas xl (moderne, Muon), bf16 | 3 006 tokens/s | 3 897 tokens/s |
| 4 | Génération, une séquence | 16 tokens/s | 2 619 tokens/s (la carte : 989) |
Bibliographie
- McCalpin, STREAM: Sustainable Memory Bandwidth in High Performance Computers → article 1.
- Williams, Waterman et Patterson, Roofline: An Insightful Visual Performance Model for Multicore Architectures, 2009 → article 1.
- Goto et van de Geijn, Anatomy of High-Performance Matrix Multiplication, 2008 → article 2.
- Van Zee et van de Geijn, BLIS: A Framework for Rapidly Instantiating BLAS Functionality, 2015 → article 2.
- Low et al., Analytical Modeling Is Enough for High-Performance BLIS, 2016 → article 2.
- Moshier, Cephes Mathematical Library : l'exponentielle
expf→ article 3. - Dao et al., FlashAttention: Fast and Memory-Efficient Exact Attention with IO-Awareness, 2022 → article 3.