Miért bujkálnak a tensor shape hibák a kódodban?

Miért bujkálnak a tensor shape hibák a kódodban?

Máj 18, 2026 machine-learning tensor-programming type-systems compiler-design notation-and-semantics code-quality debugging

Miért buknak el a tenzorok alakja miatt a modellek?

Ismerős a helyzet. A tanítás fut, a veszteség csökken, a metrikák elfogadhatónak tűnnek. Aztán három hét múlva valaki rájön, hogy a modell kimenetei rendszeresen hibásak – és senki sem tudja megmondani, miért.

A bűnös gyakran egy olyan tengely, amit te másképp értelmeztél, mint ahogy a kód kezelte.

Ez nem fordítási hiba és nem is futásidejű összeomlás. Ez rosszabb: néma pontatlanság, ami minden egyes előrejelzésbe beépül.

A jelölés problémája

A kényelmetlen igazság az, hogy ami nincs elnevezve, azt nem lehet ellenőrizni.

A legtöbb tenzoros keretrendszer nem törődik azzal, hogy mit jelent egy alak. Egy (32, 768, 12, 64) méretű tenzor jelenthet:

  • (batch, sequence, heads, dim_per_head) egyik esetben
  • (batch, features, height, width) egy másikban
  • (batch, tokens, layers, channels) egy harmadikban

A keretrendszer csak számokat lát. Amíg a dimenziók összeszorzódnak helyesen, addig minden művelet érvényesnek számít. A szemantika elveszik.

Ez a láthatatlan hiba: nem matematikailag rossz, hanem szándék szerint.

Mit jelentene a jobb jelölés

Képzeld el, hogy a tenzorokhoz tartozó műveletek is hordozzák a jelentésüket. Nem csak alakot – elnevezett dimenziókat.

Ahelyett, hogy debuggolással keresnéd, melyik tengely mit jelent, egyszerűen előre megmondanád:

tensor: [batch=32, sequence=128, heads=12, dim_per_head=64]

Így a fordító ellenőrizhetné, hogy:

  • csak azokon a dimenziókban történik broadcast, ahol az szabad
  • a redukciós műveletek valóban a kívánt tengelyeket zsugorítják
  • az attention head-ek nem keverednek a feature dimenziókkal
  • a LayerNorm a megfelelő tengelyeket normalizálja

A fordító ekkor valóban segíthet – még a hosszú tanítás előtt.

Miért drága a némasági hiba

Ezeknek a dimenziós hibáknak a következményei nem elméletiek:

Kutatásban: órákig tart keresni, hogy miért nem replikálhatóak a számok. Hyperparaméter? Seed? Vagy egyszerűen az aksisok sorrája rossz? És ez még csak a sikeres tanításokról szól.

Produkcióban: egy éles modell, amely kicsit, de rendszeresen hibás. 94%-os pontosság 96% helyett. A hiba elég kicsi ahhoz, hogy rejtve maradjon, de elég nagy ahhoz, hogy számít legyen. És csak részletes debuggolással jön ki fényre.

Csapatokban: ha a jelölés nincs szabványosítva, akkor egy csapat [batch, seq, heads, dim]-ot használ,,而另一個团队使用 [batch, heads, seq, dim]-ot. Amikor a kódok összeérnek, a némasági hiba már mindenből miatti

Read in other languages:

RU BG EL CS UZ TR SV FI RO PT PL NB NL IT FR ES DE DA ZH-HANS EN