Pourquoi vos shapes Tensor disparaissent sous vos yeux (et comment une meilleure notation peut tout changer)

Pourquoi vos shapes Tensor disparaissent sous vos yeux (et comment une meilleure notation peut tout changer)

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

Pourquoi vos bugs de forme de tenseurs passent inaperçus

Vous connaissez ce moment. L’entraînement avance. La perte diminue. Les métriques semblent bonnes. Puis, trois semaines après le passage en production, quelqu’un remarque que les sorties du modèle sont fausses d’une manière impossible à expliquer.

La cause ? Un axe qui signifiait une chose dans votre tête, mais que le code a traité autrement.

Ce n’est pas une erreur de compilation. Ce n’est pas un plantage à l’exécution. C’est plus insidieux : une erreur de sens qui reste invisible et qui touche chaque prédiction.

Le problème de notation

La vérité est simple : ce qu’on ne nomme pas, on ne peut pas le vérifier.

La plupart des frameworks de tenseurs ne portent pas de sens. Une forme (32, 768, 12, 64) peut signifier :

  • (batch, sequence, heads, dim_per_head) selon le contexte
  • (batch, features, height, width) selon un autre
  • (batch, tokens, layers, channels) dans un troisième

Le framework ne se pose pas la question. Il voit seulement un tuple d’entiers. Tant que les dimensions se multiplient correctement, l’opération est valide. Le code applique la manipulation et fixe le sens dans les poids.

C’est le bug invisible. Pas une erreur mathématique. Une erreur d’intention.

Ce qu’une meilleure notation pourrait changer

Imaginez des opérations qui conserven leur sens à travers le type système. Non pas seulement des shapes, mais des dimensions avec des noms.

Au lieu de chercher plus tard quel axe est quoi, vous le déclarez dès le début :

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

Le compiler pourrait alors contrôler que :

  • Les broadcast se font seulement sur les dimensions autorisées
  • Les réductions s’effondrent seulement sur les axes voulus
  • Les têtes d’attention restent sépares des dimensions de features
  • La LayerNorm normalise les bons axes

Le compiler devient un copilote. Il détecte l’échange d’axes avant que vous trainiez pendant trois semaines.

Les vrais coûts des bugs invisibles

Ce que ces bugs de dimension produisent réellement :

En recherche : des heures perdues à tester pourquoi les chiffres publiés ne sont pas reproduits. Hyperparamètre ? Random seed ? Ou simplement un axe mal placé ? Ce loss time multiplié par chaque expérimentation échouée.

En production : un modèle mis en production qui is miscalibrated. Votre précision peut être 94 % au lieu de 96 %. Le bug est trop petit pour être repéré,却

Read in other languages:

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