Flamehaven Tensor-Canon v0.1.4 - validateur léger des shapes de tenseurs PyTorch/NumPy + drift (MMD)
(github.com/flamehaven01)Bonjour.
Cette semaine, je vous présente Flamehaven Tensor-Canon (v0.1.4).
Quand on développe avec PyTorch, on doit toujours faire attention à la shape des tenseurs.
Par exemple, pour une entrée image, on utilise généralement la forme NCHW
(batch N, canaux C, hauteur H, largeur W).
Mais en production, les problèmes ci-dessous sont encore plus redoutables.
- la shape est correcte, mais la distribution des données change silencieusement
- le modèle continue de tourner, mais les performances / métriques se dégradent lentement
C’est pour cela que j’ai créé Tensor-Canon, non seulement pour faire des vérifications de shape, mais aussi pour confirmer rapidement et légèrement si la distribution d’entrée a changé.
Les outils existants sont déjà puissants, mais leur rôle est différent
-
Einops
conversion/manipulation intuitive des shapes à partir de chaînes
→ optimisé davantage pour les opérations / transformations que pour la validation -
Jaxtyping
validation basée sur les annotations de type (convivial pour les IDE)
→ mais la syntaxe générique Python peut vite devenir longue -
Torchtyping
validation légère des shapes
→ portée centrée sur la shape -
Pydantic
standard de la validation de données générale
→ un peu lourd et fastidieux pour valider des tableaux multidimensionnels comme les tenseurs
Mais Flamehaven Tensor-Canon se distingue par sa « barrière de sécurité en entrée »
Tensor-Canon n’est pas un framework,
mais une barrière de sécurité légère à utiliser à la frontière des entrées du modèle.
- ✅ Validation de shape (base)
- ✅ Resonance (détection de drift)
- détection des changements de distribution basée sur MMD
- utilisation sans outils MLOps lourds
- ✅ Covenant DSL (contrat sous forme de chaîne)
- au lieu de génériques de type complexes comme
Typing[Float, ...] - une spécification lisible immédiatement comme
"batch channels 224 224"
- au lieu de génériques de type complexes comme
- ✅ Dual Backend
- prétraitement en NumPy, inférence en PyTorch
- protection d’un pipeline métier avec une syntaxe unique
- application d’un contrat cohérent du data loader jusqu’à l’entrée du modèle
🔹 Essayer Tensor-Canon en seulement 3 minutes (PyTorch)
1️⃣ Installation (30 secondes)
pip install flamehaven-tensor-canon
2️⃣ Validation de shape (1 minute)
import torch
from tensor_canon import validate
# Spécification d’entrée attendue (NCHW)
spec = "batch channels 224 224"
x = torch.randn(32, 3, 224, 224)
# Déclenche une ValueError si la shape ne correspond pas
validate(x, spec, key="image_input")
print("OK: contrat de shape respecté")
3️⃣ Détection de distribution (drift) (1 minute 30)
import torch
from tensor_canon import TensorCanonPrime
engine = TensorCanonPrime(drift_threshold=0.05)
# Enregistrement de la référence des données d’entraînement
train = torch.randn(100, 512)
engine.register_golden("embedding", train)
# Vérification des données de production
prod = torch.randn(10, 512) + 0.5 # léger déplacement de distribution
score = engine.check_resonance("embedding", prod)
print("drift score:", score)
if score > 0.05:
print("⚠️ drift détecté")
Dans quels cas l’utiliser
- pipeline de prétraitement NumPy → entrée de modèle PyTorch
- sanity check des entrées de DataLoader
- quand « la shape est correcte mais les métriques chutent »
- barrière de sécurité minimale avant d’adopter des outils MLOps lourds
🔹 Politique de déploiement / release (référence)
- installation directe possible via le package PyPI
- gestion des releases GitHub en mode tag-based
- uniquement pour les tags validés, la CI construit les wheel / sdist
et les joint à la GitHub Release - pour garantir stabilité et reproductibilité,
nous maintenons une approche de diffusion de builds validés plutôt que des déploiements automatiques et fréquents
Retours / issues / PR bienvenus
En particulier, si vous avez connu un cas où « la shape était correcte mais où tout a cassé en production »,
je voudrais faire évoluer ensemble les patterns de contrat (DSL) à partir de ce type d’exemples.
Et ⭐ un star apporte vraiment un grand soutien.
Ce projet est développé chaque semaine grâce à l’élan donné par chaque star.
Si vous l’essayez et qu’il vous convainc, je vous serais reconnaissant de lui laisser un star en signe d’encouragement !
Aucun commentaire pour le moment.