smallbard

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. 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. 2

    Le produit matriciel

    L'ordre des boucles, les blocs de Goto, le micro-kernel, le packing et huit threads

  3. 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. 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.

ArticleMesureAvantAprès
1Maximum de calcul, f321 314 Gop/s
2Produit 1024³0,65 Gop/s1 071 Gop/s
3Pas xl (GPT-2, AdamW)5 tokens/s3 813 tokens/s
3Rendement d'un pas xl46 % (la carte : 14 %)
3Pas xl (moderne, Muon), bf163 006 tokens/s3 897 tokens/s
4Génération, une séquence16 tokens/s2 619 tokens/s (la carte : 989)

Bibliographie