Même modèle, ~28 % de calcul en moins. K-ABENA exclut à chaque époque une partie des exemples déjà appris et fait voter chaque exemple conservé au nom des dispensés (repondération Horvitz-Thompson) : le gradient reste design-unbiased — preuves et mesures dans le preprint.
EN — Note: the threshold K from the paper is not a constructor
argument — it is recomputed internally at every select() call. The knob
you tune is k_percentile (default 40.0).
FR — Note : le seuil K du papier n'est pas un argument du
constructeur — il est recalculé en interne à chaque appel de select().
ßLe réglage accessible est k_percentile (défaut 40.0).
from kabena import Kabena
kb = Kabena() # 1. défauts du preprint (v3, N=0.3)
for epoch in range(E):
losses = per_sample_loss(model, X, y)
active, w = kb.select(losses, y=y) # 2. masque + poids HT
model.fit(X[active], y[active], sample_weight=w[active])
print(kb.last_gain_) # fraction de calcul économiséePyTorch : KabenaTorch().reduce(losses) · Keras : callback KabenaKeras ·
Hugging Face : KabenaTrainer.
| Paramètre | Défaut | Rôle |
|---|---|---|
N |
0.3 |
proportion de mineures conservées (budget) |
strategy |
"auto" |
auto(=v3) / v3 / v2 / v1 — bascule transparente |
seed |
None |
reproductibilité du tirage |
v2 = mode régularisé optionnel (garde-fou automatique hors zone de
validité) · v1 = compatibilité 1.x.
| Famille | Niveau 1 (notebook) | Niveau 2 (script) | Niveau 3 (MLOps) |
|---|---|---|---|
| ML classique (logistique, SVM, softmax) | notebook | script | train + serve + Docker |
| MLP / ANN (PyTorch et TF/Keras) | notebook | PyTorch · TensorFlow | pipeline TorchScript |
| CNN (PyTorch et TF/Keras) | notebook | PyTorch · TensorFlow | SavedModel / TF Serving |
| Transformer / NLP (Hugging Face) | notebook | DistilBERT | fine-tune + serve |
Chaque table du papier a son script seedé dans
validation/ :
| Table du preprint | Script |
|---|---|
| Table 1 — jeux réels, parité à coût réduit | table1_real_datasets.py |
| Table 2 — déséquilibre extrême 0,17 % | table2_extreme_imbalance.py |
| Table 3 — moments du gradient, bruit | table3_moments_noise.py |
| Table 4 — rivaux à budget égal (tests de permutation) | table4_rivals.py |
| §Sensitivity — grille K × N | table5_sensitivity.py |
python validation/run_all.py # les 5 tables (QUICK=1 pour un smoke test <2 min)
python experiments/playground.py --regime fraude --strategy v3 # bac à sableEN — pip install kabena (core: numpy only, works with numpy 1.22 → 2.x).
Framework extras: pip install 'kabena[torch]' (note the quotes — required by
zsh, the default macOS shell). On Intel Macs, torch stops at 2.2.2 and the
extra automatically pins numpy<2 accordingly; on every other platform the
extra installs torch ≥ 2.3, which supports NumPy 2.
FR — pip install kabena (cœur : numpy seul, compatible numpy 1.22 → 2.x).
Extras framework : pip install 'kabena[torch]' (guillemets obligatoires sous
zsh, le shell par défaut sur Mac). Sur Mac Intel, torch s'arrête à 2.2.2 et
l'extra épingle automatiquement numpy<2 en conséquence ; sur toute autre
plateforme, l'extra installe torch ≥ 2.3, compatible NumPy 2.
pip install kabena # coeur (numpy seul)
pip install "kabena[sklearn]" # + helpers scikit-learn
pip install "kabena[torch]" # + intégration PyTorch
pip install "kabena[tensorflow]" # + intégration Keras
pip install "kabena[huggingface]" # + KabenaTrainer