Hvorfor tensor-formene dine skjuler seg rett foran øynene dine – og hvordan bedre notasjon kan avsløre dem
Derfor forsvinner feil i tensor-former rett foran øynene dine
Du vet den følelsen. Treningen går som den skal. Tapet synker. Tallene ser fornuftige ut. Så, tre uker senere i produksjon, oppdager noen at modellens output er systematisk feil – uten at du klarer å spore hvorfor.
Skylden ligger ofte i en enkelt akse. Den betydde én ting i hodet ditt, men koden behandlet den som noe helt annet.
Dette er ikke en kompileringsfeil. Det er ikke en krasj. Det er noe verre: en taus feil som følger med i hver eneste prediksjon.
Problemet med notasjon
Her er den ubehagelige sannheten: det du ikke kan gi navn, kan du ikke kontrollere.
De fleste tensor-rammeverk bryr seg ikke om hva dimensjonene betyr. En form som (32, 768, 12, 64) kan stå for alt mulig:
(batch, sequence, heads, dim_per_head)i én sammenheng(batch, features, height, width)i en annen(batch, tokens, layers, channels)i en tredje
Kompilatoren ser bare tall. Så lenge dimensjonene multipliseres riktig, godtar den operasjonen. Den semantiske meningen blir borte i vektene.
Dette er den usynlige feilen. Ikke feil i regnestykket – men feil etter hensikt.
Hva bedre notasjon kan gjøre
Tenkt deg at tensor-operasjoner kunne bære sin mening gjennom typesystemet. Ikke bare form – men navngitte dimensjoner.
I stedet for å måtte huske hvilke akser som er hva, kunne du definere det allerede ved opprettelse:
tensor: [batch=32, sequence=128, heads=12, dim_per_head=64]
Så kan kompilatoren sjekke at:
- Du bare broadcaster langs dimensjoner som skal tillate det
- Reduksjonsoperasjoner bare fjerner de aksene du egentlig mente
- Attention-heads holdes adskilt fra feature-dimensjoner
- LayerNorm normaliserer langs riktig akse
Kompilatoren blir en slags medhjelper. Den fanger opp akse-feil før du har trent i tre uker.
Hva slike taus feil koster
Slik påvirker dimensjonsfeil alle deler av arbeidet:
I forskning: Du kan bruke timevis på testing. Brukte du riktig hyperparameter? Er det en random seed? Eller kanskje aksene ble byttet? Og dette lar seg multiplisere med alle de mislykkede eksperimentene.
I produksjon: En modell som er litt for feil. Precisions-verdien går fra 96% til 94%.