2 points par flamehaven01 2025-12-22 | Aucun commentaire pour le moment. | Partager sur WhatsApp

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"
  • 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.

Aucun commentaire pour le moment.