Ce transformer custom bizarre que je viens d’écrire en Go fonctionne *presque*. C’est de la science totalement nouvelle en matière de calcul et de gestion mémoire. On ne sait pas encore pourquoi ça déconne. Les résultats sont n’importe quoi, mais les maths sont solides. Tout communique avec tout, et le tokenizer custom bien léché fonctionne dans les deux sens. Je regarde les logits, le softmax et la façon dont je shape les données. Mais purée, quand ce truc sera fini... si j’arrive à le terminer, ça va être TRÈS cool.
Alors, qu’est-ce que j’ai fait jusqu’ici ?
Écrit un kernel Simd complet en Go et en assembleur (allez voir mon GitHub, ça hurle).
Écrit un tokenizer spécifique au CPU
Créé une implémentation de rope
Écrit un nouveau chargeur guff fp8
Inventé un nouveau schéma de gestion mémoire
Et écrit... probablement les deux tiers d’un transformer natif en Go.
Et tout, sauf la dernière pièce, est pleinement fonctionnel.
Je vous jure, les gars, c’est pas si dur.
Oh putain... c’est le vocabulaire. Bah oui.
Ok, problème de vocab corrigé. Le tokenizer tourne, les vocabs chargent... toujours n’importe quoi ! Ha ! Mais c’est du n’importe quoi variable. Donc on vérifie nos normes... on est entre (mean=3.84, max=15.3) mwhahaha *pouf*. On y est presque, les gars.
Je resserre le truc. On dirait un... problème d’initialisation du cache KV ? Peut-être ? On verra bien.
Merde, ça marche ?
Si c’est le cas... c’est looooooooouuuuute.
C’est marrant.
Je recommande vivement l’activité.
22 couches chargées, 47 secondes... et on a <uncs> !
hahah,
Toujours pas ça... mais on s’en approche.
Oh....
Je devrais probablement réfléchir à la normalisation des couches, hein
On vient de régler un cluster de problèmes autour du cache KV q8 et des rsnorms. Et... des mots aléatoires, bébé !
C’est mieux que des erreurs nan
Et maintenant... on entre dans le pays du débogage multi-tokens. *effrayant*
Lol, bah oui. La couche d’attention est verrouillée.
Ouais, ça expliquerait ça.
Je suis en train de bousiller mes modèles parce que j’ai oublié de suivre la position de la séquence. Vous voyez ? C’est pour ça qu’on teste, les gens.
Prompt: Once upon a time there was a
Réponse: rizona zahl ała ublic inoltre veget athedral Italy
Nickel !
Je bosse encore dessus
On dirait que la passe forward est encore foutue.