From 3e69bbc7d3453dc10ad3ea77e5ed26a4665efe7c Mon Sep 17 00:00:00 2001 From: sohams25 <86193836+sohams25@users.noreply.github.com> Date: Wed, 22 Jul 2026 02:45:13 +0530 Subject: [PATCH 01/16] feat: per-head temperatures, explicit exit enablement, staged calibration, checkpoint v2 - EarlyExitConfig: per-head temperatures mapping (exits + final), explicit enabled_exits booleans, centralized validate() re-checked at wrapper construction and checkpoint load; legacy scalar temperature broadcast deterministically - routing: disabled exits never fire (even at confidence 1.0 / entropy 0.0); each head's softmax uses its own temperature; invalid runtime temperatures fall back to 1.0 instead of a razor-sharp 1e-6 clamp - calibration: staged pipeline (collect logits once, fit per-head temperatures with convergence status, greedy grid search on cache, evaluate); exits that never fire stay disabled; empty loaders fail fast; CalibrationResult carries exit distribution, sample count, objective, method and schema version - checkpoints: format_version 2 with exit-point metadata and cross-check; deterministic v1 migration (scalar temperature broadcast, sentinel thresholds -> enabled_exits=False) with warnings; custom_ee loads via a user-supplied factory - InferenceResult/BatchedInferenceResult: computation_used renamed to estimated_backbone_flops_fraction with a read alias --- earlyon/core/temperature.py | 50 +++- earlyon/core/thresholds.py | 548 +++++++++++++++++++++++------------- earlyon/core/types.py | 160 ++++++++++- earlyon/core/wrappers.py | 53 ++-- earlyon/utils.py | 181 ++++++++++-- tests/test_cli.py | 9 +- tests/test_integration.py | 4 +- tests/test_temperature.py | 39 +++ tests/test_thresholds.py | 185 +++++++++--- tests/test_types.py | 149 ++++++++++ tests/test_utils.py | 197 +++++++++++++ tests/test_wrappers.py | 124 +++++++- 12 files changed, 1395 insertions(+), 304 deletions(-) diff --git a/earlyon/core/temperature.py b/earlyon/core/temperature.py index 96889e8..d6adabc 100644 --- a/earlyon/core/temperature.py +++ b/earlyon/core/temperature.py @@ -5,18 +5,34 @@ in log-space to keep T positive and use LBFGS, which converges in a handful of iterations. -The fitted temperature is stored on ``EarlyExitConfig.temperature`` and used -by the wrapper at inference time. +Fitted temperatures are stored per head on ``EarlyExitConfig.temperatures`` +and used by the wrapper at inference time. """ from __future__ import annotations import math +from dataclasses import dataclass import torch import torch.nn.functional as F +@dataclass(frozen=True) +class TemperatureFitResult: + """Outcome of one per-head temperature fit. + + ``fallback`` is True when LBFGS diverged (non-finite iterate) and the fit + kept the last finite value — or 1.0 if even the first step blew up. A + fallback is safe (never an artificially sharp temperature) but means the + head is effectively uncalibrated; the value is reported rather than hidden. + """ + + temperature: float + converged: bool # iterates stabilised within tolerance + fallback: bool # divergence forced the last-finite / 1.0 fallback + + def fit_temperature( logits: torch.Tensor, targets: torch.Tensor, @@ -25,6 +41,20 @@ def fit_temperature( max_outer_steps: int = 10, tol: float = 1e-6, ) -> float: + """Backward-compatible scalar wrapper around :func:`fit_temperature_full`.""" + return fit_temperature_full( + logits, targets, max_iter=max_iter, lr=lr, max_outer_steps=max_outer_steps, tol=tol + ).temperature + + +def fit_temperature_full( + logits: torch.Tensor, + targets: torch.Tensor, + max_iter: int = 50, + lr: float = 1.0, + max_outer_steps: int = 10, + tol: float = 1e-6, +) -> TemperatureFitResult: """Find T > 0 minimizing NLL(logits / T, targets). ``lr`` defaults to 1.0 (the PyTorch LBFGS default); the previous 0.01 @@ -60,14 +90,28 @@ def closure() -> torch.Tensor: # blew up — i.e. no calibration rather than a broken one). best_log_t = 0.0 prev = float("inf") + converged = False + fallback = False for _ in range(max_outer_steps): optimizer.step(closure) # type: ignore[no-untyped-call] # torch stub gap current = log_t.item() if not math.isfinite(current): + fallback = True break best_log_t = current if abs(current - prev) < tol: + converged = True break prev = current - return float(math.exp(best_log_t)) + try: + temperature = float(math.exp(best_log_t)) + except OverflowError: + temperature = float("inf") + if not math.isfinite(temperature) or temperature <= 0.0: + # a finite log_t can still overflow exp(); never return a value the + # config validator would reject — fall back to the no-op temperature. + temperature = 1.0 + converged = False + fallback = True + return TemperatureFitResult(temperature=temperature, converged=converged, fallback=fallback) diff --git a/earlyon/core/thresholds.py b/earlyon/core/thresholds.py index 35c56d7..3a2aacc 100644 --- a/earlyon/core/thresholds.py +++ b/earlyon/core/thresholds.py @@ -1,59 +1,190 @@ -"""Greedy threshold calibration. - -Two calibration modes share one greedy coordinate-descent search: +"""Threshold calibration: staged, testable, greedy-by-construction. + +The pipeline is four separate stages, each independently callable and tested: + +1. **Collect** — :func:`collect_head_logits` runs the calibration loader once + through the all-exits (training-mode) forward and caches every head's raw + logits plus targets. The network runs exactly once. +2. **Fit temperatures** — :func:`fit_head_temperatures` fits one temperature + per head (every exit head *and* the final classifier) on cached logits via + post-hoc temperature scaling (Guo et al. 2017). Each head is a different + classifier with its own miscalibration; a single shared temperature is not + defensible. +3. **Search thresholds** — a greedy coordinate-descent sweep over a fixed + grid, simulated vectorially against the cache. It is *not* a joint or + globally optimal search and is not claimed to be one; see + ``docs/CALIBRATION_AND_BENCHMARK_CONTRACT.md``. +4. **Evaluate** — the selected policy is scored on the calibration split + (accuracy, estimated compute, exit distribution). Held-out *test* + evaluation is a separate concern: use + :func:`earlyon.benchmarking.evaluate` on a test loader; the threshold + search never sees test labels. + +Two public calibrators share the search: * :func:`calibrate_thresholds` — accuracy budget. For each exit (low-index to - high-index), lower the threshold through a fixed grid until the resulting - accuracy drop on the validation set exceeds ``target_accuracy_drop``. + high-index), lower the threshold through the grid; keep the most aggressive + value whose accuracy drop stays within ``target_accuracy_drop``. * :func:`calibrate_thresholds_for_budget` — compute budget. For each exit, - keep the threshold that brings average compute within ``target_computation`` - while losing the least accuracy; exits that cannot help stay disabled. - -The search is coordinate-descent, not joint-optimal; this is fast and gives -consistently good results in practice. Trials are evaluated against -:class:`_EvalCache` — one batched forward pass collects every head's logits, -and each threshold setting is then simulated vectorially, so the network runs -once instead of once per grid point. - -When ``fit_temperature=True``, post-hoc temperature scaling (Guo et al. 2017) -is fit on a held-out set BEFORE the threshold search begins. The fitted -scalar lands on ``model.config.temperature`` so every subsequent softmax -(inside the hook and at the final classifier) is calibrated. + keep the threshold that brings average estimated compute within + ``target_computation`` while losing the least accuracy. + +Exits for which no grid value passes are left **disabled** via +``config.enabled_exits`` — an explicit boolean, not a threshold sentinel, so +a saturated softmax (confidence exactly 1.0) can never fire a disabled exit. """ from __future__ import annotations import math import warnings -from dataclasses import dataclass +from dataclasses import dataclass, field from typing import Callable import torch from torch.utils.data import DataLoader -from earlyon.core.temperature import fit_temperature as _fit_temperature -from earlyon.core.types import Batch +from earlyon.core.temperature import TemperatureFitResult, fit_temperature_full +from earlyon.core.types import FINAL_HEAD, Batch, exit_label from earlyon.core.wrappers import EarlyExitWrapper, _safe_temperature +CALIBRATION_SCHEMA_VERSION = 2 + +# confidence grid: ordered conservative -> aggressive (lower threshold fires more) +DEFAULT_GRID: tuple[float, ...] = (0.99, 0.95, 0.9, 0.85, 0.8, 0.75, 0.7, 0.6, 0.5) + +# entropy grid: fractions of H_max = ln(num_classes), ordered conservative -> +# aggressive (higher entropy threshold fires more, since exit fires on H <= thr) +DEFAULT_ENTROPY_FRACTIONS: tuple[float, ...] = (0.05, 0.1, 0.2, 0.3, 0.4, 0.5, 0.6, 0.7) + @dataclass class CalibrationResult: + """Everything a calibration run decided and measured. + + ``avg_computation_used`` is the average *estimated backbone FLOPs + fraction* over the calibration set (see + ``InferenceResult.estimated_backbone_flops_fraction`` for the estimator's + limitations); it is not a wall-clock or measured-FLOPs quantity. + + ``baseline_accuracy`` is the routed accuracy with every exit disabled, + i.e. the final classifier's accuracy on the calibration split. + ``final_accuracy`` is the routed accuracy under the selected policy on the + same split. Both are calibration-split numbers — report test-set accuracy + from a separate held-out loader. + """ + thresholds: list[float] baseline_accuracy: float final_accuracy: float avg_computation_used: float - fitted_temperature: float | None = None + enabled_exits: list[bool] = field(default_factory=list) + accuracy_delta: float = 0.0 + exit_distribution: dict[str, float] = field(default_factory=dict) + num_samples: int = 0 + fitted_temperature: float | None = None # deprecated: final head's fitted T + temperatures: dict[str, float] | None = None # per-head fitted temperatures + temperature_fits: dict[str, TemperatureFitResult] | None = None policy: str = "confidence" # which routing policy the thresholds calibrate + objective: str = "accuracy_budget" # "accuracy_budget" | "compute_budget" + method: str = "greedy-coordinate-grid" # honestly named: not a joint optimum + target_accuracy_drop: float | None = None target_computation: float | None = None # set by budget calibration budget_met: bool = True # False when target_computation was unattainable + schema_version: int = CALIBRATION_SCHEMA_VERSION -# confidence grid: ordered conservative -> aggressive (lower threshold fires more) -DEFAULT_GRID: tuple[float, ...] = (0.99, 0.95, 0.9, 0.85, 0.8, 0.75, 0.7, 0.6, 0.5) +# ---------------- stage 1: collect ---------------- + + +@dataclass(frozen=True) +class HeadLogits: + """Cached raw (temperature-1) logits for every head on one dataset pass. + + ``head_names`` is the exit names in forward order plus ``"final"`` last; + ``logits[i]`` is the ``(N, num_classes)`` CPU tensor for ``head_names[i]``; + ``flops`` is each head's cumulative estimated backbone-FLOPs fraction + (1.0 for the final head). + """ + + head_names: list[str] + logits: list[torch.Tensor] + targets: torch.Tensor + flops: torch.Tensor + + @property + def num_samples(self) -> int: + return int(self.targets.shape[0]) + + +def collect_head_logits( + model: EarlyExitWrapper, loader: DataLoader[Batch], device: str +) -> HeadLogits: + """One batched training-mode pass caching every head's logits + targets. + + Training mode never fires an exit (the hook only appends logits), so + every head — including disabled ones — is captured, and temperatures are + irrelevant here (they apply at softmax time, not logit time). + + Raises ``ValueError`` on an empty loader: silently calibrating on zero + samples would produce a policy chosen from nothing. + """ + model = model.to(device) + per_head: list[list[torch.Tensor]] = [] + targets: list[torch.Tensor] = [] + was_training = model.training + model.eval() + try: + with torch.no_grad(): + for images, tgt in loader: + outputs = model(images.to(device), mode="training") + if not per_head: + per_head = [[] for _ in outputs] + for idx, logits in enumerate(outputs): + per_head[idx].append(logits.detach().cpu()) + targets.append(tgt.cpu()) + finally: + model.train(was_training) + if not targets: + raise ValueError( + "calibration loader yielded no batches; calibration needs a " + "non-empty validation/calibration split" + ) + exit_flops = [model._flops_at[ep.layer_name] for ep in model.config.exit_points] + return HeadLogits( + head_names=model.config.head_names, + logits=[torch.cat(chunks) for chunks in per_head], + targets=torch.cat(targets), + flops=torch.tensor(exit_flops + [1.0], dtype=torch.float64), + ) + + +# ---------------- stage 2: fit per-head temperatures ---------------- -# entropy grid: fractions of H_max = ln(num_classes), ordered conservative -> -# aggressive (higher entropy threshold fires more, since exit fires on H <= thr) -DEFAULT_ENTROPY_FRACTIONS: tuple[float, ...] = (0.05, 0.1, 0.2, 0.3, 0.4, 0.5, 0.6, 0.7) + +def fit_head_temperatures(cache: HeadLogits) -> dict[str, TemperatureFitResult]: + """Fit one temperature per head (exits and final) from cached logits. + + Fitting is per-head NLL minimisation; each result carries its + convergence/fallback status. Callers decide what to do with fallbacks — + :func:`calibrate_thresholds` warns and keeps the safe 1.0. + """ + return { + name: fit_temperature_full(logits, cache.targets) + for name, logits in zip(cache.head_names, cache.logits) + } + + +# ---------------- stage 3/4: simulate + evaluate ---------------- + + +@dataclass(frozen=True) +class PolicyEvaluation: + """Routed metrics for one (thresholds, enabled, temperatures) setting.""" + + accuracy: float + avg_flops_fraction: float + exit_distribution: dict[str, float] def _evaluate_with_router( @@ -61,8 +192,8 @@ def _evaluate_with_router( ) -> tuple[float, float]: """Ground truth: route every sample through the real inference path. - Kept as the oracle that pins :class:`_EvalCache` correctness in the test - suite; calibration itself uses the cache.""" + Kept as the oracle that pins :func:`simulate_policy` correctness in the + test suite; calibration itself uses the cache.""" correct = 0 total = 0 comp = 0.0 @@ -75,110 +206,78 @@ def _evaluate_with_router( result = model(img.unsqueeze(0), mode="inference") pred = int(result.prediction.argmax(dim=-1).item()) correct += int(pred == int(tgt.item())) - comp += result.computation_used + comp += result.estimated_backbone_flops_fraction total += 1 return correct / max(total, 1), comp / max(total, 1) -class _EvalCache: - """One batched training-mode pass caches every head's logits; threshold - trials are then simulated against the cache instead of re-running the - network. +def simulate_policy(cache: HeadLogits, model: EarlyExitWrapper) -> PolicyEvaluation: + """Vectorially replay the router's decision rule against cached logits. - The simulation reproduces the router's math exactly: softmax in float32 - (as the hook computes it), criterion comparison in float64 (as the hook's - ``.item()`` produces), first firing exit claims the sample. A test pins - equivalence against :func:`_evaluate_with_router`. + Reproduces the routing math exactly: per-head temperature, softmax in + float32 (as the hook computes it), criterion comparison in float64 (as the + hook's ``.item()`` produces), first firing *enabled* exit claims the + sample. A test pins equivalence against :func:`_evaluate_with_router`. + """ + cfg = model.config + n_exits = len(cfg.exit_points) + n = cache.num_samples + chosen = torch.full((n,), n_exits, dtype=torch.long) + for idx in range(n_exits - 1, -1, -1): # earlier exits override later ones + if not cfg.enabled_exits[idx]: + continue + temp = _safe_temperature(cfg.temperatures[cfg.exit_points[idx].name]) + probs = torch.softmax(cache.logits[idx] / temp, dim=-1) + if cfg.routing_policy == "confidence": + confidence = probs.max(dim=-1).values.double() + fires = confidence >= cfg.confidence_thresholds[idx] + else: + entropy = -(probs * probs.clamp_min(1e-12).log()).sum(dim=-1) + fires = entropy.double() <= cfg.entropy_thresholds[idx] + chosen[fires] = idx + preds = torch.stack([h.argmax(dim=-1) for h in cache.logits]) + pred = preds[chosen, torch.arange(n)] + acc = (pred == cache.targets).double().mean().item() + comp = cache.flops[chosen].mean().item() + counts = torch.bincount(chosen, minlength=n_exits + 1) + dist = { + exit_label(i if i < n_exits else -1): counts[i].item() / n + for i in range(n_exits + 1) + if counts[i] > 0 + } + return PolicyEvaluation(accuracy=acc, avg_flops_fraction=comp, exit_distribution=dist) - Memory: stores ``(n_exits + 1) x N x num_classes`` logits on CPU, which is - fine for calibration-sized validation sets. - ponytail: turns grid search from O(exits * grid) full validation passes at - batch size 1 into one batched pass plus cheap tensor math. - """ +class _EvalCache: + """Adapter binding a :class:`HeadLogits` cache to a model for the greedy + search loops. ``evaluate()`` returns ``(accuracy, avg flops fraction)`` + under the model's *current* config.""" def __init__(self, model: EarlyExitWrapper, loader: DataLoader[Batch], device: str) -> None: self._model = model - per_head: list[list[torch.Tensor]] = [] - targets: list[torch.Tensor] = [] - model.eval() - with torch.no_grad(): - for images, tgt in loader: - outputs = model(images.to(device), mode="training") - if not per_head: - per_head = [[] for _ in outputs] - for idx, logits in enumerate(outputs): - per_head[idx].append(logits.detach().cpu()) - targets.append(tgt.cpu()) - if targets: - self._heads = [torch.cat(chunks) for chunks in per_head] - self._targets = torch.cat(targets) - else: # empty loader: preserve the old 0.0/0.0 contract - self._heads = [] - self._targets = torch.empty(0, dtype=torch.long) - exit_flops = [model._flops_at[ep.layer_name] for ep in model.config.exit_points] - self._flops = torch.tensor(exit_flops + [1.0], dtype=torch.float64) + self.cache = collect_head_logits(model, loader, device) def evaluate(self) -> tuple[float, float]: - """(accuracy, avg computation used) under the model's current config.""" - if self._targets.numel() == 0: - return 0.0, 0.0 - cfg = self._model.config - temp = _safe_temperature(cfg.temperature) - n_exits = len(cfg.exit_points) - n = self._targets.shape[0] - chosen = torch.full((n,), n_exits, dtype=torch.long) - for idx in range(n_exits - 1, -1, -1): # earlier exits override later ones - probs = torch.softmax(self._heads[idx] / temp, dim=-1) - if cfg.routing_policy == "confidence": - confidence = probs.max(dim=-1).values.double() - fires = confidence >= cfg.confidence_thresholds[idx] - else: - entropy = -(probs * probs.clamp_min(1e-12).log()).sum(dim=-1) - fires = entropy.double() <= cfg.entropy_thresholds[idx] - chosen[fires] = idx - preds = torch.stack([h.argmax(dim=-1) for h in self._heads]) - pred = preds[chosen, torch.arange(n)] - acc = (pred == self._targets).double().mean().item() - comp = self._flops[chosen].mean().item() - return acc, comp - - -def _collect_final_logits( - model: EarlyExitWrapper, loader: DataLoader[Batch], device: str -) -> tuple[torch.Tensor, torch.Tensor]: - """Run ``loader`` through the wrapper in training mode and harvest the - final classifier's logits + targets. Training mode never fires an exit (the - hook only appends logits and never raises), so ``outputs[-1]`` is always the - final classifier and no threshold reset is needed.""" - model = model.to(device) - all_logits: list[torch.Tensor] = [] - all_targets: list[torch.Tensor] = [] - model.eval() - with torch.no_grad(): - for images, targets in loader: - images = images.to(device) - targets = targets.to(device) - outputs = model(images, mode="training") - # outputs is [exit_0_logits, ..., exit_n_logits, final_logits] - all_logits.append(outputs[-1].detach()) - all_targets.append(targets.detach()) - return torch.cat(all_logits, dim=0), torch.cat(all_targets, dim=0) + ev = simulate_policy(self.cache, self._model) + return ev.accuracy, ev.avg_flops_fraction + + def evaluate_full(self) -> PolicyEvaluation: + return simulate_policy(self.cache, self._model) + + +# ---------------- search setup ---------------- @dataclass(frozen=True) class _PolicySearch: - """Per-policy search setup. ``seed`` is a strictly non-firing value used - while measuring the baseline and untried exits — it must NEVER fire even on - a float32-saturated softmax (max prob == 1.0 / entropy == -0.0), or the - no-exit baseline would be corrupted. ``no_exit`` is the in-range "disabled" - value the seed is clamped back to in the result. ``more_aggressive`` decides - which passing threshold to keep (smaller for confidence, larger for - entropy).""" + """Per-policy search setup. ``disabled_placeholder`` is the value recorded + in the threshold list for exits that end up disabled — routing never reads + it (``enabled_exits`` is authoritative), it only keeps the list fully + populated and in-range. ``more_aggressive`` decides which passing + threshold to keep (smaller for confidence, larger for entropy).""" field: str - seed: float - no_exit: float + disabled_placeholder: float grid: tuple[float, ...] more_aggressive: Callable[[float, float], bool] @@ -190,10 +289,11 @@ def _policy_search(model: EarlyExitWrapper, grid: tuple[float, ...] | None) -> _ raise ValueError("custom grid must be non-empty (or None for the default)") policy = model.config.routing_policy if policy == "confidence": + if grid is not None and any(not math.isfinite(t) or not 0.0 <= t <= 1.0 for t in grid): + raise ValueError(f"confidence grid values must lie in [0, 1]; got {grid}") return _PolicySearch( field="confidence_thresholds", - seed=2.0, # softmax.max() <= 1.0, so confidence >= 2.0 can never fire - no_exit=1.0, # documented "no early exit at this point" value + disabled_placeholder=1.0, grid=DEFAULT_GRID if grid is None else grid, more_aggressive=lambda new, cur: new < cur, ) @@ -202,7 +302,7 @@ def _policy_search(model: EarlyExitWrapper, grid: tuple[float, ...] | None) -> _ if grid is None: search_grid = tuple(round(f * h_max, 6) for f in DEFAULT_ENTROPY_FRACTIONS) else: - if any(t < 0 or t > h_max + 1e-9 for t in grid): + if any(not math.isfinite(t) or t < 0 or t > h_max + 1e-9 for t in grid): raise ValueError( f"entropy grid values must lie in [0, ln(num_classes)] = " f"[0, {h_max:.4f}]; got {grid}" @@ -210,8 +310,7 @@ def _policy_search(model: EarlyExitWrapper, grid: tuple[float, ...] | None) -> _ search_grid = grid return _PolicySearch( field="entropy_thresholds", - seed=-1.0, # entropy >= 0, so H <= -1.0 can never fire (even at -0.0) - no_exit=0.0, + disabled_placeholder=0.0, grid=search_grid, more_aggressive=lambda new, cur: new > cur, ) @@ -220,13 +319,13 @@ def _policy_search(model: EarlyExitWrapper, grid: tuple[float, ...] | None) -> _ ) -def _maybe_fit_temperature( +def _maybe_fit_temperatures( model: EarlyExitWrapper, fit_temperature: bool, temperature_loader: DataLoader[Batch] | None, val_loader: DataLoader[Batch], device: str, -) -> float | None: +) -> dict[str, TemperatureFitResult] | None: if not fit_temperature: return None if temperature_loader is None: @@ -240,18 +339,23 @@ def _maybe_fit_temperature( ) temperature_loader = val_loader - # Training-mode collection never fires exits (the hook only appends in - # training mode), so thresholds are irrelevant here; only the - # temperature must be neutral while harvesting uncalibrated logits. - original_temp = model.config.temperature - model.config.temperature = 1.0 - try: - logits, targets = _collect_final_logits(model, temperature_loader, device) - finally: - model.config.temperature = original_temp - fitted = _fit_temperature(logits.cpu(), targets.cpu()) - model.config.temperature = fitted - return fitted + cache = collect_head_logits(model, temperature_loader, device) + fits = fit_head_temperatures(cache) + bad = [name for name, fit in fits.items() if fit.fallback] + if bad: + warnings.warn( + f"temperature fitting diverged for head(s) {bad}; those heads keep " + "the last finite iterate (1.0 if none) and are effectively " + "uncalibrated. See TemperatureFitResult.fallback in the result.", + UserWarning, + stacklevel=3, + ) + model.config.temperatures = {name: fit.temperature for name, fit in fits.items()} + model.config.validate() + return fits + + +# ---------------- public calibrators ---------------- def calibrate_thresholds( @@ -275,63 +379,99 @@ def calibrate_thresholds( Default grid is :data:`DEFAULT_ENTROPY_FRACTIONS` scaled by ``ln(num_classes)``. - The result is written to whichever threshold list the active policy reads — - calibrating an entropy-routed model under the old confidence-only code was a - silent no-op. + Exits for which no grid value stays inside the accuracy budget are left + disabled in ``model.config.enabled_exits``. Calibration decides enablement + from scratch: any pre-existing enabled/disabled state is overwritten, + because the search's job is to select the deployment policy. + + ``val_loader`` is the *calibration* split. Do not pass your test set: the + threshold search consumes its labels. Evaluate the calibrated model on a + separate test loader with :func:`earlyon.benchmarking.evaluate`. Parameters ---------- + target_accuracy_drop: + Maximum acceptable drop (on the calibration split) from the + final-classifier baseline, in [0, 1]. grid: - Optional custom search grid. If ``None`` a policy-appropriate default is - used. For entropy a custom grid must lie in ``[0, ln(num_classes)]``. + Optional custom search grid. If ``None`` a policy-appropriate default + is used. Confidence grids must lie in [0, 1]; entropy grids in + ``[0, ln(num_classes)]``. fit_temperature: - If True, fit post-hoc temperature scaling before the threshold search. - The fitted scalar is written to ``model.config.temperature``. + If True, fit post-hoc per-head temperature scaling (every exit head + and the final classifier) before the threshold search. Fitted values + land on ``model.config.temperatures``. temperature_loader: - DataLoader used to fit the temperature. If ``None`` and + DataLoader used to fit the temperatures. If ``None`` and ``fit_temperature`` is True, ``val_loader`` is reused — this leaks the temperature fit into the threshold accuracy estimate, so a warning is emitted. Prefer a separate held-out split when available. """ + if not math.isfinite(target_accuracy_drop) or not 0.0 <= target_accuracy_drop <= 1.0: + raise ValueError(f"target_accuracy_drop must be in [0, 1], got {target_accuracy_drop}") model = model.to(device) - n = len(model.config.exit_points) + cfg = model.config + n = len(cfg.exit_points) search = _policy_search(model, grid) - fitted_t = _maybe_fit_temperature( - model, fit_temperature, temperature_loader, val_loader, device - ) + fits = _maybe_fit_temperatures(model, fit_temperature, temperature_loader, val_loader, device) cache = _EvalCache(model, val_loader, device) - # start fully conservative -- no exits will fire - best = [search.seed] * n - setattr(model.config, search.field, list(best)) + # baseline: every exit disabled — the final classifier's routed accuracy + best = [search.disabled_placeholder] * n + enabled = [False] * n + cfg.enabled_exits = list(enabled) + setattr(cfg, search.field, list(best)) baseline_acc, _ = cache.evaluate() # iterate the full grid per exit. an early break would miss thresholds # that pass after a transient miss (val accuracy isn't monotone in threshold - # on small sets). keep the most aggressive passing threshold seen. + # on small sets). keep the most aggressive passing threshold seen. A + # threshold that fires no calibration sample (compute unchanged vs. the + # exit disabled) is useless — the exit stays disabled instead of shipping + # an enabled-but-idle exit that might fire on out-of-distribution inputs. for exit_idx in range(n): + setattr(cfg, search.field, list(best)) + cfg.enabled_exits = list(enabled) + _, comp_without = cache.evaluate() + chosen: float | None = None for thr in search.grid: trial = list(best) trial[exit_idx] = thr - setattr(model.config, search.field, list(trial)) - acc, _ = cache.evaluate() - if baseline_acc - acc <= target_accuracy_drop and search.more_aggressive( - thr, best[exit_idx] + trial_enabled = list(enabled) + trial_enabled[exit_idx] = True + setattr(cfg, search.field, list(trial)) + cfg.enabled_exits = trial_enabled + acc, comp = cache.evaluate() + useful = comp < comp_without + if ( + useful + and baseline_acc - acc <= target_accuracy_drop + and (chosen is None or search.more_aggressive(thr, chosen)) ): - best[exit_idx] = thr - - # clamp any exit that never found a passing threshold from the non-firing - # search seed back to the in-range disabled value. - best = [search.no_exit if t == search.seed else t for t in best] - setattr(model.config, search.field, list(best)) - final_acc, avg_comp = cache.evaluate() + chosen = thr + if chosen is not None: + best[exit_idx] = chosen + enabled[exit_idx] = True + + setattr(cfg, search.field, list(best)) + cfg.enabled_exits = list(enabled) + cfg.validate() + final = cache.evaluate_full() return CalibrationResult( thresholds=best, + enabled_exits=list(enabled), baseline_accuracy=baseline_acc, - final_accuracy=final_acc, - avg_computation_used=avg_comp, - fitted_temperature=fitted_t, - policy=model.config.routing_policy, + final_accuracy=final.accuracy, + avg_computation_used=final.avg_flops_fraction, + accuracy_delta=baseline_acc - final.accuracy, + exit_distribution=final.exit_distribution, + num_samples=cache.cache.num_samples, + fitted_temperature=fits[FINAL_HEAD].temperature if fits else None, + temperatures=dict(cfg.temperatures) if fits else None, + temperature_fits=fits, + policy=cfg.routing_policy, + objective="accuracy_budget", + target_accuracy_drop=target_accuracy_drop, ) @@ -348,38 +488,39 @@ def calibrate_thresholds_for_budget( The mirror image of :func:`calibrate_thresholds`: there you state an accuracy budget and get the biggest compute saving inside it; here you - state a compute budget — ``target_computation``, the average fraction of - the backbone's FLOPs the deployed model may run per sample, in ``(0, 1]`` - — and the search keeps validation accuracy as high as it can while - meeting it. + state a compute budget — ``target_computation``, the average *estimated* + fraction of the backbone's FLOPs the deployed model may run per sample, in + ``(0, 1]`` — and the search keeps validation accuracy as high as it can + while meeting it. Greedy per exit, earliest first (early exits save the most compute). At - each exit, among grid values whose average compute is within budget, the - one with the highest validation accuracy is kept and the search stops; - later exits stay disabled. If no value at this exit reaches the budget, - the value with the largest strict compute reduction is kept and the search - moves to the next exit; an exit that reduces nothing stays disabled. If - the budget is unattainable after all exits, a ``UserWarning`` is emitted - and the result carries ``budget_met=False`` with the least-compute - configuration found (which may be the plain backbone). + each exit, among grid values whose average estimated compute is within + budget, the one with the highest validation accuracy is kept and the + search stops; later exits stay disabled. If no value at this exit reaches + the budget, the value with the largest strict compute reduction is kept + and the search moves to the next exit; an exit that reduces nothing stays + disabled. If the budget is unattainable after all exits, a ``UserWarning`` + is emitted and the result carries ``budget_met=False`` with the + least-compute configuration found (which may be the plain backbone). Routing-policy aware exactly like :func:`calibrate_thresholds`, and the ``grid`` / ``fit_temperature`` / ``temperature_loader`` parameters behave identically. """ - if not 0.0 < target_computation <= 1.0: + if not math.isfinite(target_computation) or not 0.0 < target_computation <= 1.0: raise ValueError(f"target_computation must be in (0, 1], got {target_computation}") model = model.to(device) - n = len(model.config.exit_points) + cfg = model.config + n = len(cfg.exit_points) search = _policy_search(model, grid) - fitted_t = _maybe_fit_temperature( - model, fit_temperature, temperature_loader, val_loader, device - ) + fits = _maybe_fit_temperatures(model, fit_temperature, temperature_loader, val_loader, device) cache = _EvalCache(model, val_loader, device) # start fully conservative -- no exits fire, compute is the full backbone - best = [search.seed] * n - setattr(model.config, search.field, list(best)) + best = [search.disabled_placeholder] * n + enabled = [False] * n + cfg.enabled_exits = list(enabled) + setattr(cfg, search.field, list(best)) baseline_acc, current_comp = cache.evaluate() budget_met = current_comp <= target_computation @@ -394,7 +535,10 @@ def calibrate_thresholds_for_budget( for thr in search.grid: trial = list(best) trial[exit_idx] = thr - setattr(model.config, search.field, list(trial)) + trial_enabled = list(enabled) + trial_enabled[exit_idx] = True + setattr(cfg, search.field, list(trial)) + cfg.enabled_exits = trial_enabled acc, comp = cache.evaluate() if comp <= target_computation and (within is None or acc > within[0]): within = (acc, thr, comp) @@ -402,36 +546,44 @@ def calibrate_thresholds_for_budget( fallback = (comp, thr) if within is not None: best[exit_idx] = within[1] + enabled[exit_idx] = True current_comp = within[2] budget_met = True elif fallback is not None: best[exit_idx] = fallback[1] + enabled[exit_idx] = True current_comp = fallback[0] - # else: no grid value at this exit reduced compute; leave it at the - # seed so it clamps to the disabled value below + # else: no grid value at this exit reduced compute; leave it disabled if not budget_met: warnings.warn( f"target_computation={target_computation} is unattainable: the " f"least-compute configuration found still uses {current_comp:.4f} " - "of the backbone's FLOPs on the validation set. Returning it with " - "budget_met=False; consider earlier exit points or a larger budget.", + "of the backbone's estimated FLOPs on the validation set. Returning " + "it with budget_met=False; consider earlier exit points or a larger " + "budget.", UserWarning, stacklevel=2, ) - # clamp exits still at the non-firing search seed to the in-range - # disabled value. - best = [search.no_exit if t == search.seed else t for t in best] - setattr(model.config, search.field, list(best)) - final_acc, avg_comp = cache.evaluate() + setattr(cfg, search.field, list(best)) + cfg.enabled_exits = list(enabled) + cfg.validate() + final = cache.evaluate_full() return CalibrationResult( thresholds=best, + enabled_exits=list(enabled), baseline_accuracy=baseline_acc, - final_accuracy=final_acc, - avg_computation_used=avg_comp, - fitted_temperature=fitted_t, - policy=model.config.routing_policy, + final_accuracy=final.accuracy, + avg_computation_used=final.avg_flops_fraction, + accuracy_delta=baseline_acc - final.accuracy, + exit_distribution=final.exit_distribution, + num_samples=cache.cache.num_samples, + fitted_temperature=fits[FINAL_HEAD].temperature if fits else None, + temperatures=dict(cfg.temperatures) if fits else None, + temperature_fits=fits, + policy=cfg.routing_policy, + objective="compute_budget", target_computation=target_computation, budget_met=budget_met, ) diff --git a/earlyon/core/types.py b/earlyon/core/types.py index ad2b267..f54eb92 100644 --- a/earlyon/core/types.py +++ b/earlyon/core/types.py @@ -10,10 +10,16 @@ # A (images, targets) minibatch — the element type of every earlyon DataLoader. Batch = tuple[torch.Tensor, torch.Tensor] +# Reserved key for the final classifier head in per-head mappings +# (``EarlyExitConfig.temperatures``). Exit points may not use this name. +FINAL_HEAD = "final" + +VALID_ROUTING_POLICIES = ("confidence", "entropy") + def exit_label(idx: int) -> str: """Canonical name for an exit index: ``"final"`` for -1, else ``"exit_{idx}"``.""" - return "final" if idx == -1 else f"exit_{idx}" + return FINAL_HEAD if idx == -1 else f"exit_{idx}" @dataclass(frozen=True) @@ -41,6 +47,19 @@ class EarlyExitConfig: Uses ``confidence_thresholds``. * ``"entropy"`` — exit when ``H(softmax(logits)) <= threshold`` (low entropy = high confidence). Uses ``entropy_thresholds``. + + ``enabled_exits`` is the explicit per-exit on/off switch. A disabled exit + never fires, regardless of thresholds — including the numerical edge cases + (softmax confidence saturated at exactly 1.0, entropy at exactly 0.0) that + made the old "threshold sentinel means disabled" convention unsound. + + ``temperatures`` maps each head — every ``ExitPoint.name`` plus the + reserved key ``"final"`` — to its softmax temperature (Guo et al. 2017). + Per-head temperatures matter because each exit head is a different + classifier with its own miscalibration. The legacy scalar ``temperature`` + field is a constructor convenience only: it is broadcast into + ``temperatures`` at construction time and ignored afterwards; mutate + ``temperatures`` (not ``temperature``) to change calibration. """ backbone: str @@ -49,14 +68,12 @@ class EarlyExitConfig: loss_weights: list[float] = field(default_factory=list) confidence_thresholds: list[float] = field(default_factory=list) entropy_thresholds: list[float] = field(default_factory=list) + enabled_exits: list[bool] = field(default_factory=list) routing_policy: str = "confidence" - temperature: float = 1.0 + temperature: float = 1.0 # legacy scalar; broadcast into `temperatures` + temperatures: dict[str, float] = field(default_factory=dict) def __post_init__(self) -> None: - if self.num_classes < 2: - # with a single class softmax confidence is identically 1.0, so - # every exit fires at any threshold <= 1.0 — routing is meaningless - raise ValueError(f"num_classes must be >= 2 (got {self.num_classes})") n_exits = len(self.exit_points) if not self.loss_weights: # equal weight across exits + final @@ -68,34 +85,138 @@ def __post_init__(self) -> None: # half the max possible entropy for `num_classes`-way uniform default = 0.5 * math.log(max(self.num_classes, 2)) self.entropy_thresholds = [default] * n_exits + if not self.enabled_exits: + self.enabled_exits = [True] * n_exits + if not self.temperatures: + # migrate the legacy scalar deterministically: same T on every head + self.temperatures = {ep.name: self.temperature for ep in self.exit_points} + self.temperatures[FINAL_HEAD] = self.temperature + elif self.temperature != 1.0: + raise ValueError( + "pass either the legacy scalar `temperature` or the per-head " + "`temperatures` mapping, not both" + ) + self.validate() + + # ---------------- helpers ---------------- + + @property + def head_names(self) -> list[str]: + """Every head that produces logits: exit names in order, then ``"final"``.""" + return [ep.name for ep in self.exit_points] + [FINAL_HEAD] + + def temperature_for(self, head_name: str) -> float: + """The softmax temperature for ``head_name`` (an exit name or ``"final"``).""" + return self.temperatures[head_name] + + def validate(self) -> None: + """Check every configuration invariant; raise ``ValueError`` with an + actionable message on the first violation. + + Called automatically at construction. Because this dataclass is mutable + (calibration writes fitted values back), ``EarlyExitWrapper`` and the + checkpoint loader re-invoke it at their own trust boundaries. + """ + if self.num_classes < 2: + # with a single class softmax confidence is identically 1.0, so + # every exit fires at any threshold <= 1.0 — routing is meaningless + raise ValueError(f"num_classes must be >= 2 (got {self.num_classes})") + + n_exits = len(self.exit_points) + names = [ep.name for ep in self.exit_points] + layers = [ep.layer_name for ep in self.exit_points] + if any(not n for n in names) or any(not layer for layer in layers): + raise ValueError("exit point names and layer names must be non-empty") + if len(set(names)) != n_exits: + raise ValueError(f"exit point names must be unique (got {names})") + if len(set(layers)) != n_exits: + raise ValueError(f"exit point layer names must be unique (got {layers})") + if FINAL_HEAD in names: + raise ValueError(f"exit point name {FINAL_HEAD!r} is reserved for the final head") + + if self.routing_policy not in VALID_ROUTING_POLICIES: + raise ValueError( + f"routing_policy={self.routing_policy!r} not supported " + f"(allowed: {', '.join(repr(p) for p in VALID_ROUTING_POLICIES)})" + ) + if len(self.loss_weights) != n_exits + 1: raise ValueError( f"loss_weights must have length {n_exits + 1} (got {len(self.loss_weights)})" ) + if any(not math.isfinite(w) or w < 0 for w in self.loss_weights): + raise ValueError(f"loss_weights must be finite and >= 0 (got {self.loss_weights})") + if sum(self.loss_weights) <= 0: + raise ValueError("loss_weights must not all be zero") + if len(self.confidence_thresholds) != n_exits: raise ValueError( f"confidence_thresholds must have length {n_exits} " f"(got {len(self.confidence_thresholds)})" ) + if any(not math.isfinite(t) or not 0.0 <= t <= 1.0 for t in self.confidence_thresholds): + raise ValueError( + "confidence_thresholds must be finite and in [0, 1] " + f"(got {self.confidence_thresholds}); to disable an exit set " + "enabled_exits[i] = False instead of using a sentinel threshold" + ) if len(self.entropy_thresholds) != n_exits: raise ValueError( f"entropy_thresholds must have length {n_exits} " f"(got {len(self.entropy_thresholds)})" ) - if self.routing_policy not in {"confidence", "entropy"}: + if any(not math.isfinite(t) or t < 0.0 for t in self.entropy_thresholds): raise ValueError( - f"routing_policy={self.routing_policy!r} not supported " - "(allowed: 'confidence', 'entropy')" + f"entropy_thresholds must be finite and >= 0 (got {self.entropy_thresholds}); " + "to disable an exit set enabled_exits[i] = False instead of a sentinel" ) + if len(self.enabled_exits) != n_exits: + raise ValueError( + f"enabled_exits must have length {n_exits} (got {len(self.enabled_exits)})" + ) + if any(not isinstance(e, bool) for e in self.enabled_exits): + raise ValueError(f"enabled_exits must be booleans (got {self.enabled_exits})") + + expected_keys = set(names) | {FINAL_HEAD} + if set(self.temperatures) != expected_keys: + raise ValueError( + f"temperatures must have exactly one entry per head " + f"({sorted(expected_keys)}); got keys {sorted(self.temperatures)}" + ) + for head, t in self.temperatures.items(): + if not math.isfinite(t) or t <= 0.0: + raise ValueError( + f"temperatures[{head!r}] must be finite and > 0 (got {t}). " + "A fitted temperature this bad means calibration diverged; " + "refit or fall back to 1.0 explicitly." + ) + + +def migrate_scalar_temperature(config: EarlyExitConfig, temperature: float) -> None: + """Deterministically broadcast a legacy scalar temperature onto every head. + + Used by the v1-checkpoint migration path; emits no warning itself (the + caller decides how loudly to announce the migration). + """ + config.temperatures = {ep.name: temperature for ep in config.exit_points} + config.temperatures[FINAL_HEAD] = temperature + config.validate() + @dataclass class InferenceResult: """Result of a single-sample inference pass. ``exit_taken`` is the 0-indexed exit number; -1 means the final classifier - was used. ``computation_used`` is the FLOPs fraction (not layer count) of - the network actually executed. + was used. + + ``estimated_backbone_flops_fraction`` is an *estimate* of the fraction of + the backbone's FLOPs executed, derived from a one-time static analysis of + the backbone (see ``earlyon.core.flops``). It is not a measurement of this + inference, and it excludes the exit heads' own (small) cost and all + routing overhead. ``computation_used`` remains as a read alias for + backward compatibility. ``prediction`` is produced under ``torch.inference_mode()`` (the deployment path is grad-free by contract), so it is an *inference tensor*: ready for @@ -107,7 +228,12 @@ class InferenceResult: prediction: torch.Tensor exit_taken: int confidence: float - computation_used: float + estimated_backbone_flops_fraction: float + + @property + def computation_used(self) -> float: + """Deprecated alias for ``estimated_backbone_flops_fraction``.""" + return self.estimated_backbone_flops_fraction @dataclass @@ -116,10 +242,16 @@ class BatchedInferenceResult: All samples in the batch exit together at ``exit_taken``. The ``per_sample_confidence`` tensor records each sample's confidence at the - exit point. + exit point. ``estimated_backbone_flops_fraction`` follows the same + estimator contract as :class:`InferenceResult`. """ predictions: torch.Tensor exit_taken: int per_sample_confidence: torch.Tensor - computation_used: float + estimated_backbone_flops_fraction: float + + @property + def computation_used(self) -> float: + """Deprecated alias for ``estimated_backbone_flops_fraction``.""" + return self.estimated_backbone_flops_fraction diff --git a/earlyon/core/wrappers.py b/earlyon/core/wrappers.py index e943747..2f98761 100644 --- a/earlyon/core/wrappers.py +++ b/earlyon/core/wrappers.py @@ -16,24 +16,26 @@ import torch.nn as nn from earlyon.core.flops import per_layer_flops -from earlyon.core.types import EarlyExitConfig, InferenceResult +from earlyon.core.types import FINAL_HEAD, EarlyExitConfig, InferenceResult if TYPE_CHECKING: from earlyon.core.types import BatchedInferenceResult def _safe_temperature(temperature: float) -> float: - """Clamp the softmax temperature to a strictly positive, finite value. - - A NaN/Inf temperature (e.g. from a diverged ``fit_temperature`` on degenerate - logits) would otherwise poison every softmax: ``max(nan, 1e-6)`` returns - ``nan`` because Python ``max`` keeps its first argument on a False compare, - and ``softmax(logits / nan)`` is silently all-NaN. Falling back to 1.0 - (the no-op temperature) keeps routing well-defined. + """Defense-in-depth guard for the softmax temperature at routing time. + + ``EarlyExitConfig.validate()`` rejects non-finite or non-positive + temperatures at every trust boundary (construction, wrapping, checkpoint + load), so a bad value can only appear here through direct post-hoc + mutation of ``config.temperatures``. In that case fall back to 1.0 (the + no-op temperature): a NaN would silently poison every softmax, and the + old ``max(t, 1e-6)`` clamp turned an invalid negative temperature into an + artificially razor-sharp softmax — worse than no calibration at all. """ - if not math.isfinite(temperature): + if not math.isfinite(temperature) or temperature <= 0.0: return 1.0 - return max(temperature, 1e-6) + return temperature def _is_compiling() -> bool: @@ -97,6 +99,16 @@ def __init__( self.backbone = backbone self.exit_heads = nn.ModuleDict(exit_heads) self._final_classifier = final_classifier + # re-validate at this trust boundary: the config is mutable and may + # have been edited between construction and wrapping. + config.validate() + missing_heads = [ep.name for ep in config.exit_points if ep.name not in exit_heads] + extra_heads = [n for n in exit_heads if all(ep.name != n for ep in config.exit_points)] + if missing_heads or extra_heads: + raise ValueError( + "exit_heads must have exactly one head per configured exit point; " + f"missing: {missing_heads}, unexpected: {extra_heads}" + ) self.config = config # ordered list of (exit_idx, exit_name, layer_name) @@ -195,18 +207,18 @@ def forward_inference_batched(self, x: torch.Tensor) -> "BatchedInferenceResult" predictions=sig.prediction, exit_taken=sig.exit_idx, per_sample_confidence=sig.per_sample_confidence, - computation_used=self._flops_at[layer_name], + estimated_backbone_flops_fraction=self._flops_at[layer_name], ) # no exit fired final_logits = self._final_classifier(feats) - temp = _safe_temperature(self.config.temperature) + temp = _safe_temperature(self.config.temperatures[FINAL_HEAD]) probs = torch.softmax(final_logits / temp, dim=-1) per_sample_conf = probs.max(dim=-1).values return BatchedInferenceResult( predictions=final_logits, exit_taken=-1, per_sample_confidence=per_sample_conf, - computation_used=1.0, + estimated_backbone_flops_fraction=1.0, ) finally: self._tls.inference_mode = False @@ -243,13 +255,20 @@ def hook(module: nn.Module, inputs: Any, output: torch.Tensor) -> torch.Tensor: "without exit heads for compiled inference." ) + # a disabled exit never routes — not even at softmax confidence + # exactly 1.0 or entropy exactly 0.0. In training mode the head + # still produces logits (enablement is a routing concept; disabled + # heads keep training so they can be re-enabled later). + if not in_training and not self.config.enabled_exits[exit_idx]: + return output + head = self.exit_heads[exit_name] logits = head(output) if in_training: getattr(self._tls, "training_outputs", []).append(logits) return output - temp = _safe_temperature(self.config.temperature) + temp = _safe_temperature(self.config.temperatures[exit_name]) probs = torch.softmax(logits / temp, dim=-1) policy = self.config.routing_policy @@ -323,19 +342,19 @@ def _forward_inference(self, x: torch.Tensor) -> InferenceResult: prediction=sig.prediction, exit_taken=sig.exit_idx, confidence=sig.confidence, - computation_used=self._flops_at[layer_name], + estimated_backbone_flops_fraction=self._flops_at[layer_name], ) # no exit triggered — use final classifier (inside outer try so # any exception still resets inference_mode) final_logits = self._final_classifier(feats) - temp = _safe_temperature(self.config.temperature) + temp = _safe_temperature(self.config.temperatures[FINAL_HEAD]) probs = torch.softmax(final_logits / temp, dim=-1) confidence = probs.max().item() return InferenceResult( prediction=final_logits, exit_taken=-1, confidence=confidence, - computation_used=1.0, + estimated_backbone_flops_fraction=1.0, ) finally: self._tls.inference_mode = False diff --git a/earlyon/utils.py b/earlyon/utils.py index fc9bf1d..52b1443 100644 --- a/earlyon/utils.py +++ b/earlyon/utils.py @@ -1,15 +1,40 @@ -"""Small shared helpers: dataset loaders, checkpoint save/load.""" +"""Small shared helpers: dataset loaders, checkpoint save/load. + +Checkpoint contract (format_version 2) +-------------------------------------- +``save_wrapper`` writes a dict with: + +* ``format_version`` — integer schema version (currently 2). +* ``earlyon_version`` — the library version that wrote the file. +* ``config`` — everything needed to reconstruct routing behavior when the + factory is known: backbone id, num_classes, routing policy, both threshold + lists, ``enabled_exits``, per-head ``temperatures``, loss weights, and the + exit points (name / layer_name / in_channels). +* ``state_dict`` — the wrapper's weights. + +``load_wrapper`` reads v2 files directly and migrates unversioned (v1) files: +the legacy scalar ``temperature`` is broadcast to every head, and the legacy +"disabled" threshold sentinels (confidence ``1.0`` / entropy ``0.0``, for the +active policy only) become explicit ``enabled_exits=False`` entries, with a +``UserWarning`` describing the migration. + +Arbitrary ``custom_ee`` backbones cannot be reconstructed from a string; pass +``factory=`` (a zero-argument callable returning a structurally identical +wrapper) to load them. +""" from __future__ import annotations +import math import warnings from pathlib import Path -from typing import Tuple +from typing import Any, Callable, Tuple import torch from torch.utils.data import DataLoader, Subset -from earlyon.core.types import Batch +from earlyon import __version__ +from earlyon.core.types import FINAL_HEAD, Batch from earlyon.core.wrappers import EarlyExitWrapper from earlyon.models import ( cifar_resnet_ee, @@ -22,6 +47,8 @@ _CIFAR_PREFIX = "cifar_resnet" +CHECKPOINT_FORMAT_VERSION = 2 + FACTORIES = { "resnet18": resnet18_ee, "resnet50": resnet50_ee, @@ -58,21 +85,22 @@ def build_model(backbone: str, num_classes: int, pretrained: bool = True) -> Ear def save_wrapper(model: EarlyExitWrapper, path: str | Path) -> None: - """Save state_dict + config. Config is needed to rebuild the wrapper. + """Save state_dict + a versioned config (format_version 2). - ``routing_policy`` and ``entropy_thresholds`` are persisted too: without - them an entropy-routed model would silently reload as confidence-routed - (the wrapper default), discarding the calibrated entropy thresholds. + The config records everything needed to reconstruct routing behavior when + the model factory is known — see the module docstring for the contract. """ if model.config.backbone == "custom": warnings.warn( "saving a custom_ee model: load_wrapper cannot rebuild an arbitrary " - "backbone from this artifact. To restore it, reconstruct the backbone, " - "re-wrap with custom_ee(...), and load the saved state_dict manually.", + "backbone from a string. To restore it, rebuild the backbone and pass " + "factory=lambda: custom_ee(...) to load_wrapper.", UserWarning, stacklevel=2, ) payload = { + "format_version": CHECKPOINT_FORMAT_VERSION, + "earlyon_version": __version__, "state_dict": model.state_dict(), "config": { "backbone": model.config.backbone, @@ -80,18 +108,109 @@ def save_wrapper(model: EarlyExitWrapper, path: str | Path) -> None: "routing_policy": model.config.routing_policy, "confidence_thresholds": list(model.config.confidence_thresholds), "entropy_thresholds": list(model.config.entropy_thresholds), + "enabled_exits": list(model.config.enabled_exits), + "temperatures": dict(model.config.temperatures), "loss_weights": list(model.config.loss_weights), - "temperature": model.config.temperature, + "exit_points": [ + {"name": ep.name, "layer_name": ep.layer_name, "in_channels": ep.in_channels} + for ep in model.config.exit_points + ], }, } torch.save(payload, Path(path)) -def load_wrapper(path: str | Path, pretrained_backbone: bool = False) -> EarlyExitWrapper: +def _migrate_v1_config(cfg: dict[str, Any], model: EarlyExitWrapper, name: str) -> dict[str, Any]: + """Translate an unversioned (v1) checkpoint config into v2 shape. + + Deterministic rules: + + * the legacy scalar ``temperature`` is broadcast to every head (that is + exactly what v1 routing did); a non-finite/non-positive scalar falls + back to 1.0 with a warning instead of failing the load, matching the + v1 runtime guard. + * the legacy "disabled" sentinels — confidence threshold ``1.0`` / + entropy threshold ``0.0`` on the *active* policy — become explicit + ``enabled_exits=False``. Under v1 semantics such an exit could still + fire on a numerically saturated softmax; the documented intent was + "disabled", which the explicit flag now honors exactly. + """ + migrated = dict(cfg) + n_exits = len(model.config.exit_points) + + temperature = float(cfg.get("temperature", 1.0)) + if not math.isfinite(temperature) or temperature <= 0.0: + warnings.warn( + f"checkpoint {name}: legacy temperature {temperature} is invalid; " + "falling back to 1.0 (uncalibrated)", + UserWarning, + stacklevel=3, + ) + temperature = 1.0 + head_names = [ep.name for ep in model.config.exit_points] + [FINAL_HEAD] + migrated["temperatures"] = {h: temperature for h in head_names} + + policy = cfg.get("routing_policy", "confidence") + if policy == "confidence": + active = [float(t) for t in cfg.get("confidence_thresholds", [])] + sentinel = 1.0 + else: + active = [float(t) for t in cfg.get("entropy_thresholds", [0.0] * n_exits)] + sentinel = 0.0 + enabled = [t != sentinel for t in active] + migrated["enabled_exits"] = enabled + if not all(enabled): + disabled_idx = [i for i, e in enumerate(enabled) if not e] + warnings.warn( + f"checkpoint {name}: migrated v1 sentinel threshold(s) at exit(s) " + f"{disabled_idx} to explicit enabled_exits=False. Under v1 these " + "exits could still fire on a saturated softmax; they are now " + "strictly disabled.", + UserWarning, + stacklevel=3, + ) + return migrated + + +def load_wrapper( + path: str | Path, + pretrained_backbone: bool = False, + factory: Callable[[], EarlyExitWrapper] | None = None, +) -> EarlyExitWrapper: + """Load a checkpoint written by :func:`save_wrapper`. + + ``factory`` — required for ``custom_ee`` models — must return a wrapper + structurally identical to the saved one; the checkpoint's routing config + and weights are then applied to it. Built-in backbones are reconstructed + automatically via :func:`build_model`. + """ # weights_only=True prevents pickle code-exec from malicious .pth files payload = torch.load(Path(path), map_location="cpu", weights_only=True) + name = Path(path).name + if "config" not in payload or "state_dict" not in payload: + raise ValueError(f"checkpoint {name}: missing 'config'/'state_dict'; not an earlyon file") + version = int(payload.get("format_version", 1)) + if version > CHECKPOINT_FORMAT_VERSION: + raise ValueError( + f"checkpoint {name}: format_version {version} is newer than this " + f"earlyon supports ({CHECKPOINT_FORMAT_VERSION}); upgrade earlyon" + ) cfg = payload["config"] - model = build_model(cfg["backbone"], cfg["num_classes"], pretrained=pretrained_backbone) + + if factory is not None: + model = factory() + elif cfg["backbone"] == "custom": + raise ValueError( + f"checkpoint {name}: backbone is 'custom', which cannot be rebuilt " + "from a string. Reconstruct the backbone and pass " + "factory=lambda: custom_ee(backbone, exit_layers=[...], ...) with the " + "same structure it was saved with." + ) + else: + model = build_model(cfg["backbone"], cfg["num_classes"], pretrained=pretrained_backbone) + + if version < 2: + cfg = _migrate_v1_config(cfg, model, name) # Validate config shape BEFORE mutating model.config. A checkpoint saved # against a different exit count would otherwise leave model.config in a @@ -101,46 +220,54 @@ def load_wrapper(path: str | Path, pretrained_backbone: bool = False) -> EarlyEx weight_len = len(cfg["loss_weights"]) if thr_len != n_exits: raise ValueError( - f"checkpoint {Path(path).name}: confidence_thresholds has " + f"checkpoint {name}: confidence_thresholds has " f"length {thr_len}, but backbone {cfg['backbone']!r} has " f"{n_exits} exit points" ) if weight_len != n_exits + 1: raise ValueError( - f"checkpoint {Path(path).name}: loss_weights has length " + f"checkpoint {name}: loss_weights has length " f"{weight_len}, expected {n_exits + 1} (one per exit plus final)" ) - # entropy_thresholds + routing_policy are optional for back-compat with - # pre-0.2 checkpoints; validate them only when present. load_wrapper - # bypasses EarlyExitConfig.__post_init__, so re-validate the persisted policy - # here — otherwise a corrupted checkpoint would silently mis-route. + # entropy_thresholds is optional in v1 files; validate when present. if "entropy_thresholds" in cfg and len(cfg["entropy_thresholds"]) != n_exits: raise ValueError( - f"checkpoint {Path(path).name}: entropy_thresholds has length " + f"checkpoint {name}: entropy_thresholds has length " f"{len(cfg['entropy_thresholds'])}, but backbone {cfg['backbone']!r} " f"has {n_exits} exit points" ) policy = cfg.get("routing_policy", model.config.routing_policy) if policy not in {"confidence", "entropy"}: raise ValueError( - f"checkpoint {Path(path).name}: unsupported routing_policy {policy!r} " + f"checkpoint {name}: unsupported routing_policy {policy!r} " "(allowed: 'confidence', 'entropy')" ) if policy == "entropy" and "entropy_thresholds" not in cfg: raise ValueError( - f"checkpoint {Path(path).name}: routing_policy='entropy' but no " + f"checkpoint {name}: routing_policy='entropy' but no " "entropy_thresholds were persisted — the model would silently route " "on uncalibrated defaults" ) + # v2 files carry the exit points; cross-check them against the rebuilt + # model so a checkpoint from a different factory revision fails loudly. + if "exit_points" in cfg: + saved = [(p["name"], p["layer_name"], int(p["in_channels"])) for p in cfg["exit_points"]] + built = [(ep.name, ep.layer_name, ep.in_channels) for ep in model.config.exit_points] + if saved != built: + raise ValueError( + f"checkpoint {name}: saved exit points {saved} do not match the " + f"reconstructed model's exit points {built}; the factory or " + "earlyon version that wrote this file placed exits differently" + ) - model.config.confidence_thresholds = list(cfg["confidence_thresholds"]) - model.config.loss_weights = list(cfg["loss_weights"]) - model.config.temperature = float(cfg["temperature"]) - # back-compat: older checkpoints predate these fields; keep the fresh - # model's defaults when the key is absent. + model.config.confidence_thresholds = [float(t) for t in cfg["confidence_thresholds"]] + model.config.loss_weights = [float(w) for w in cfg["loss_weights"]] model.config.routing_policy = policy if "entropy_thresholds" in cfg: - model.config.entropy_thresholds = list(cfg["entropy_thresholds"]) + model.config.entropy_thresholds = [float(t) for t in cfg["entropy_thresholds"]] + model.config.enabled_exits = [bool(e) for e in cfg["enabled_exits"]] + model.config.temperatures = {k: float(v) for k, v in cfg["temperatures"].items()} + model.config.validate() model.load_state_dict(payload["state_dict"]) return model diff --git a/tests/test_cli.py b/tests/test_cli.py index 87a82b2..ea86b9c 100644 --- a/tests/test_cli.py +++ b/tests/test_cli.py @@ -122,7 +122,8 @@ def test_wrap_creates_checkpoint(tmp_path): def test_save_load_round_trip(tmp_path): - """save_wrapper + load_wrapper must preserve thresholds, weights, temperature.""" + """save_wrapper + load_wrapper must preserve thresholds, weights, + per-head temperatures, and enabled_exits.""" import torch from earlyon.utils import build_model, load_wrapper, save_wrapper @@ -130,7 +131,8 @@ def test_save_load_round_trip(tmp_path): model = build_model("resnet18", num_classes=10, pretrained=False) model.config.confidence_thresholds = [0.42, 0.73] model.config.loss_weights = [0.1, 0.2, 0.7] - model.config.temperature = 1.5 + model.config.temperatures = {"e0": 1.5, "e1": 0.9, "final": 1.2} + model.config.enabled_exits = [True, False] # mutate an exit head weight so we can verify state_dict round-trip with torch.no_grad(): first_param = next(iter(model.exit_heads["e0"].parameters())) @@ -142,7 +144,8 @@ def test_save_load_round_trip(tmp_path): assert loaded.config.confidence_thresholds == [0.42, 0.73] assert loaded.config.loss_weights == [0.1, 0.2, 0.7] - assert loaded.config.temperature == 1.5 + assert loaded.config.temperatures == {"e0": 1.5, "e1": 0.9, "final": 1.2} + assert loaded.config.enabled_exits == [True, False] loaded_first = next(iter(loaded.exit_heads["e0"].parameters())) assert torch.allclose(loaded_first, torch.full_like(loaded_first, 0.123)) diff --git a/tests/test_integration.py b/tests/test_integration.py index 51d4790..8798a9f 100644 --- a/tests/test_integration.py +++ b/tests/test_integration.py @@ -98,9 +98,9 @@ def test_pipeline_custom_token_entropy_joint_calibrate_onnx(tmp_path): report = evaluate(model, _loader1(), device="cpu") assert set(report.exit_distribution).issubset({"exit_0", "exit_1", "final"}) - # custom models save the state_dict but can't be rebuilt via load_wrapper + # custom models save the state_dict but can't be rebuilt without a factory save_wrapper(model, tmp_path / "c.pth") - with pytest.raises(NotImplementedError, match="custom_ee"): + with pytest.raises(ValueError, match="factory"): load_wrapper(tmp_path / "c.pth") # ONNX export still works (the token/3D head path) diff --git a/tests/test_temperature.py b/tests/test_temperature.py index f833992..3c7ee88 100644 --- a/tests/test_temperature.py +++ b/tests/test_temperature.py @@ -69,3 +69,42 @@ def test_nonfinite_logits_raise_instead_of_poisoning_temperature(): inf_logits[0, 0] = float("inf") with pytest.raises(ValueError, match="NaN or Inf"): fit_temperature(inf_logits, targets) + + +def test_fit_temperature_full_reports_status(): + """The status-carrying fit must return a finite positive temperature and a + coherent (converged, fallback) pair on well-behaved logits.""" + import torch + + from earlyon.core.temperature import fit_temperature_full + + torch.manual_seed(0) + logits = torch.randn(200, 10) * 3.0 + targets = torch.randint(0, 10, (200,)) + result = fit_temperature_full(logits, targets) + assert result.temperature > 0.0 + import math + + assert math.isfinite(result.temperature) + assert isinstance(result.converged, bool) + assert isinstance(result.fallback, bool) + assert not result.fallback # nothing degenerate here + + +def test_fit_temperature_full_never_returns_invalid_temperature(): + """Even on tiny/degenerate batches the fit must return a value that + EarlyExitConfig.validate() accepts (finite, > 0) — falling back to 1.0 + with fallback=True rather than emitting a poison value.""" + import math + + import torch + + from earlyon.core.temperature import fit_temperature_full + + torch.manual_seed(1) + # single-sample, extreme logits: classic LBFGS divergence bait + logits = torch.tensor([[1e4, -1e4, 0.0]]) + targets = torch.tensor([1]) + result = fit_temperature_full(logits, targets, max_outer_steps=3) + assert math.isfinite(result.temperature) + assert result.temperature > 0.0 diff --git a/tests/test_thresholds.py b/tests/test_thresholds.py index 090325c..df3a3dc 100644 --- a/tests/test_thresholds.py +++ b/tests/test_thresholds.py @@ -63,10 +63,10 @@ def test_calibration_thresholds_are_in_grid(): def test_calibration_with_fit_temperature_writes_to_config(): - """When fit_temperature=True, the fitted scalar must land on config.temperature - BEFORE the threshold grid search runs.""" + """When fit_temperature=True, per-head fitted temperatures must land on + config.temperatures BEFORE the threshold grid search runs.""" model = _build() - assert model.config.temperature == 1.0 + assert model.config.temperatures == {"e0": 1.0, "e1": 1.0, "final": 1.0} x = torch.randn(32, 3, 32, 32) y = torch.randint(0, 10, (32,)) val_loader = DataLoader(TensorDataset(x, y), batch_size=8) @@ -86,10 +86,16 @@ def test_calibration_with_fit_temperature_writes_to_config(): # no calibration signal, so we assert the contract, not a specific value). import math - assert result.fitted_temperature is not None - assert math.isfinite(result.fitted_temperature) - assert result.fitted_temperature > 0.0 - assert model.config.temperature == result.fitted_temperature + assert result.temperatures is not None + assert set(result.temperatures) == {"e0", "e1", "final"} + for temp in result.temperatures.values(): + assert math.isfinite(temp) and temp > 0.0 + assert model.config.temperatures == result.temperatures + # deprecated scalar alias still reports the final head's fit + assert result.fitted_temperature == result.temperatures["final"] + # per-head fit status is reported + assert result.temperature_fits is not None + assert set(result.temperature_fits) == {"e0", "e1", "final"} # thresholds still calibrated normally assert len(result.thresholds) == 2 @@ -119,21 +125,21 @@ def test_calibration_fit_temperature_warns_without_separate_loader(): def test_calibration_fit_temperature_runs_before_threshold_search(): - """The order matters: fit T, then sweep grids using logits/T. We verify by - asserting model.config.temperature is already non-1.0 by the time the search - begins — done indirectly by patching the grid evaluator.""" + """The order matters: fit per-head temperatures, then sweep grids using + logits/T. We verify by spying on the grid evaluator and asserting every + evaluate call already saw the fitted temperatures.""" model = _build() x = torch.randn(24, 3, 32, 32) y = torch.randint(0, 10, (24,)) val_loader = DataLoader(TensorDataset(x, y), batch_size=8) - observed_temps: list[float] = [] + observed_temps: list[dict[str, float]] = [] from earlyon.core import thresholds as thresholds_mod original_eval = thresholds_mod._EvalCache.evaluate def spy_eval(self): - observed_temps.append(self._model.config.temperature) + observed_temps.append(dict(self._model.config.temperatures)) return original_eval(self) thresholds_mod._EvalCache.evaluate = spy_eval @@ -150,11 +156,12 @@ def spy_eval(self): thresholds_mod._EvalCache.evaluate = original_eval # every evaluate call (baseline + grid sweep + final) must have seen the - # already-fitted temperature, proving the fit ran before the search. + # already-fitted per-head temperatures, proving the fit ran before the search. assert observed_temps, "expected at least one evaluate call" + assert result.temperatures is not None assert all( - t == result.fitted_temperature for t in observed_temps - ), f"expected all temps == fitted {result.fitted_temperature}; got {observed_temps}" + t == result.temperatures for t in observed_temps + ), f"expected all temps == fitted {result.temperatures}; got {observed_temps}" def _build_entropy(): @@ -183,6 +190,11 @@ def test_entropy_calibration_updates_entropy_thresholds_not_confidence(): import math model = _build_entropy() + # sharpen e0 so its entropy actually drops below the grid and it can fire; + # an untrained (near-uniform) head never fires and correctly stays disabled + with torch.no_grad(): + model.exit_heads["e0"].classifier[-1].weight.mul_(30.0) + model.exit_heads["e0"].classifier[-1].bias.mul_(30.0) x = torch.randn(24, 3, 32, 32) y = torch.randint(0, 10, (24,)) loader = DataLoader(TensorDataset(x, y), batch_size=4) @@ -195,8 +207,9 @@ def test_entropy_calibration_updates_entropy_thresholds_not_confidence(): assert model.config.entropy_thresholds == result.thresholds # confidence_thresholds must be untouched by an entropy calibration assert model.config.confidence_thresholds == [0.8, 0.8] - # they must have actually moved off the conservative 0.0 seed - assert any(t > 0.0 for t in result.thresholds) + # the sharpened exit must be enabled with a real grid threshold + assert result.enabled_exits[0] is True + assert result.thresholds[0] > 0.0 h_max = math.log(10) assert all(0.0 <= t <= h_max + 1e-9 for t in result.thresholds) @@ -357,12 +370,11 @@ def test_budget_calibration_trivial_budget_keeps_exits_disabled(): assert result.budget_met is True assert result.thresholds == [1.0, 1.0] - # NOT asserting avg_computation_used == 1.0: the routing hook fires on - # `confidence >= threshold`, so a float32-saturated head (confidence 1.0) - # still fires at the clamped disabled value 1.0 — the library's documented - # convention, shared with calibrate_thresholds. The budget contract is - # only comp <= target. - assert result.avg_computation_used <= 1.0 + assert result.enabled_exits == [False, False] + # explicit enablement: a disabled exit can no longer fire even with a + # float32-saturated softmax (confidence exactly 1.0), so the average + # compute is exactly the full backbone. + assert result.avg_computation_used == 1.0 def test_budget_calibration_validates_target(): @@ -405,9 +417,9 @@ def test_budget_calibration_entropy_policy_writes_entropy_field(): def test_calibration_without_fit_temperature_leaves_config_unchanged(): - """The default path (fit_temperature=False) must not touch config.temperature.""" + """The default path (fit_temperature=False) must not touch config.temperatures.""" model = _build() - model.config.temperature = 1.5 # user-provided + model.config.temperatures = {"e0": 1.5, "e1": 1.5, "final": 1.5} # user-provided x = torch.randn(16, 3, 32, 32) y = torch.randint(0, 10, (16,)) val_loader = DataLoader(TensorDataset(x, y), batch_size=4) @@ -419,7 +431,7 @@ def test_calibration_without_fit_temperature_leaves_config_unchanged(): device="cpu", ) - assert model.config.temperature == 1.5 + assert model.config.temperatures == {"e0": 1.5, "e1": 1.5, "final": 1.5} def test_calibration_rejects_empty_grid(): @@ -462,19 +474,126 @@ def test_eval_cache_matches_real_router_exactly(): cache = _EvalCache(model, loader, "cpu") settings = [ - ([2.0, 2.0], [-1.0, -1.0], 1.0), # non-firing search seeds - ([1.0, 1.0], [0.0, 0.0], 1.0), # disabled values (saturated head fires) - ([0.8, 0.5], [0.5, 1.2], 1.0), # mid-grid - ([0.5, 0.5], [2.0, 2.0], 2.5), # aggressive + temperature + # (conf_thr, ent_thr, temps, enabled) + ([1.0, 1.0], [0.0, 0.0], (1.0, 1.0, 1.0), [False, False]), # all disabled + ([1.0, 1.0], [0.0, 0.0], (1.0, 1.0, 1.0), [True, True]), # knife-edge thresholds + ([0.8, 0.5], [0.5, 1.2], (1.0, 1.0, 1.0), [True, True]), # mid-grid + ([0.5, 0.5], [2.0, 2.0], (2.5, 0.7, 1.3), [True, True]), # per-head temps + ([0.5, 0.5], [2.0, 2.0], (2.5, 0.7, 1.3), [False, True]), # first exit off ] - for conf_thr, ent_thr, temp in settings: + for conf_thr, ent_thr, temps, enabled in settings: model.config.confidence_thresholds = list(conf_thr) model.config.entropy_thresholds = list(ent_thr) - model.config.temperature = temp + model.config.temperatures = {"e0": temps[0], "e1": temps[1], "final": temps[2]} + model.config.enabled_exits = list(enabled) real = _evaluate_with_router(model, loader, "cpu") sim = cache.evaluate() # accuracy must match exactly (integer counts); avg compute may # differ by float summation order, so allow one ulp of slack assert sim[0] == real[0] and abs(sim[1] - real[1]) < 1e-12, ( - f"policy={policy} conf={conf_thr} ent={ent_thr} T={temp}: " f"sim={sim} real={real}" + f"policy={policy} conf={conf_thr} ent={ent_thr} T={temps} " + f"enabled={enabled}: sim={sim} real={real}" ) + + +# ---------------- staged pipeline (v0.3) ---------------- + + +def test_calibration_rejects_empty_loader(): + """An empty calibration loader must fail fast, not silently produce a + policy chosen from zero samples (or hang).""" + import pytest + + model = _build() + empty = DataLoader(TensorDataset(torch.empty(0, 3, 32, 32), torch.empty(0, dtype=torch.long))) + with pytest.raises(ValueError, match="no batches"): + calibrate_thresholds(model, empty, device="cpu") + + +def test_calibration_result_carries_rich_metadata(): + model = _build() + x = torch.randn(16, 3, 32, 32) + y = torch.randint(0, 10, (16,)) + loader = DataLoader(TensorDataset(x, y), batch_size=4) + result = calibrate_thresholds(model, loader, target_accuracy_drop=0.05, device="cpu") + assert result.num_samples == 16 + assert result.objective == "accuracy_budget" + assert result.method == "greedy-coordinate-grid" + assert result.schema_version == 2 + assert len(result.enabled_exits) == 2 + assert abs(sum(result.exit_distribution.values()) - 1.0) < 1e-9 + assert abs(result.accuracy_delta - (result.baseline_accuracy - result.final_accuracy)) < 1e-12 + assert result.target_accuracy_drop == 0.05 + # enablement written back to the model config + assert model.config.enabled_exits == result.enabled_exits + + +def test_calibration_disables_exit_with_no_passing_threshold(): + """A head that is pure noise (uniform logits never reach the grid) must end + up explicitly disabled, not parked on a sentinel threshold.""" + model = _build() + _flatten_head(model, "e0") + _flatten_head(model, "e1") + x = torch.randn(16, 3, 32, 32) + model.eval() + with torch.no_grad(): + y = model.backbone(x).argmax(dim=-1) # full-network labels: baseline acc 1.0 + loader = DataLoader(TensorDataset(x, y), batch_size=4) + result = calibrate_thresholds(model, loader, target_accuracy_drop=0.0, device="cpu") + assert result.enabled_exits == [False, False] + assert model.config.enabled_exits == [False, False] + assert result.exit_distribution == {"final": 1.0} + + +def test_fit_head_temperatures_can_differ_per_head(): + """Heads with different miscalibration must receive different fitted + temperatures — the P0 defect was one temperature fit from the final + classifier reused everywhere.""" + from earlyon.core.thresholds import collect_head_logits, fit_head_temperatures + + torch.manual_seed(3) + model = _build() + # make e0 wildly overconfident (large weight scale); leave e1/final alone + with torch.no_grad(): + model.exit_heads["e0"].classifier[-1].weight.mul_(30.0) + model.exit_heads["e0"].classifier[-1].bias.mul_(30.0) + x = torch.randn(64, 3, 32, 32) + y = torch.randint(0, 10, (64,)) + loader = DataLoader(TensorDataset(x, y), batch_size=16) + + cache = collect_head_logits(model, loader, "cpu") + fits = fit_head_temperatures(cache) + assert set(fits) == {"e0", "e1", "final"} + t_e0 = fits["e0"].temperature + t_final = fits["final"].temperature + # the overconfident head needs a much larger temperature than the final head + assert t_e0 > t_final * 2, (t_e0, t_final) + + +def test_collect_head_logits_shapes_and_order(): + from earlyon.core.thresholds import collect_head_logits + + model = _build() + x = torch.randn(12, 3, 32, 32) + y = torch.randint(0, 10, (12,)) + loader = DataLoader(TensorDataset(x, y), batch_size=4) + cache = collect_head_logits(model, loader, "cpu") + assert cache.head_names == ["e0", "e1", "final"] + assert [t.shape for t in cache.logits] == [torch.Size([12, 10])] * 3 + assert cache.num_samples == 12 + assert cache.flops[-1].item() == 1.0 + # cumulative fractions are monotone non-decreasing + flops = cache.flops.tolist() + assert all(a <= b for a, b in zip(flops, flops[1:])) + + +def test_collect_head_logits_restores_training_mode(): + from earlyon.core.thresholds import collect_head_logits + + model = _build() + model.train() + x = torch.randn(4, 3, 32, 32) + y = torch.randint(0, 10, (4,)) + loader = DataLoader(TensorDataset(x, y), batch_size=4) + collect_head_logits(model, loader, "cpu") + assert model.training is True diff --git a/tests/test_types.py b/tests/test_types.py index 3324156..a83a81d 100644 --- a/tests/test_types.py +++ b/tests/test_types.py @@ -82,3 +82,152 @@ def test_config_rejects_num_classes_below_two(): for bad in (1, 0, -3): with pytest.raises(ValueError, match="num_classes"): EarlyExitConfig(backbone="tiny", num_classes=bad, exit_points=exits) + + +# ---------------- centralized validation (v0.3) ---------------- + + +def test_config_migrates_legacy_scalar_temperature(): + """The legacy scalar `temperature` is broadcast deterministically onto + every head (exits + final) at construction.""" + cfg = EarlyExitConfig( + backbone="tiny", num_classes=10, exit_points=_two_exits(), temperature=2.0 + ) + assert cfg.temperatures == {"e0": 2.0, "e1": 2.0, "final": 2.0} + + +def test_config_rejects_scalar_and_per_head_temperatures_together(): + with pytest.raises(ValueError, match="temperature"): + EarlyExitConfig( + backbone="tiny", + num_classes=10, + exit_points=_two_exits(), + temperature=2.0, + temperatures={"e0": 1.0, "e1": 1.0, "final": 1.0}, + ) + + +def test_config_accepts_per_head_temperatures(): + cfg = EarlyExitConfig( + backbone="tiny", + num_classes=10, + exit_points=_two_exits(), + temperatures={"e0": 1.5, "e1": 0.8, "final": 1.1}, + ) + assert cfg.temperature_for("e1") == 0.8 + assert cfg.temperature_for("final") == 1.1 + assert cfg.head_names == ["e0", "e1", "final"] + + +@pytest.mark.parametrize("bad", [0.0, -1.0, float("nan"), float("inf")]) +def test_config_rejects_invalid_temperatures(bad): + with pytest.raises(ValueError, match="temperatures"): + EarlyExitConfig( + backbone="tiny", + num_classes=10, + exit_points=_two_exits(), + temperatures={"e0": bad, "e1": 1.0, "final": 1.0}, + ) + + +def test_config_rejects_wrong_temperature_keys(): + with pytest.raises(ValueError, match="temperatures"): + EarlyExitConfig( + backbone="tiny", + num_classes=10, + exit_points=_two_exits(), + temperatures={"e0": 1.0, "final": 1.0}, # e1 missing + ) + + +def test_config_rejects_duplicate_exit_names(): + exits = [ExitPoint("e0", "stage1", 16), ExitPoint("e0", "stage2", 32)] + with pytest.raises(ValueError, match="unique"): + EarlyExitConfig(backbone="tiny", num_classes=10, exit_points=exits) + + +def test_config_rejects_duplicate_layer_names(): + exits = [ExitPoint("e0", "stage1", 16), ExitPoint("e1", "stage1", 32)] + with pytest.raises(ValueError, match="unique"): + EarlyExitConfig(backbone="tiny", num_classes=10, exit_points=exits) + + +def test_config_rejects_empty_exit_or_layer_name(): + with pytest.raises(ValueError, match="non-empty"): + EarlyExitConfig( + backbone="tiny", + num_classes=10, + exit_points=[ExitPoint("", "stage1", 16)], + ) + with pytest.raises(ValueError, match="non-empty"): + EarlyExitConfig( + backbone="tiny", + num_classes=10, + exit_points=[ExitPoint("e0", "", 16)], + ) + + +def test_config_rejects_reserved_final_exit_name(): + with pytest.raises(ValueError, match="reserved"): + EarlyExitConfig( + backbone="tiny", + num_classes=10, + exit_points=[ExitPoint("final", "stage1", 16)], + ) + + +@pytest.mark.parametrize("bad", [-0.1, 1.5, float("nan"), float("inf")]) +def test_config_rejects_out_of_range_confidence_thresholds(bad): + with pytest.raises(ValueError, match="confidence_thresholds"): + EarlyExitConfig( + backbone="tiny", + num_classes=10, + exit_points=_two_exits(), + confidence_thresholds=[bad, 0.8], + ) + + +@pytest.mark.parametrize("bad", [-0.1, float("nan"), float("inf")]) +def test_config_rejects_invalid_entropy_thresholds(bad): + with pytest.raises(ValueError, match="entropy_thresholds"): + EarlyExitConfig( + backbone="tiny", + num_classes=10, + exit_points=_two_exits(), + entropy_thresholds=[bad, 0.5], + ) + + +def test_config_rejects_negative_or_nonfinite_loss_weights(): + for bad_weights in ([-0.1, 0.6, 0.5], [float("nan"), 0.5, 0.5], [0.0, 0.0, 0.0]): + with pytest.raises(ValueError, match="loss_weights"): + EarlyExitConfig( + backbone="tiny", + num_classes=10, + exit_points=_two_exits(), + loss_weights=bad_weights, + ) + + +def test_config_rejects_wrong_enabled_exits_length(): + with pytest.raises(ValueError, match="enabled_exits"): + EarlyExitConfig( + backbone="tiny", + num_classes=10, + exit_points=_two_exits(), + enabled_exits=[True], + ) + + +def test_config_defaults_enable_every_exit(): + cfg = EarlyExitConfig(backbone="tiny", num_classes=10, exit_points=_two_exits()) + assert cfg.enabled_exits == [True, True] + + +def test_validate_catches_post_hoc_mutation(): + """validate() is re-callable after mutation — the wrapper and checkpoint + loader use it as their trust boundary.""" + cfg = EarlyExitConfig(backbone="tiny", num_classes=10, exit_points=_two_exits()) + cfg.temperatures["e0"] = -3.0 + with pytest.raises(ValueError, match="temperatures"): + cfg.validate() diff --git a/tests/test_utils.py b/tests/test_utils.py index 4f6382b..55bd453 100644 --- a/tests/test_utils.py +++ b/tests/test_utils.py @@ -120,3 +120,200 @@ def forward(self, x: torch.Tensor) -> torch.Tensor: save_wrapper(model, tmp_path / "m.pth") messages = [str(w.message) for w in captured if issubclass(w.category, UserWarning)] assert any("load_wrapper" in m for m in messages), messages + + +# ---------------- checkpoint format v2 ---------------- + + +def test_checkpoint_v2_payload_shape(tmp_path): + """v2 files carry format_version, library version, and the full routing + config including exit points — the documented public contract.""" + import torch + + from earlyon import __version__ + from earlyon.utils import build_model, save_wrapper + + model = build_model("resnet18", num_classes=10, pretrained=False) + path = tmp_path / "v2.pth" + save_wrapper(model, path) + payload = torch.load(path, map_location="cpu", weights_only=True) + assert payload["format_version"] == 2 + assert payload["earlyon_version"] == __version__ + cfg = payload["config"] + assert cfg["enabled_exits"] == [True, True] + assert set(cfg["temperatures"]) == {"e0", "e1", "final"} + assert [p["layer_name"] for p in cfg["exit_points"]] == ["layer2", "layer3"] + + +def test_v1_checkpoint_migrates_scalar_temperature_and_sentinels(tmp_path): + """Unversioned (v1) checkpoints must load: the scalar temperature is + broadcast per head, and the legacy 'disabled' sentinel (confidence 1.0 on + the active policy) becomes an explicit enabled_exits=False with a warning.""" + import warnings as _warnings + + import torch + + from earlyon.utils import build_model, load_wrapper + + model = build_model("resnet18", num_classes=10, pretrained=False) + path = tmp_path / "v1.pth" + payload = { + "state_dict": model.state_dict(), + "config": { + "backbone": "resnet18", + "num_classes": 10, + "routing_policy": "confidence", + "confidence_thresholds": [0.7, 1.0], # 1.0 was the v1 disabled sentinel + "entropy_thresholds": [0.5, 0.5], + "loss_weights": [0.2, 0.3, 0.5], + "temperature": 1.7, + }, + } + torch.save(payload, path) + + with _warnings.catch_warnings(record=True) as captured: + _warnings.simplefilter("always") + loaded = load_wrapper(path) + assert loaded.config.temperatures == {"e0": 1.7, "e1": 1.7, "final": 1.7} + assert loaded.config.enabled_exits == [True, False] + messages = [str(w.message) for w in captured if issubclass(w.category, UserWarning)] + assert any("enabled_exits" in m for m in messages), messages + + +def test_v1_checkpoint_entropy_sentinel_migrates(tmp_path): + """For an entropy-routed v1 checkpoint the disabled sentinel is 0.0.""" + import torch + + from earlyon.utils import build_model, load_wrapper + + model = build_model("resnet18", num_classes=10, pretrained=False) + path = tmp_path / "v1e.pth" + payload = { + "state_dict": model.state_dict(), + "config": { + "backbone": "resnet18", + "num_classes": 10, + "routing_policy": "entropy", + "confidence_thresholds": [0.85, 0.80], + "entropy_thresholds": [0.4, 0.0], # 0.0 was the v1 entropy disabled sentinel + "loss_weights": [0.2, 0.3, 0.5], + "temperature": 1.0, + }, + } + torch.save(payload, path) + loaded = load_wrapper(path) + assert loaded.config.routing_policy == "entropy" + assert loaded.config.enabled_exits == [True, False] + + +def test_v1_checkpoint_invalid_temperature_falls_back(tmp_path): + """A corrupt v1 temperature (NaN/negative) must not poison the load; it + falls back to 1.0 with a warning, matching the v1 runtime guard.""" + import warnings as _warnings + + import torch + + from earlyon.utils import build_model, load_wrapper + + model = build_model("resnet18", num_classes=10, pretrained=False) + path = tmp_path / "v1bad.pth" + payload = { + "state_dict": model.state_dict(), + "config": { + "backbone": "resnet18", + "num_classes": 10, + "confidence_thresholds": [0.7, 0.8], + "loss_weights": [0.2, 0.3, 0.5], + "temperature": float("nan"), + }, + } + torch.save(payload, path) + with _warnings.catch_warnings(record=True) as captured: + _warnings.simplefilter("always") + loaded = load_wrapper(path) + assert loaded.config.temperatures == {"e0": 1.0, "e1": 1.0, "final": 1.0} + assert any("temperature" in str(w.message) for w in captured) + + +def test_checkpoint_from_newer_format_rejected(tmp_path): + import pytest + import torch + + from earlyon.utils import build_model, load_wrapper, save_wrapper + + model = build_model("resnet18", num_classes=10, pretrained=False) + path = tmp_path / "future.pth" + save_wrapper(model, path) + payload = torch.load(path, map_location="cpu", weights_only=True) + payload["format_version"] = 99 + torch.save(payload, path) + with pytest.raises(ValueError, match="format_version"): + load_wrapper(path) + + +def test_malformed_checkpoint_rejected(tmp_path): + import pytest + import torch + + from earlyon.utils import load_wrapper + + path = tmp_path / "junk.pth" + torch.save({"weights": {}}, path) + with pytest.raises(ValueError, match="not an earlyon file"): + load_wrapper(path) + + +def test_checkpoint_exit_point_mismatch_rejected(tmp_path): + """A v2 checkpoint whose recorded exit points disagree with the rebuilt + factory's placement must fail loudly instead of loading mis-wired routing.""" + import pytest + import torch + + from earlyon.utils import build_model, load_wrapper, save_wrapper + + model = build_model("resnet18", num_classes=10, pretrained=False) + path = tmp_path / "moved.pth" + save_wrapper(model, path) + payload = torch.load(path, map_location="cpu", weights_only=True) + payload["config"]["exit_points"][0]["layer_name"] = "layer1" # tampered placement + torch.save(payload, path) + with pytest.raises(ValueError, match="exit points"): + load_wrapper(path) + + +def test_custom_checkpoint_loads_via_factory(tmp_path): + """custom_ee models round-trip when the caller supplies the factory.""" + import torch + + from earlyon.models import custom_ee + from earlyon.utils import load_wrapper, save_wrapper + from tests.fixtures.tiny_models import TinyBackbone + + torch.manual_seed(0) + + def factory(): + return custom_ee( + TinyBackbone(num_classes=10), + exit_layers=["stage1", "stage2"], + num_classes=10, + input_shape=(1, 3, 32, 32), + ) + + model = factory() + model.config.confidence_thresholds = [0.42, 0.9] + model.config.enabled_exits = [True, False] + with torch.no_grad(): + next(iter(model.exit_heads["e0"].parameters())).fill_(0.5) + + path = tmp_path / "custom.pth" + import warnings as _warnings + + with _warnings.catch_warnings(): + _warnings.simplefilter("ignore") # the save-time custom_ee warning + save_wrapper(model, path) + + loaded = load_wrapper(path, factory=factory) + assert loaded.config.confidence_thresholds == [0.42, 0.9] + assert loaded.config.enabled_exits == [True, False] + p = next(iter(loaded.exit_heads["e0"].parameters())) + assert torch.allclose(p, torch.full_like(p, 0.5)) diff --git a/tests/test_wrappers.py b/tests/test_wrappers.py index 14ebc9d..1de2701 100644 --- a/tests/test_wrappers.py +++ b/tests/test_wrappers.py @@ -91,20 +91,128 @@ def test_batched_inference_prediction_is_grad_free_without_external_no_grad(): @pytest.mark.parametrize("bad_temp", [float("nan"), float("inf"), float("-inf")]) def test_nonfinite_temperature_does_not_poison_softmax(bad_temp): - """A NaN/Inf config.temperature (e.g. from a degenerate fit) must not turn - every softmax into NaN: _safe_temperature falls back to 1.0 so routing stays - well-defined and confidence is finite. Inf is the consequential case — the - old `max(inf, 1e-6)` left T=inf, making every softmax uniform.""" + """Config validation rejects non-finite temperatures at the trust + boundaries, but a direct post-hoc mutation of config.temperatures bypasses + it; the runtime guard must still fall back to 1.0 so routing stays + well-defined and confidence is finite.""" import math wrapper, _ = _build(thresholds=(1.0, 1.0, 1.0)) wrapper.eval() - wrapper.config.temperature = bad_temp + for head in wrapper.config.temperatures: + wrapper.config.temperatures[head] = bad_temp # bypasses validate() result = wrapper(torch.randn(1, 3, 32, 32), mode="inference") assert math.isfinite(result.confidence) assert torch.isfinite(result.prediction).all() +def test_disabled_exit_cannot_fire_even_at_saturated_confidence(): + """The P0 enablement invariant: an exit with enabled_exits[i]=False must + never fire, even when its softmax confidence is exactly 1.0 (float32 + saturation) and its threshold is 1.0 — the numerical edge case the old + 'threshold sentinel means disabled' convention got wrong.""" + wrapper, _ = _build(thresholds=(1.0, 1.0, 1.0)) + # saturate exit e0: huge constant logit -> softmax max exactly 1.0 + with torch.no_grad(): + wrapper.exit_heads["e0"].classifier[-1].bias.zero_() + wrapper.exit_heads["e0"].classifier[-1].bias[0] = 1e3 + wrapper.eval() + x = torch.randn(1, 3, 32, 32) + + # sanity: with the exit enabled and threshold 1.0, saturation DOES fire + wrapper.config.enabled_exits = [True, False, False] + assert wrapper(x, mode="inference").exit_taken == 0 + + # disabled: must fall through to the final classifier + wrapper.config.enabled_exits = [False, False, False] + result = wrapper(x, mode="inference") + assert result.exit_taken == -1 + assert result.estimated_backbone_flops_fraction == 1.0 + + # batched path honors the same invariant + batched = wrapper.forward_inference_batched(torch.randn(4, 3, 32, 32)) + assert batched.exit_taken == -1 + + +def test_disabled_exit_cannot_fire_at_entropy_exactly_zero(): + """Same invariant for the entropy policy: a saturated head has entropy + exactly 0.0, which meets any threshold >= 0; disabling the exit must win.""" + backbone = TinyBackbone(num_classes=10) + exits = [ + ExitPoint("e0", "stage1", STAGE_CHANNELS["stage1"]), + ExitPoint("e1", "stage2", STAGE_CHANNELS["stage2"]), + ] + heads = {ep.name: EarlyExitHead(ep.in_channels, 10) for ep in exits} + cfg = EarlyExitConfig( + backbone="tiny", + num_classes=10, + exit_points=exits, + routing_policy="entropy", + entropy_thresholds=[0.0, 0.0], + ) + wrapper = EarlyExitWrapper(backbone, heads, lambda t: t, cfg, input_shape=(1, 3, 32, 32)) + with torch.no_grad(): + wrapper.exit_heads["e0"].classifier[-1].bias.zero_() + wrapper.exit_heads["e0"].classifier[-1].bias[0] = 1e3 + wrapper.eval() + x = torch.randn(1, 3, 32, 32) + + wrapper.config.enabled_exits = [True, False] + assert wrapper(x, mode="inference").exit_taken == 0 # entropy 0.0 <= 0.0 fires + + wrapper.config.enabled_exits = [False, False] + assert wrapper(x, mode="inference").exit_taken == -1 + + +def test_disabled_exit_still_produces_training_logits(): + """Enablement is a routing concept: training mode must return logits for + every head, disabled or not, so a disabled head keeps learning.""" + wrapper, _ = _build() + wrapper.config.enabled_exits = [False, True, False] + outputs = wrapper(torch.randn(2, 3, 32, 32), mode="training") + assert len(outputs) == 4 # all 3 exits + final, regardless of enablement + + +def test_per_head_temperature_is_applied_at_the_right_exit(): + """Each exit must use its own temperature. A very high temperature flattens + exit e0's softmax below the threshold (no fire); resetting only e0's + temperature to 1.0 makes the same input fire at e0 again.""" + wrapper, _ = _build(thresholds=(0.9, 0.9, 0.9)) + with torch.no_grad(): + wrapper.exit_heads["e0"].classifier[-1].bias.zero_() + wrapper.exit_heads["e0"].classifier[-1].bias[0] = 20.0 # confident but not saturated + # make later heads and final produce flat logits so nothing else fires + wrapper.exit_heads["e1"].classifier[-1].weight.zero_() + wrapper.exit_heads["e1"].classifier[-1].bias.zero_() + wrapper.exit_heads["e2"].classifier[-1].weight.zero_() + wrapper.exit_heads["e2"].classifier[-1].bias.zero_() + wrapper.eval() + x = torch.randn(1, 3, 32, 32) + + wrapper.config.temperatures = {"e0": 1.0, "e1": 1.0, "e2": 1.0, "final": 1.0} + assert wrapper(x, mode="inference").exit_taken == 0 + + # flatten ONLY e0 via its per-head temperature; other heads unchanged + wrapper.config.temperatures = {"e0": 100.0, "e1": 1.0, "e2": 1.0, "final": 1.0} + result = wrapper(x, mode="inference") + assert result.exit_taken == -1, "e0's own temperature must govern e0's routing" + + +def test_wrapper_rejects_mismatched_exit_heads(): + """Heads must exactly match the configured exit points.""" + backbone = TinyBackbone(num_classes=10) + exits = [ExitPoint("e0", "stage1", STAGE_CHANNELS["stage1"])] + cfg = EarlyExitConfig(backbone="tiny", num_classes=10, exit_points=exits) + with pytest.raises(ValueError, match="exit_heads"): + EarlyExitWrapper(backbone, {}, lambda t: t, cfg, input_shape=(1, 3, 32, 32)) + heads = { + "e0": EarlyExitHead(STAGE_CHANNELS["stage1"], 10), + "extra": EarlyExitHead(STAGE_CHANNELS["stage2"], 10), + } + with pytest.raises(ValueError, match="exit_heads"): + EarlyExitWrapper(backbone, heads, lambda t: t, cfg, input_shape=(1, 3, 32, 32)) + + def test_safe_temperature_clamps_to_positive_finite(): """Unit-level guarantees of the temperature guard.""" from earlyon.core.wrappers import _safe_temperature @@ -112,8 +220,10 @@ def test_safe_temperature_clamps_to_positive_finite(): assert _safe_temperature(float("nan")) == 1.0 assert _safe_temperature(float("inf")) == 1.0 assert _safe_temperature(float("-inf")) == 1.0 - assert _safe_temperature(0.0) == 1e-6 # non-positive clamps up - assert _safe_temperature(-5.0) == 1e-6 + # non-positive values fall back to the no-op temperature 1.0 — NOT a tiny + # positive clamp, which would produce an artificially razor-sharp softmax + assert _safe_temperature(0.0) == 1.0 + assert _safe_temperature(-5.0) == 1.0 assert _safe_temperature(2.5) == 2.5 # finite positive passes through From 5f03a98910ebba73641d53f2e950a40f9f095c06 Mon Sep 17 00:00:00 2001 From: sohams25 <86193836+sohams25@users.noreply.github.com> Date: Wed, 22 Jul 2026 02:49:56 +0530 Subject: [PATCH 02/16] feat: fair benchmark runner with identical boundaries and inputs - benchmark_models: one measurement core; every compared model (backbone, early-exit wrapper, static baseline, quantised variant) sees the exact same preloaded sample sequence, warmup, eval/inference_mode setup, device placement and per-iteration synchronization - explicit boundary labels (model-only vs end-to-end incl. H2D copy); loader-vs-noise input source labelled; accuracy reported alongside speed for labelled loaders; batch-1 validated as the primary mode - BenchmarkResult carries dtype, input shape, warmup, sync policy, and avg_estimated_flops_fraction (computation_used kept as read alias) - CLI benchmark + scripts use the fair runner; docs/benchmarks.json restructured with pre-v0.3 records quarantined under legacy_v0_2 and marked not comparable --- docs/benchmarks.json | 183 +++++++------- earlyon/benchmarking/__init__.py | 4 + earlyon/benchmarking/throughput.py | 373 +++++++++++++++++++---------- earlyon/cli.py | 26 +- scripts/re_evaluate.py | 103 ++++---- scripts/run_benchmarks.py | 51 ++-- tests/test_benchmarks.py | 123 ++++++++++ 7 files changed, 573 insertions(+), 290 deletions(-) diff --git a/docs/benchmarks.json b/docs/benchmarks.json index d8786fd..eb0db8c 100644 --- a/docs/benchmarks.json +++ b/docs/benchmarks.json @@ -1,94 +1,99 @@ { - "resnet18": { - "backbone": "resnet18", - "dataset": "cifar10", - "device": "NVIDIA GeForce RTX 4050 Laptop GPU", - "stage1_seconds": 449.7, - "stage2_seconds": 147.2, - "calibrate_seconds": 183.9, - "thresholds": [ - 0.7, - 0.85 - ], - "baseline_accuracy_val": 0.9632, - "test_accuracy": 0.9442, - "test_avg_computation_used": 0.8988, - "test_exit_distribution": { - "final": 0.6471, - "exit_1": 0.2584, - "exit_0": 0.0945 + "_schema": 2, + "_note": "Records under 'legacy_v0_2' were measured with the pre-v0.3 benchmark runner, which fed the wrapper and the raw backbone DIFFERENT inputs and used non-identical measurement boundaries; they are not methodologically comparable to 'runs' records produced by the v0.3 fair runner (benchmark_models: identical preloaded samples, identical warmup/sync/boundary for every compared model). Regenerate with scripts/run_benchmarks.py or scripts/re_evaluate.py.", + "legacy_v0_2": { + "resnet18": { + "backbone": "resnet18", + "dataset": "cifar10", + "device": "NVIDIA GeForce RTX 4050 Laptop GPU", + "stage1_seconds": 449.7, + "stage2_seconds": 147.2, + "calibrate_seconds": 183.9, + "thresholds": [ + 0.7, + 0.85 + ], + "baseline_accuracy_val": 0.9632, + "test_accuracy": 0.9442, + "test_avg_computation_used": 0.8988, + "test_exit_distribution": { + "final": 0.6471, + "exit_1": 0.2584, + "exit_0": 0.0945 + }, + "throughput_backbone_ips": 758.4, + "throughput_wrapper_ips": 1906.6, + "speedup": 2.575, + "latency_backbone_p50_ms": 1.316, + "latency_wrapper_p50_ms": 0.51, + "latency_wrapper_p95_ms": 0.547, + "throughput_wrapper_ips_noise_input": 1853.0, + "throughput_speedup_noise_input": 2.443, + "latency_wrapper_p50_ms_noise_input": 0.508, + "note": "throughput uses random noise input which may trigger spurious exits in trained heads; test_avg_computation_used is the honest signal" }, - "throughput_backbone_ips": 758.4, - "throughput_wrapper_ips": 1906.6, - "speedup": 2.575, - "latency_backbone_p50_ms": 1.316, - "latency_wrapper_p50_ms": 0.51, - "latency_wrapper_p95_ms": 0.547, - "throughput_wrapper_ips_noise_input": 1853.0, - "throughput_speedup_noise_input": 2.443, - "latency_wrapper_p50_ms_noise_input": 0.508, - "note": "throughput uses random noise input which may trigger spurious exits in trained heads; test_avg_computation_used is the honest signal" - }, - "resnet50": { - "backbone": "resnet50", - "dataset": "cifar10", - "device": "NVIDIA GeForce RTX 4050 Laptop GPU", - "stage1_seconds": 1009.3, - "stage2_seconds": 345.7, - "calibrate_seconds": 413.8, - "thresholds": [ - 0.7, - 0.85, - 0.99 - ], - "baseline_accuracy_val": 0.976, - "test_accuracy": 0.9588, - "test_avg_computation_used": 0.8142, - "test_exit_distribution": { - "final": 0.4177, - "exit_2": 0.4247, - "exit_0": 0.0579, - "exit_1": 0.0997 + "resnet50": { + "backbone": "resnet50", + "dataset": "cifar10", + "device": "NVIDIA GeForce RTX 4050 Laptop GPU", + "stage1_seconds": 1009.3, + "stage2_seconds": 345.7, + "calibrate_seconds": 413.8, + "thresholds": [ + 0.7, + 0.85, + 0.99 + ], + "baseline_accuracy_val": 0.976, + "test_accuracy": 0.9588, + "test_avg_computation_used": 0.8142, + "test_exit_distribution": { + "final": 0.4177, + "exit_2": 0.4247, + "exit_0": 0.0579, + "exit_1": 0.0997 + }, + "throughput_backbone_ips": 355.1, + "throughput_wrapper_ips": 329.4, + "speedup": 0.938, + "latency_backbone_p50_ms": 2.814, + "latency_wrapper_p50_ms": 3.025, + "latency_wrapper_p95_ms": 3.082, + "throughput_wrapper_ips_noise_input": 1942.9, + "throughput_speedup_noise_input": 5.472, + "latency_wrapper_p50_ms_noise_input": 0.509, + "note": "throughput uses random noise input which may trigger spurious exits in trained heads; test_avg_computation_used is the honest signal" }, - "throughput_backbone_ips": 355.1, - "throughput_wrapper_ips": 329.4, - "speedup": 0.938, - "latency_backbone_p50_ms": 2.814, - "latency_wrapper_p50_ms": 3.025, - "latency_wrapper_p95_ms": 3.082, - "throughput_wrapper_ips_noise_input": 1942.9, - "throughput_speedup_noise_input": 5.472, - "latency_wrapper_p50_ms_noise_input": 0.509, - "note": "throughput uses random noise input which may trigger spurious exits in trained heads; test_avg_computation_used is the honest signal" + "mobilenetv2": { + "backbone": "mobilenetv2", + "dataset": "cifar10", + "device": "NVIDIA GeForce RTX 4050 Laptop GPU", + "stage1_seconds": 577.9, + "stage2_seconds": 165.8, + "calibrate_seconds": 225.5, + "thresholds": [ + 0.75, + 0.99 + ], + "baseline_accuracy_val": 0.9508, + "test_accuracy": 0.9331, + "test_avg_computation_used": 0.939, + "test_exit_distribution": { + "final": 0.9155, + "exit_0": 0.0801, + "exit_1": 0.0044 + }, + "throughput_backbone_ips": 751.4, + "throughput_wrapper_ips": 2866.5, + "speedup": 3.809, + "latency_backbone_p50_ms": 1.323, + "latency_wrapper_p50_ms": 0.337, + "latency_wrapper_p95_ms": 0.414, + "throughput_wrapper_ips_noise_input": 2685.9, + "throughput_speedup_noise_input": 3.574, + "latency_wrapper_p50_ms_noise_input": 0.365, + "note": "throughput uses random noise input which may trigger spurious exits in trained heads; test_avg_computation_used is the honest signal" + } }, - "mobilenetv2": { - "backbone": "mobilenetv2", - "dataset": "cifar10", - "device": "NVIDIA GeForce RTX 4050 Laptop GPU", - "stage1_seconds": 577.9, - "stage2_seconds": 165.8, - "calibrate_seconds": 225.5, - "thresholds": [ - 0.75, - 0.99 - ], - "baseline_accuracy_val": 0.9508, - "test_accuracy": 0.9331, - "test_avg_computation_used": 0.939, - "test_exit_distribution": { - "final": 0.9155, - "exit_0": 0.0801, - "exit_1": 0.0044 - }, - "throughput_backbone_ips": 751.4, - "throughput_wrapper_ips": 2866.5, - "speedup": 3.809, - "latency_backbone_p50_ms": 1.323, - "latency_wrapper_p50_ms": 0.337, - "latency_wrapper_p95_ms": 0.414, - "throughput_wrapper_ips_noise_input": 2685.9, - "throughput_speedup_noise_input": 3.574, - "latency_wrapper_p50_ms_noise_input": 0.365, - "note": "throughput uses random noise input which may trigger spurious exits in trained heads; test_avg_computation_used is the honest signal" - } + "runs": {} } \ No newline at end of file diff --git a/earlyon/benchmarking/__init__.py b/earlyon/benchmarking/__init__.py index 3bc1de4..f0c751c 100644 --- a/earlyon/benchmarking/__init__.py +++ b/earlyon/benchmarking/__init__.py @@ -2,13 +2,17 @@ from earlyon.benchmarking.jetson_profiler import JetsonProfiler, JetsonRun, JetsonSample from earlyon.benchmarking.throughput import ( BenchmarkResult, + ComparisonResult, benchmark_backbone, + benchmark_models, benchmark_wrapper, benchmark_wrapper_on_loader, ) __all__ = [ "BenchmarkResult", + "ComparisonResult", + "benchmark_models", "benchmark_wrapper", "benchmark_wrapper_on_loader", "benchmark_backbone", diff --git a/earlyon/benchmarking/throughput.py b/earlyon/benchmarking/throughput.py index ceb5666..fec37c7 100644 --- a/earlyon/benchmarking/throughput.py +++ b/earlyon/benchmarking/throughput.py @@ -1,13 +1,28 @@ -"""Throughput / latency benchmarking with proper CUDA sync. - -Single-sample inference benchmark (batch=1) per v0.1 routing constraint. Use -``num_warmup>=50`` on CUDA; GPU clocks need ~30 iterations to stabilize. - -``benchmark_wrapper`` runs a fixed random-noise input and is fast to -reproduce; trained heads may fire spuriously on noise, so it's a best-case -upper bound. ``benchmark_wrapper_on_loader`` drives real samples through the -wrapper and is the honest input-distribution signal — see the v0.2 README -appendix for the dual numbers. +"""Throughput / latency benchmarking with identical boundaries per model. + +Fairness contract +----------------- +:func:`benchmark_models` is the one measurement core. Every model in a +comparison sees **the same sample sequence** (preloaded once, before any +timing), the same warmup count, the same ``eval()`` + ``torch.inference_mode`` +setup, the same device placement, and the same per-iteration synchronization. +Two boundaries are supported and always labelled on the result: + +* ``"model-only"`` (default) — samples are moved to the device *before* the + timed region; the measurement covers the forward pass (and, for a wrapper, + its routing logic + host synchronization) only. +* ``"end-to-end"`` — samples stay on CPU and the timed region includes the + host-to-device copy. Loader/preprocessing time is never measured by either + boundary. + +The legacy helpers (:func:`benchmark_wrapper`, :func:`benchmark_backbone`, +:func:`benchmark_wrapper_on_loader`) are thin wrappers over the core and keep +their signatures. Note that a wrapper benchmarked on random noise is a +best-case bound — trained heads may fire spuriously on noise — so prefer the +loader variants for honest input-distribution numbers. + +Batch size 1 is the primary supported mode: it is the latency-sensitive edge +case earlyon targets, and the single-sample router requires it. """ from __future__ import annotations @@ -15,30 +30,75 @@ import statistics import time from collections import Counter -from dataclasses import asdict, dataclass -from typing import Any, Iterator +from dataclasses import asdict, dataclass, field +from typing import Any, Mapping import torch +import torch.nn as nn from torch.utils.data import DataLoader from earlyon.core.types import Batch, exit_label from earlyon.core.wrappers import EarlyExitWrapper +BOUNDARY_MODEL_ONLY = "model-only" +BOUNDARY_END_TO_END = "end-to-end" + @dataclass class BenchmarkResult: + """One model's measurement under the fairness contract. + + ``avg_estimated_flops_fraction`` is the average of the wrapper's static + per-exit FLOPs estimate (1.0 for plain modules) — an estimate, not a + measurement; see ``InferenceResult.estimated_backbone_flops_fraction``. + ``accuracy`` is populated only when the samples came from a labelled + loader. + """ + throughput_ips: float latency_median_ms: float latency_p50_ms: float latency_p95_ms: float latency_p99_ms: float - avg_computation_used: float + avg_estimated_flops_fraction: float exit_distribution: dict[str, float] num_runs: int device: str + num_warmup: int = 0 + batch_size: int = 1 + input_shape: tuple[int, ...] = () + dtype: str = "torch.float32" + boundary: str = BOUNDARY_MODEL_ONLY + sync: str = "none" # "cuda-synchronize-per-iteration" on CUDA devices + input_source: str = "random-noise" # or "loader" + accuracy: float | None = None + num_labelled_samples: int = 0 + + @property + def avg_computation_used(self) -> float: + """Deprecated alias for ``avg_estimated_flops_fraction``.""" + return self.avg_estimated_flops_fraction def to_dict(self) -> dict[str, Any]: - return asdict(self) + d = asdict(self) + d["input_shape"] = list(self.input_shape) + return d + + +@dataclass +class ComparisonResult: + """Results of benchmarking several models on identical samples. + + ``speedup_vs`` divides two models' throughputs; it is only meaningful + because the fairness contract guarantees identical inputs and boundaries. + """ + + results: dict[str, BenchmarkResult] = field(default_factory=dict) + + def speedup_vs(self, model: str, baseline: str) -> float: + return self.results[model].throughput_ips / max( + self.results[baseline].throughput_ips, 1e-12 + ) def _sync(device: str) -> None: @@ -51,126 +111,219 @@ def _percentile(values: list[float], p: float) -> float: return sorted(values)[idx] -def benchmark_wrapper( - model: EarlyExitWrapper, - input_shape: tuple[int, int, int, int] = (1, 3, 224, 224), - device: str = "cpu", - num_warmup: int = 50, - num_runs: int = 500, -) -> BenchmarkResult: - """Benchmark a wrapper in inference mode.""" +def _draw_samples( + loader: DataLoader[Batch] | None, + input_shape: tuple[int, int, int, int] | None, + count: int, + seed: int, +) -> tuple[list[torch.Tensor], list[torch.Tensor] | None]: + """Materialize the exact sample sequence every model will see. + + From a loader: cycle it until ``count`` samples are drawn (keeping + labels). Without one: fixed-seed random noise, generated once. + """ + if loader is not None: + if loader.batch_size is None or loader.batch_size != 1: + raise ValueError( + f"benchmarking requires loader.batch_size=1 (got {loader.batch_size}); " + "batch-1 latency is the primary supported mode" + ) + try: + if len(loader) == 0: + raise ValueError("benchmarking requires a non-empty loader") + except TypeError: + pass # unsized (IterableDataset) — cannot pre-check + images: list[torch.Tensor] = [] + labels: list[torch.Tensor] = [] + while len(images) < count: + drew_any = False + for x, y in loader: + drew_any = True + images.append(x) + labels.append(y) + if len(images) >= count: + break + if not drew_any: + raise ValueError("benchmarking requires a non-empty loader") + return images, labels + if input_shape is None: + raise ValueError("provide either a loader or an input_shape") if input_shape[0] != 1: - raise ValueError("v0.1 inference benchmark requires batch_size=1") + raise ValueError( + f"benchmarking requires batch_size=1 (got input_shape={input_shape}); " + "batch-1 latency is the primary supported mode" + ) + gen = torch.Generator().manual_seed(seed) + return [torch.randn(input_shape, generator=gen) for _ in range(count)], None + + +def _run_one( + model: nn.Module, + samples: list[torch.Tensor], + labels: list[torch.Tensor] | None, + device: str, + num_warmup: int, + num_runs: int, + boundary: str, + input_source: str, +) -> BenchmarkResult: + is_wrapper = isinstance(model, EarlyExitWrapper) model = model.to(device).eval() - dummy = torch.randn(input_shape, device=device) - # warmup - with torch.no_grad(): - for _ in range(num_warmup): - _ = model(dummy, mode="inference") + if boundary == BOUNDARY_MODEL_ONLY: + staged = [s.to(device) for s in samples] + elif boundary == BOUNDARY_END_TO_END: + staged = [s.cpu() for s in samples] # timed region includes .to(device) + else: + raise ValueError(f"unknown boundary {boundary!r}") + + def forward(x: torch.Tensor) -> Any: + if boundary == BOUNDARY_END_TO_END: + x = x.to(device) + if is_wrapper: + return model(x, mode="inference") + return model(x) + + with torch.inference_mode(): + for i in range(num_warmup): + forward(staged[i]) _sync(device) latencies: list[float] = [] exits: Counter[int] = Counter() - comp_used: list[float] = [] + flops_fraction: list[float] = [] + correct = 0 + labelled = 0 - with torch.no_grad(): + with torch.inference_mode(): wall_start = time.perf_counter() - for _ in range(num_runs): + for i in range(num_runs): + x = staged[num_warmup + i] t0 = time.perf_counter() - result = model(dummy, mode="inference") + out = forward(x) _sync(device) latencies.append(time.perf_counter() - t0) - exits[result.exit_taken] += 1 - comp_used.append(result.computation_used) + if is_wrapper: + exits[out.exit_taken] += 1 + flops_fraction.append(out.estimated_backbone_flops_fraction) + prediction = out.prediction + else: + exits[-1] += 1 + flops_fraction.append(1.0) + prediction = out + if labels is not None: + target = int(labels[num_warmup + i].item()) + correct += int(int(prediction.argmax(dim=-1).item()) == target) + labelled += 1 wall_total = time.perf_counter() - wall_start - # exit_distribution keys: "exit_0", "exit_1", ..., "final" dist = {exit_label(k): v / num_runs for k, v in exits.items()} - return BenchmarkResult( throughput_ips=num_runs / wall_total, latency_median_ms=statistics.median(latencies) * 1000, latency_p50_ms=_percentile(latencies, 0.50) * 1000, latency_p95_ms=_percentile(latencies, 0.95) * 1000, latency_p99_ms=_percentile(latencies, 0.99) * 1000, - avg_computation_used=sum(comp_used) / len(comp_used), + avg_estimated_flops_fraction=sum(flops_fraction) / len(flops_fraction), exit_distribution=dist, num_runs=num_runs, device=device, + num_warmup=num_warmup, + batch_size=1, + input_shape=tuple(samples[0].shape), + dtype=str(samples[0].dtype), + boundary=boundary, + sync="cuda-synchronize-per-iteration" if device.startswith("cuda") else "none", + input_source=input_source, + accuracy=(correct / labelled) if labelled else None, + num_labelled_samples=labelled, ) -def benchmark_wrapper_on_loader( - model: EarlyExitWrapper, - loader: DataLoader[Batch], +def benchmark_models( + models: Mapping[str, nn.Module], + loader: DataLoader[Batch] | None = None, + input_shape: tuple[int, int, int, int] | None = None, device: str = "cpu", num_warmup: int = 50, num_runs: int = 500, -) -> BenchmarkResult: - """Benchmark a wrapper in inference mode using real samples from a loader. + boundary: str = BOUNDARY_MODEL_ONLY, + seed: int = 0, +) -> ComparisonResult: + """Benchmark several models under identical boundaries and inputs. + + ``models`` maps a label to a module: the raw backbone, an + :class:`EarlyExitWrapper` (routed via its inference path), a smaller + static baseline, a quantised variant — anything callable on the samples. + Typical usage:: + + cmp = benchmark_models( + {"backbone": model.backbone, "early_exit": model, "small": resnet18}, + loader=test_loader, device="cuda", + ) + cmp.speedup_vs("early_exit", "backbone") - The loader must yield (image, label) batches with ``batch_size == 1`` to - match v0.2's single-sample routing. The first ``num_warmup`` samples are - discarded; the next ``num_runs`` are timed. The loader is cycled if it - runs out before ``num_warmup + num_runs`` samples have been drawn. + The exact same preloaded sample sequence is fed to every model, in the + same order, with the same warmup, boundary and synchronization. Samples + come from ``loader`` (cycled; labels kept, accuracy reported) or, when no + loader is given, from fixed-seed random noise (best-case bound: trained + exit heads may fire spuriously on noise). """ - if loader.batch_size is None or loader.batch_size != 1: - raise ValueError( - f"benchmark_wrapper_on_loader requires loader.batch_size=1 " - f"(got {loader.batch_size}); v0.2 inference is single-sample" + if num_warmup < 0: + raise ValueError(f"num_warmup must be >= 0 (got {num_warmup})") + if num_runs <= 0: + raise ValueError(f"num_runs must be > 0 (got {num_runs})") + if not models: + raise ValueError("models must be non-empty") + samples, labels = _draw_samples(loader, input_shape, num_warmup + num_runs, seed) + input_source = "loader" if loader is not None else "random-noise" + comparison = ComparisonResult() + for name, model in models.items(): + comparison.results[name] = _run_one( + model, samples, labels, device, num_warmup, num_runs, boundary, input_source ) - # an empty loader would make the cycling sample_stream spin forever; fail fast. - try: - is_empty = len(loader) == 0 - except TypeError: - is_empty = False # unsized (IterableDataset) — cannot pre-check - if is_empty: - raise ValueError("benchmark_wrapper_on_loader requires a non-empty loader") - model = model.to(device).eval() + return comparison - def sample_stream() -> Iterator[torch.Tensor]: - while True: - for images, _targets in loader: - yield images.to(device) - stream = sample_stream() +# ---------------- legacy single-model helpers ---------------- - with torch.no_grad(): - for _ in range(num_warmup): - x = next(stream) - _ = model(x, mode="inference") - _sync(device) - latencies: list[float] = [] - exits: Counter[int] = Counter() - comp_used: list[float] = [] +def benchmark_wrapper( + model: EarlyExitWrapper, + input_shape: tuple[int, int, int, int] = (1, 3, 224, 224), + device: str = "cpu", + num_warmup: int = 50, + num_runs: int = 500, +) -> BenchmarkResult: + """Benchmark a wrapper on fixed-seed random noise (best-case bound).""" + return benchmark_models( + {"model": model}, + input_shape=input_shape, + device=device, + num_warmup=num_warmup, + num_runs=num_runs, + ).results["model"] - with torch.no_grad(): - wall_start = time.perf_counter() - for _ in range(num_runs): - x = next(stream) - t0 = time.perf_counter() - result = model(x, mode="inference") - _sync(device) - latencies.append(time.perf_counter() - t0) - exits[result.exit_taken] += 1 - comp_used.append(result.computation_used) - wall_total = time.perf_counter() - wall_start - dist = {exit_label(k): v / num_runs for k, v in exits.items()} +def benchmark_wrapper_on_loader( + model: EarlyExitWrapper, + loader: DataLoader[Batch], + device: str = "cpu", + num_warmup: int = 50, + num_runs: int = 500, +) -> BenchmarkResult: + """Benchmark a wrapper on real samples from a batch-1 loader. - return BenchmarkResult( - throughput_ips=num_runs / wall_total, - latency_median_ms=statistics.median(latencies) * 1000, - latency_p50_ms=_percentile(latencies, 0.50) * 1000, - latency_p95_ms=_percentile(latencies, 0.95) * 1000, - latency_p99_ms=_percentile(latencies, 0.99) * 1000, - avg_computation_used=sum(comp_used) / len(comp_used), - exit_distribution=dist, - num_runs=num_runs, + This is the honest input-distribution signal; accuracy over the timed + samples is reported alongside speed. + """ + return benchmark_models( + {"model": model}, + loader=loader, device=device, - ) + num_warmup=num_warmup, + num_runs=num_runs, + ).results["model"] def benchmark_backbone( @@ -181,32 +334,10 @@ def benchmark_backbone( num_runs: int = 500, ) -> BenchmarkResult: """Benchmark the raw backbone (no early-exit logic). Used as baseline.""" - backbone = backbone.to(device).eval() - dummy = torch.randn(input_shape, device=device) - - with torch.no_grad(): - for _ in range(num_warmup): - _ = backbone(dummy) - _sync(device) - - latencies: list[float] = [] - with torch.no_grad(): - wall_start = time.perf_counter() - for _ in range(num_runs): - t0 = time.perf_counter() - _ = backbone(dummy) - _sync(device) - latencies.append(time.perf_counter() - t0) - wall_total = time.perf_counter() - wall_start - - return BenchmarkResult( - throughput_ips=num_runs / wall_total, - latency_median_ms=statistics.median(latencies) * 1000, - latency_p50_ms=_percentile(latencies, 0.50) * 1000, - latency_p95_ms=_percentile(latencies, 0.95) * 1000, - latency_p99_ms=_percentile(latencies, 0.99) * 1000, - avg_computation_used=1.0, - exit_distribution={"final": 1.0}, - num_runs=num_runs, + return benchmark_models( + {"model": backbone}, + input_shape=input_shape, device=device, - ) + num_warmup=num_warmup, + num_runs=num_runs, + ).results["model"] diff --git a/earlyon/cli.py b/earlyon/cli.py index 0b70577..b58a899 100644 --- a/earlyon/cli.py +++ b/earlyon/cli.py @@ -11,8 +11,7 @@ from earlyon import __version__ from earlyon.benchmarking import ( JetsonProfiler, - benchmark_backbone, - benchmark_wrapper, + benchmark_models, evaluate, ) from earlyon.core.thresholds import calibrate_thresholds, calibrate_thresholds_for_budget @@ -253,17 +252,26 @@ def calibrate( def benchmark( model_path: str, device: str, runs: int, warmup: int, input_size: int, json_out: str | None ) -> None: - """Throughput + latency benchmark, single-sample (batch=1).""" + """Throughput + latency benchmark, single-sample (batch=1). + + The wrapper and its raw backbone are measured on the exact same + fixed-seed noise samples with identical boundaries. Noise input is a + best-case bound (trained heads may fire spuriously); use the Python API + with a real loader for the honest input-distribution signal. + """ dev = _device(device) model = load_wrapper(model_path) shape = (1, 3, input_size, input_size) - wrap_r = benchmark_wrapper( - model, input_shape=shape, device=dev, num_warmup=warmup, num_runs=runs - ) - bb_r = benchmark_backbone( - model.backbone, input_shape=shape, device=dev, num_warmup=warmup, num_runs=runs + cmp_r = benchmark_models( + {"early_exit": model, "backbone": model.backbone}, + input_shape=shape, + device=dev, + num_warmup=warmup, + num_runs=runs, ) - speedup = wrap_r.throughput_ips / max(bb_r.throughput_ips, 1e-9) + wrap_r = cmp_r.results["early_exit"] + bb_r = cmp_r.results["backbone"] + speedup = cmp_r.speedup_vs("early_exit", "backbone") click.echo( json.dumps( { diff --git a/scripts/re_evaluate.py b/scripts/re_evaluate.py index 04f72b7..4d46c2f 100644 --- a/scripts/re_evaluate.py +++ b/scripts/re_evaluate.py @@ -1,12 +1,15 @@ -"""Re-evaluate already-trained checkpoints with fixed FLOPs accounting. +"""Re-evaluate already-trained checkpoints with the v0.3 fair benchmark runner. -Skips training; just runs test-eval + throughput bench and rewrites -docs/benchmarks.json with the corrected avg_computation_used. +Skips training; runs test-set evaluation plus a fair throughput comparison +(wrapper and backbone measured on the exact same sample sequence and +boundary) and writes records under the "runs" key of docs/benchmarks.json. + +Pre-v0.3 records are preserved under "legacy_v0_2" and are NOT comparable: +the old runner benchmarked the wrapper and backbone on different inputs. """ import json import sys -import time from pathlib import Path import torch @@ -14,20 +17,17 @@ ROOT = Path(__file__).resolve().parents[1] sys.path.insert(0, str(ROOT)) -from earlyon.benchmarking import ( - benchmark_backbone, - benchmark_wrapper, - benchmark_wrapper_on_loader, - evaluate, -) -from earlyon.utils import cifar10_loaders, load_wrapper +from earlyon.benchmarking import benchmark_models, evaluate # noqa: E402 +from earlyon.utils import cifar10_loaders, load_wrapper # noqa: E402 OUT_JSON = ROOT / "docs" / "benchmarks.json" +METHODOLOGY = "v0.3-fair-runner" -def main(): +def main() -> None: device = "cuda" if torch.cuda.is_available() else "cpu" - results = json.loads(OUT_JSON.read_text()) if OUT_JSON.exists() else {} + doc = json.loads(OUT_JSON.read_text()) if OUT_JSON.exists() else {} + runs = doc.setdefault("runs", {}) _, _, test_loader = cifar10_loaders(batch_size=1, num_workers=2) @@ -38,57 +38,56 @@ def main(): continue print(f"[{backbone}] loading {ckpt}") model = load_wrapper(ckpt) - print(f"[{backbone}] _flops_at = {model._flops_at}") - # test-set evaluation with FIXED flops print(f"[{backbone}] test eval", flush=True) report = evaluate(model, test_loader, device=device) - # throughput bench — noise input (legacy upper bound) - print(f"[{backbone}] throughput (noise)", flush=True) - shape = (1, 3, 224, 224) - wrap_r = benchmark_wrapper( - model, input_shape=shape, device=device, num_warmup=50, num_runs=300, - ) - bb_r = benchmark_backbone( - model.backbone, input_shape=shape, device=device, num_warmup=50, num_runs=300, + # fair comparison: identical real-input samples for wrapper AND backbone + print(f"[{backbone}] fair throughput (real input)", flush=True) + cmp_real = benchmark_models( + {"early_exit": model, "backbone": model.backbone}, + loader=test_loader, + device=device, + num_warmup=50, + num_runs=300, ) - speedup = wrap_r.throughput_ips / bb_r.throughput_ips - - # throughput bench — real CIFAR-10 test samples (honest signal) - print(f"[{backbone}] throughput (real input)", flush=True) - real_r = benchmark_wrapper_on_loader( - model, test_loader, device=device, num_warmup=50, num_runs=300, + # noise input: best-case bound, same samples for both models + print(f"[{backbone}] fair throughput (noise input)", flush=True) + cmp_noise = benchmark_models( + {"early_exit": model, "backbone": model.backbone}, + input_shape=(1, 3, 224, 224), + device=device, + num_warmup=50, + num_runs=300, ) - real_speedup = real_r.throughput_ips / bb_r.throughput_ips - # merge into existing record - existing = results.get(backbone, {}) - existing.update({ + runs[backbone] = { "backbone": backbone, "dataset": "cifar10", + "methodology": METHODOLOGY, "device": torch.cuda.get_device_name(0) if device == "cuda" else "cpu", "test_accuracy": round(report.overall_accuracy, 4), - "test_avg_computation_used": round(report.avg_computation_used, 4), + "test_avg_estimated_flops_fraction": round(report.avg_computation_used, 4), "test_exit_distribution": report.exit_distribution, - "throughput_backbone_ips": round(bb_r.throughput_ips, 1), - "throughput_wrapper_ips_noise_input": round(wrap_r.throughput_ips, 1), - "throughput_wrapper_ips_real_input": round(real_r.throughput_ips, 1), - "throughput_speedup_noise_input": round(speedup, 3), - "throughput_speedup_real_input": round(real_speedup, 3), - "latency_backbone_p50_ms": round(bb_r.latency_p50_ms, 3), - "latency_wrapper_p50_ms_noise_input": round(wrap_r.latency_p50_ms, 3), - "latency_wrapper_p50_ms_real_input": round(real_r.latency_p50_ms, 3), - "real_input_avg_computation_used": round(real_r.avg_computation_used, 4), - "real_input_exit_distribution": real_r.exit_distribution, - "note": "noise-input numbers are best-case (trained heads fire spuriously on noise); real-input numbers are the honest input-distribution signal", - }) - results[backbone] = existing - OUT_JSON.write_text(json.dumps(results, indent=2)) - print(f"[{backbone}] acc={report.overall_accuracy:.4f} " - f"avg_comp={report.avg_computation_used:.4f} " - f"real_speedup={real_speedup:.2f}x " - f"dist={report.exit_distribution}", flush=True) + "real_input": { + "early_exit": cmp_real.results["early_exit"].to_dict(), + "backbone": cmp_real.results["backbone"].to_dict(), + "speedup": round(cmp_real.speedup_vs("early_exit", "backbone"), 3), + }, + "noise_input": { + "early_exit": cmp_noise.results["early_exit"].to_dict(), + "backbone": cmp_noise.results["backbone"].to_dict(), + "speedup": round(cmp_noise.speedup_vs("early_exit", "backbone"), 3), + "note": "best-case bound: trained heads may fire spuriously on noise", + }, + } + OUT_JSON.write_text(json.dumps(doc, indent=2)) + print( + f"[{backbone}] acc={report.overall_accuracy:.4f} " + f"est_flops={report.avg_computation_used:.4f} " + f"real_speedup={cmp_real.speedup_vs('early_exit', 'backbone'):.2f}x", + flush=True, + ) print("all done") diff --git a/scripts/run_benchmarks.py b/scripts/run_benchmarks.py index b6e2cb1..6aca7a7 100644 --- a/scripts/run_benchmarks.py +++ b/scripts/run_benchmarks.py @@ -20,11 +20,13 @@ ROOT = Path(__file__).resolve().parents[1] sys.path.insert(0, str(ROOT)) -from earlyon.benchmarking import benchmark_backbone, benchmark_wrapper, evaluate +from earlyon.benchmarking import benchmark_models, evaluate from earlyon.core.thresholds import calibrate_thresholds from earlyon.training import stage1_train_backbone, stage2_train_exits from earlyon.utils import build_model, cifar10_loaders, save_wrapper +METHODOLOGY = "v0.3-fair-runner" + OUT_DIR = ROOT / "docs" OUT_DIR.mkdir(exist_ok=True) OUT_JSON = OUT_DIR / "benchmarks.json" @@ -102,36 +104,46 @@ def run_one(backbone: str) -> dict: flush=True, ) - print(f"{log_prefix} throughput (wrapper vs backbone)", flush=True) - shape = (1, 3, 224, 224) - wrap_r = benchmark_wrapper( - model, input_shape=shape, device=device, num_warmup=50, num_runs=300, + # fair comparison: identical samples + boundaries for wrapper and backbone. + # real-input numbers are the honest signal; noise input is a best-case bound. + print(f"{log_prefix} fair throughput (real input)", flush=True) + cmp_real = benchmark_models( + {"early_exit": model, "backbone": model.backbone}, + loader=test_loader, device=device, num_warmup=50, num_runs=300, ) - bb_r = benchmark_backbone( - model.backbone, input_shape=shape, device=device, num_warmup=50, num_runs=300, + print(f"{log_prefix} fair throughput (noise input)", flush=True) + cmp_noise = benchmark_models( + {"early_exit": model, "backbone": model.backbone}, + input_shape=(1, 3, 224, 224), device=device, num_warmup=50, num_runs=300, ) - speedup = wrap_r.throughput_ips / bb_r.throughput_ips save_wrapper(model, OUT_DIR / f"{backbone}_cifar10.pth") return { "backbone": backbone, "dataset": "cifar10", + "methodology": METHODOLOGY, "device": device_name(), "stage1_seconds": round(t_stage1, 1), "stage2_seconds": round(t_stage2, 1), "calibrate_seconds": round(t_calib, 1), "thresholds": calib.thresholds, + "enabled_exits": calib.enabled_exits, "baseline_accuracy_val": round(calib.baseline_accuracy, 4), "test_accuracy": round(report.overall_accuracy, 4), - "test_avg_computation_used": round(report.avg_computation_used, 4), + "test_avg_estimated_flops_fraction": round(report.avg_computation_used, 4), "test_exit_distribution": report.exit_distribution, - "throughput_backbone_ips": round(bb_r.throughput_ips, 1), - "throughput_wrapper_ips": round(wrap_r.throughput_ips, 1), - "speedup": round(speedup, 3), - "latency_backbone_p50_ms": round(bb_r.latency_p50_ms, 3), - "latency_wrapper_p50_ms": round(wrap_r.latency_p50_ms, 3), - "latency_wrapper_p95_ms": round(wrap_r.latency_p95_ms, 3), + "real_input": { + "early_exit": cmp_real.results["early_exit"].to_dict(), + "backbone": cmp_real.results["backbone"].to_dict(), + "speedup": round(cmp_real.speedup_vs("early_exit", "backbone"), 3), + }, + "noise_input": { + "early_exit": cmp_noise.results["early_exit"].to_dict(), + "backbone": cmp_noise.results["backbone"].to_dict(), + "speedup": round(cmp_noise.speedup_vs("early_exit", "backbone"), 3), + "note": "best-case bound: trained heads may fire spuriously on noise", + }, } @@ -140,12 +152,13 @@ def main(): parser.add_argument("backbones", nargs="*", default=list(PLAN.keys())) args = parser.parse_args() - results = {} + doc = {} if OUT_JSON.exists(): try: - results = json.loads(OUT_JSON.read_text()) + doc = json.loads(OUT_JSON.read_text()) except Exception: - results = {} + doc = {} + results = doc.setdefault("runs", {}) for backbone in args.backbones: if backbone not in PLAN: @@ -153,7 +166,7 @@ def main(): continue try: results[backbone] = run_one(backbone) - OUT_JSON.write_text(json.dumps(results, indent=2)) + OUT_JSON.write_text(json.dumps(doc, indent=2)) print(f"[{backbone}] DONE; wrote {OUT_JSON}", flush=True) except Exception as exc: print(f"[{backbone}] FAILED: {exc}", flush=True) diff --git a/tests/test_benchmarks.py b/tests/test_benchmarks.py index 76e6ac6..7901b70 100644 --- a/tests/test_benchmarks.py +++ b/tests/test_benchmarks.py @@ -132,3 +132,126 @@ def test_benchmark_wrapper_on_loader_cycles_loader_when_short(): r = benchmark_wrapper_on_loader(model, loader, device="cpu", num_warmup=2, num_runs=20) assert r.num_runs == 20 + + +# ---------------- fair comparison runner (v0.3) ---------------- + + +class _SpyModule(torch.nn.Module): + """Records every input it sees so tests can prove identical sample feeds.""" + + def __init__(self): + super().__init__() + self.seen = [] + self.linear = torch.nn.Linear(3 * 32 * 32, 10) + + def forward(self, x): + self.seen.append(x.detach().clone()) + return self.linear(x.flatten(1)) + + +def test_benchmark_models_feeds_identical_samples_to_every_model(): + from earlyon.benchmarking import benchmark_models + + a, b = _SpyModule(), _SpyModule() + benchmark_models({"a": a, "b": b}, input_shape=(1, 3, 32, 32), num_warmup=2, num_runs=5) + assert len(a.seen) == len(b.seen) == 7 + for xa, xb in zip(a.seen, b.seen): + assert torch.equal(xa, xb), "models must see the exact same sample sequence" + + +def test_benchmark_models_reports_accuracy_from_labelled_loader(): + from earlyon.benchmarking import benchmark_models + + torch.manual_seed(0) + model = _build(thresholds=(0.0, 0.0)) # always exits at e0 + images = torch.randn(16, 3, 32, 32) + labels = torch.randint(0, 10, (16,)) + loader = DataLoader(TensorDataset(images, labels), batch_size=1) + cmp = benchmark_models( + {"wrapper": model, "backbone": model.backbone}, + loader=loader, + num_warmup=2, + num_runs=8, + ) + for r in cmp.results.values(): + assert r.accuracy is not None and 0.0 <= r.accuracy <= 1.0 + assert r.num_labelled_samples == 8 + assert r.input_source == "loader" + assert cmp.results["wrapper"].exit_distribution == {"exit_0": 1.0} + assert cmp.results["backbone"].exit_distribution == {"final": 1.0} + assert cmp.speedup_vs("wrapper", "backbone") > 0 + + +def test_benchmark_result_carries_measurement_metadata(): + from earlyon.benchmarking import benchmark_models + + model = _build() + cmp = benchmark_models({"m": model}, input_shape=(1, 3, 32, 32), num_warmup=1, num_runs=3) + r = cmp.results["m"] + assert r.boundary == "model-only" + assert r.sync == "none" # cpu + assert r.batch_size == 1 + assert r.input_shape == (1, 3, 32, 32) + assert r.dtype == "torch.float32" + assert r.num_warmup == 1 + assert r.input_source == "random-noise" + assert r.accuracy is None + d = r.to_dict() + assert d["boundary"] == "model-only" + # deprecated alias still reads + assert r.avg_computation_used == r.avg_estimated_flops_fraction + + +def test_benchmark_models_end_to_end_boundary_is_labelled(): + from earlyon.benchmarking import benchmark_models + + model = _build() + cmp = benchmark_models( + {"m": model}, + input_shape=(1, 3, 32, 32), + num_warmup=1, + num_runs=3, + boundary="end-to-end", + ) + assert cmp.results["m"].boundary == "end-to-end" + + +def test_benchmark_models_validates_inputs(): + import pytest + + from earlyon.benchmarking import benchmark_models + + model = _build() + with pytest.raises(ValueError, match="num_warmup"): + benchmark_models({"m": model}, input_shape=(1, 3, 32, 32), num_warmup=-1) + with pytest.raises(ValueError, match="num_runs"): + benchmark_models({"m": model}, input_shape=(1, 3, 32, 32), num_runs=0) + with pytest.raises(ValueError, match="models"): + benchmark_models({}, input_shape=(1, 3, 32, 32)) + with pytest.raises(ValueError, match="loader or an input_shape"): + benchmark_models({"m": model}) + with pytest.raises(ValueError, match="boundary"): + benchmark_models( + {"m": model}, + input_shape=(1, 3, 32, 32), + num_warmup=0, + num_runs=1, + boundary="sideways", + ) + empty = DataLoader( + TensorDataset(torch.empty(0, 3, 32, 32), torch.empty(0, dtype=torch.long)), + batch_size=1, + ) + with pytest.raises(ValueError, match="non-empty"): + benchmark_models({"m": model}, loader=empty, num_warmup=0, num_runs=1) + + +def test_benchmark_models_noise_is_deterministic_per_seed(): + from earlyon.benchmarking import benchmark_models + + a, b = _SpyModule(), _SpyModule() + benchmark_models({"a": a}, input_shape=(1, 3, 32, 32), num_warmup=0, num_runs=3, seed=7) + benchmark_models({"b": b}, input_shape=(1, 3, 32, 32), num_warmup=0, num_runs=3, seed=7) + for xa, xb in zip(a.seen, b.seen): + assert torch.equal(xa, xb) From 5724afe4103873e281bfb9d428c18ec3663412a4 Mon Sep 17 00:00:00 2001 From: sohams25 <86193836+sohams25@users.noreply.github.com> Date: Wed, 22 Jul 2026 02:53:26 +0530 Subject: [PATCH 03/16] =?UTF-8?q?feat:=20honest=20compute=20accounting=20?= =?UTF-8?q?=E2=80=94=20lazy=20FLOPs=20estimate=20with=20provenance?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - estimate_layer_flops returns FlopsEstimate (fractions + method + reliable + notes + excludes_exit_heads); per_layer_flops kept as thin wrapper - reused/multi-call leaf modules are detected via a counting probe and produce a warned, low-confidence uniform fallback instead of a precise but wrong cumulative fraction - EarlyExitWrapper computes the estimate lazily on first inference (cached), so constructing large models (ViT) is fast; probe runs on the backbone's current device and is materialised before routing flags flip - estimator explicitly excludes exit-head FLOPs and routing overhead; documented on FlopsEstimate and InferenceResult --- earlyon/core/flops.py | 149 ++++++++++++++++++++++++++++++++++----- earlyon/core/wrappers.py | 41 +++++++++-- tests/test_flops.py | 91 ++++++++++++++++++++++++ 3 files changed, 258 insertions(+), 23 deletions(-) diff --git a/earlyon/core/flops.py b/earlyon/core/flops.py index 3858dc5..c8d00f7 100644 --- a/earlyon/core/flops.py +++ b/earlyon/core/flops.py @@ -1,44 +1,135 @@ -"""FLOPs accounting helpers. +"""Static FLOPs *estimation* helpers. -Uses fvcore for per-module flops. The non-trivial part is: when an exit point -is a nested module like ``features.3`` (MobileNetV2), we need to sum the flops -of every LEAF op executed before and including ``features.3`` in forward -order, without double-counting the container module. +What this module produces is an estimate, not a measurement. The estimator +(fvcore's ``FlopCountAnalysis``) statically attributes FLOPs per module; the +cumulative fraction at an exit layer is derived from module *registration +order* filtered to leaves, which matches execution order for straight-line +(sequential-style) backbones — the torchvision CNNs and ViT earlyon ships. + +Known limitations (all surfaced, none silent): + +* **Exit-head FLOPs are excluded.** Only the backbone is analysed; the small + exit heads (~10-100k params) and all routing overhead are not counted. +* **Reused modules break the ordering assumption.** If any leaf module runs + more than once in a forward pass (weight sharing, recursive blocks), a + cumulative "up to layer L" sum over registration order is not meaningful. + The probe detects this and returns a *low-confidence uniform estimate* + (``method="uniform-fallback"``, ``reliable=False``) with a warning, instead + of a precise-looking but wrong fraction. +* fvcore does not count some ops (e.g. scaled-dot-product attention matmuls), + so ViT fractions are a slight under-count; they remain monotone. + +The analysis costs one or two forward passes of the backbone, so callers +(``EarlyExitWrapper``) run it lazily on first use, not at construction. """ from __future__ import annotations import warnings +from dataclasses import dataclass, field from typing import Sequence import torch import torch.nn as nn +METHOD_FVCORE = "fvcore-leaf-walk" +METHOD_UNIFORM = "uniform-fallback" -def per_layer_flops( + +@dataclass(frozen=True) +class FlopsEstimate: + """Cumulative backbone-FLOPs fractions per exit layer, with provenance. + + ``fractions[layer]`` is (estimated FLOPs of everything executed up to and + including ``layer``) / (total estimated backbone FLOPs), in [0, 1]. + ``reliable`` is False when the estimator had to fall back to uniform + spacing (fvcore missing, zero total, or a reused/multi-call module that + invalidates the ordering assumption); treat those fractions as layout + placeholders, not compute estimates. + """ + + fractions: dict[str, float] + method: str + reliable: bool + notes: tuple[str, ...] = field(default_factory=tuple) + excludes_exit_heads: bool = True + + +def _uniform(layer_names: Sequence[str], note: str) -> FlopsEstimate: + n = len(layer_names) + return FlopsEstimate( + fractions={name: (i + 1) / (n + 1) for i, name in enumerate(layer_names)}, + method=METHOD_UNIFORM, + reliable=False, + notes=(note,), + ) + + +def _count_leaf_calls( + backbone: nn.Module, input_shape: tuple[int, int, int, int], device: str +) -> dict[str, int]: + """One dummy forward counting how many times each leaf module executes.""" + counts: dict[str, int] = {} + handles = [] + for name, mod in backbone.named_modules(): + if name and len(list(mod.children())) == 0: + counts[name] = 0 + + def _hook(_m: nn.Module, _i: object, _o: object, _name: str = name) -> None: + counts[_name] += 1 + + handles.append(mod.register_forward_hook(_hook)) + try: + with torch.no_grad(): + backbone(torch.zeros(input_shape, device=device)) + finally: + for h in handles: + h.remove() + return counts + + +def estimate_layer_flops( backbone: nn.Module, layer_names: Sequence[str], input_shape: tuple[int, int, int, int] = (1, 3, 224, 224), -) -> dict[str, float]: - """Return the cumulative FLOPs fraction at each named layer. + device: str = "cpu", +) -> FlopsEstimate: + """Estimate the cumulative FLOPs fraction at each named layer. - At layer L the value is (FLOPs of every leaf op executed up to and - including L) / (total backbone FLOPs). The result is monotonic in - forward order and bounded in [0, 1]. + ``device`` is where the probe input is created — it must match the + backbone's parameters (the wrapper passes its backbone's current device, + since the estimate is computed lazily and the model may have moved). + + See the module docstring for the estimator's assumptions and limitations. """ try: from fvcore.nn import FlopCountAnalysis except ImportError: - n = len(layer_names) - return {name: (i + 1) / (n + 1) for i, name in enumerate(layer_names)} + return _uniform(layer_names, "fvcore not installed; uniform spacing used") # eval() for a deterministic FLOPs probe, but restore the caller's mode: - # this runs inside EarlyExitWrapper.__init__, and silently leaving a - # training backbone in eval would freeze BatchNorm in a custom training loop. + # silently leaving a training backbone in eval would freeze BatchNorm in a + # custom training loop. was_training = backbone.training backbone.eval() try: - dummy = torch.zeros(input_shape) + # Reused-module detection: a leaf that executes more than once makes + # "cumulative FLOPs up to layer L in registration order" meaningless. + call_counts = _count_leaf_calls(backbone, input_shape, device) + reused = sorted(name for name, c in call_counts.items() if c > 1) + if reused: + shown = ", ".join(reused[:5]) + (", ..." if len(reused) > 5 else "") + warnings.warn( + f"backbone reuses module(s) [{shown}] within one forward pass; " + "per-layer cumulative FLOPs cannot be attributed reliably. " + "Falling back to a low-confidence uniform estimate " + "(FlopsEstimate.reliable=False).", + RuntimeWarning, + stacklevel=2, + ) + return _uniform(layer_names, f"reused modules invalidate ordering: {shown}") + + dummy = torch.zeros(input_shape, device=device) fca = FlopCountAnalysis(backbone, dummy) fca.unsupported_ops_warnings(False) fca.uncalled_modules_warnings(False) @@ -46,8 +137,7 @@ def per_layer_flops( by_module = fca.by_module() if total == 0: - n = len(layer_names) - return {name: (i + 1) / (n + 1) for i, name in enumerate(layer_names)} + return _uniform(layer_names, "estimator reported zero total FLOPs") # Forward order = order returned by named_modules. Filter to leaves only # (modules with no children) to avoid double-counting containers. @@ -82,6 +172,7 @@ def per_layer_flops( # The "end" of an exit at layer L is the last leaf whose name belongs to # L (equals L or is nested under it). Anything past that point hasn't run # yet when the exit fires. + notes: list[str] = [] cumulative: dict[str, float] = {} for layer in layer_names: last_idx = -1 @@ -93,6 +184,7 @@ def per_layer_flops( # uniform spacing for this entry n = len(layer_names) cumulative[layer] = (list(layer_names).index(layer) + 1) / (n + 1) + notes.append(f"layer {layer!r} has no leaves; uniform value used") continue running = sum(int(by_module.get(ordered_leaves[i], 0)) for i in range(last_idx + 1)) running += sum(flops for pos, flops in nonleaf_self if pos <= last_idx) @@ -107,8 +199,27 @@ def per_layer_flops( RuntimeWarning, stacklevel=2, ) + notes.append(f"overcount clamped at {layer!r}") cumulative[layer] = min(ratio, 1.0) - return cumulative + return FlopsEstimate( + fractions=cumulative, + method=METHOD_FVCORE, + reliable=not notes, + notes=tuple(notes), + ) finally: backbone.train(was_training) + + +def per_layer_flops( + backbone: nn.Module, + layer_names: Sequence[str], + input_shape: tuple[int, int, int, int] = (1, 3, 224, 224), +) -> dict[str, float]: + """Backward-compatible wrapper returning just the fraction mapping. + + Prefer :func:`estimate_layer_flops`, which also reports the method used + and whether the estimate is reliable. + """ + return estimate_layer_flops(backbone, layer_names, input_shape).fractions diff --git a/earlyon/core/wrappers.py b/earlyon/core/wrappers.py index 2f98761..7d1caa8 100644 --- a/earlyon/core/wrappers.py +++ b/earlyon/core/wrappers.py @@ -15,7 +15,7 @@ import torch import torch.nn as nn -from earlyon.core.flops import per_layer_flops +from earlyon.core.flops import FlopsEstimate, estimate_layer_flops from earlyon.core.types import FINAL_HEAD, EarlyExitConfig, InferenceResult if TYPE_CHECKING: @@ -114,9 +114,12 @@ def __init__( # ordered list of (exit_idx, exit_name, layer_name) self._exits = [(i, ep.name, ep.layer_name) for i, ep in enumerate(config.exit_points)] - # cumulative FLOPs fraction at each exit layer - layer_names = [ep.layer_name for ep in config.exit_points] - self._flops_at: dict[str, float] = per_layer_flops(backbone, layer_names, input_shape) + # cumulative estimated FLOPs fraction at each exit layer — computed + # LAZILY on first use (the analysis runs forward passes of the + # backbone; doing it here made construction of large models like ViT + # unacceptably slow). See `flops_estimate` / `_flops_at`. + self._input_shape = input_shape + self._flops_estimate: Optional["FlopsEstimate"] = None # per-thread caches: a single wrapper instance can be called from # multiple threads (DataParallel, inference servers). state lives in @@ -136,6 +139,34 @@ def __init__( # ---------------- public api ---------------- + @property + def flops_estimate(self) -> FlopsEstimate: + """The lazy per-exit FLOPs estimate, with estimator metadata. + + Computed on first access (one/two backbone forward passes) and cached. + Must be materialised *outside* an active routing pass: the analysis + runs the backbone directly, and the hooks stay no-ops only while this + thread's inference/training flags are unset — which is why the forward + paths call it before flipping those flags. + """ + if self._flops_estimate is None: + layer_names = [ep.layer_name for ep in self.config.exit_points] + # device-neutral probe: the analysis input is created on CPU, so + # run it against the backbone wherever it currently lives. + device = next(self.backbone.parameters(), torch.empty(0)).device + self._flops_estimate = estimate_layer_flops( + self.backbone, + layer_names, + self._input_shape, + device=str(device), + ) + return self._flops_estimate + + @property + def _flops_at(self) -> dict[str, float]: + """Cumulative estimated FLOPs fraction per exit layer (lazy).""" + return self.flops_estimate.fractions + def forward( self, x: torch.Tensor, mode: str = "inference" ) -> InferenceResult | list[torch.Tensor]: @@ -184,6 +215,7 @@ def forward_inference_batched(self, x: torch.Tensor) -> "BatchedInferenceResult" if x.size(0) < 1: raise ValueError("empty batch") + _ = self.flops_estimate # materialise BEFORE the routing flags flip self._init_tls() self._tls.inference_mode = True self._tls.batched_mode = True @@ -328,6 +360,7 @@ def _forward_training(self, x: torch.Tensor) -> list[torch.Tensor]: self._tls.in_training = False def _forward_inference(self, x: torch.Tensor) -> InferenceResult: + _ = self.flops_estimate # materialise BEFORE the routing flags flip self._init_tls() self._tls.inference_mode = True try: diff --git a/tests/test_flops.py b/tests/test_flops.py index b3993f9..b93c598 100644 --- a/tests/test_flops.py +++ b/tests/test_flops.py @@ -116,3 +116,94 @@ def test_uniform_fallback_for_layer_name_with_no_leaves(monkeypatch): backbone = _toy_backbone() result = per_layer_flops(backbone, ["nonexistent"], input_shape=(1, 3, 8, 8)) assert result["nonexistent"] == pytest.approx(1 / 2) + + +# ---------------- estimator metadata + reuse detection (v0.3) ---------------- + + +def test_estimate_layer_flops_reports_method_and_reliability(): + from earlyon.core.flops import METHOD_FVCORE, estimate_layer_flops + + backbone = _toy_backbone() + est = estimate_layer_flops(backbone, ["0", "1"], input_shape=(1, 3, 8, 8)) + assert est.method == METHOD_FVCORE + assert est.reliable is True + assert est.excludes_exit_heads is True + assert set(est.fractions) == {"0", "1"} + assert est.fractions["0"] <= est.fractions["1"] <= 1.0 + + +def test_reused_module_falls_back_to_low_confidence_uniform(): + """A backbone that calls the same leaf twice breaks the module-order + assumption; the estimator must warn and return reliable=False instead of a + precise-looking but wrong fraction.""" + + from earlyon.core.flops import METHOD_UNIFORM, estimate_layer_flops + + class Reuser(nn.Module): + def __init__(self): + super().__init__() + self.conv = nn.Conv2d(3, 3, 3, padding=1) + self.head = nn.Conv2d(3, 8, 3, padding=1) + + def forward(self, x): + x = self.conv(x) + x = self.conv(x) # same module twice + return self.head(x) + + backbone = Reuser() + with warnings.catch_warnings(record=True) as caught: + warnings.simplefilter("always") + est = estimate_layer_flops(backbone, ["conv"], input_shape=(1, 3, 8, 8)) + assert est.method == METHOD_UNIFORM + assert est.reliable is False + assert any("reuses module" in str(w.message) for w in caught) + + +def test_wrapper_flops_analysis_is_lazy(): + """Constructing a wrapper must NOT run the FLOPs analysis (it made ViT + construction unacceptably slow); the first inference materialises it.""" + from unittest.mock import patch + + import torch + + from earlyon.core.exit_head import EarlyExitHead + from earlyon.core.types import EarlyExitConfig, ExitPoint + from earlyon.core.wrappers import EarlyExitWrapper + from tests.fixtures.tiny_models import STAGE_CHANNELS, TinyBackbone + + with patch("earlyon.core.wrappers.estimate_layer_flops", autospec=True) as mocked: + from earlyon.core.flops import estimate_layer_flops as real + + mocked.side_effect = real + backbone = TinyBackbone(num_classes=10) + exits = [ExitPoint("e0", "stage1", STAGE_CHANNELS["stage1"])] + heads = {"e0": EarlyExitHead(STAGE_CHANNELS["stage1"], 10)} + cfg = EarlyExitConfig(backbone="tiny", num_classes=10, exit_points=exits) + wrapper = EarlyExitWrapper(backbone, heads, lambda t: t, cfg, input_shape=(1, 3, 32, 32)) + assert mocked.call_count == 0, "construction must not run the FLOPs analysis" + + wrapper.eval() + wrapper(torch.randn(1, 3, 32, 32), mode="inference") + assert mocked.call_count == 1 + + # cached: further inferences do not re-run the analysis + wrapper(torch.randn(1, 3, 32, 32), mode="inference") + assert mocked.call_count == 1 + + +def test_wrapper_exposes_flops_estimate_metadata(): + + from earlyon.core.exit_head import EarlyExitHead + from earlyon.core.types import EarlyExitConfig, ExitPoint + from earlyon.core.wrappers import EarlyExitWrapper + from tests.fixtures.tiny_models import STAGE_CHANNELS, TinyBackbone + + backbone = TinyBackbone(num_classes=10) + exits = [ExitPoint("e0", "stage1", STAGE_CHANNELS["stage1"])] + heads = {"e0": EarlyExitHead(STAGE_CHANNELS["stage1"], 10)} + cfg = EarlyExitConfig(backbone="tiny", num_classes=10, exit_points=exits) + wrapper = EarlyExitWrapper(backbone, heads, lambda t: t, cfg, input_shape=(1, 3, 32, 32)) + est = wrapper.flops_estimate + assert est.excludes_exit_heads is True + assert 0.0 < est.fractions["stage1"] <= 1.0 From c73254410d6b94ece79becf86725a70568c1e7ae Mon Sep 17 00:00:00 2001 From: sohams25 <86193836+sohams25@users.noreply.github.com> Date: Wed, 22 Jul 2026 02:55:58 +0530 Subject: [PATCH 04/16] fix: restartable tegrastats monitor, honest power/energy semantics - TegrastatsMonitor.start() clears the stale stop event and sample buffer (a restarted monitor previously collected nothing), no-ops on double start, degrades to unavailable on spawn failure, and stop() closes the child's stdout pipe - missing telemetry fields parse to None instead of invented zeros; JetsonRun documents its power as instantaneous - integrate_energy(): pure trapezoidal integration over the timed window; EnergySummary distinguishes instantaneous power, window-average power and integrated energy, and reports energy-per-inference only when a real integral and inference count exist - profiler exposes profile_with_energy; CLI profile reports the energy block and nulls for missing data; parser covers Orin-style rails --- earlyon/benchmarking/jetson_profiler.py | 217 ++++++++++++++++++++---- earlyon/cli.py | 24 ++- tests/test_jetson_profiler.py | 168 +++++++++++++++--- 3 files changed, 349 insertions(+), 60 deletions(-) diff --git a/earlyon/benchmarking/jetson_profiler.py b/earlyon/benchmarking/jetson_profiler.py index 998170b..eaedbcb 100644 --- a/earlyon/benchmarking/jetson_profiler.py +++ b/earlyon/benchmarking/jetson_profiler.py @@ -1,9 +1,20 @@ """NVIDIA Jetson power/temperature profiling via tegrastats. tegrastats blocks forever without an end condition, so we spawn it as a -background subprocess, read lines via threads, and tear it down explicitly. -On non-Jetson systems all profile calls return zeros so the rest of the -benchmark suite still runs. +background subprocess, read lines via a thread, and tear it down explicitly. +On non-Jetson systems all profile calls return empty telemetry (``None`` +fields) so the rest of the benchmark suite still runs — missing data is +reported as missing, never invented as zeros. + +Power/energy semantics (three distinct quantities, never conflated): + +* **instantaneous power** — one tegrastats sample (``JetsonSample.power_mw``, + ``JetsonRun.power_mw``): the module power at that sampling instant. +* **average power over a window** — the mean of the instantaneous samples + that fall inside a benchmark window (``EnergySummary.avg_power_mw``). +* **integrated energy** — the trapezoidal integral of instantaneous power + over the window (``EnergySummary.energy_mj``). Energy-per-inference is only + reported when this integral exists and the inference count is known. """ from __future__ import annotations @@ -24,21 +35,53 @@ @dataclass class JetsonSample: + """One parsed tegrastats line. ``None`` means the field was absent from + the line (formats differ across JetPack releases) — not zero.""" + timestamp: float - gpu_util_pct: float - temp_c: float - power_mw: float + gpu_util_pct: Optional[float] + temp_c: Optional[float] + power_mw: Optional[float] @dataclass class JetsonRun: + """Per-inference telemetry. Power/temp/util are the *latest instantaneous* + tegrastats sample at the time the inference finished — not an average and + not an energy; see :class:`EnergySummary` for integrated quantities.""" + latency_ms: float exit_taken: int confidence: float - computation_used: float - gpu_util_pct: float - temp_c: float - power_mw: float + estimated_backbone_flops_fraction: float + gpu_util_pct: Optional[float] + temp_c: Optional[float] + power_mw: Optional[float] + + @property + def computation_used(self) -> float: + """Deprecated alias for ``estimated_backbone_flops_fraction``.""" + return self.estimated_backbone_flops_fraction + + +@dataclass +class EnergySummary: + """Power/energy over one benchmark window. + + ``energy_mj`` is the trapezoidal integral of the instantaneous power + samples inside the window; it (and ``energy_per_inference_mj``) is + ``None`` when fewer than two power samples landed in the window — a + single sample cannot be integrated, and inventing a rectangle would be a + fabricated measurement. + """ + + num_inferences: int + window_seconds: float + sampling_interval_ms: int + num_power_samples: int + avg_power_mw: Optional[float] + energy_mj: Optional[float] + energy_per_inference_mj: Optional[float] _GR3D_RE = re.compile(r"GR3D_FREQ\s+(\d+)%") @@ -52,48 +95,121 @@ def _parse_line(line: str) -> JetsonSample: power = _POWER_RE.search(line) return JetsonSample( timestamp=time.monotonic(), - gpu_util_pct=float(gpu.group(1)) if gpu else 0.0, - temp_c=float(temp.group(1)) if temp else 0.0, - power_mw=float(power.group(1)) if power else 0.0, + gpu_util_pct=float(gpu.group(1)) if gpu else None, + temp_c=float(temp.group(1)) if temp else None, + power_mw=float(power.group(1)) if power else None, + ) + + +def integrate_energy( + samples: list[JetsonSample], + window_start: float, + window_end: float, + num_inferences: int, + sampling_interval_ms: int, +) -> EnergySummary: + """Integrate instantaneous power samples over a benchmark window. + + Pure function (unit-testable without hardware). Only samples with a + parsed power value that fall inside ``[window_start, window_end]`` are + used; trapezoidal integration over their timestamps yields millijoules. + """ + window_seconds = max(window_end - window_start, 0.0) + in_window = [ + s for s in samples if s.power_mw is not None and window_start <= s.timestamp <= window_end + ] + avg_power: Optional[float] = None + energy_mj: Optional[float] = None + per_inference: Optional[float] = None + if in_window: + powers = [s.power_mw for s in in_window if s.power_mw is not None] + avg_power = sum(powers) / len(powers) + if len(in_window) >= 2: + energy = 0.0 # mW * s == mJ + for a, b in zip(in_window, in_window[1:]): + assert a.power_mw is not None and b.power_mw is not None + energy += 0.5 * (a.power_mw + b.power_mw) * (b.timestamp - a.timestamp) + energy_mj = energy + if num_inferences > 0: + per_inference = energy / num_inferences + return EnergySummary( + num_inferences=num_inferences, + window_seconds=window_seconds, + sampling_interval_ms=sampling_interval_ms, + num_power_samples=len(in_window), + avg_power_mw=avg_power, + energy_mj=energy_mj, + energy_per_inference_mj=per_inference, ) class TegrastatsMonitor: - """Spawn tegrastats, parse the latest line on demand, terminate cleanly.""" + """Spawn tegrastats, parse lines in a reader thread, terminate cleanly. + + Reusable: ``start()`` after ``stop()`` begins a fresh session (the stop + event is cleared, the sample buffer is reset). A second ``start()`` while + running is a no-op rather than a duplicate process/thread. + """ - def __init__(self, interval_ms: int = 100, max_samples: int = 256) -> None: + def __init__(self, interval_ms: int = 100, max_samples: int = 4096) -> None: + if interval_ms <= 0: + raise ValueError(f"interval_ms must be > 0 (got {interval_ms})") + if max_samples <= 0: + raise ValueError(f"max_samples must be > 0 (got {max_samples})") self.interval_ms = interval_ms + self._max_samples = max_samples self._samples: deque[JetsonSample] = deque(maxlen=max_samples) self._proc: Optional[subprocess.Popen[str]] = None self._thread: Optional[threading.Thread] = None self._stop = threading.Event() self.available = shutil.which("tegrastats") is not None + @property + def running(self) -> bool: + return self._proc is not None + def start(self) -> None: - if not self.available: + if not self.available or self._proc is not None: + return + # a fresh session: clear the previous session's stop flag and samples. + # Without this, a restarted monitor's reader thread exited immediately + # (the stop event stayed set) and silently collected nothing. + self._stop.clear() + self._samples = deque(maxlen=self._max_samples) + try: + self._proc = subprocess.Popen( + ["tegrastats", "--interval", str(self.interval_ms)], + stdout=subprocess.PIPE, + stderr=subprocess.DEVNULL, + text=True, + bufsize=1, + ) + except OSError: + # binary disappeared or failed to spawn: degrade to unavailable + self._proc = None + self.available = False return - self._proc = subprocess.Popen( - ["tegrastats", "--interval", str(self.interval_ms)], - stdout=subprocess.PIPE, - stderr=subprocess.DEVNULL, - text=True, - bufsize=1, - ) self._thread = threading.Thread(target=self._reader, daemon=True) self._thread.start() def _reader(self) -> None: - assert self._proc is not None and self._proc.stdout is not None - for line in self._proc.stdout: + proc = self._proc + if proc is None or proc.stdout is None: + return + for line in proc.stdout: if self._stop.is_set(): break self._samples.append(_parse_line(line)) def latest(self) -> JetsonSample: if not self._samples: - return JetsonSample(time.monotonic(), 0.0, 0.0, 0.0) + return JetsonSample(time.monotonic(), None, None, None) return self._samples[-1] + def samples(self) -> list[JetsonSample]: + """Snapshot of the current session's samples.""" + return list(self._samples) + def stop(self) -> None: self._stop.set() if self._proc is not None: @@ -102,6 +218,9 @@ def stop(self) -> None: self._proc.wait(timeout=2) except subprocess.TimeoutExpired: self._proc.kill() + self._proc.wait(timeout=2) + if self._proc.stdout is not None: + self._proc.stdout.close() # join the reader so we don't drop a live thread holding the pipe if self._thread is not None: self._thread.join(timeout=1) @@ -113,12 +232,12 @@ class JetsonProfiler: """Profile a wrapper on Jetson and produce per-run telemetry. If tegrastats is not available (non-Jetson host), profiling still runs - but power/temp/util fields are zero. This keeps tests and CI usable on - a dev laptop. + but power/temp/util fields are ``None``. This keeps tests and CI usable + on a dev laptop without fabricating hardware numbers. """ - def __init__(self) -> None: - self.monitor = TegrastatsMonitor() + def __init__(self, interval_ms: int = 100) -> None: + self.monitor = TegrastatsMonitor(interval_ms=interval_ms) def profile( self, @@ -128,6 +247,29 @@ def profile( num_runs: int = 100, device: str = "cuda" if torch.cuda.is_available() else "cpu", ) -> list[JetsonRun]: + runs, _ = self.profile_with_energy( + model, input_shape=input_shape, num_warmup=num_warmup, num_runs=num_runs, device=device + ) + return runs + + def profile_with_energy( + self, + model: EarlyExitWrapper, + input_shape: tuple[int, int, int, int] = (1, 3, 224, 224), + num_warmup: int = 50, + num_runs: int = 100, + device: str = "cuda" if torch.cuda.is_available() else "cpu", + ) -> tuple[list[JetsonRun], EnergySummary]: + """Per-run telemetry plus power integrated over the timed window. + + The energy summary covers only the timed loop (warmup excluded) and + divides by the true inference count; on hosts without tegrastats it + reports zero samples and ``None`` energy. + """ + if num_warmup < 0: + raise ValueError(f"num_warmup must be >= 0 (got {num_warmup})") + if num_runs <= 0: + raise ValueError(f"num_runs must be > 0 (got {num_runs})") model = model.to(device).eval() dummy = torch.randn(input_shape, device=device) @@ -140,6 +282,7 @@ def profile( torch.cuda.synchronize() runs: list[JetsonRun] = [] + window_start = time.monotonic() with torch.no_grad(): for _ in range(num_runs): t0 = time.perf_counter() @@ -153,12 +296,22 @@ def profile( latency_ms=latency * 1000, exit_taken=result.exit_taken, confidence=result.confidence, - computation_used=result.computation_used, + estimated_backbone_flops_fraction=( + result.estimated_backbone_flops_fraction + ), gpu_util_pct=sample.gpu_util_pct, temp_c=sample.temp_c, power_mw=sample.power_mw, ) ) - return runs + window_end = time.monotonic() + summary = integrate_energy( + self.monitor.samples(), + window_start, + window_end, + num_inferences=num_runs, + sampling_interval_ms=self.monitor.interval_ms, + ) + return runs, summary finally: self.monitor.stop() diff --git a/earlyon/cli.py b/earlyon/cli.py index b58a899..5729b24 100644 --- a/earlyon/cli.py +++ b/earlyon/cli.py @@ -303,11 +303,16 @@ def benchmark( @click.option("--input-size", default=224, type=int) @click.option("--device", default="auto") def profile(model_path: str, runs: int, warmup: int, input_size: int, device: str) -> None: - """Jetson profile — reads tegrastats when available.""" + """Jetson profile — reads tegrastats when available. + + Reports instantaneous-power medians and, separately, integrated energy + over the timed window. Missing telemetry (non-Jetson host) is reported as + null, never as zero. + """ dev = _device(device) model = load_wrapper(model_path) profiler = JetsonProfiler() - runs_out = profiler.profile( + runs_out, energy = profiler.profile_with_energy( model, input_shape=(1, 3, input_size, input_size), num_warmup=warmup, @@ -317,15 +322,22 @@ def profile(model_path: str, runs: int, warmup: int, input_size: int, device: st import statistics lat = [r.latency_ms for r in runs_out] - power = [r.power_mw for r in runs_out] - temp = [r.temp_c for r in runs_out] + power = [r.power_mw for r in runs_out if r.power_mw is not None] + temp = [r.temp_c for r in runs_out if r.temp_c is not None] click.echo( json.dumps( { "runs": len(runs_out), "latency_median_ms": statistics.median(lat), - "power_median_mw": statistics.median(power), - "temp_median_c": statistics.median(temp), + "instantaneous_power_median_mw": statistics.median(power) if power else None, + "temp_median_c": statistics.median(temp) if temp else None, + "energy": { + "window_seconds": energy.window_seconds, + "num_power_samples": energy.num_power_samples, + "avg_power_mw": energy.avg_power_mw, + "energy_mj": energy.energy_mj, + "energy_per_inference_mj": energy.energy_per_inference_mj, + }, "tegrastats_available": profiler.monitor.available, }, indent=2, diff --git a/tests/test_jetson_profiler.py b/tests/test_jetson_profiler.py index 0bf8a4f..58f3a5a 100644 --- a/tests/test_jetson_profiler.py +++ b/tests/test_jetson_profiler.py @@ -1,11 +1,18 @@ """Jetson profiler tests. These run on a non-Jetson host: tegrastats is -absent so power/temp fields will be zero, but the harness must still execute -end-to-end.""" +absent so power/temp fields are None (missing, not invented), but the +harness must still execute end-to-end. Parser, lifecycle, and energy +integration are tested without any hardware.""" + +import time + +import pytest from earlyon.benchmarking.jetson_profiler import ( JetsonProfiler, + JetsonSample, TegrastatsMonitor, _parse_line, + integrate_energy, ) from earlyon.core.exit_head import EarlyExitHead from earlyon.core.types import EarlyExitConfig, ExitPoint @@ -17,6 +24,22 @@ "GR3D_FREQ 75% GR3D2_FREQ 0% tj@42.5C VDD_IN 4500 VDD_CPU_GPU_CV 1200" ) +# Orin-style format variant: different power rail name, PLL temp +ORIN_LINE = "RAM 2000/16000MB GR3D_FREQ 12% pll@38C VDD_GPU 800" + + +def _wrapper(): + backbone = TinyBackbone(num_classes=10) + exits = [ExitPoint("e0", "stage1", STAGE_CHANNELS["stage1"])] + heads = {ep.name: EarlyExitHead(ep.in_channels, 10) for ep in exits} + cfg = EarlyExitConfig( + backbone="tiny", + num_classes=10, + exit_points=exits, + confidence_thresholds=[0.8], + ) + return EarlyExitWrapper(backbone, heads, lambda x: x, cfg, input_shape=(1, 3, 32, 32)) + def test_parse_line_extracts_gpu_temp_power(): s = _parse_line(SAMPLE_LINE) @@ -25,41 +48,142 @@ def test_parse_line_extracts_gpu_temp_power(): assert s.power_mw == 4500.0 -def test_parse_line_missing_fields_returns_zero(): +def test_parse_line_orin_variant(): + s = _parse_line(ORIN_LINE) + assert s.gpu_util_pct == 12.0 + assert s.temp_c == 38.0 + assert s.power_mw == 800.0 + + +def test_parse_line_missing_fields_are_none_not_zero(): + """A line without a field must report None — 0 mW is a real (wrong) + measurement, None is honestly missing.""" s = _parse_line("nothing useful here") - assert s.gpu_util_pct == 0.0 - assert s.temp_c == 0.0 - assert s.power_mw == 0.0 + assert s.gpu_util_pct is None + assert s.temp_c is None + assert s.power_mw is None def test_monitor_safe_to_start_stop_without_tegrastats(): """On a host without tegrastats the monitor must not crash.""" m = TegrastatsMonitor() - # We don't know the host; just ensure the lifecycle works regardless. m.start() sample = m.latest() - assert sample.gpu_util_pct >= 0.0 + assert sample.timestamp > 0 + m.stop() + + +def test_monitor_is_restartable(): + """Regression: stop() set a threading.Event that start() never cleared, so + a restarted monitor's reader thread exited immediately and silently + collected nothing. A stop/start cycle must yield a working session.""" + m = TegrastatsMonitor() + m.start() + m.stop() + assert not m._stop.is_set() or not m.available # unavailable hosts no-op + m.start() + if m.available: + assert m.running + assert not m._stop.is_set() m.stop() + assert m._proc is None and m._thread is None + + +def test_monitor_double_start_is_noop_not_duplicate(): + m = TegrastatsMonitor() + m.start() + proc = m._proc + m.start() # must not spawn a second process/thread + assert m._proc is proc + m.stop() + + +def test_monitor_validates_arguments(): + with pytest.raises(ValueError, match="interval_ms"): + TegrastatsMonitor(interval_ms=0) + with pytest.raises(ValueError, match="max_samples"): + TegrastatsMonitor(max_samples=0) def test_profiler_runs_on_cpu_without_tegrastats(): - backbone = TinyBackbone(num_classes=10) - exits = [ExitPoint("e0", "stage1", STAGE_CHANNELS["stage1"])] - heads = {ep.name: EarlyExitHead(ep.in_channels, 10) for ep in exits} - cfg = EarlyExitConfig( - backbone="tiny", - num_classes=10, - exit_points=exits, - confidence_thresholds=[0.8], - ) - wrapper = EarlyExitWrapper(backbone, heads, lambda x: x, cfg, input_shape=(1, 3, 32, 32)) profiler = JetsonProfiler() runs = profiler.profile( - wrapper, input_shape=(1, 3, 32, 32), num_warmup=2, num_runs=5, device="cpu" + _wrapper(), input_shape=(1, 3, 32, 32), num_warmup=2, num_runs=5, device="cpu" ) assert len(runs) == 5 for r in runs: assert r.latency_ms > 0 - assert r.gpu_util_pct >= 0.0 - assert r.temp_c >= 0.0 - assert r.power_mw >= 0.0 + # no tegrastats on this host -> telemetry is missing, not zero + if not profiler.monitor.available: + assert r.gpu_util_pct is None + assert r.power_mw is None + + +def test_profiler_reports_energy_summary_without_fabrication(): + profiler = JetsonProfiler() + runs, summary = profiler.profile_with_energy( + _wrapper(), input_shape=(1, 3, 32, 32), num_warmup=1, num_runs=4, device="cpu" + ) + assert len(runs) == 4 + assert summary.num_inferences == 4 + assert summary.window_seconds > 0 + if not profiler.monitor.available: + assert summary.num_power_samples == 0 + assert summary.avg_power_mw is None + assert summary.energy_mj is None + assert summary.energy_per_inference_mj is None + + +def test_profiler_validates_arguments(): + profiler = JetsonProfiler() + with pytest.raises(ValueError, match="num_runs"): + profiler.profile(_wrapper(), input_shape=(1, 3, 32, 32), num_runs=0, device="cpu") + with pytest.raises(ValueError, match="num_warmup"): + profiler.profile(_wrapper(), input_shape=(1, 3, 32, 32), num_warmup=-1, device="cpu") + + +# ---------------- energy integration (pure, no hardware) ---------------- + + +def _sample(t: float, mw: float | None) -> JetsonSample: + return JetsonSample(timestamp=t, gpu_util_pct=None, temp_c=None, power_mw=mw) + + +def test_integrate_energy_trapezoid(): + # constant 1000 mW over 2 s -> 2000 mJ; 10 inferences -> 200 mJ each + samples = [_sample(10.0, 1000.0), _sample(11.0, 1000.0), _sample(12.0, 1000.0)] + s = integrate_energy(samples, 10.0, 12.0, num_inferences=10, sampling_interval_ms=1000) + assert s.num_power_samples == 3 + assert s.avg_power_mw == 1000.0 + assert s.energy_mj == pytest.approx(2000.0) + assert s.energy_per_inference_mj == pytest.approx(200.0) + assert s.window_seconds == pytest.approx(2.0) + + +def test_integrate_energy_single_sample_yields_no_energy(): + """One instantaneous sample cannot be integrated; avg power is reported, + energy is honestly None.""" + s = integrate_energy([_sample(10.0, 500.0)], 9.0, 11.0, 5, 100) + assert s.avg_power_mw == 500.0 + assert s.energy_mj is None + assert s.energy_per_inference_mj is None + + +def test_integrate_energy_ignores_samples_outside_window_and_missing_power(): + samples = [ + _sample(5.0, 9999.0), # before window + _sample(10.0, 1000.0), + _sample(10.5, None), # power missing on this line + _sample(11.0, 1000.0), + _sample(20.0, 9999.0), # after window + ] + s = integrate_energy(samples, 10.0, 11.0, 2, 500) + assert s.num_power_samples == 2 + assert s.energy_mj == pytest.approx(1000.0) # 1000 mW * 1 s + assert s.energy_per_inference_mj == pytest.approx(500.0) + + +def test_integrate_energy_no_samples(): + s = integrate_energy([], time.monotonic(), time.monotonic() + 1, 3, 100) + assert s.num_power_samples == 0 + assert s.avg_power_mw is None and s.energy_mj is None From 7b84818aad910f5e0d26b71737b3dd6833f2a868 Mon Sep 17 00:00:00 2001 From: sohams25 <86193836+sohams25@users.noreply.github.com> Date: Wed, 22 Jul 2026 03:00:08 +0530 Subject: [PATCH 05/16] feat: safer, more capable custom_ee - example_args/example_kwargs for the inspection forward (single-tensor path retained); dry-run tensors created on the backbone's own device (or an explicit device) instead of blindly probing a CUDA model with CPU input - per-layer feature_extractors convert tuple/dict/odd-rank outputs into the Tensor the exit head consumes, applied in the dry run AND in the routing hook (wrapper feature_adapters) - the dry run now validates each exit layer executes exactly once and in the listed forward order; reused, missing or out-of-order exits fail with actionable errors instead of building a mis-routing wrapper - freshly built exit heads placed on the backbone's device; wrapper FLOPs estimate degrades to a warned low-confidence uniform fallback when the probe cannot run the backbone --- earlyon/core/wrappers.py | 49 ++++++++-- earlyon/models/custom.py | 189 ++++++++++++++++++++++++++++++--------- tests/test_custom_ee.py | 153 +++++++++++++++++++++++++++++++ 3 files changed, 339 insertions(+), 52 deletions(-) diff --git a/earlyon/core/wrappers.py b/earlyon/core/wrappers.py index 7d1caa8..e0f422f 100644 --- a/earlyon/core/wrappers.py +++ b/earlyon/core/wrappers.py @@ -10,6 +10,7 @@ import math import threading +import warnings from typing import TYPE_CHECKING, Any, Callable, Iterator, Mapping, Optional import torch @@ -94,6 +95,7 @@ def __init__( final_classifier: Callable[[torch.Tensor], torch.Tensor], config: EarlyExitConfig, input_shape: tuple[int, int, int, int] = (1, 3, 224, 224), + feature_adapters: Optional[Mapping[str, Callable[[Any], torch.Tensor]]] = None, ) -> None: super().__init__() self.backbone = backbone @@ -110,6 +112,17 @@ def __init__( f"missing: {missing_heads}, unexpected: {extra_heads}" ) self.config = config + # optional per-exit callables mapping a layer's raw output (tuple / + # dict / token tensor / ...) to the Tensor its head consumes. Keyed by + # exit name; NOT part of the state_dict — factories must rebuild them. + unknown_adapters = [ + n for n in (feature_adapters or {}) if all(ep.name != n for ep in config.exit_points) + ] + if unknown_adapters: + raise ValueError(f"feature_adapters keyed by unknown exit name(s): {unknown_adapters}") + self._feature_adapters: dict[str, Callable[[Any], torch.Tensor]] = dict( + feature_adapters or {} + ) # ordered list of (exit_idx, exit_name, layer_name) self._exits = [(i, ep.name, ep.layer_name) for i, ep in enumerate(config.exit_points)] @@ -151,15 +164,31 @@ def flops_estimate(self) -> FlopsEstimate: """ if self._flops_estimate is None: layer_names = [ep.layer_name for ep in self.config.exit_points] - # device-neutral probe: the analysis input is created on CPU, so - # run it against the backbone wherever it currently lives. + # the probe input follows the backbone wherever it currently lives device = next(self.backbone.parameters(), torch.empty(0)).device - self._flops_estimate = estimate_layer_flops( - self.backbone, - layer_names, - self._input_shape, - device=str(device), - ) + try: + self._flops_estimate = estimate_layer_flops( + self.backbone, + layer_names, + self._input_shape, + device=str(device), + ) + except Exception as exc: # backbone can't run from zeros(input_shape) + from earlyon.core.flops import METHOD_UNIFORM + + warnings.warn( + f"FLOPs analysis failed ({type(exc).__name__}: {exc}); using a " + "low-confidence uniform estimate (FlopsEstimate.reliable=False)", + RuntimeWarning, + stacklevel=2, + ) + n = len(layer_names) + self._flops_estimate = FlopsEstimate( + fractions={nm: (i + 1) / (n + 1) for i, nm in enumerate(layer_names)}, + method=METHOD_UNIFORM, + reliable=False, + notes=(f"analysis failed: {type(exc).__name__}",), + ) return self._flops_estimate @property @@ -294,8 +323,10 @@ def hook(module: nn.Module, inputs: Any, output: torch.Tensor) -> torch.Tensor: if not in_training and not self.config.enabled_exits[exit_idx]: return output + adapter = self._feature_adapters.get(exit_name) + features = adapter(output) if adapter is not None else output head = self.exit_heads[exit_name] - logits = head(output) + logits = head(features) if in_training: getattr(self._tls, "training_outputs", []).append(logits) return output diff --git a/earlyon/models/custom.py b/earlyon/models/custom.py index b4a72fe..de65798 100644 --- a/earlyon/models/custom.py +++ b/earlyon/models/custom.py @@ -4,17 +4,27 @@ hooks, so callers don't hand-specify channel counts. This is the ``earlyon.models`` entry point for arbitrary user-provided backbones. -Custom-wrapped models are NOT round-trippable through ``save_wrapper`` / -``load_wrapper`` (``build_model`` cannot reconstruct an arbitrary backbone from a -string); ``build_model`` raises a clear error for ``backbone="custom"``. If you -save/load the ``state_dict`` yourself, rebuild the heads with the same -``pool_tokens`` you trained with — it is not stored in the weights, and a -mismatch loads silently while changing how 3D token features are pooled. +The dry run also *validates* the wrapping: every requested exit layer must +execute exactly once, in the order the caller listed them — a reused layer +or an out-of-order exit list would silently mis-route at inference, so both +fail loudly here instead. + +Runtime contract: the wrapper's inference/training paths call +``backbone(x)`` with a single tensor. ``example_args``/``example_kwargs`` +configure the *inspection* forward only — use them when the backbone needs +extra arguments that have defaults at runtime, or a non-default example +tensor. The example (or ``input_shape``) tensor is created on the backbone's +own device unless ``device`` says otherwise. + +Custom-wrapped models are reloadable only via a user-provided factory: +``load_wrapper(path, factory=lambda: custom_ee(...))`` with the same +structure (including ``pool_tokens`` and any ``feature_extractors`` — neither +is stored in the weights). """ from __future__ import annotations -from typing import Callable, Sequence +from typing import Any, Callable, Mapping, Sequence import torch import torch.nn as nn @@ -24,38 +34,73 @@ from earlyon.core.wrappers import EarlyExitWrapper from earlyon.models._common import identity +FeatureExtractor = Callable[[Any], torch.Tensor] + + +def _infer_backbone_device(backbone: nn.Module) -> torch.device: + for p in backbone.parameters(): + return p.device + for b in backbone.buffers(): + return b.device + return torch.device("cpu") + -def _infer_feature_widths( +def _to_device(obj: Any, device: torch.device) -> Any: + if isinstance(obj, torch.Tensor): + return obj.to(device) + return obj + + +class _DryRunReport: + def __init__(self) -> None: + self.widths: dict[str, int] = {} + self.execution_order: list[str] = [] + self.call_counts: dict[str, int] = {} + + +def _dry_run( backbone: nn.Module, layer_names: Sequence[str], - input_shape: tuple[int, int, int, int], -) -> dict[str, int]: - """Run one no-grad dry-run forward with temporary hooks to record each exit - layer's feature width (``C`` for 4D output, ``D`` for 3D/2D). - - Raises ``ValueError`` if a layer produces a non-Tensor or unsupported rank, - ``RuntimeError`` if a layer is never visited during the forward pass, and - ``ValueError`` naming the available layers for an unresolvable layer name. - Restores the backbone's prior train/eval mode on exit. + example_args: tuple[Any, ...], + example_kwargs: dict[str, Any], + extractors: Mapping[str, FeatureExtractor], +) -> _DryRunReport: + """One no-grad forward with temporary hooks: infer each exit layer's + feature width, record execution order and per-layer call counts. + + Raises ``ValueError`` for an unresolvable layer name, a non-Tensor output + without an extractor, or an unsupported rank; ``RuntimeError`` for layers + never visited, visited more than once, or visited out of order. Restores + the backbone's prior train/eval mode on exit. """ - widths: dict[str, int] = {} + report = _DryRunReport() handles: list[torch.utils.hooks.RemovableHandle] = [] def _make_probe(name: str) -> Callable[[nn.Module, object, object], None]: def hook(module: nn.Module, inputs: object, output: object) -> None: - if not isinstance(output, torch.Tensor): + report.call_counts[name] = report.call_counts.get(name, 0) + 1 + report.execution_order.append(name) + extractor = extractors.get(name) + features = extractor(output) if extractor is not None else output + if not isinstance(features, torch.Tensor): + hint = ( + "its feature_extractors entry must return a Tensor" + if extractor is not None + else "pass feature_extractors={name: fn} to convert it to a Tensor" + ) raise ValueError( - f"exit layer {name!r} produced {type(output).__name__}, not a " - "Tensor — custom_ee cannot auto-infer its feature width" + f"exit layer {name!r} produced {type(features).__name__}, not a " + f"Tensor — {hint}" ) - if output.dim() == 4: - widths[name] = output.shape[1] # (B, C, H, W) -> C - elif output.dim() in (2, 3): - widths[name] = output.shape[-1] # (B, D) / (B, N, D) -> D + if features.dim() == 4: + report.widths[name] = features.shape[1] # (B, C, H, W) -> C + elif features.dim() in (2, 3): + report.widths[name] = features.shape[-1] # (B, D) / (B, N, D) -> D else: raise ValueError( - f"exit layer {name!r} output has unsupported rank {output.dim()} " - f"(shape {tuple(output.shape)}); supported: 2D, 3D, or 4D" + f"exit layer {name!r} features have unsupported rank {features.dim()} " + f"(shape {tuple(features.shape)}); supported: 2D, 3D, or 4D. " + "Use feature_extractors to reshape." ) return hook @@ -75,19 +120,32 @@ def hook(module: nn.Module, inputs: object, output: object) -> None: backbone.eval() try: with torch.no_grad(): - backbone(torch.zeros(input_shape)) + backbone(*example_args, **example_kwargs) finally: for handle in handles: handle.remove() backbone.train(was_training) - missing = [name for name in layer_names if name not in widths] + missing = [name for name in layer_names if name not in report.widths] if missing: raise RuntimeError( f"dry-run forward never visited exit layers {missing}; verify they are " - f"reachable for input_shape={input_shape}" + "reachable for the example input" + ) + reused = [name for name, c in report.call_counts.items() if c > 1] + if reused: + raise RuntimeError( + f"exit layer(s) {reused} execute more than once per forward pass " + "(module reuse); early-exit routing at a reused layer is ambiguous " + "and unsupported" + ) + if report.execution_order != list(layer_names): + raise RuntimeError( + f"exit_layers must be listed in forward-execution order; the dry run " + f"observed {report.execution_order} but you passed {list(layer_names)}. " + "Routing short-circuits at the first confident exit, so order matters." ) - return widths + return report def custom_ee( @@ -96,6 +154,10 @@ def custom_ee( num_classes: int, *, input_shape: tuple[int, int, int, int] = (1, 3, 224, 224), + example_args: tuple[Any, ...] | None = None, + example_kwargs: dict[str, Any] | None = None, + device: str | torch.device | None = None, + feature_extractors: Mapping[str, FeatureExtractor] | None = None, hidden_dim: int = 128, dropout: float = 0.2, pool_tokens: str = "mean", @@ -104,26 +166,39 @@ def custom_ee( ) -> EarlyExitWrapper: """Wrap any ``nn.Module`` with early exits at the named submodules. - Feature widths are auto-inferred from a single dry-run forward, so you only - name the layers. ``exit_layers`` order is the exit order — the names must be - in forward-execution order (``exit_layers[0]`` runs first), since routing - short-circuits at the first confident exit. + Feature widths are auto-inferred from a single dry-run forward, which also + validates that each exit layer runs exactly once and in the listed order. The caller is responsible for making ``backbone(x)`` return - ``(B, num_classes)`` logits (e.g. replace the backbone's final head before - wrapping); ``final_classifier`` is identity. + ``(B, num_classes)`` logits at runtime (e.g. replace the backbone's final + head before wrapping); ``final_classifier`` is identity. Parameters ---------- backbone: - Any ``nn.Module`` callable on ``input_shape``-shaped input. + Any ``nn.Module``. The dry run calls it on the example input; at + runtime the wrapper calls ``backbone(x)`` with a single tensor. exit_layers: Dotted submodule names resolvable via ``backbone.get_submodule``, in - forward order. + forward-execution order (validated by the dry run). num_classes: Output classes for every exit head. input_shape: - Shape for the dry-run forward and FLOPs accounting. + Shape for the default dry-run tensor and the FLOPs estimate. Ignored + for the dry run when ``example_args`` is given. + example_args / example_kwargs: + Explicit example inputs for the dry run — for backbones needing more + than ``zeros(input_shape)`` (extra positional/keyword arguments with + runtime defaults, integer token ids, ...). Tensors are moved to the + inspection device. + device: + Where to run the dry run. Default: the backbone's own parameter + device — a CUDA model is no longer probed with a CPU tensor. + feature_extractors: + Optional per-*layer-name* callables converting a layer's raw output + (tuple, dict, unusual rank) into the 2D/3D/4D Tensor its exit head + consumes. Also applied at inference; not serialized — rebuild them in + your ``load_wrapper`` factory. pool_tokens: For 3D token features, ``"mean"`` (default, architecture-agnostic) or ``"cls"`` (token 0). Ignored for 4D conv features. @@ -135,8 +210,26 @@ def custom_ee( if len(exit_layers) == 0: raise ValueError("exit_layers must be non-empty") - widths = _infer_feature_widths(backbone, exit_layers, input_shape) - exit_points = [ExitPoint(f"e{i}", name, widths[name]) for i, name in enumerate(exit_layers)] + run_device = torch.device(device) if device is not None else _infer_backbone_device(backbone) + if example_args is None and example_kwargs: + raise ValueError("example_kwargs requires example_args (may be an empty tuple)") + if example_args is None: + example_args = (torch.zeros(input_shape, device=run_device),) + example_kwargs = {} + else: + example_args = tuple(_to_device(a, run_device) for a in example_args) + example_kwargs = {k: _to_device(v, run_device) for k, v in (example_kwargs or {}).items()} + + extractors = dict(feature_extractors or {}) + unknown = [k for k in extractors if k not in set(exit_layers)] + if unknown: + raise ValueError(f"feature_extractors keyed by unknown exit layer(s): {unknown}") + + report = _dry_run(backbone, exit_layers, example_args, example_kwargs, extractors) + + exit_points = [ + ExitPoint(f"e{i}", name, report.widths[name]) for i, name in enumerate(exit_layers) + ] heads: dict[str, nn.Module] = { ep.name: EarlyExitHead( ep.in_channels, @@ -154,4 +247,14 @@ def custom_ee( confidence_thresholds=list(confidence_thresholds) if confidence_thresholds else [], routing_policy=routing_policy, ) - return EarlyExitWrapper(backbone, heads, identity, cfg, input_shape=input_shape) + # feature extractors are keyed by layer name for the user; the wrapper + # keys adapters by exit name. + adapters = { + ep.name: extractors[ep.layer_name] for ep in exit_points if ep.layer_name in extractors + } + wrapper = EarlyExitWrapper( + backbone, heads, identity, cfg, input_shape=input_shape, feature_adapters=adapters + ) + # the fresh exit heads must live where the backbone lives, or a wrapped + # CUDA model fails at the first routed inference with a device mismatch + return wrapper.to(run_device) diff --git a/tests/test_custom_ee.py b/tests/test_custom_ee.py index 7bde6e7..b5a89e9 100644 --- a/tests/test_custom_ee.py +++ b/tests/test_custom_ee.py @@ -146,3 +146,156 @@ def test_custom_ee_bad_layer_name_raises_value_error_listing_layers(): backbone = TinyBackbone(num_classes=10) with pytest.raises(ValueError, match="stage1"): custom_ee(backbone, ["stage_one_typo"], num_classes=10, input_shape=(1, 3, 32, 32)) + + +# ---------------- v0.3 interface: examples, devices, adapters, validation ---------------- + + +class _KwargBackbone(torch.nn.Module): + """Backbone whose forward takes an extra kwarg with a runtime default.""" + + def __init__(self, num_classes=10): + super().__init__() + self.stem = torch.nn.Conv2d(3, 8, 3, padding=1) + self.head = torch.nn.Linear(8, num_classes) + + def forward(self, x, scale: float = 1.0): + f = self.stem(x) * scale + return self.head(f.mean(dim=(2, 3))) + + +class _TupleOutputBackbone(torch.nn.Module): + """The exit layer emits a (features, aux) tuple — needs an extractor.""" + + def __init__(self, num_classes=10): + super().__init__() + self.block = _TupleBlock() + self.head = torch.nn.Linear(8, num_classes) + + def forward(self, x): + f, _aux = self.block(x) + return self.head(f.mean(dim=(2, 3))) + + +class _TupleBlock(torch.nn.Module): + def __init__(self): + super().__init__() + self.conv = torch.nn.Conv2d(3, 8, 3, padding=1) + + def forward(self, x): + f = self.conv(x) + return f, {"aux": f.sum()} + + +class _ReusedLayerBackbone(torch.nn.Module): + def __init__(self, num_classes=10): + super().__init__() + self.conv = torch.nn.Conv2d(3, 3, 3, padding=1) + self.head = torch.nn.Linear(3, num_classes) + + def forward(self, x): + x = self.conv(x) + x = self.conv(x) # same module twice + return self.head(x.mean(dim=(2, 3))) + + +def test_custom_ee_accepts_example_args_and_kwargs(): + backbone = _KwargBackbone() + model = custom_ee( + backbone, + exit_layers=["stem"], + num_classes=10, + input_shape=(1, 3, 16, 16), + example_args=(torch.zeros(1, 3, 16, 16),), + example_kwargs={"scale": 2.0}, + ) + model.eval() + result = model(torch.randn(1, 3, 16, 16), mode="inference") + assert result.prediction.shape == (1, 10) + + +def test_custom_ee_example_kwargs_without_args_rejected(): + with pytest.raises(ValueError, match="example_kwargs"): + custom_ee( + _KwargBackbone(), + exit_layers=["stem"], + num_classes=10, + example_kwargs={"scale": 2.0}, + ) + + +def test_custom_ee_tuple_output_needs_and_uses_feature_extractor(): + backbone = _TupleOutputBackbone() + # without an extractor: clear error naming the fix + with pytest.raises(ValueError, match="feature_extractors"): + custom_ee(backbone, exit_layers=["block"], num_classes=10, input_shape=(1, 3, 16, 16)) + # with one: wraps and routes + model = custom_ee( + _TupleOutputBackbone(), + exit_layers=["block"], + num_classes=10, + input_shape=(1, 3, 16, 16), + feature_extractors={"block": lambda out: out[0]}, + ) + model.eval() + model.config.confidence_thresholds = [0.0] # force the exit to fire + result = model(torch.randn(1, 3, 16, 16), mode="inference") + assert result.exit_taken == 0 # the adapter ran inside the routing hook + assert result.prediction.shape == (1, 10) + + +def test_custom_ee_rejects_extractor_for_unknown_layer(): + with pytest.raises(ValueError, match="unknown exit layer"): + custom_ee( + _TupleOutputBackbone(), + exit_layers=["block"], + num_classes=10, + input_shape=(1, 3, 16, 16), + feature_extractors={"block": lambda o: o[0], "nope": lambda o: o}, + ) + + +def test_custom_ee_rejects_reused_exit_layer(): + with pytest.raises(RuntimeError, match="more than once"): + custom_ee( + _ReusedLayerBackbone(), + exit_layers=["conv"], + num_classes=10, + input_shape=(1, 3, 16, 16), + ) + + +def test_custom_ee_rejects_out_of_order_exit_layers(): + backbone = TinyBackbone(num_classes=10) + with pytest.raises(RuntimeError, match="forward-execution order"): + custom_ee( + backbone, + exit_layers=["stage2", "stage1"], # reversed + num_classes=10, + input_shape=(1, 3, 32, 32), + ) + + +def test_custom_ee_restores_training_mode_after_dry_run(): + backbone = TinyBackbone(num_classes=10) + backbone.train() + custom_ee(backbone, exit_layers=["stage1"], num_classes=10, input_shape=(1, 3, 32, 32)) + assert backbone.training is True + + +def test_custom_ee_infers_device_from_backbone(): + """A meta-level check that stays CPU-only: the dry-run tensor must follow + the backbone's parameter device rather than defaulting to CPU.""" + from earlyon.models.custom import _infer_backbone_device + + backbone = TinyBackbone(num_classes=10) + assert _infer_backbone_device(backbone).type == "cpu" + + +@pytest.mark.gpu +def test_custom_ee_wraps_cuda_backbone_without_device_error(): + backbone = TinyBackbone(num_classes=10).cuda() + model = custom_ee(backbone, exit_layers=["stage1"], num_classes=10, input_shape=(1, 3, 32, 32)) + model.eval() + result = model(torch.randn(1, 3, 32, 32, device="cuda"), mode="inference") + assert result.prediction.shape == (1, 10) From 43e82b1a1cd119b976e1637d1cf7346b532f6175 Mon Sep 17 00:00:00 2001 From: sohams25 <86193836+sohams25@users.noreply.github.com> Date: Wed, 22 Jul 2026 03:02:58 +0530 Subject: [PATCH 06/16] feat: staged deployment contract with verified reference splitter MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - earlyon.staged: StageSpec/Stage/StagedModel protocol — ordered stages emitting (continuation_features, exit_logits), routing applied between stages so later stages genuinely never run - staged_model() splits Sequential backbones (custom_ee shape), refuses anything it cannot prove, and self-checks staged==eager on a probe input; tests pin equivalence across policies, per-head temperatures, enablement - docs/STAGED_DEPLOYMENT.md: protocol, scope, per-stage ONNX/TensorRT procedure for later Jetson validation (no fabricated numbers) - export_all_exits_to_onnx alias makes the static multi-output export's compute-everything semantics explicit in the API name --- docs/STAGED_DEPLOYMENT.md | 80 ++++++++++++++ earlyon/onnx.py | 7 ++ earlyon/staged.py | 219 ++++++++++++++++++++++++++++++++++++++ tests/test_staged.py | 110 +++++++++++++++++++ 4 files changed, 416 insertions(+) create mode 100644 docs/STAGED_DEPLOYMENT.md create mode 100644 earlyon/staged.py create mode 100644 tests/test_staged.py diff --git a/docs/STAGED_DEPLOYMENT.md b/docs/STAGED_DEPLOYMENT.md new file mode 100644 index 0000000..81ac28d --- /dev/null +++ b/docs/STAGED_DEPLOYMENT.md @@ -0,0 +1,80 @@ +# Staged deployment + +How to get a *real* early-exit compute saving outside of eager PyTorch. + +## The three execution modes, honestly labelled + +| Mode | Skips later layers? | Exportable? | Where | +|---|---|---|---| +| Eager wrapper (`model(x, mode="inference")`) | **yes** — hooks + a sentinel exception short-circuit the backbone | no (`torch.compile`/export refuse with a clear error) | `earlyon.core.wrappers` | +| Static multi-output ONNX (`earlyon export`, `export_to_onnx`) | **no** — the graph always computes every exit; the caller applies routing to the outputs | yes, single portable graph | `earlyon.onnx` | +| Staged deployment | **yes** — stages are separate modules; routing runs between them, later stages are never invoked | yes, one artifact per stage | `earlyon.staged` | + +## The protocol + +An early-exit model with `k` exits becomes `k + 1` ordered **stages**. + +- Stage `i` (`0 <= i < k`) consumes the previous stage's **continuation + features** (stage 0 consumes the input) and produces + `(continuation_features, exit_logits_i)` where `exit_logits_i` comes from + exit head `i`. +- Stage `k` (final) produces the final classifier's logits. +- Between stages the runtime applies exactly earlyon's routing rule, in this + order: if `enabled_exits[i]` is false, skip the head and continue; else + compute `softmax(logits / temperatures[exit_name])` and fire on + `confidence >= confidence_thresholds[i]` (or entropy `<= threshold` for the + entropy policy). The first firing exit's logits are the prediction; later + stages are not executed. + +The data classes live in `earlyon.staged`: `StageSpec` (index, exit name, +covered modules), `Stage` (trunk + head, `forward -> (features, logits)`), +and `StagedModel` (the reference runtime, `infer(x) -> InferenceResult`). + +## Reference implementation and its scope + +`earlyon.staged.staged_model(wrapper)` splits a wrapper whose backbone is +literally an `nn.Sequential` (exit layers at top level, `final_classifier` +identity — what `custom_ee` produces for a Sequential backbone). It refuses +anything else: arbitrary graph partitioning is out of scope, and a wrong +split is worse than no split. As a belt, the builder runs a probe input +through both the staged and eager paths and raises on any disagreement; +`tests/test_staged.py` pins equivalence across policies, per-head +temperatures and enablement. + +```python +from earlyon.models import custom_ee +from earlyon.staged import staged_model + +wrapper = custom_ee(sequential_backbone, exit_layers=["2", "5"], num_classes=10) +staged = staged_model(wrapper) # raises if the split can't be proven +result = staged.infer(x) # same InferenceResult as the wrapper +``` + +For the torchvision factories (ResNet, MobileNet, ViT), the backbone forward +is not a plain Sequential; implementing their stage splits is future work — +the protocol above is what such an implementation must satisfy, and the +equivalence test is the acceptance criterion. + +## Exporting stages + +Each `Stage` is a plain `nn.Module` with tensor-in/tensors-out, so it traces +cleanly with `torch.onnx.export` (outputs: `features`, `logits`). Your +deployment runtime (ONNX Runtime sessions, or TensorRT engines built from the +per-stage ONNX files) then implements the routing loop above on the host — +one engine invocation per stage until an exit fires. + +## Jetson / TensorRT procedure (not run here — no fabricated numbers) + +On the target device: + +1. Export per-stage ONNX files from a calibrated checkpoint. +2. `trtexec --onnx=stage_k.onnx --saveEngine=stage_k.plan --fp16` per stage. +3. Runtime loop: run stage 0's engine, apply the threshold on the host + (logits are tiny — the copy is negligible), continue only if no fire. +4. Benchmark with the same discipline as `earlyon.benchmarking`: fixed + sample set, ≥50-iteration warmup, batch 1, report p50/p95/p99 and the + exit distribution; compare against a single-engine full-backbone build + *and* a smaller static model at matched accuracy. + +Nothing in this repository claims TensorRT numbers; the section above is the +procedure, to be filled in from a real device run. diff --git a/earlyon/onnx.py b/earlyon/onnx.py index 7df6c27..a91221b 100644 --- a/earlyon/onnx.py +++ b/earlyon/onnx.py @@ -120,3 +120,10 @@ def export_to_onnx( finally: model.train(was_training) return output_names + + +# Explicitly named alias: this export computes ALL exits every time (routing +# is applied by the caller to the outputs); it does not short-circuit compute. +# For an export that skips later layers, see earlyon.staged / +# docs/STAGED_DEPLOYMENT.md. +export_all_exits_to_onnx = export_to_onnx diff --git a/earlyon/staged.py b/earlyon/staged.py new file mode 100644 index 0000000..8da7091 --- /dev/null +++ b/earlyon/staged.py @@ -0,0 +1,219 @@ +"""Staged deployment: split an early-exit model into per-stage modules. + +The eager :class:`EarlyExitWrapper` short-circuits with hooks and exceptions, +which no graph exporter can express. The staged contract is the deployable +alternative: the network is cut *at the exit points* into an ordered list of +stages, where stage ``k``: + +* consumes the previous stage's **continuation features** (stage 0 consumes + the input image), +* produces the next continuation features, and +* produces **exit logits** (from exit head ``k``) for every stage except the + last, which produces the final classifier's logits. + +The deployment runtime (this module's :class:`StagedModel` in PyTorch, or +your own runtime over per-stage ONNX/TensorRT engines) runs stages in order +and applies earlyon's routing rule between them — per-head temperature, +enabled flag, confidence/entropy threshold — stopping at the first firing +exit. Unlike the single static multi-output ONNX graph +(:func:`earlyon.onnx.export_to_onnx`), later stages are genuinely *not +executed* when an early exit fires. + +Scope (deliberately narrow): the reference splitter supports backbones that +are literally ``nn.Sequential`` with exit layers at top-level positions — +arbitrary graph partitioning is out of scope and fails loudly. +:func:`staged_model` verifies its own equivalence against the eager wrapper +on a probe input before returning. See ``docs/STAGED_DEPLOYMENT.md``. +""" + +from __future__ import annotations + +from dataclasses import dataclass + +import torch +import torch.nn as nn + +from earlyon.core.types import EarlyExitConfig, InferenceResult +from earlyon.core.wrappers import EarlyExitWrapper, _safe_temperature + + +@dataclass(frozen=True) +class StageSpec: + """Describes one stage of a staged deployment. + + ``exit_name`` is the exit whose logits this stage emits (``"final"`` for + the last stage). ``modules`` lists the backbone submodule names executed + by the stage, in order. + """ + + index: int + exit_name: str + modules: tuple[str, ...] + + +class Stage(nn.Module): + """One deployable unit: a trunk plus the head evaluated after it. + + ``forward`` returns ``(continuation_features, logits)``. For the last + stage the continuation features equal the logits input path's features + and ``logits`` are the final classifier's output. + """ + + def __init__(self, trunk: nn.Sequential, head: nn.Module) -> None: + super().__init__() + self.trunk = trunk + self.head = head + + def forward(self, x: torch.Tensor) -> tuple[torch.Tensor, torch.Tensor]: + features = self.trunk(x) + return features, self.head(features) + + +class _Identity(nn.Module): + def forward(self, x: torch.Tensor) -> torch.Tensor: + return x + + +class StagedModel(nn.Module): + """Reference staged runtime: runs stages in order, applies earlyon routing + between them, and stops at the first firing enabled exit. + + Produces exactly the same :class:`InferenceResult` as the eager wrapper + for the same config (equivalence is asserted at build time by + :func:`staged_model` and pinned by tests). + """ + + def __init__( + self, + stages: list[Stage], + specs: list[StageSpec], + config: EarlyExitConfig, + flops_at: dict[str, float], + ) -> None: + super().__init__() + if len(stages) != len(config.exit_points) + 1: + raise ValueError( + f"need one stage per exit plus a final stage: got {len(stages)} stages " + f"for {len(config.exit_points)} exits" + ) + config.validate() + self.stages = nn.ModuleList(stages) + self.specs = specs + self.config = config + self._flops_at = dict(flops_at) + + @torch.inference_mode() + def infer(self, x: torch.Tensor) -> InferenceResult: + if x.size(0) != 1: + raise ValueError(f"staged inference is batch-1 (got batch {x.size(0)})") + cfg = self.config + n_exits = len(cfg.exit_points) + features = x + for idx in range(n_exits): + ep = cfg.exit_points[idx] + if not cfg.enabled_exits[idx]: + # skip the head entirely; still run the trunk to continue + features = self.stages[idx].trunk(features) + continue + features, logits = self.stages[idx](features) + temp = _safe_temperature(cfg.temperatures[ep.name]) + probs = torch.softmax(logits / temp, dim=-1) + confidence = probs.max().item() + if cfg.routing_policy == "confidence": + fires = confidence >= cfg.confidence_thresholds[idx] + else: + entropy = (-(probs * probs.clamp_min(1e-12).log()).sum()).item() + fires = entropy <= cfg.entropy_thresholds[idx] + if fires: + return InferenceResult( + prediction=logits, + exit_taken=idx, + confidence=confidence, + estimated_backbone_flops_fraction=self._flops_at[ep.layer_name], + ) + _, final_logits = self.stages[-1](features) + temp = _safe_temperature(cfg.temperatures["final"]) + probs = torch.softmax(final_logits / temp, dim=-1) + return InferenceResult( + prediction=final_logits, + exit_taken=-1, + confidence=probs.max().item(), + estimated_backbone_flops_fraction=1.0, + ) + + +def _sequential_children(backbone: nn.Module) -> list[tuple[str, nn.Module]]: + if not isinstance(backbone, nn.Sequential): + raise ValueError( + "staged_model supports backbones that are nn.Sequential (exit layers " + f"at top level); got {type(backbone).__name__}. Arbitrary graph " + "partitioning is out of scope — see docs/STAGED_DEPLOYMENT.md for the " + "protocol if you want to implement stages for a custom architecture." + ) + return list(backbone.named_children()) + + +def staged_model(wrapper: EarlyExitWrapper) -> StagedModel: + """Split an eager wrapper into a :class:`StagedModel`. + + Requirements (all verified): + + * the wrapper's backbone is an ``nn.Sequential`` whose forward is exactly + its children in order, returning ``(B, num_classes)`` logits (i.e. the + wrapper's ``final_classifier`` is identity — true for ``custom_ee``); + * every exit layer is a *top-level* child of that Sequential. + + Before returning, staged inference is checked against the eager wrapper + on a probe input; a mismatch raises rather than shipping a wrong split. + """ + children = _sequential_children(wrapper.backbone) + child_names = [name for name, _ in children] + positions: list[int] = [] + for ep in wrapper.config.exit_points: + if ep.layer_name not in child_names: + raise ValueError( + f"exit layer {ep.layer_name!r} is not a top-level child of the " + f"Sequential backbone (children: {child_names}); staged splitting " + "requires top-level exit layers" + ) + positions.append(child_names.index(ep.layer_name)) + if positions != sorted(positions): + raise ValueError(f"exit layers out of order in the Sequential: {positions}") + + stages: list[Stage] = [] + specs: list[StageSpec] = [] + start = 0 + for idx, ep in enumerate(wrapper.config.exit_points): + end = positions[idx] + 1 + trunk = nn.Sequential(*(mod for _, mod in children[start:end])) + stages.append(Stage(trunk, wrapper.exit_heads[ep.name])) + specs.append(StageSpec(idx, ep.name, tuple(child_names[start:end]))) + start = end + final_trunk = nn.Sequential(*(mod for _, mod in children[start:])) + stages.append(Stage(final_trunk, _Identity())) + specs.append(StageSpec(len(positions), "final", tuple(child_names[start:]))) + + model = StagedModel(stages, specs, wrapper.config, wrapper._flops_at) + + # equivalence probe: staged and eager must agree on a deterministic input. + was_training = wrapper.training + wrapper.eval() + model.eval() + try: + probe = torch.zeros( + wrapper._input_shape, + device=next(wrapper.backbone.parameters(), torch.empty(0)).device, + ) + eager = wrapper(probe, mode="inference") + staged = model.infer(probe) + if eager.exit_taken != staged.exit_taken or not torch.allclose( + eager.prediction, staged.prediction, atol=1e-5 + ): + raise RuntimeError( + "staged split does not reproduce the eager wrapper on a probe " + "input — the backbone's forward is not exactly its Sequential " + "children in order; refusing to build a wrong split" + ) + finally: + wrapper.train(was_training) + return model diff --git a/tests/test_staged.py b/tests/test_staged.py new file mode 100644 index 0000000..4132c10 --- /dev/null +++ b/tests/test_staged.py @@ -0,0 +1,110 @@ +"""Staged-deployment contract: staged execution must match eager routing.""" + +import pytest +import torch +import torch.nn as nn + +from earlyon.models import custom_ee +from earlyon.staged import StagedModel, staged_model +from tests.fixtures.tiny_models import TinyBackbone + + +def _sequential_backbone(num_classes: int = 10) -> nn.Sequential: + torch.manual_seed(0) + return nn.Sequential( + nn.Conv2d(3, 8, 3, padding=1), + nn.ReLU(), + nn.Conv2d(8, 16, 3, padding=1), + nn.ReLU(), + nn.AdaptiveAvgPool2d(1), + nn.Flatten(), + nn.Linear(16, num_classes), + ) + + +def _wrapped(**kwargs): + backbone = _sequential_backbone() + return custom_ee( + backbone, + exit_layers=["0", "2"], + num_classes=10, + input_shape=(1, 3, 16, 16), + **kwargs, + ) + + +def test_staged_matches_eager_across_configs(): + torch.manual_seed(1) + wrapper = _wrapped() + staged = staged_model(wrapper) + wrapper.eval() + staged.eval() + + configs = [ + dict(thr=[0.99, 0.99], enabled=[True, True], temps=(1.0, 1.0, 1.0)), + dict(thr=[0.0, 0.0], enabled=[True, True], temps=(1.0, 1.0, 1.0)), # always exit 0 + dict(thr=[0.0, 0.0], enabled=[False, True], temps=(1.0, 1.0, 1.0)), # exit 0 off + dict(thr=[0.0, 0.0], enabled=[False, False], temps=(1.0, 1.0, 1.0)), # all off + dict(thr=[0.5, 0.5], enabled=[True, True], temps=(3.0, 0.5, 1.2)), # per-head temps + ] + for cfg in configs: + wrapper.config.confidence_thresholds = list(cfg["thr"]) + wrapper.config.enabled_exits = list(cfg["enabled"]) + t0, t1, tf = cfg["temps"] + wrapper.config.temperatures = {"e0": t0, "e1": t1, "final": tf} + for i in range(5): + x = torch.randn(1, 3, 16, 16, generator=torch.Generator().manual_seed(i)) + eager = wrapper(x, mode="inference") + staged_r = staged.infer(x) + assert staged_r.exit_taken == eager.exit_taken, cfg + assert torch.allclose(staged_r.prediction, eager.prediction, atol=1e-6), cfg + assert staged_r.estimated_backbone_flops_fraction == pytest.approx( + eager.estimated_backbone_flops_fraction + ) + + +def test_staged_matches_eager_entropy_policy(): + wrapper = _wrapped(routing_policy="entropy") + wrapper.config.entropy_thresholds = [1.5, 1.5] + staged = staged_model(wrapper) + wrapper.eval() + staged.eval() + for i in range(5): + x = torch.randn(1, 3, 16, 16, generator=torch.Generator().manual_seed(100 + i)) + eager = wrapper(x, mode="inference") + staged_r = staged.infer(x) + assert staged_r.exit_taken == eager.exit_taken + assert torch.allclose(staged_r.prediction, eager.prediction, atol=1e-6) + + +def test_staged_stage_specs_partition_the_backbone(): + wrapper = _wrapped() + staged = staged_model(wrapper) + all_modules = [m for spec in staged.specs for m in spec.modules] + assert all_modules == ["0", "1", "2", "3", "4", "5", "6"] # full cover, in order + assert staged.specs[0].exit_name == "e0" + assert staged.specs[-1].exit_name == "final" + + +def test_staged_rejects_non_sequential_backbone(): + model = custom_ee( + TinyBackbone(num_classes=10), + exit_layers=["stage1"], + num_classes=10, + input_shape=(1, 3, 32, 32), + ) + with pytest.raises(ValueError, match="nn.Sequential"): + staged_model(model) + + +def test_staged_rejects_batched_input(): + staged = staged_model(_wrapped()) + with pytest.raises(ValueError, match="batch-1"): + staged.infer(torch.randn(2, 3, 16, 16)) + + +def test_staged_model_validates_stage_count(): + wrapper = _wrapped() + good = staged_model(wrapper) + with pytest.raises(ValueError, match="stage"): + StagedModel(list(good.stages)[:-1], good.specs[:-1], wrapper.config, wrapper._flops_at) From a75058628a42c38157e9d59a63e42477c70f2982 Mon Sep 17 00:00:00 2001 From: sohams25 <86193836+sohams25@users.noreply.github.com> Date: Wed, 22 Jul 2026 03:03:35 +0530 Subject: [PATCH 07/16] fix: cast ModuleList access in staged runtime for strict mypy --- earlyon/staged.py | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/earlyon/staged.py b/earlyon/staged.py index 8da7091..6970fec 100644 --- a/earlyon/staged.py +++ b/earlyon/staged.py @@ -29,6 +29,7 @@ from __future__ import annotations from dataclasses import dataclass +from typing import cast import torch import torch.nn as nn @@ -113,7 +114,8 @@ def infer(self, x: torch.Tensor) -> InferenceResult: ep = cfg.exit_points[idx] if not cfg.enabled_exits[idx]: # skip the head entirely; still run the trunk to continue - features = self.stages[idx].trunk(features) + stage = cast(Stage, self.stages[idx]) + features = stage.trunk(features) continue features, logits = self.stages[idx](features) temp = _safe_temperature(cfg.temperatures[ep.name]) From db3832e1c19409cf7463d42fe23ca1200cb05ee4 Mon Sep 17 00:00:00 2001 From: sohams25 <86193836+sohams25@users.noreply.github.com> Date: Wed, 22 Jul 2026 03:10:43 +0530 Subject: [PATCH 08/16] docs: honest repositioning, contracts, release draft, overnight report - README: deployment-oriented framing, batch-1 primary use case, legacy labels on pre-v0.3 numbers, routing-overhead and estimator limitations, static-baseline guidance, per-head temperature + enablement description - DESIGN_DECISIONS: per-head temperature section now matches reality; new sections on explicit enablement and estimated-FLOPs naming - docs/CALIBRATION_AND_BENCHMARK_CONTRACT.md: split discipline, pipeline stages, estimator limits, benchmark fairness rules - examples: test-label hygiene note in 01; 02 rewritten on the fair runner and energy-aware profiler; pyproject description de-hyped - CHANGELOG unreleased, RELEASE_NOTES_DRAFT.md (0.3.0, not tagged), OVERNIGHT_REPORT.md --- CHANGELOG.md | 71 ++++++ OVERNIGHT_REPORT.md | 238 +++++++++++++++++++++ README.md | 94 +++++--- RELEASE_NOTES_DRAFT.md | 66 ++++++ docs/CALIBRATION_AND_BENCHMARK_CONTRACT.md | 93 ++++++++ docs/DESIGN_DECISIONS.md | 68 ++++-- examples/01_train_resnet50_cifar10.py | 12 +- examples/02_jetson_deployment.py | 45 ++-- pyproject.toml | 2 +- 9 files changed, 627 insertions(+), 62 deletions(-) create mode 100644 OVERNIGHT_REPORT.md create mode 100644 RELEASE_NOTES_DRAFT.md create mode 100644 docs/CALIBRATION_AND_BENCHMARK_CONTRACT.md diff --git a/CHANGELOG.md b/CHANGELOG.md index 9cb062d..81a93c3 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -4,7 +4,78 @@ format follows [keep a changelog](https://keepachangelog.com/en/1.1.0/). ## unreleased +### changed — calibration & routing correctness (breaking-ish, migrated) +- **per-head temperatures**: `EarlyExitConfig.temperatures` maps every head + (each exit and the final classifier) to its own fitted temperature; routing + applies the right one at each exit. Previously one temperature was fit from + the final classifier's logits and reused everywhere. The legacy scalar + `temperature` remains as a constructor convenience (broadcast at + construction) and in v1 checkpoints (migrated on load). +- **explicit exit enablement**: `EarlyExitConfig.enabled_exits` replaces the + threshold sentinels (confidence `1.0` / entropy `0.0`). A disabled exit can + no longer fire on a float-saturated softmax (confidence exactly 1.0 / + entropy exactly 0.0); its head is not even evaluated at inference. v1 + checkpoints migrate sentinels to explicit flags with a warning. +- **centralized config validation**: `EarlyExitConfig.validate()` checks + every invariant (unique non-empty exit/layer names, threshold ranges, + finite positive temperatures, loss-weight shape, enablement length) and is + re-invoked at wrapper construction and checkpoint load. Invalid negative + temperatures now raise instead of being clamped to `1e-6` (which produced + an artificially razor-sharp softmax). +- **staged calibration pipeline**: collect logits once + (`collect_head_logits`), fit per-head temperatures with convergence status + (`fit_head_temperatures` / `TemperatureFitResult`), greedy grid search on + the cache, evaluate. `CalibrationResult` now reports enablement, exit + distribution, sample count, accuracy delta, objective, the honest method + name (`greedy-coordinate-grid`) and a schema version. Exits that never fire + on the calibration set stay disabled instead of shipping enabled-but-idle. + Empty calibration loaders raise immediately. +- **checkpoint format v2**: `format_version`, library version, exit-point + metadata (cross-checked against the rebuilt factory on load), enablement + and per-head temperatures. v1 files migrate deterministically with + warnings; files from a newer format are rejected; `custom_ee` models + reload via `load_wrapper(path, factory=...)`. +- **fair benchmark runner**: `benchmark_models` measures every compared + model (backbone, wrapper, static baseline, quantised variant) on the exact + same preloaded sample sequence with identical warmup, boundary + (`model-only` vs `end-to-end`, labelled) and synchronization; reports + accuracy alongside speed for labelled loaders. The legacy helpers delegate + to it. `docs/benchmarks.json` quarantines pre-v0.3 records under + `legacy_v0_2` as not methodologically comparable. +- **honest compute accounting**: `InferenceResult.computation_used` renamed + to `estimated_backbone_flops_fraction` (read alias kept). The estimator + (`FlopsEstimate`) carries method/reliability/notes, explicitly excludes + exit-head cost and routing overhead, detects reused modules (degrading to + a warned low-confidence uniform fallback), and runs lazily so ViT + construction is fast. +- package description: "production-ready" → "deployment-oriented" — the + README states the primary use case (batch-1 latency-sensitive inference) + and labels pre-v0.3 benchmark numbers as legacy. + ### added +- **staged deployment** (`earlyon.staged`): a documented protocol (ordered + stages emitting continuation features + exit logits, routing between + stages) with a verified reference splitter for Sequential backbones — + staged execution provably matches eager routing and genuinely skips later + stages, unlike the static multi-output ONNX export (now also available + under the explicit name `export_all_exits_to_onnx`). See + `docs/STAGED_DEPLOYMENT.md`. +- **Jetson monitoring fixes + energy semantics**: `TegrastatsMonitor` is + restartable (the stop event is cleared on start; previously a restarted + monitor silently collected nothing), no-ops on double start, closes its + pipes, and degrades cleanly when tegrastats can't spawn. Missing telemetry + parses to `None` instead of invented zeros. `integrate_energy` / + `EnergySummary` distinguish instantaneous power, window-average power and + trapezoid-integrated energy; energy-per-inference is only reported when a + real integral and inference count exist (`profile_with_energy`). +- **custom_ee**: `example_args`/`example_kwargs` for the inspection forward, + device inference from the backbone's parameters (no more CPU probe of a + CUDA model), per-layer `feature_extractors` for tuple/dict/odd-rank + outputs (applied in the dry run and the routing hook), and dry-run + validation that every exit layer executes exactly once and in the listed + forward order. +- `docs/CALIBRATION_AND_BENCHMARK_CONTRACT.md`: the split discipline, + calibration stages, estimator limitations and benchmark fairness rules. - **compute-budget calibration**: `calibrate_thresholds_for_budget` / `earlyon calibrate --target-compute`, the mirror of the accuracy-budget search. State the average FLOPs fraction the deployed model may use (e.g. diff --git a/OVERNIGHT_REPORT.md b/OVERNIGHT_REPORT.md new file mode 100644 index 0000000..1a4eec8 --- /dev/null +++ b/OVERNIGHT_REPORT.md @@ -0,0 +1,238 @@ +# Overnight report — earlyon hardening (branch `claude/earlyon-hardening`) + +Date: 2026-07-22. Environment: Linux, Python 3.13.9, torch 2.10.0+cu128, +CUDA available (laptop GPU), no Jetson, no TensorRT. + +## 1. Executive summary + +earlyon is now a methodologically sound, deployment-oriented toolkit for +training, calibrating, evaluating and benchmarking early-exit PyTorch CV +models. The overnight work fixed the four correctness defects called out in +the brief (shared temperature, sentinel-threshold "disabling", negative- +temperature clamping, unfair benchmark boundaries), rebuilt calibration as a +staged, testable pipeline with a strict data-split discipline, versioned the +checkpoint format with migration, made every compute number an explicitly +labelled estimate, fixed the tegrastats monitor lifecycle and energy +semantics, extended `custom_ee` safely, and added a verified staged- +deployment contract. Public claims were re-based: "production-ready" is +gone, pre-v0.3 benchmark numbers are quarantined as legacy, batch-1 +latency-sensitive inference is stated as the primary use case. + +## 2. Baseline (before any change) + +Commands and results on `main` (a5f8414): + +- `pytest -m "not gpu"` → **177 passed, 5 deselected, ~14 s** +- `mypy earlyon` (strict) → clean +- `ruff check earlyon tests` → clean +- `black --check` / `isort --check-only` on `earlyon tests` → clean + (`scripts/` was unformatted; CI does not check it — scripts were + reformatted as part of their rewrite) +- No hanging tests; ViT tests were the slowest (~1 s each) because FLOPs + analysis ran at construction. + +## 3. Major architecture & methodology changes + +1. **Per-head temperatures** — `EarlyExitConfig.temperatures: dict[head, T]` + covering every exit and the final classifier; routing applies each head's + own T. `fit_head_temperatures` fits per head from one cached-logits pass; + each fit carries convergence/fallback status (fallback = safe 1.0, never + a sharp value). +2. **Explicit enablement** — `enabled_exits: list[bool]`; disabled exits + never fire (confidence exactly 1.0 / entropy exactly 0.0 included) and + their heads aren't evaluated at inference. Sentinels retired; v1 + checkpoints migrate. +3. **Centralized validation** — `EarlyExitConfig.validate()` (all + invariants; actionable errors) re-invoked at wrapper construction and + checkpoint load. Invalid negative temperature now raises instead of the + old `max(t, 1e-6)` clamp. +4. **Staged calibration pipeline** — collect → fit → search → evaluate as + separate tested functions; the vectorized simulator is pinned exactly + against the real router. `CalibrationResult` reports enablement, exit + distribution, sample count, delta, objective, honest method name, schema + version. Never-firing exits stay disabled. Empty loaders raise. +5. **Fair benchmark runner** — `benchmark_models`: identical preloaded + samples, warmup, boundary and sync for every compared model; model-only + vs end-to-end labelled; accuracy alongside speed for labelled loaders; + batch-1 validated. CLI + scripts use it; legacy helpers delegate to it. +6. **Honest compute accounting** — `estimated_backbone_flops_fraction` + (alias `computation_used` kept) from a lazy, cached `FlopsEstimate` + carrying method/reliability/notes; reused-module detection degrades to a + warned low-confidence uniform fallback; exit-head cost explicitly + excluded. +7. **Checkpoint v2** — versioned schema with exit-point cross-check, + deterministic v1 migration (broadcast temperature; sentinel → disabled), + newer-format rejection, `factory=` loading for custom models. +8. **Jetson** — restartable monitor (stop event cleared on start — the + restart bug), `None` for missing telemetry, `integrate_energy` / + `EnergySummary` separating instantaneous power, window-average power and + trapezoid-integrated energy; per-inference energy only from a real + integral. +9. **custom_ee** — example args/kwargs, backbone-device inference, per-layer + feature extractors (dry run + routing hook), exactly-once and in-order + exit-layer validation, heads placed on the backbone's device. +10. **Staged deployment** — `earlyon.staged` protocol + reference splitter + for Sequential backbones, self-verified against the eager wrapper; + `export_all_exits_to_onnx` alias names the static ONNX export honestly. + +## 4. Bugs reproduced and corrected + +| Defect (verified against the old code) | Fix | +|---|---| +| One temperature fit from final-classifier logits, reused for every exit (docs claimed per-head) | per-head fit + routing (P0-A) | +| Threshold `1.0` "disabled" exits could fire at saturated confidence (`>=`); entropy `0.0` at entropy 0 | explicit `enabled_exits` (P0-B) | +| Negative/zero temperature clamped to `1e-6` → artificially sharp softmax | validate() raises; runtime guard falls back to 1.0 | +| `computation_used` read as measured FLOPs; module-order assumption unchecked | renamed estimate + reuse detection + provenance | +| Wrapper and backbone benchmarked on different inputs/boundaries | `benchmark_models` fairness contract | +| `TegrastatsMonitor` unrestartable (stale stop event); pipe not closed | lifecycle fix + tests | +| Missing tegrastats fields reported as 0.0 (fabricated) | `None` + energy integration semantics | +| ViT FLOPs analysis at construction (slow) | lazy + cached | +| `custom_ee` blindly probed CUDA models with CPU tensors; accepted reused/out-of-order exit layers | device inference + dry-run validation | +| Calibration could enable an exit at a threshold that never fires | never-firing exits stay disabled | +| Empty calibration loader silently returned 0.0/0.0 | raises ValueError | +| LBFGS `exp(log_t)` could overflow to inf | guarded, falls back with status | + +## 5. Files changed by subsystem + +- **core**: `types.py` (config redesign, validation, result renames), + `wrappers.py` (per-head T, enablement, adapters, lazy FLOPs, head/config + cross-checks), `thresholds.py` (staged pipeline rewrite), `temperature.py` + (fit status), `flops.py` (FlopsEstimate, reuse detection, device param) +- **benchmarking**: `throughput.py` (rewritten around `benchmark_models`), + `jetson_profiler.py` (rewritten), `__init__.py` +- **serialization**: `utils.py` (checkpoint v2 + migration + factory) +- **models**: `custom.py` (rewritten) +- **new**: `earlyon/staged.py`, `docs/STAGED_DEPLOYMENT.md`, + `docs/CALIBRATION_AND_BENCHMARK_CONTRACT.md`, `tests/test_staged.py`, + `RELEASE_NOTES_DRAFT.md`, this report +- **cli/scripts/examples/docs**: `cli.py` (benchmark/profile commands), + `scripts/run_benchmarks.py`, `scripts/re_evaluate.py`, + `docs/benchmarks.json` (legacy quarantine), `examples/01`, `examples/02`, + `README.md`, `docs/DESIGN_DECISIONS.md`, `CHANGELOG.md`, `pyproject.toml` +- **tests**: substantial additions across `test_types`, `test_wrappers`, + `test_thresholds`, `test_temperature`, `test_utils`, `test_benchmarks`, + `test_flops`, `test_jetson_profiler`, `test_custom_ee`, `test_staged` + +## 6. Public API / config / checkpoint migration notes + +- `EarlyExitConfig`: new `temperatures` (dict) and `enabled_exits` fields; + `temperature` is constructor-only (broadcast) — mutate `temperatures`. + Constructing with both `temperature != 1.0` and `temperatures` raises. +- `InferenceResult`/`BatchedInferenceResult`/`BenchmarkResult`/`JetsonRun`: + FLOPs field renamed; `computation_used` remains a read-only alias. + Constructing these with `computation_used=` no longer works (library- + internal construction only). +- `CalibrationResult`: superset of old fields; `fitted_temperature` is now + the final head's fit (deprecated alias). +- Checkpoints: v2 written; v1 read with deterministic migration + warnings; + `load_wrapper(..., factory=...)` for custom models; newer formats rejected. +- `benchmark_wrapper` / `benchmark_backbone` / `benchmark_wrapper_on_loader` + keep signatures (now thin wrappers over `benchmark_models`). + +## 7. Tests and final gate results + +- Baseline 177 tests → **261 tests**: `pytest` (full, incl. 6 GPU tests on + the CUDA host) → **261 passed** (~16 s); `pytest -m "not gpu"` → 255 + passed. +- Coverage (CPU subset): **95%** (`--cov=earlyon`). +- `mypy earlyon` (strict): clean, 28 files. +- `ruff check earlyon tests`: clean. `black --check` / `isort --check-only`: + clean (scripts now formatted too). +- The former ViT slowness: construction no longer runs FLOPs analysis; the + ViT test module runs in ~2 s dominated by torchvision model build. + +## 8. Benchmarks actually run + +None published. All numeric records in `docs/benchmarks.json` are the +pre-existing v0.2 measurements, now explicitly quarantined under +`legacy_v0_2` with a note that they are not comparable to the v0.3 fair +runner (the old runner fed the wrapper and backbone different inputs). The +new runner is fully implemented and tested with tiny deterministic models; +regenerating real numbers is one command (`python scripts/run_benchmarks.py`) +on the target machine and was deliberately not run overnight to avoid mixing +a multi-hour training job into a correctness review. + +## 9. Hardware checks not run, and the later procedure + +No Jetson, no TensorRT, no new CUDA benchmark numbers. Procedure for later: + +1. On the Jetson (MAXN, fans steady): `pip install -e .`, verify + `tegrastats` on PATH. +2. Train/calibrate on a workstation, `save_wrapper`, copy the `.pth`. +3. `earlyon profile --model calibrated.pth --runs 500 --warmup 50` — the + energy block reports integrated mJ and mJ/inference from real samples. +4. `python scripts/re_evaluate.py` for the fair wrapper-vs-backbone table. +5. TensorRT: per-stage export + `trtexec` loop per + `docs/STAGED_DEPLOYMENT.md` (procedure documented, nothing fabricated). + +## 10. Remaining limitations / deferred work + +- Staged splitting covers Sequential backbones only; torchvision factories + need per-architecture stage maps (protocol + acceptance test exist). +- Masked per-sample batched routing is still roadmap. +- Per-stage ONNX export helper is documented but not implemented as a + one-call function (each `Stage` traces cleanly with `torch.onnx.export`). +- README benchmark table still shows legacy v0.2 numbers (labelled); + regenerate before release. +- `evaluate`/`AccuracyReport` still uses the `avg_computation_used` name + (documented as an estimate); renaming it was skipped to limit churn. + +## 11. Suggested next version & release checklist + +**0.3.0** — see `RELEASE_NOTES_DRAFT.md` (includes the checklist). + +## 12. Local commits (oldest first) + +1. `3e69bbc` feat: per-head temperatures, explicit exit enablement, staged + calibration, checkpoint v2 +2. `5f03a98` feat: fair benchmark runner with identical boundaries and inputs +3. `5724afe` feat: honest compute accounting — lazy FLOPs estimate with provenance +4. `c732544` fix: restartable tegrastats monitor, honest power/energy semantics +5. `7b84818` feat: safer, more capable custom_ee +6. `43e82b1` feat: staged deployment contract with verified reference splitter +7. `a750586` fix: cast ModuleList access in staged runtime for strict mypy +8. (docs commit) docs: repositioning, contracts, changelog, release draft, + overnight report + +## 13. Five-minute interview explanation + +**Early-exit architecture.** A CNN spends the same compute on every image, +but most images are easy. earlyon attaches small classifier heads (~10-100k +params) at intermediate layers of an unmodified backbone via forward hooks. +At inference, each enabled head computes a softmax; if its calibrated +criterion passes (max-probability above a threshold, or entropy below one), +a sentinel exception unwinds the forward and that head's logits are the +answer — later layers never run. Training is two-stage: train the backbone +normally, freeze it (parameters *and* BatchNorm stats), then train the heads +for a few epochs with a weighted multi-exit cross-entropy. + +**Calibration methodology.** Thresholding raw softmax is meaningless because +each head is differently over-confident, so we first fit one temperature per +head (Guo et al. 2017) on a held-out split — NLL minimization that rescales +confidence without changing predictions. Then a greedy per-exit grid search +on a separate calibration split picks the most aggressive thresholds that +keep routed accuracy within the user's budget (or meet a compute budget with +least accuracy loss). The search runs the network once — logits are cached +per head and every grid point is simulated vectorially, pinned bit-exact +against the real router by a test. Exits that never fire stay explicitly +disabled. Test labels are never visible to the search; reported accuracy +comes from a separate evaluation pass. + +**Why FLOP savings may not become latency savings.** The FLOPs number is a +static estimate of the backbone fraction executed — it excludes the exit +heads and, critically, the routing overhead: each enabled exit computes a +softmax and calls `.item()`, which synchronizes the GPU pipeline. On a fast +GPU with a small backbone, one host sync can cost more than the skipped +layers; kernels are also more efficient in bulk. So a model can "save" 20% +of estimated FLOPs and be *slower* in wall-clock — our own legacy ResNet50 +row shows exactly that (0.94× on real inputs). + +**How the project measures this honestly.** One benchmark core feeds every +compared model — backbone, wrapper, and ideally a smaller static model at +matched accuracy — the exact same preloaded sample sequence, same warmup, +same synchronization, with the measurement boundary labelled (model-only vs +end-to-end). Estimated FLOPs and wall-clock are reported side by side and +never conflated; noise-input runs are labelled best-case; results that +predate this methodology are quarantined as legacy; and on Jetson, energy is +only reported as the time-integral of real power samples over the timed +window — never extrapolated from a single instantaneous reading. diff --git a/README.md b/README.md index 2725820..18b1771 100644 --- a/README.md +++ b/README.md @@ -26,11 +26,14 @@ from earlyon.models import resnet50_ee model = resnet50_ee(num_classes=10, pretrained=True).eval() result = model(torch.randn(1, 3, 224, 224), mode="inference") -result.exit_taken # which head answered; -1 means the full network ran -result.computation_used # fraction of the network's FLOPs actually spent -result.confidence # softmax confidence at the point it answered +result.exit_taken # which head answered; -1 = full network +result.estimated_backbone_flops_fraction # static estimate, not a measurement +result.confidence # softmax confidence where it answered ``` +earlyon is a research-to-deployment toolkit. Its primary target is batch-1, +latency-sensitive inference; batched routing exists but is conservative. +

earlyon demo: an easy image exits at the first head using 12% of the FLOPs, a hard image runs the whole network

@@ -92,33 +95,49 @@ model = custom_ee(backbone, exit_layers=["layer2", "layer3"], num_classes=10) Routing has two policies. `"confidence"` (default) exits when `softmax(logits).max() >= threshold`; `"entropy"` exits when the softmax entropy drops below a threshold, which reads the whole distribution instead -of just the top class. Calibration and `save_wrapper`/`load_wrapper` are -policy-aware, so a calibrated entropy model reloads as one. +of just the top class. Whether an exit may fire at all is an explicit +per-exit boolean (`enabled_exits`) — a disabled exit can never fire, not +even at softmax confidence exactly 1.0. Calibration and +`save_wrapper`/`load_wrapper` are policy-aware, so a calibrated entropy +model reloads as one; checkpoints carry a versioned schema (v2) and older +files migrate with a warning. Training is two-stage by default: train the backbone exactly as you already do, freeze it (parameters and BatchNorm stats), then train the small heads for a few epochs. `joint_train_backbone_and_exits` does end-to-end training instead when you want the last bit of accuracy and have the budget. Temperature scaling (Guo et al. 2017) can be fit before calibration to fix -the usual softmax over-confidence; pass `fit_temperature=True`. +the usual softmax over-confidence; pass `fit_temperature=True` and each head +— every exit and the final classifier — gets its own fitted temperature. +The full split discipline (what may touch which data) is written down in +[`docs/CALIBRATION_AND_BENCHMARK_CONTRACT.md`](docs/CALIBRATION_AND_BENCHMARK_CONTRACT.md). -## Measured results +## Measured results (legacy: earlyon v0.2 methodology) CIFAR-10, trained on an RTX 4050 Laptop GPU (6 GB) from ImageNet-pretrained weights: 3–4 epochs for the backbone, 3–4 for the exit heads, thresholds -calibrated to a 1% accuracy budget. - -| Model | Test Acc | Baseline Acc | Avg FLOPs Used | % exited early | -|-------------|---------:|-------------:|---------------:|---------------:| -| ResNet18 | 94.42% | 96.32% | 89.88% | 35.3% | -| ResNet50 | 95.88% | 97.60% | 81.42% | 58.2% | -| MobileNetV2 | 93.31% | 95.08% | 93.90% | 8.5% | - -Avg FLOPs Used is measured on the real test set, per image. It is the number -I'd want to see, so it's the one the tool reports. For ResNet50 that means -~19% of the compute gone for a 1.7% accuracy cost, with 58% of images never -reaching `layer4`. Wall-clock speedup is hardware- and input-dependent; see -the [latency appendix](#appendix-wall-clock-latency) before quoting one. +calibrated to a 1% accuracy budget. **These runs predate v0.3**: they used a +single shared temperature and the pre-fair-runner benchmark; treat them as +indicative, not as v0.3 results. Regenerate with +`python scripts/run_benchmarks.py` (records land in +`docs/benchmarks.json` under `runs`; these live under `legacy_v0_2`). + +| Model | Test Acc | Baseline Acc | Est. FLOPs fraction | % exited early | +|-------------|---------:|-------------:|--------------------:|---------------:| +| ResNet18 | 94.42% | 96.32% | 89.88% | 35.3% | +| ResNet50 | 95.88% | 97.60% | 81.42% | 58.2% | +| MobileNetV2 | 93.31% | 95.08% | 93.90% | 8.5% | + +The FLOPs fraction is a per-image *estimate* over the real test set — a +static analysis of the backbone that excludes the exit heads' own small cost +and all routing overhead. For ResNet50 it reads as ~19% of estimated compute +gone for a 1.7% accuracy cost, with 58% of images never reaching `layer4`. +An estimated FLOPs saving is not a latency claim: wall-clock speedup is +hardware- and input-dependent; see the +[latency appendix](#appendix-wall-clock-latency-legacy) before quoting one. +When judging a deployment, also benchmark a smaller static model at matched +accuracy (pass it as a third entry to `benchmark_models`) — if a plain +ResNet18 matches your routed ResNet50, ship the ResNet18. The MobileNetV2 row is a loss, and it's in the table anyway. An already-compressed backbone leaves little for early exit to skim: only 8.5% @@ -238,19 +257,31 @@ The reasoning for each choice, including the ugly parts, is in ## Limitations -- `forward(mode="inference")` is batch-size 1. `forward_inference_batched` - handles batches, but conservatively (see above); masked per-sample routing - inside a batch is on the roadmap. +- `forward(mode="inference")` is batch-size 1 — the latency-sensitive edge + case earlyon targets. `forward_inference_batched` handles batches, but + conservatively (see above); masked per-sample routing inside a batch is on + the roadmap. +- Eager routing has real overhead: every enabled exit evaluates its head and + synchronises the host (`.item()`) to decide. On a GPU that synchronisation + can cost more than the skipped layers save, particularly on small + backbones — theoretical FLOP savings do not guarantee latency savings. + The fair runner reports both so you can see it. - `torch.compile` cannot trace the routing control flow. The wrapper raises a clear error instead of silently falling back; compile the raw backbone if you need it. -- ONNX export writes a static graph that computes every exit and leaves - routing to the caller. The per-sample compute saving only exists in the - PyTorch wrapper. +- ONNX export (`export_all_exits_to_onnx`) writes a static graph that + computes **every** exit and leaves routing to the caller — it does not + short-circuit compute. For a deployable split that genuinely skips later + stages, see [`docs/STAGED_DEPLOYMENT.md`](docs/STAGED_DEPLOYMENT.md) + (reference implementation for Sequential backbones). +- `computation_used` / `estimated_backbone_flops_fraction` is a static + estimate: exit-head cost and routing overhead excluded; backbones that + reuse modules degrade to a warned low-confidence uniform estimate. - Compute budgets from `calibrate_thresholds_for_budget` hold as an average over the calibration distribution. Nothing caps FLOPs per sample. -- Benchmarks are CIFAR-10 on a laptop GPU. ImageNet-scale numbers and a real - Jetson table don't exist yet; treat any wall-clock claim accordingly. +- Benchmarks are CIFAR-10 on a laptop GPU, and the published table predates + the v0.3 fair runner (see the legacy labels). ImageNet-scale numbers and a + real Jetson table don't exist yet; treat any wall-clock claim accordingly. ## Contributing @@ -291,7 +322,12 @@ BranchyNet (Teerapittayanon et al. 2016) and the ACM 2024 early-exit survey (10.1145/3698767) for the ideas; torchvision (BSD) for the backbones; fvcore for FLOPs accounting. earlyon itself is MIT. -## Appendix: wall-clock latency +## Appendix: wall-clock latency (legacy) + +**Legacy numbers**: measured with the pre-v0.3 runner, which benchmarked the +wrapper and backbone on *different* random inputs — not methodologically +comparable to `benchmark_models` results, which feed every compared model +the identical sample sequence. Kept for transparency until re-measured. Throughput below uses a random-noise input, which can trigger spurious early exits, so read it as a best-case bound rather than a claim. RTX 4050 Laptop diff --git a/RELEASE_NOTES_DRAFT.md b/RELEASE_NOTES_DRAFT.md new file mode 100644 index 0000000..894472d --- /dev/null +++ b/RELEASE_NOTES_DRAFT.md @@ -0,0 +1,66 @@ +# earlyon 0.3.0 — draft release notes (NOT published, NOT tagged) + +Suggested version: **0.3.0** (routing/calibration semantics changed; +checkpoints migrate automatically, but calibrated behavior can differ — +disabled exits are now strictly disabled). + +## Headline + +earlyon 0.3 is a correctness release. It makes the calibration methodology +defensible (per-head temperatures, explicit exit enablement, split +discipline), the measurements fair (one benchmark core, identical samples +and boundaries for every compared model), and the claims honest (estimated +FLOPs labelled as estimates, legacy numbers quarantined, "production-ready" +retired in favor of "deployment-oriented"). + +## Breaking / behavioral changes (all with migration paths) + +- One temperature **per head** (`config.temperatures`), fitted per head when + `fit_temperature=True`. The scalar `temperature` field is a constructor + convenience only; mutate `temperatures` after construction. +- Disabled exits are explicit booleans (`config.enabled_exits`). Threshold + sentinels are gone; a saturated softmax can no longer fire a "disabled" + exit. v1 checkpoints migrate their sentinels with a warning. +- Calibration leaves never-firing exits **disabled** instead of enabled at + an idle threshold; `CalibrationResult` gained enablement, exit + distribution, sample count, objective and method fields. +- `computation_used` → `estimated_backbone_flops_fraction` (read alias + kept). It is an estimate excluding exit heads and routing overhead. +- `BenchmarkResult.avg_computation_used` → `avg_estimated_flops_fraction` + (read alias kept); results now carry boundary/sync/input-source metadata. +- Checkpoints are `format_version: 2`; v1 loads migrate deterministically. + `custom_ee` models reload via `load_wrapper(path, factory=...)`. +- Invalid config now raises from centralized `EarlyExitConfig.validate()` + (previously e.g. a negative temperature was clamped to `1e-6`). + +## New + +- `benchmark_models`: fair multi-model comparison (backbone / wrapper / + static baseline / quantised variant) on identical samples, with accuracy + reported for labelled loaders and explicit model-only vs end-to-end + boundaries. +- `earlyon.staged`: staged-deployment protocol + verified reference splitter + for Sequential backbones; staged execution matches eager routing and + genuinely skips later stages. `docs/STAGED_DEPLOYMENT.md` documents the + contract and the Jetson/TensorRT procedure. +- Jetson: restartable `TegrastatsMonitor`, `None` for missing telemetry, + `profile_with_energy` with real integrated energy (`EnergySummary`). +- `custom_ee`: example args/kwargs, device inference, per-layer feature + extractors, and dry-run validation (exactly-once, in-order exits). +- Lazy `FlopsEstimate` with provenance; reused-module detection. +- `docs/CALIBRATION_AND_BENCHMARK_CONTRACT.md`. + +## Release checklist (when actually releasing) + +- [ ] bump `__version__` and `pyproject.toml` to 0.3.0; move `unreleased` in + CHANGELOG under 0.3.0 with a date +- [ ] regenerate `docs/benchmarks.json` `runs` with + `scripts/run_benchmarks.py` on real hardware; update the README table + from those records and drop the legacy labels for the new numbers +- [ ] run the Jetson procedure in `docs/STAGED_DEPLOYMENT.md` §Jetson if a + device is available (optional for release, required before any Jetson + claim) +- [ ] full gate: `pytest -m "not gpu"`, `pytest -m gpu` (CUDA host), + `mypy earlyon`, `ruff check earlyon tests`, `black --check`, + `isort --check-only` +- [ ] `python -m build` + twine check; follow `docs/PYPI_RELEASE_CHECKLIST.md` diff --git a/docs/CALIBRATION_AND_BENCHMARK_CONTRACT.md b/docs/CALIBRATION_AND_BENCHMARK_CONTRACT.md new file mode 100644 index 0000000..8a05a2c --- /dev/null +++ b/docs/CALIBRATION_AND_BENCHMARK_CONTRACT.md @@ -0,0 +1,93 @@ +# Calibration & benchmark contract + +The rules earlyon holds itself to when it fits a routing policy and when it +publishes a number. Everything here is enforced by code and pinned by tests. + +## Data splits + +| Split | Used for | Never used for | +|---|---|---| +| train | backbone + exit-head training | calibration, evaluation | +| temperature (held-out; optional) | per-head temperature fitting | threshold search | +| calibration / validation | threshold search, enablement, calibration-split metrics | reported accuracy claims | +| test | final reported accuracy + exit distribution (`earlyon.benchmarking.evaluate`) | anything the search touches | + +`calibrate_thresholds(fit_temperature=True)` without a separate +`temperature_loader` reuses the calibration split and **warns** — the +temperature fit leaks into the threshold accuracy estimate. All accuracies in +a `CalibrationResult` are calibration-split numbers, labelled as such. + +## Calibration pipeline (four separable stages) + +1. **Collect** — `collect_head_logits` runs the loader once through the + all-exits forward, caching raw logits for every head (exits + final). + Empty loaders raise immediately. +2. **Fit temperatures** — `fit_head_temperatures`: one temperature per head + (each head is a differently miscalibrated classifier). Fits carry a + convergence/fallback status; a diverged fit falls back to 1.0 (no + calibration) with a warning — never to an artificially sharp value. +3. **Search** — greedy coordinate descent over a fixed grid, simulated + against the cache. It is named `greedy-coordinate-grid` in results because + that is what it is; no global-optimality claim is made. A threshold that + fires no calibration sample leaves its exit **disabled** + (`enabled_exits[i] = False`) — an explicit boolean, not a sentinel, so a + float-saturated softmax (confidence exactly 1.0, entropy exactly 0.0) can + never fire a disabled exit. +4. **Evaluate** — the selected policy is scored on the calibration split + (accuracy, estimated compute, exit distribution) into `CalibrationResult`. + The simulator is pinned bit-for-bit against the real routing path by + `test_eval_cache_matches_real_router_exactly`. + +## Compute numbers are estimates + +`estimated_backbone_flops_fraction` (formerly `computation_used`, kept as a +read alias) comes from a static fvcore analysis of the backbone: + +- exit-head FLOPs and all routing overhead are **excluded**; +- the per-layer attribution assumes each leaf module runs exactly once, in + registration order (true for the shipped torchvision backbones). A reused + module is detected and degrades the estimate to a warned, low-confidence + uniform fallback (`FlopsEstimate.reliable = False`); +- the analysis is lazy (first inference), cached, and its provenance is on + `wrapper.flops_estimate`. + +A FLOPs saving is **not** a latency claim. The eager router evaluates an +exit head and synchronises the host (`.item()`) at every enabled exit; on a +GPU that synchronisation can cost more than the skipped layers save, +especially on small backbones. That is why benchmark results and the README +report wall-clock and estimated-FLOPs numbers separately. + +## Benchmark fairness rules (`benchmark_models`) + +1. Every compared model sees the **exact same preloaded sample sequence** — + same order, same tensors — with the same warmup count. +2. Boundaries are identical and labelled: `model-only` (input staged on the + device before timing) or `end-to-end` (H2D copy inside the timed region). + Loader/preprocessing time is never silently included. +3. Same `eval()` + `torch.inference_mode()` + per-iteration CUDA + synchronisation for every model. +4. Batch 1 is the primary supported mode (the latency-sensitive edge case + earlyon targets) and is validated. +5. Reported: p50/p95/p99 latency, throughput, run count, device, dtype, + input shape, warmup, sync policy, exit distribution, input source + (`loader` vs `random-noise`), and accuracy when the loader is labelled. +6. Random-noise input is labelled a best-case bound: trained heads can fire + spuriously on noise. +7. A speedup is only quoted between results produced by the same + `benchmark_models` call. Pre-v0.3 records in `docs/benchmarks.json` live + under `legacy_v0_2` and are marked not comparable (the old runner fed the + wrapper and backbone different inputs). +8. An early-exit model should also be compared against a **smaller static + model** at matched accuracy — if a ResNet18 matches your routed ResNet50's + accuracy and latency, the honest deployment is the ResNet18. Pass it as a + third entry to `benchmark_models`. + +## Serialization + +Checkpoints are `format_version: 2`: routing policy, both threshold lists, +`enabled_exits`, per-head `temperatures`, loss weights, exit-point metadata +(cross-checked against the rebuilt factory), library version. Unversioned v1 +files migrate deterministically (scalar temperature broadcast; sentinel +thresholds → explicit disabled) with warnings. `custom_ee` models reload only +via a user-supplied `factory=` — an arbitrary backbone is never silently +"reconstructed". diff --git a/docs/DESIGN_DECISIONS.md b/docs/DESIGN_DECISIONS.md index 2ad8667..8ea0580 100644 --- a/docs/DESIGN_DECISIONS.md +++ b/docs/DESIGN_DECISIONS.md @@ -78,19 +78,61 @@ returns `budget_met=False` with the least-compute configuration found, and because it is measured on the calibration set, the guarantee is average-case over that distribution. The README's limitations section says both out loud. -## Temperature scaling before calibration - -**Decision:** optionally fit a single scalar temperature (Guo et al. 2017) on -held-out data before threshold calibration, per exit head. - -**Why:** modern CNN heads are systematically over-confident; softmax maxima -cluster near 1.0 whether the prediction is right or wrong. Thresholding an -uncalibrated confidence wastes most of the [0, 1] range and makes the greedy -sweep's grid resolution meaningless. One scalar per head fixes the ranking -cheaply without changing argmax predictions, so accuracy is untouched by -construction. We chose temperature scaling over Platt/isotonic because it's -the simplest method with a strong published track record on exactly this -failure mode. +## Temperature scaling before calibration — one temperature per head + +**Decision:** optionally fit a temperature (Guo et al. 2017) on held-out data +before threshold calibration — one **per head**: every exit head and the +final classifier get their own fitted scalar +(`EarlyExitConfig.temperatures`). + +**Why per-head:** each exit head is a different classifier reading different +features, with its own miscalibration; a shallow head is typically far more +over-confident than the final classifier. Earlier versions fitted a single +temperature from the final classifier's logits and reused it for every exit +— defensible for none of them. The fit (`fit_head_temperatures`) runs on +cached logits from one pass, and each `TemperatureFitResult` carries a +convergence/fallback status: a diverged LBFGS falls back to 1.0 (no +calibration) with a warning, never to an artificially sharp value. + +**Why temperature scaling at all:** modern CNN heads are systematically +over-confident; softmax maxima cluster near 1.0 whether the prediction is +right or wrong. Thresholding an uncalibrated confidence wastes most of the +[0, 1] range and makes the greedy sweep's grid resolution meaningless. One +scalar per head fixes the ranking cheaply without changing argmax +predictions, so accuracy is untouched by construction. We chose temperature +scaling over Platt/isotonic because it's the simplest method with a strong +published track record on exactly this failure mode. + +## Explicit exit enablement instead of threshold sentinels + +**Decision:** whether an exit may fire is a boolean +(`EarlyExitConfig.enabled_exits`), not a magic threshold value. + +**Why:** the old convention — confidence threshold `1.0` (or entropy `0.0`) +means "disabled" — was numerically unsound: the router fires on +`confidence >= threshold`, and a float32-saturated softmax produces +confidence exactly 1.0, so a "disabled" exit could still fire. Explicit +booleans make disablement absolute (the head isn't even evaluated at +inference, saving its overhead too), keep thresholds meaning only +thresholds, and let calibration state its decision (`enabled_exits` on the +result) instead of encoding it. v1 checkpoints migrate their sentinels to +explicit flags on load, with a warning. Disabled heads still produce logits +in training mode — enablement is a routing concept, not a training one. + +## `estimated_backbone_flops_fraction`, not "computation used" + +**Decision:** the compute number every result reports is named as what it is +— a static *estimate* of the backbone FLOPs fraction — with the estimator's +provenance attached (`wrapper.flops_estimate`: method, reliability, notes). + +**Why:** the old name `computation_used` read like a measurement of the +inference that just ran. It never was: it is a one-time fvcore analysis of +the backbone, excludes the exit heads and all routing overhead, and assumes +each leaf module runs once in registration order. Backbones that reuse +modules break that assumption — the estimator now detects reuse and degrades +to a warned, low-confidence uniform fallback instead of a precise-looking +wrong number. The analysis is lazy (first inference) so constructing large +models (ViT) stays fast. `computation_used` survives as a read alias. ## Entropy routing alongside confidence diff --git a/examples/01_train_resnet50_cifar10.py b/examples/01_train_resnet50_cifar10.py index e1b1152..9308718 100644 --- a/examples/01_train_resnet50_cifar10.py +++ b/examples/01_train_resnet50_cifar10.py @@ -45,14 +45,18 @@ def main(): model, train_loader, epochs=args.epochs_stage2, lr=1e-3, device=device, ) + # Thresholds are chosen on the VALIDATION split only; the accuracies + # printed below are validation numbers. Report the deployable accuracy + # from the held-out test loader (earlyon.benchmarking.evaluate) — the + # threshold search must never consume test labels. print("calibrating thresholds on validation set") result = calibrate_thresholds( model, val_loader, target_accuracy_drop=0.01, device=device, ) - print(f"thresholds: {result.thresholds}") - print(f"baseline acc: {result.baseline_accuracy:.4f} " - f"final acc: {result.final_accuracy:.4f} " - f"avg compute: {result.avg_computation_used:.4f}") + print(f"thresholds: {result.thresholds} enabled: {result.enabled_exits}") + print(f"val baseline acc: {result.baseline_accuracy:.4f} " + f"val routed acc: {result.final_accuracy:.4f} " + f"est. FLOPs fraction: {result.avg_computation_used:.4f}") save_wrapper(model, args.output) print(f"saved {args.output}") diff --git a/examples/02_jetson_deployment.py b/examples/02_jetson_deployment.py index 446d3cc..9c4d3af 100644 --- a/examples/02_jetson_deployment.py +++ b/examples/02_jetson_deployment.py @@ -4,15 +4,19 @@ python examples/02_jetson_deployment.py --model resnet50_ee_cifar10.pth -Outputs per-run latency, GPU utilization, power draw, and temperature. -On a non-Jetson host the script still runs but power/temp fields are zero. +Outputs a fair wrapper-vs-backbone throughput comparison (identical noise +samples and boundaries for both models — a best-case bound, since trained +heads may fire spuriously on noise), then per-run latency with instantaneous +power/temperature and the energy integrated over the timed window. +On a non-Jetson host the script still runs; missing telemetry is reported as +null, never as zero. """ import argparse import json import statistics -from earlyon.benchmarking import JetsonProfiler, benchmark_backbone, benchmark_wrapper +from earlyon.benchmarking import JetsonProfiler, benchmark_models from earlyon.utils import load_wrapper @@ -27,28 +31,39 @@ def main(): model = load_wrapper(args.model) shape = (1, 3, args.input_size, args.input_size) - print("throughput: wrapper vs backbone (cuda)") - wrap_r = benchmark_wrapper(model, input_shape=shape, device="cuda", - num_warmup=args.warmup, num_runs=args.runs) - bb_r = benchmark_backbone(model.backbone, input_shape=shape, device="cuda", - num_warmup=args.warmup, num_runs=args.runs) - speedup = wrap_r.throughput_ips / bb_r.throughput_ips + print("fair throughput: wrapper vs backbone on identical samples (cuda)") + cmp_r = benchmark_models( + {"early_exit": model, "backbone": model.backbone}, + input_shape=shape, device="cuda", + num_warmup=args.warmup, num_runs=args.runs, + ) + wrap_r = cmp_r.results["early_exit"] + bb_r = cmp_r.results["backbone"] print(f" wrapper: {wrap_r.throughput_ips:.1f} ips " f"(p50 {wrap_r.latency_p50_ms:.2f}ms, p95 {wrap_r.latency_p95_ms:.2f}ms)") print(f" backbone: {bb_r.throughput_ips:.1f} ips " f"(p50 {bb_r.latency_p50_ms:.2f}ms, p95 {bb_r.latency_p95_ms:.2f}ms)") - print(f" speedup: {speedup:.2f}x") - print(f" avg compute used: {wrap_r.avg_computation_used:.2%}") + print(f" speedup: {cmp_r.speedup_vs('early_exit', 'backbone'):.2f}x " + f"(noise input: best-case bound)") + print(f" est. backbone FLOPs fraction: {wrap_r.avg_estimated_flops_fraction:.2%}") print(f" exit distribution: {wrap_r.exit_distribution}") - print("\njetson power/thermal profile") + print("\njetson power/thermal/energy profile") profiler = JetsonProfiler() - runs = profiler.profile(model, input_shape=shape, num_runs=args.runs) + runs, energy = profiler.profile_with_energy( + model, input_shape=shape, num_warmup=args.warmup, num_runs=args.runs + ) + power = [r.power_mw for r in runs if r.power_mw is not None] + temp = [r.temp_c for r in runs if r.temp_c is not None] print(json.dumps({ "tegrastats_available": profiler.monitor.available, "latency_median_ms": statistics.median(r.latency_ms for r in runs), - "power_median_mw": statistics.median(r.power_mw for r in runs), - "temp_median_c": statistics.median(r.temp_c for r in runs), + "instantaneous_power_median_mw": statistics.median(power) if power else None, + "temp_median_c": statistics.median(temp) if temp else None, + "avg_power_mw": energy.avg_power_mw, + "energy_mj": energy.energy_mj, + "energy_per_inference_mj": energy.energy_per_inference_mj, + "num_power_samples": energy.num_power_samples, }, indent=2)) diff --git a/pyproject.toml b/pyproject.toml index 8cc8e47..1b89487 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -5,7 +5,7 @@ build-backend = "setuptools.build_meta" [project] name = "earlyon" version = "0.2.0" -description = "Production-ready early exit for PyTorch CV models." +description = "Deployment-oriented early-exit toolkit for PyTorch CV models." readme = "README.md" requires-python = ">=3.10" license = { file = "LICENSE" } From 5d821aa36382db7e362146565ccc070d2ddfb83e Mon Sep 17 00:00:00 2001 From: sohams25 <86193836+sohams25@users.noreply.github.com> Date: Wed, 22 Jul 2026 14:48:44 +0530 Subject: [PATCH 09/16] chore: bring scripts and examples up to the lint/format gate ruff --fix (unused imports), noqa for sys.path-dependent imports, rename ambiguous lambda vars, black/isort over scripts/ and examples/ which CI's earlyon+tests scope never checked --- examples/01_train_resnet50_cifar10.py | 26 ++++++++---- examples/02_jetson_deployment.py | 49 ++++++++++++++--------- scripts/run_benchmarks.py | 57 +++++++++++++++++---------- 3 files changed, 86 insertions(+), 46 deletions(-) diff --git a/examples/01_train_resnet50_cifar10.py b/examples/01_train_resnet50_cifar10.py index 9308718..5e026fd 100644 --- a/examples/01_train_resnet50_cifar10.py +++ b/examples/01_train_resnet50_cifar10.py @@ -36,13 +36,20 @@ def main(): print("stage 1: training backbone") stage1_train_backbone( - model.backbone, train_loader, epochs=args.epochs_stage1, - lr=0.01, device=device, # lower lr because we start from pretrained + model.backbone, + train_loader, + epochs=args.epochs_stage1, + lr=0.01, + device=device, # lower lr because we start from pretrained ) print("stage 2: training exit heads") stage2_train_exits( - model, train_loader, epochs=args.epochs_stage2, lr=1e-3, device=device, + model, + train_loader, + epochs=args.epochs_stage2, + lr=1e-3, + device=device, ) # Thresholds are chosen on the VALIDATION split only; the accuracies @@ -51,12 +58,17 @@ def main(): # threshold search must never consume test labels. print("calibrating thresholds on validation set") result = calibrate_thresholds( - model, val_loader, target_accuracy_drop=0.01, device=device, + model, + val_loader, + target_accuracy_drop=0.01, + device=device, ) print(f"thresholds: {result.thresholds} enabled: {result.enabled_exits}") - print(f"val baseline acc: {result.baseline_accuracy:.4f} " - f"val routed acc: {result.final_accuracy:.4f} " - f"est. FLOPs fraction: {result.avg_computation_used:.4f}") + print( + f"val baseline acc: {result.baseline_accuracy:.4f} " + f"val routed acc: {result.final_accuracy:.4f} " + f"est. FLOPs fraction: {result.avg_computation_used:.4f}" + ) save_wrapper(model, args.output) print(f"saved {args.output}") diff --git a/examples/02_jetson_deployment.py b/examples/02_jetson_deployment.py index 9c4d3af..9f7d6b7 100644 --- a/examples/02_jetson_deployment.py +++ b/examples/02_jetson_deployment.py @@ -34,17 +34,25 @@ def main(): print("fair throughput: wrapper vs backbone on identical samples (cuda)") cmp_r = benchmark_models( {"early_exit": model, "backbone": model.backbone}, - input_shape=shape, device="cuda", - num_warmup=args.warmup, num_runs=args.runs, + input_shape=shape, + device="cuda", + num_warmup=args.warmup, + num_runs=args.runs, ) wrap_r = cmp_r.results["early_exit"] bb_r = cmp_r.results["backbone"] - print(f" wrapper: {wrap_r.throughput_ips:.1f} ips " - f"(p50 {wrap_r.latency_p50_ms:.2f}ms, p95 {wrap_r.latency_p95_ms:.2f}ms)") - print(f" backbone: {bb_r.throughput_ips:.1f} ips " - f"(p50 {bb_r.latency_p50_ms:.2f}ms, p95 {bb_r.latency_p95_ms:.2f}ms)") - print(f" speedup: {cmp_r.speedup_vs('early_exit', 'backbone'):.2f}x " - f"(noise input: best-case bound)") + print( + f" wrapper: {wrap_r.throughput_ips:.1f} ips " + f"(p50 {wrap_r.latency_p50_ms:.2f}ms, p95 {wrap_r.latency_p95_ms:.2f}ms)" + ) + print( + f" backbone: {bb_r.throughput_ips:.1f} ips " + f"(p50 {bb_r.latency_p50_ms:.2f}ms, p95 {bb_r.latency_p95_ms:.2f}ms)" + ) + print( + f" speedup: {cmp_r.speedup_vs('early_exit', 'backbone'):.2f}x " + f"(noise input: best-case bound)" + ) print(f" est. backbone FLOPs fraction: {wrap_r.avg_estimated_flops_fraction:.2%}") print(f" exit distribution: {wrap_r.exit_distribution}") @@ -55,16 +63,21 @@ def main(): ) power = [r.power_mw for r in runs if r.power_mw is not None] temp = [r.temp_c for r in runs if r.temp_c is not None] - print(json.dumps({ - "tegrastats_available": profiler.monitor.available, - "latency_median_ms": statistics.median(r.latency_ms for r in runs), - "instantaneous_power_median_mw": statistics.median(power) if power else None, - "temp_median_c": statistics.median(temp) if temp else None, - "avg_power_mw": energy.avg_power_mw, - "energy_mj": energy.energy_mj, - "energy_per_inference_mj": energy.energy_per_inference_mj, - "num_power_samples": energy.num_power_samples, - }, indent=2)) + print( + json.dumps( + { + "tegrastats_available": profiler.monitor.available, + "latency_median_ms": statistics.median(r.latency_ms for r in runs), + "instantaneous_power_median_mw": statistics.median(power) if power else None, + "temp_median_c": statistics.median(temp) if temp else None, + "avg_power_mw": energy.avg_power_mw, + "energy_mj": energy.energy_mj, + "energy_per_inference_mj": energy.energy_per_inference_mj, + "num_power_samples": energy.num_power_samples, + }, + indent=2, + ) + ) if __name__ == "__main__": diff --git a/scripts/run_benchmarks.py b/scripts/run_benchmarks.py index 6aca7a7..ba32dd1 100644 --- a/scripts/run_benchmarks.py +++ b/scripts/run_benchmarks.py @@ -9,7 +9,6 @@ import argparse import json -import os import sys import time import traceback @@ -20,10 +19,10 @@ ROOT = Path(__file__).resolve().parents[1] sys.path.insert(0, str(ROOT)) -from earlyon.benchmarking import benchmark_models, evaluate -from earlyon.core.thresholds import calibrate_thresholds -from earlyon.training import stage1_train_backbone, stage2_train_exits -from earlyon.utils import build_model, cifar10_loaders, save_wrapper +from earlyon.benchmarking import benchmark_models, evaluate # noqa: E402 +from earlyon.core.thresholds import calibrate_thresholds # noqa: E402 +from earlyon.training import stage1_train_backbone, stage2_train_exits # noqa: E402 +from earlyon.utils import build_model, cifar10_loaders, save_wrapper # noqa: E402 METHODOLOGY = "v0.3-fair-runner" @@ -33,9 +32,9 @@ # fine-tuning from imagenet pretrained -- a few epochs is enough for cifar10 PLAN = { - "resnet18": {"batch": 128, "stage1_epochs": 4, "stage2_epochs": 4, "lr1": 0.005}, - "resnet50": {"batch": 32, "stage1_epochs": 3, "stage2_epochs": 3, "lr1": 0.005}, - "mobilenetv2": {"batch": 32, "stage1_epochs": 4, "stage2_epochs": 4, "lr1": 0.002}, + "resnet18": {"batch": 128, "stage1_epochs": 4, "stage2_epochs": 4, "lr1": 0.005}, + "resnet50": {"batch": 32, "stage1_epochs": 3, "stage2_epochs": 3, "lr1": 0.005}, + "mobilenetv2": {"batch": 32, "stage1_epochs": 4, "stage2_epochs": 4, "lr1": 0.002}, } @@ -52,17 +51,21 @@ def run_one(backbone: str) -> dict: print(f"{log_prefix} starting on {device_name()}", flush=True) train_loader, val_loader, test_loader = cifar10_loaders( - batch_size=cfg["batch"], num_workers=2, + batch_size=cfg["batch"], + num_workers=2, ) model = build_model(backbone, num_classes=10, pretrained=True) t0 = time.time() print(f"{log_prefix} stage1: {cfg['stage1_epochs']} epochs", flush=True) stage1_train_backbone( - model.backbone, train_loader, - epochs=cfg["stage1_epochs"], lr=cfg["lr1"], device=device, - on_epoch_end=lambda l: print( - f"{log_prefix} s1 e{l.epoch}: loss={l.loss:.4f} acc={l.accuracy:.4f}", + model.backbone, + train_loader, + epochs=cfg["stage1_epochs"], + lr=cfg["lr1"], + device=device, + on_epoch_end=lambda log: print( + f"{log_prefix} s1 e{log.epoch}: loss={log.loss:.4f} acc={log.accuracy:.4f}", flush=True, ), ) @@ -71,11 +74,14 @@ def run_one(backbone: str) -> dict: t0 = time.time() print(f"{log_prefix} stage2: {cfg['stage2_epochs']} epochs", flush=True) stage2_train_exits( - model, train_loader, - epochs=cfg["stage2_epochs"], lr=1e-3, device=device, - on_epoch_end=lambda l: print( - f"{log_prefix} s2 e{l.epoch}: loss={l.loss:.4f} mean_acc={l.accuracy:.4f} " - f"per_exit={l.per_exit_accuracy}", + model, + train_loader, + epochs=cfg["stage2_epochs"], + lr=1e-3, + device=device, + on_epoch_end=lambda log: print( + f"{log_prefix} s2 e{log.epoch}: loss={log.loss:.4f} mean_acc={log.accuracy:.4f} " + f"per_exit={log.per_exit_accuracy}", flush=True, ), ) @@ -84,7 +90,10 @@ def run_one(backbone: str) -> dict: print(f"{log_prefix} calibrating thresholds", flush=True) t0 = time.time() calib = calibrate_thresholds( - model, val_loader, target_accuracy_drop=0.01, device=device, + model, + val_loader, + target_accuracy_drop=0.01, + device=device, ) t_calib = time.time() - t0 print( @@ -109,12 +118,18 @@ def run_one(backbone: str) -> dict: print(f"{log_prefix} fair throughput (real input)", flush=True) cmp_real = benchmark_models( {"early_exit": model, "backbone": model.backbone}, - loader=test_loader, device=device, num_warmup=50, num_runs=300, + loader=test_loader, + device=device, + num_warmup=50, + num_runs=300, ) print(f"{log_prefix} fair throughput (noise input)", flush=True) cmp_noise = benchmark_models( {"early_exit": model, "backbone": model.backbone}, - input_shape=(1, 3, 224, 224), device=device, num_warmup=50, num_runs=300, + input_shape=(1, 3, 224, 224), + device=device, + num_warmup=50, + num_runs=300, ) save_wrapper(model, OUT_DIR / f"{backbone}_cifar10.pth") From de8ce1c950f82805a1cfdfc96c2555575a315ed2 Mon Sep 17 00:00:00 2001 From: sohams25 <86193836+sohams25@users.noreply.github.com> Date: Wed, 22 Jul 2026 14:51:28 +0530 Subject: [PATCH 10/16] =?UTF-8?q?test:=20independent=20release=20audit=20?= =?UTF-8?q?=E2=80=94=20adversarial=20verification=20of=20hardening=20claim?= =?UTF-8?q?s?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - decisive counterfactual: a single global temperature misroutes where per-head temperatures do not (junk overconfident head vs final classifier) - batched routing pinned to per-head temperatures (previously untested path) - calibration determinism, NaN-emitting head safely disabled, clean NaN rejection in temperature fit, single-class calibration data - staged runtime proven to skip later stages structurally (counting module) - custom_ee dict-output feature extractor - genuine v1 checkpoint fixture written by the actual pre-hardening save_wrapper (git main) + full migration/round-trip test --- tests/test_release_audit.py | 305 ++++++++++++++++++++++++++++++++++++ 1 file changed, 305 insertions(+) create mode 100644 tests/test_release_audit.py diff --git a/tests/test_release_audit.py b/tests/test_release_audit.py new file mode 100644 index 0000000..f0c4d2d --- /dev/null +++ b/tests/test_release_audit.py @@ -0,0 +1,305 @@ +"""Independent release-readiness audit tests. + +Adversarial checks of the hardening claims, covering gaps the original +suites left: batched-path per-head temperatures, a decisive +global-vs-per-head temperature counterfactual, NaN-emitting heads during +calibration, calibration determinism, and proof that the staged runtime +genuinely skips later computation. +""" + +import pytest +import torch +import torch.nn as nn +from torch.utils.data import DataLoader, TensorDataset + +from earlyon.core.exit_head import EarlyExitHead +from earlyon.core.thresholds import ( + calibrate_thresholds, + collect_head_logits, + fit_head_temperatures, +) +from earlyon.core.types import EarlyExitConfig, ExitPoint +from earlyon.core.wrappers import EarlyExitWrapper +from earlyon.models import custom_ee +from earlyon.staged import staged_model +from tests.fixtures.tiny_models import STAGE_CHANNELS, TinyBackbone + + +def _build(thresholds=(0.95, 0.95)): + torch.manual_seed(0) + backbone = TinyBackbone(num_classes=10) + exits = [ + ExitPoint("e0", "stage1", STAGE_CHANNELS["stage1"]), + ExitPoint("e1", "stage2", STAGE_CHANNELS["stage2"]), + ] + heads = {ep.name: EarlyExitHead(ep.in_channels, 10) for ep in exits} + cfg = EarlyExitConfig( + backbone="tiny", + num_classes=10, + exit_points=exits, + confidence_thresholds=list(thresholds), + ) + return EarlyExitWrapper(backbone, heads, lambda x: x, cfg, input_shape=(1, 3, 32, 32)) + + +# ---------------- A. per-head temperatures ---------------- + + +def test_single_global_temperature_would_misroute_where_per_head_does_not(): + """The decisive counterfactual for per-head temperature scaling. + + Exit e0 is an overconfident junk head (huge constant logits for class 0); + the labels are the full network's own predictions, so routing to the + final classifier is always correct and routing through e0 is ~10%. + + A per-head fit assigns e0 a huge temperature, deflating its confidence + below the threshold: routed accuracy stays perfect. Reusing the final + head's (near-1.0) temperature for e0 — the pre-hardening behavior — + leaves e0 saturated, so it fires and accuracy collapses. One global + temperature cannot be right for both heads. + """ + torch.manual_seed(0) + model = _build(thresholds=(0.95, 0.95)) + with torch.no_grad(): + model.exit_heads["e0"].classifier[-1].weight.zero_() + model.exit_heads["e0"].classifier[-1].bias.zero_() + model.exit_heads["e0"].classifier[-1].bias[0] = 50.0 # saturated junk + # e1 flat so it never interferes + model.exit_heads["e1"].classifier[-1].weight.zero_() + model.exit_heads["e1"].classifier[-1].bias.zero_() + model.eval() + x = torch.randn(40, 3, 32, 32) + with torch.no_grad(): + y = model.backbone(x).argmax(dim=-1) + loader = DataLoader(TensorDataset(x, y), batch_size=8) + + cache = collect_head_logits(model, loader, "cpu") + fits = fit_head_temperatures(cache) + t_e0 = fits["e0"].temperature + t_final = fits["final"].temperature + assert t_e0 > 10 * t_final, (t_e0, t_final) # radically different calibration needs + + def routed_accuracy() -> float: + correct = 0 + for i in range(x.shape[0]): + result = model(x[i : i + 1], mode="inference") + correct += int(result.prediction.argmax().item() == int(y[i])) + return correct / x.shape[0] + + # per-head temperatures: e0 deflated below 0.95, never fires -> perfect + model.config.temperatures = {k: v.temperature for k, v in fits.items()} + assert routed_accuracy() == 1.0 + + # counterfactual: one global temperature (the final head's fit) for all + # heads — e0 stays saturated, fires its junk prediction, accuracy tanks + model.config.temperatures = {"e0": t_final, "e1": t_final, "final": t_final} + assert routed_accuracy() < 0.5 + + +def test_batched_routing_uses_per_head_temperatures(): + """The batched path shares the hook, but nothing pinned it: flattening + only e0 via its own temperature must stop the batch from exiting at e0.""" + model = _build(thresholds=(0.9, 0.9)) + with torch.no_grad(): + model.exit_heads["e0"].classifier[-1].weight.zero_() + model.exit_heads["e0"].classifier[-1].bias.zero_() + model.exit_heads["e0"].classifier[-1].bias[0] = 20.0 + model.exit_heads["e1"].classifier[-1].weight.zero_() + model.exit_heads["e1"].classifier[-1].bias.zero_() + model.eval() + x = torch.randn(4, 3, 32, 32) + + model.config.temperatures = {"e0": 1.0, "e1": 1.0, "final": 1.0} + assert model.forward_inference_batched(x).exit_taken == 0 + + model.config.temperatures = {"e0": 100.0, "e1": 1.0, "final": 1.0} + assert model.forward_inference_batched(x).exit_taken == -1 + + +# ---------------- C. calibration edge cases + determinism ---------------- + + +def test_calibration_is_deterministic(): + torch.manual_seed(5) + x = torch.randn(24, 3, 32, 32) + y = torch.randint(0, 10, (24,)) + + results = [] + for _ in range(2): + torch.manual_seed(7) + model = _build() + loader = DataLoader(TensorDataset(x, y), batch_size=8) + r = calibrate_thresholds(model, loader, target_accuracy_drop=0.05, device="cpu") + results.append((r.thresholds, r.enabled_exits, r.final_accuracy, r.exit_distribution)) + assert results[0] == results[1] + + +def test_calibration_survives_nan_emitting_head(): + """A head whose logits are NaN (e.g. numerically broken fine-tune) must + not crash the threshold search or get enabled: NaN comparisons are False, + so it never fires and stays disabled.""" + model = _build() + with torch.no_grad(): + model.exit_heads["e0"].classifier[-1].weight.fill_(float("nan")) + x = torch.randn(16, 3, 32, 32) + y = torch.randint(0, 10, (16,)) + loader = DataLoader(TensorDataset(x, y), batch_size=4) + result = calibrate_thresholds(model, loader, target_accuracy_drop=0.05, device="cpu") + assert result.enabled_exits[0] is False + + +def test_temperature_fit_rejects_nan_logits_cleanly(): + from earlyon.core.temperature import fit_temperature_full + + logits = torch.tensor([[float("nan"), 1.0], [0.0, 1.0]]) + with pytest.raises(ValueError, match="NaN or Inf"): + fit_temperature_full(logits, torch.tensor([0, 1])) + + +def test_calibration_single_class_loader_works(): + """All-one-class calibration data is degenerate but legal; it must not + crash and the routed model must still work.""" + model = _build() + x = torch.randn(12, 3, 32, 32) + y = torch.zeros(12, dtype=torch.long) + loader = DataLoader(TensorDataset(x, y), batch_size=4) + result = calibrate_thresholds(model, loader, target_accuracy_drop=0.05, device="cpu") + assert len(result.thresholds) == 2 + assert 0.0 <= result.final_accuracy <= 1.0 + + +# ---------------- I. staged runtime genuinely skips computation ---------------- + + +class _CountingModule(nn.Module): + def __init__(self, inner: nn.Module) -> None: + super().__init__() + self.inner = inner + self.calls = 0 + + def forward(self, x: torch.Tensor) -> torch.Tensor: + self.calls += 1 + return self.inner(x) + + +def test_staged_runtime_skips_later_stages_when_exit_fires(): + """The whole point of staged deployment: when exit 0 fires, later stages' + modules are never executed (the eager wrapper claims this via exception + unwinding; the staged runtime must deliver it structurally).""" + torch.manual_seed(0) + counted_late = _CountingModule(nn.Conv2d(8, 16, 3, padding=1)) + backbone = nn.Sequential( + nn.Conv2d(3, 8, 3, padding=1), # 0: exit 0 attaches here + counted_late, # 1: must not run on early exit + nn.AdaptiveAvgPool2d(1), # 2 + nn.Flatten(), # 3 + nn.Linear(16, 10), # 4 + ) + wrapper = custom_ee( + backbone, + exit_layers=["0"], + num_classes=10, + input_shape=(1, 3, 16, 16), + confidence_thresholds=[0.0], # always fire at exit 0 + ) + staged = staged_model(wrapper) # build-time probe runs the model + staged.eval() + counted_late.calls = 0 + + result = staged.infer(torch.randn(1, 3, 16, 16)) + assert result.exit_taken == 0 + assert counted_late.calls == 0, "a fired exit must prevent later stages from running" + + # sanity: with the exit disabled the late stage does run + wrapper.config.enabled_exits = [False] + staged.infer(torch.randn(1, 3, 16, 16)) + assert counted_late.calls == 1 + + +# ---------------- G. dict-output custom backbones ---------------- + + +class _DictBlock(nn.Module): + def __init__(self) -> None: + super().__init__() + self.conv = nn.Conv2d(3, 8, 3, padding=1) + + def forward(self, x: torch.Tensor) -> dict[str, torch.Tensor]: + f = self.conv(x) + return {"features": f, "aux": f.sum()} + + +class _DictOutputBackbone(nn.Module): + def __init__(self, num_classes: int = 10) -> None: + super().__init__() + self.block = _DictBlock() + self.head = nn.Linear(8, num_classes) + + def forward(self, x: torch.Tensor) -> torch.Tensor: + f = self.block(x)["features"] + return self.head(f.mean(dim=(2, 3))) + + +def test_custom_ee_dict_output_via_feature_extractor(): + model = custom_ee( + _DictOutputBackbone(), + exit_layers=["block"], + num_classes=10, + input_shape=(1, 3, 16, 16), + feature_extractors={"block": lambda out: out["features"]}, + ) + model.eval() + model.config.confidence_thresholds = [0.0] + result = model(torch.randn(1, 3, 16, 16), mode="inference") + assert result.exit_taken == 0 + assert result.prediction.shape == (1, 10) + + +# ---------------- F. genuine prior-version checkpoint migration ---------------- + + +def test_real_v1_fixture_checkpoint_migrates(): + """tests/fixtures/v1_cifar_resnet20.pth was written by the ACTUAL + pre-hardening save_wrapper (git main), not a hand-built dict: no + format_version, scalar temperature 1.6, and the v1 disabled sentinel + (confidence threshold 1.0) at exit 1. Loading must migrate all of it + deterministically, and re-saving must produce a v2 file that round-trips. + """ + import warnings as _warnings + from pathlib import Path + + from earlyon.utils import load_wrapper, save_wrapper + + fixture = Path(__file__).parent / "fixtures" / "v1_cifar_resnet20.pth" + with _warnings.catch_warnings(record=True) as captured: + _warnings.simplefilter("always") + model = load_wrapper(fixture) + + assert model.config.backbone == "cifar_resnet20" + assert model.config.confidence_thresholds == [0.7, 1.0, 0.85] + # sentinel at exit 1 became an explicit disable; the others stay enabled + assert model.config.enabled_exits == [True, False, True] + # scalar temperature broadcast to every head + assert model.config.temperatures == {"e0": 1.6, "e1": 1.6, "e2": 1.6, "final": 1.6} + assert any("enabled_exits" in str(w.message) for w in captured) + + # migrated model routes without error + model.eval() + result = model(torch.randn(1, 3, 32, 32), mode="inference") + assert result.prediction.shape == (1, 10) + + # re-save writes v2 and round-trips silently (no migration warnings) + import tempfile + + with tempfile.TemporaryDirectory() as d: + p = Path(d) / "v2.pth" + save_wrapper(model, p) + payload = torch.load(p, map_location="cpu", weights_only=True) + assert payload["format_version"] == 2 + with _warnings.catch_warnings(record=True) as captured2: + _warnings.simplefilter("always") + reloaded = load_wrapper(p) + assert reloaded.config.enabled_exits == [True, False, True] + assert reloaded.config.temperatures == model.config.temperatures + migration_warnings = [w for w in captured2 if "migrated" in str(w.message)] + assert not migration_warnings From 1a0d90fbe55418209b1deeb951603492b051f28e Mon Sep 17 00:00:00 2001 From: sohams25 <86193836+sohams25@users.noreply.github.com> Date: Wed, 22 Jul 2026 14:55:21 +0530 Subject: [PATCH 11/16] =?UTF-8?q?feat:=20packaging=20validation=20?= =?UTF-8?q?=E2=80=94=20sdist=20pruning,=20wheel=20smoke=20script,=20v1=20f?= =?UTF-8?q?ixture,=20evidence=20runner?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - MANIFEST.in prunes tests/ from the sdist (it shipped a partial test tree) - scripts/smoke_test.py: post-install smoke for an installed wheel, run from outside the repo (import/version, model build, training+inference forwards, deterministic calibration, v2 round-trip, v1 migration, staged==eager, benchmark smoke) - tests/fixtures/v1_cifar_resnet20.pth: genuine pre-v0.3 checkpoint written by the historical save_wrapper, force-added past *.pth ignore with a provenance README (the committed migration test needs it on fresh clones) - scripts/evidence_run.py: bounded seeded CUDA evidence experiment (CIFAR-10, explicit disjoint train/temperature/calibration/test splits, epoch caps, wall-clock budget, fair 3-model benchmark incl. static MobileNetV2 baseline, JSON output; negative results preserved) --- MANIFEST.in | 1 + scripts/evidence_run.py | 285 +++++++++++++++++++++++++++ scripts/smoke_test.py | 155 +++++++++++++++ tests/fixtures/README.md | 11 ++ tests/fixtures/v1_cifar_resnet20.pth | Bin 0 -> 1182235 bytes 5 files changed, 452 insertions(+) create mode 100644 MANIFEST.in create mode 100644 scripts/evidence_run.py create mode 100644 scripts/smoke_test.py create mode 100644 tests/fixtures/README.md create mode 100644 tests/fixtures/v1_cifar_resnet20.pth diff --git a/MANIFEST.in b/MANIFEST.in new file mode 100644 index 0000000..1eeef06 --- /dev/null +++ b/MANIFEST.in @@ -0,0 +1 @@ +prune tests diff --git a/scripts/evidence_run.py b/scripts/evidence_run.py new file mode 100644 index 0000000..c1de90a --- /dev/null +++ b/scripts/evidence_run.py @@ -0,0 +1,285 @@ +"""Bounded, reproducible CUDA evidence run for release readiness. + +One seeded experiment on CIFAR-10 (public, auto-downloaded) intended to +*validate the system end-to-end*, not to maximize a headline number: + +- model: ResNet-18 early-exit wrapper, fine-tuned from ImageNet-pretrained + weights for a small, explicit number of epochs; +- static smaller baseline: MobileNetV2 (ImageNet-pretrained), fine-tuned the + same way — a legitimately smaller static model trained on the same data; +- explicit disjoint splits: train (45k), temperature (2.5k), calibration + (2.5k), official test (10k). The threshold search never sees test labels. +- fair benchmark: all three models measured by benchmark_models on the exact + same test samples with identical boundaries; a noise-input variant is + recorded separately as a best-case bound. + +Hard bounds: explicit epoch caps, a wall-clock budget check, one fixed seed. +Note: full bitwise determinism is not guaranteed on GPU (cuDNN autotuning); +the seed fixes data order and initialisation. + +Output: docs/evidence/cuda_evidence.json + docs/evidence/CUDA_EVIDENCE.md. +Negative results (e.g. wrapper slower than backbone) are recorded as-is. +""" + +from __future__ import annotations + +import argparse +import json +import platform +import sys +import time +from pathlib import Path + +import torch +import torchvision +from torch.utils.data import DataLoader, Subset +from torchvision import transforms + +ROOT = Path(__file__).resolve().parents[1] +sys.path.insert(0, str(ROOT)) + +from earlyon import __version__ # noqa: E402 +from earlyon.benchmarking import benchmark_models, evaluate # noqa: E402 +from earlyon.core.thresholds import calibrate_thresholds # noqa: E402 +from earlyon.training import stage1_train_backbone, stage2_train_exits # noqa: E402 +from earlyon.utils import build_model, save_wrapper # noqa: E402 + +SEED = 42 +WALL_BUDGET_S = 3 * 3600 +OUT_DIR = ROOT / "docs" / "evidence" + +MEAN = (0.4914, 0.4822, 0.4465) +STD = (0.2470, 0.2435, 0.2616) + + +def loaders(root: str, image_size: int = 224, batch_size: int = 128): + train_tf = transforms.Compose( + [ + transforms.Resize(image_size), + transforms.RandomHorizontalFlip(), + transforms.ToTensor(), + transforms.Normalize(MEAN, STD), + ] + ) + eval_tf = transforms.Compose( + [ + transforms.Resize(image_size), + transforms.ToTensor(), + transforms.Normalize(MEAN, STD), + ] + ) + train_full = torchvision.datasets.CIFAR10(root, train=True, download=True, transform=train_tf) + eval_train = torchvision.datasets.CIFAR10(root, train=True, download=False, transform=eval_tf) + test = torchvision.datasets.CIFAR10(root, train=False, download=True, transform=eval_tf) + + # explicit disjoint splits over the 50k train images + n = len(train_full) + temp_idx = list(range(0, 2500)) + calib_idx = list(range(2500, 5000)) + train_idx = list(range(5000, n)) + + mk = lambda ds, idx, bs, shuffle: DataLoader( # noqa: E731 + Subset(ds, idx), batch_size=bs, shuffle=shuffle, num_workers=2, pin_memory=True + ) + return { + "train": mk(train_full, train_idx, batch_size, True), + "temperature": mk(eval_train, temp_idx, batch_size, False), + "calibration": mk(eval_train, calib_idx, batch_size, False), + "test_batched": DataLoader(test, batch_size=batch_size, num_workers=2), + "test_b1": DataLoader(test, batch_size=1, num_workers=2, pin_memory=True), + "counts": { + "train": len(train_idx), + "temperature": len(temp_idx), + "calibration": len(calib_idx), + "test": len(test), + }, + } + + +def batched_accuracy(module: torch.nn.Module, loader: DataLoader, device: str) -> float: + module = module.to(device).eval() + correct = total = 0 + with torch.inference_mode(): + for x, y in loader: + pred = module(x.to(device)).argmax(dim=-1).cpu() + correct += int((pred == y).sum()) + total += y.numel() + return correct / total + + +def main() -> None: + parser = argparse.ArgumentParser() + parser.add_argument("--data", default=str(ROOT / "data")) + parser.add_argument("--epochs-stage1", type=int, default=2) + parser.add_argument("--epochs-stage2", type=int, default=2) + parser.add_argument("--epochs-baseline", type=int, default=2) + parser.add_argument("--bench-runs", type=int, default=300) + args = parser.parse_args() + + if not torch.cuda.is_available(): + sys.exit("CUDA is required for the evidence run") + device = "cuda" + torch.manual_seed(SEED) + torch.cuda.manual_seed_all(SEED) + t_start = time.time() + + def budget_check(stage: str) -> None: + spent = time.time() - t_start + if spent > WALL_BUDGET_S: + sys.exit(f"wall-clock budget exceeded before {stage} ({spent:.0f}s)") + + data = loaders(args.data) + log = {"stages": {}} + + # ---- early-exit ResNet-18 ---- + model = build_model("resnet18", num_classes=10, pretrained=True) + t0 = time.time() + stage1_train_backbone( + model.backbone, data["train"], epochs=args.epochs_stage1, lr=0.005, device=device + ) + log["stages"]["stage1_seconds"] = round(time.time() - t0, 1) + budget_check("stage2") + t0 = time.time() + stage2_train_exits(model, data["train"], epochs=args.epochs_stage2, lr=1e-3, device=device) + log["stages"]["stage2_seconds"] = round(time.time() - t0, 1) + budget_check("baseline") + + # ---- static smaller baseline: MobileNetV2 backbone ---- + baseline = build_model("mobilenetv2", num_classes=10, pretrained=True) + t0 = time.time() + stage1_train_backbone( + baseline.backbone, data["train"], epochs=args.epochs_baseline, lr=0.002, device=device + ) + log["stages"]["baseline_seconds"] = round(time.time() - t0, 1) + budget_check("calibration") + + # ---- calibration: temperatures on the temperature split, thresholds on + # the calibration split; the test set is never touched here ---- + t0 = time.time() + calib = calibrate_thresholds( + model, + data["calibration"], + target_accuracy_drop=0.01, + device=device, + fit_temperature=True, + temperature_loader=data["temperature"], + ) + log["stages"]["calibrate_seconds"] = round(time.time() - t0, 1) + budget_check("evaluation") + + # ---- held-out test evaluation ---- + t0 = time.time() + report = evaluate(model, data["test_b1"], device=device) + log["stages"]["test_eval_seconds"] = round(time.time() - t0, 1) + backbone_test_acc = batched_accuracy(model.backbone, data["test_batched"], device) + baseline_test_acc = batched_accuracy(baseline.backbone, data["test_batched"], device) + budget_check("benchmark") + + # ---- fair benchmark: identical real test samples for all three models ---- + torch.cuda.reset_peak_memory_stats() + cmp_real = benchmark_models( + { + "backbone_resnet18": model.backbone, + "early_exit_resnet18": model, + "static_mobilenetv2": baseline.backbone, + }, + loader=data["test_b1"], + device=device, + num_warmup=50, + num_runs=args.bench_runs, + ) + peak_mem_mb = torch.cuda.max_memory_allocated() / 1e6 + cmp_noise = benchmark_models( + { + "backbone_resnet18": model.backbone, + "early_exit_resnet18": model, + "static_mobilenetv2": baseline.backbone, + }, + input_shape=(1, 3, 224, 224), + device=device, + num_warmup=50, + num_runs=args.bench_runs, + ) + + OUT_DIR.mkdir(parents=True, exist_ok=True) + save_wrapper(model, OUT_DIR / "resnet18_ee_evidence.pth") + + result = { + "purpose": "bounded system-validation run; not a tuned headline benchmark", + "seed": SEED, + "determinism_note": ( + "seed fixes init/data order; bitwise GPU determinism not enforced (cuDNN)" + ), + "dataset": {"name": "CIFAR-10 (torchvision, images upsampled to 224)", **data["counts"]}, + "weights": "ImageNet-pretrained torchvision weights, fine-tuned as recorded below", + "epochs": { + "stage1_backbone": args.epochs_stage1, + "stage2_exits": args.epochs_stage2, + "static_baseline": args.epochs_baseline, + }, + "model": { + "backbone": "resnet18", + "exit_points": [ + {"name": ep.name, "layer": ep.layer_name, "in_channels": ep.in_channels} + for ep in model.config.exit_points + ], + "head_config": "EarlyExitHead(hidden_dim=128, dropout=0.2)", + }, + "calibration": { + "objective": "accuracy_budget", + "target_accuracy_drop": 0.01, + "method": calib.method, + "thresholds": calib.thresholds, + "enabled_exits": calib.enabled_exits, + "temperatures": calib.temperatures, + "temperature_fit_converged": ( + {k: v.converged for k, v in calib.temperature_fits.items()} + if calib.temperature_fits + else None + ), + "calibration_split_baseline_acc": round(calib.baseline_accuracy, 4), + "calibration_split_routed_acc": round(calib.final_accuracy, 4), + }, + "test": { + "early_exit_routed_accuracy": round(report.overall_accuracy, 4), + "backbone_accuracy": round(backbone_test_acc, 4), + "static_mobilenetv2_accuracy": round(baseline_test_acc, 4), + "early_exit_estimated_flops_fraction": round(report.avg_computation_used, 4), + "exit_distribution": report.exit_distribution, + }, + "benchmark_real_input": {name: r.to_dict() for name, r in cmp_real.results.items()}, + "benchmark_real_speedups": { + "early_exit_vs_backbone": round( + cmp_real.speedup_vs("early_exit_resnet18", "backbone_resnet18"), 3 + ), + "static_vs_backbone": round( + cmp_real.speedup_vs("static_mobilenetv2", "backbone_resnet18"), 3 + ), + }, + "benchmark_noise_input": { + "note": "best-case bound: trained heads may fire spuriously on noise", + **{name: r.to_dict() for name, r in cmp_noise.results.items()}, + "early_exit_vs_backbone_speedup": round( + cmp_noise.speedup_vs("early_exit_resnet18", "backbone_resnet18"), 3 + ), + }, + "peak_cuda_memory_mb_during_real_benchmark": round(peak_mem_mb, 1), + "stage_seconds": log["stages"], + "total_wall_seconds": round(time.time() - t_start, 1), + "environment": { + "python": platform.python_version(), + "torch": torch.__version__, + "torchvision": torchvision.__version__, + "cuda": torch.version.cuda, + "gpu": torch.cuda.get_device_name(0), + "earlyon": __version__, + "os": platform.platform(), + }, + } + (OUT_DIR / "cuda_evidence.json").write_text(json.dumps(result, indent=2)) + print(json.dumps(result, indent=2)) + print(f"\nwrote {OUT_DIR / 'cuda_evidence.json'}") + + +if __name__ == "__main__": + main() diff --git a/scripts/smoke_test.py b/scripts/smoke_test.py new file mode 100644 index 0000000..0f5283b --- /dev/null +++ b/scripts/smoke_test.py @@ -0,0 +1,155 @@ +"""Post-install smoke test: exercises the public API of an *installed* earlyon. + +Run from OUTSIDE the repository against a clean environment: + + pip install + python smoke_test.py + +Covers: import + version, built-in model construction, training-mode forward, +routed inference, deterministic calibration on a synthetic fixture, v2 +checkpoint save/load, v1 checkpoint migration, staged runtime equivalence, +and a benchmark smoke. Uses synthetic data only — nothing here is an accuracy +or speed claim. Exits non-zero on the first failure. +""" + +from __future__ import annotations + +import sys +import tempfile +from pathlib import Path + +import torch +from torch.utils.data import DataLoader, TensorDataset + + +def check(name: str, ok: bool, detail: str = "") -> None: + print(f"[{'PASS' if ok else 'FAIL'}] {name}" + (f" — {detail}" if detail else "")) + if not ok: + sys.exit(1) + + +def main() -> None: + torch.manual_seed(0) + + import earlyon + + check("import + version", bool(earlyon.__version__), earlyon.__version__) + + # built-in model (no pretrained download), training + inference forwards + from earlyon.models import cifar_resnet_ee + + model = cifar_resnet_ee(num_classes=10, depth=20) + outputs = model(torch.randn(2, 3, 32, 32), mode="training") + check("training forward", len(outputs) == len(model.config.exit_points) + 1) + model.eval() + result = model(torch.randn(1, 3, 32, 32), mode="inference") + check( + "routed inference", + result.prediction.shape == (1, 10) + and 0.0 <= result.estimated_backbone_flops_fraction <= 1.0, + f"exit_taken={result.exit_taken}", + ) + + # deterministic calibration on a synthetic fixture + from earlyon.core.thresholds import calibrate_thresholds + + x = torch.randn(32, 3, 32, 32) + y = torch.randint(0, 10, (32,)) + loader = DataLoader(TensorDataset(x, y), batch_size=8) + calib = calibrate_thresholds(model, loader, target_accuracy_drop=0.05, device="cpu") + check( + "calibration", + len(calib.thresholds) == len(model.config.exit_points) + and calib.num_samples == 32 + and calib.schema_version == 2, + f"enabled={calib.enabled_exits}", + ) + + from earlyon.utils import load_wrapper, save_wrapper + + with tempfile.TemporaryDirectory() as tmp: + # v2 round-trip + v2_path = Path(tmp) / "model_v2.pth" + save_wrapper(model, v2_path) + loaded = load_wrapper(v2_path) + check( + "v2 save/load round-trip", + loaded.config.enabled_exits == model.config.enabled_exits + and loaded.config.temperatures == model.config.temperatures, + ) + + # v1 migration: the exact payload shape earlyon <= 0.2 wrote + v1_path = Path(tmp) / "model_v1.pth" + torch.save( + { + "state_dict": model.state_dict(), + "config": { + "backbone": "cifar_resnet20", + "num_classes": 10, + "routing_policy": "confidence", + "confidence_thresholds": [0.7, 1.0, 0.85], # 1.0 = v1 sentinel + "entropy_thresholds": [0.5, 0.5, 0.5], + "loss_weights": [0.1, 0.2, 0.3, 0.4], + "temperature": 1.5, + }, + }, + v1_path, + ) + import warnings + + with warnings.catch_warnings(): + warnings.simplefilter("ignore") + migrated = load_wrapper(v1_path) + check( + "v1 checkpoint migration", + migrated.config.enabled_exits == [True, False, True] + and migrated.config.temperatures["final"] == 1.5, + ) + + # staged runtime equivalence on a Sequential backbone + import torch.nn as nn + + from earlyon.models import custom_ee + from earlyon.staged import staged_model + + seq = nn.Sequential( + nn.Conv2d(3, 8, 3, padding=1), + nn.ReLU(), + nn.AdaptiveAvgPool2d(1), + nn.Flatten(), + nn.Linear(8, 10), + ) + wrapper = custom_ee(seq, exit_layers=["0"], num_classes=10, input_shape=(1, 3, 16, 16)) + staged = staged_model(wrapper) + wrapper.eval() + staged.eval() + probe = torch.randn(1, 3, 16, 16) + eager_r = wrapper(probe, mode="inference") + staged_r = staged.infer(probe) + check( + "staged == eager", + staged_r.exit_taken == eager_r.exit_taken + and torch.allclose(staged_r.prediction, eager_r.prediction, atol=1e-6), + ) + + # benchmark smoke: identical samples, tiny run + from earlyon.benchmarking import benchmark_models + + cmp_r = benchmark_models( + {"early_exit": model, "backbone": model.backbone}, + input_shape=(1, 3, 32, 32), + num_warmup=2, + num_runs=5, + ) + check( + "benchmark smoke", + cmp_r.results["early_exit"].num_runs == 5 + and cmp_r.results["early_exit"].boundary == "model-only", + f"speedup={cmp_r.speedup_vs('early_exit', 'backbone'):.2f}x (synthetic; not a claim)", + ) + + print("SMOKE OK") + + +if __name__ == "__main__": + main() diff --git a/tests/fixtures/README.md b/tests/fixtures/README.md new file mode 100644 index 0000000..195d2c8 --- /dev/null +++ b/tests/fixtures/README.md @@ -0,0 +1,11 @@ +# Test fixtures + +- `tiny_models.py` — tiny CNN/transformer backbones for fast tests. +- `v1_cifar_resnet20.pth` (~1.2 MB) — a genuine pre-v0.3 (format v1) + checkpoint written by the actual historical `save_wrapper` (git `main`, + commit a5f8414) on a seeded, untrained `cifar_resnet_ee(depth=20)`. + Contains the legacy scalar `temperature` (1.6) and the v1 "disabled" + sentinel threshold (confidence 1.0 at exit 1). Used by + `tests/test_release_audit.py::test_real_v1_fixture_checkpoint_migrates` + to prove the v1→v2 migration against a real prior-version file, not a + hand-built dict. Deliberately force-added past the `*.pth` gitignore. diff --git a/tests/fixtures/v1_cifar_resnet20.pth b/tests/fixtures/v1_cifar_resnet20.pth new file mode 100644 index 0000000000000000000000000000000000000000..b1e155498bfefcf27d10e2f50461cf58b173d811 GIT binary patch literal 1182235 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%0Ax~jzK{8oV9S3hIayGHyedY^4}I00s7 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 z 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%0DrCH1(V_kHSAGcgyGN40m3%hdK8vPu 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

    L99-}C@V<%rftRX2sD7FN?#aj4 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 JKmYHa{U3!Cy0riR literal 0 HcmV?d00001 From e381db2b08b5ffb4a76fcb1e66fa367bef4ccabe Mon Sep 17 00:00:00 2001 From: sohams25 <86193836+sohams25@users.noreply.github.com> Date: Wed, 22 Jul 2026 14:58:39 +0530 Subject: [PATCH 12/16] docs: security review, migration guide, PR draft, README architecture + reproducibility - SECURITY_REVIEW.md: checkpoint trust model (weights_only + structural validation), model-code execution assumptions, provenance of datasets/ weights/the one committed fixture, subprocess boundaries, scan results - docs/MIGRATION.md: v1->v2 checkpoint mapping table and code-level changes - PR_BODY_DRAFT.md (not opened) - README: ASCII architecture diagram with the training/calibration/routing separation, checkpoint-migration section, reproducibility commands --- PR_BODY_DRAFT.md | 73 ++++++++++++++++++++++++++++++++++++++++++++++ README.md | 52 +++++++++++++++++++++++++++++++++ SECURITY_REVIEW.md | 72 +++++++++++++++++++++++++++++++++++++++++++++ docs/MIGRATION.md | 55 ++++++++++++++++++++++++++++++++++ 4 files changed, 252 insertions(+) create mode 100644 PR_BODY_DRAFT.md create mode 100644 SECURITY_REVIEW.md create mode 100644 docs/MIGRATION.md diff --git a/PR_BODY_DRAFT.md b/PR_BODY_DRAFT.md new file mode 100644 index 0000000..8c3f916 --- /dev/null +++ b/PR_BODY_DRAFT.md @@ -0,0 +1,73 @@ +# PR draft: earlyon 0.3 — correctness hardening + release readiness + +> Draft only. Not opened. Base: `main`. Head: `claude/earlyon-release-readiness` +> (includes `claude/earlyon-hardening`). + +## What this PR is + +A correctness and methodology release. No new backbones, no new headline +claims — the calibration math, the measurement methodology, the +serialization contract and the public claims are made defensible, and every +fix is pinned by tests (261 → 265+ tests, 95% coverage, strict mypy). + +## The four core defects fixed + +1. **One temperature for every head.** Temperature scaling was fit once from + the final classifier's logits and reused at every exit, though each exit + head is a differently miscalibrated classifier. Now: per-head fit with + convergence status, per-head application at routing time. A test proves a + single global temperature misroutes where per-head does not. +2. **"Disabled" exits could fire.** Disabling used threshold sentinels + (confidence 1.0 / entropy 0.0) while routing compares with `>=`/`<=`, so + a float32-saturated softmax fired a "disabled" exit. Now: explicit + `enabled_exits` booleans; sentinel-carrying v1 checkpoints migrate. +3. **Invalid temperatures were clamped sharp.** A negative fitted/user + temperature was clamped to `1e-6`, producing an artificially razor-sharp + softmax. Now: centralized `EarlyExitConfig.validate()` raises; runtime + guard falls back to the no-op 1.0. +4. **Benchmarks weren't comparable.** The wrapper and backbone were measured + on different inputs and boundaries. Now: `benchmark_models` feeds every + compared model the identical preloaded sample sequence with identical + warmup/boundary/sync; old records quarantined as `legacy_v0_2`. + +## Also in this PR + +- Staged calibration pipeline + rich `CalibrationResult` (enablement, exit + distribution, sample count, honest `greedy-coordinate-grid` method name). +- Checkpoint `format_version: 2` + deterministic v1 migration, tested + against a genuine v0.2-written fixture; `factory=` loading for custom + models. +- `estimated_backbone_flops_fraction` (alias kept): lazy `FlopsEstimate` + with provenance, reused-module detection, exit-head cost disclosed. +- Restartable tegrastats monitor; instantaneous power vs window-average vs + integrated energy kept distinct; missing telemetry is `None`. +- `custom_ee`: example args/kwargs, device inference, feature extractors, + exactly-once/in-order exit validation. +- Staged deployment contract + reference splitter for Sequential backbones, + proven equivalent to eager routing and proven to skip later stages. +- Packaging: wheel/sdist build + twine-clean; clean-env wheel smoke script; + sdist no longer ships a partial test tree. +- Bounded, seeded CUDA evidence run on CIFAR-10 (ResNet-18 EE vs backbone vs + static MobileNetV2) with disjoint train/temperature/calibration/test + splits — results in `docs/evidence/`. +- Docs: calibration/benchmark contract, migration guide, staged deployment + guide, security review, honest README repositioning + ("deployment-oriented", legacy labels, batch-1 scope). + +## Compatibility + +Old checkpoints load (migrated, warned). `computation_used`, +`fitted_temperature` and the single-model benchmark helpers remain as +compatible aliases/wrappers. Breaking edges are listed in +`docs/MIGRATION.md`. + +## Test plan + +- [x] `pytest` full suite (CPU + CUDA host): all green +- [x] `mypy earlyon` strict, `ruff`, `black --check`, `isort --check-only` +- [x] wheel + sdist build, `twine check`, clean-venv install + out-of-repo + smoke (`scripts/smoke_test.py`) +- [x] genuine v1 checkpoint migration fixture +- [x] bounded CUDA evidence run (`scripts/evidence_run.py`) +- [ ] optional before tagging: full-length `scripts/run_benchmarks.py` on + target hardware; Jetson procedure from `docs/STAGED_DEPLOYMENT.md` diff --git a/README.md b/README.md index 18b1771..e83a235 100644 --- a/README.md +++ b/README.md @@ -238,6 +238,35 @@ Every command takes `--help`. The rest of the toolkit: `train joint`, `calibrate --target-compute`, `analyze` (per-exit accuracy), `profile` (Jetson power), `export` (ONNX). +## Architecture + +``` + input (batch 1) + │ + ┌──────────▼──────────┐ hook ┌────────────┐ softmax(logits / T_e0) + │ backbone stage 0..k │──────────▶│ exit head 0│──┐ enabled? confidence ≥ thr? + └──────────┬──────────┘ └────────────┘ │ yes → return logits, STOP + │ (only if exit 0 didn't fire) │ no ▼ continue + ┌──────────▼──────────┐ hook ┌────────────┐ │ + │ backbone stage k..m │──────────▶│ exit head 1│──┤ each head has its OWN + └──────────┬──────────┘ └────────────┘ │ temperature T and its + │ │ own enabled flag + ┌──────────▼──────────┐ │ + │ rest of backbone │───────▶ final classifier ─┘ (T_final) + └─────────────────────┘ + + training mode: every head produces logits (no routing) → weighted CE loss + calibration: collect logits once → fit T per head → greedy threshold grid + deployment: eager wrapper (above), or staged stages (docs/STAGED_DEPLOYMENT.md) +``` + +Three concerns, kept separate: **training** (two-stage by default: your +backbone recipe untouched, then small heads on a frozen backbone), +**calibration** (per-head temperatures + threshold/enablement search on held- +out splits), and **routing** (pure inference-time policy driven by the +config). The full contract is in +[`docs/CALIBRATION_AND_BENCHMARK_CONTRACT.md`](docs/CALIBRATION_AND_BENCHMARK_CONTRACT.md). + ## How it works 1. Forward hooks attach the exit heads at the named layers, so the backbone @@ -283,6 +312,29 @@ The reasoning for each choice, including the ugly parts, is in the v0.3 fair runner (see the legacy labels). ImageNet-scale numbers and a real Jetson table don't exist yet; treat any wall-clock claim accordingly. +## Checkpoint migration + +Checkpoints are versioned (`format_version: 2`). Files written by earlyon +≤ 0.2 load with an automatic, deterministic migration (scalar temperature +broadcast per head; legacy "disabled" threshold sentinels become explicit +`enabled_exits=False`) and a warning describing what changed — pinned +against a genuine v0.2-written fixture in the test suite. Details and code +changes: [`docs/MIGRATION.md`](docs/MIGRATION.md). + +## Reproducibility + +- `pytest -m "not gpu"` — full CPU suite; `pytest -m gpu` on a CUDA host. +- `python scripts/smoke_test.py` — post-install smoke against an installed + wheel (run it from outside the repo). +- `python scripts/evidence_run.py` — the bounded, seeded CIFAR-10 evidence + experiment (CUDA; explicit train/temperature/calibration/test splits, + epoch caps, wall-clock budget). Output lands in `docs/evidence/`. +- `python scripts/run_benchmarks.py` — the longer train+calibrate+benchmark + pipeline that regenerates `docs/benchmarks.json` (`runs` key). +- Jetson: the exact procedure (tegrastats profiling, per-stage TensorRT) is + in [`docs/STAGED_DEPLOYMENT.md`](docs/STAGED_DEPLOYMENT.md); no Jetson + numbers are published because none have been measured. + ## Contributing Bug reports and benchmark results from your hardware are welcome. Start with diff --git a/SECURITY_REVIEW.md b/SECURITY_REVIEW.md new file mode 100644 index 0000000..a11ab9f --- /dev/null +++ b/SECURITY_REVIEW.md @@ -0,0 +1,72 @@ +# Security review — earlyon 0.3 release candidate + +Date: 2026-07-22. Scope: the `earlyon` package, scripts, tests, docs and +packaged artifacts on branch `claude/earlyon-release-readiness`. + +## Checkpoint trust assumptions + +- `load_wrapper` calls `torch.load(..., map_location="cpu", weights_only=True)`. + With `weights_only=True`, PyTorch's restricted unpickler refuses arbitrary + object construction, so a malicious `.pth` cannot execute code through the + earlyon loading path. The payload is then structurally validated + (`format_version`, config shapes, exit-point cross-check) before any state + is applied. +- This protects the *loading* step only. A checkpoint still controls model + *behavior* (weights, thresholds, enablement, temperatures); loading an + untrusted checkpoint yields an untrusted model. Treat checkpoints like + data, not like code — but do not deploy models from untrusted sources. +- `save_wrapper` writes only tensors, plain Python scalars/containers and + strings; no custom classes are pickled. + +## Model-code execution assumptions + +- `custom_ee`, `EarlyExitWrapper` and `staged_model` execute the + **user-supplied backbone's `forward`** (dry runs, FLOPs probes, routing). + Wrapping a model is running its code. earlyon adds no sandboxing and makes + no claim to; only wrap modules you would run anyway. +- `load_wrapper(..., factory=...)` calls the user-supplied factory — same + trust level as the caller's own code. +- No use of `eval`, `exec`, dynamic imports of user strings, or `pickle` + outside `torch.save/load` as described above. + +## Dataset and weight provenance + +- Datasets: CIFAR-10 via `torchvision.datasets` (checksummed download by + torchvision) into a gitignored `data/` directory. No datasets are + committed or redistributed. +- Weights: ImageNet-pretrained weights come from torchvision's official hub + (HTTPS, hash-pinned filenames) when `pretrained=True`. earlyon + redistributes no third-party weights. The only committed binary is + `tests/fixtures/v1_cifar_resnet20.pth` (~1.2 MB): a *seeded, untrained* + model saved with the historical v1 format purely to test checkpoint + migration; it contains no trained knowledge and no external data. + +## Subprocess boundaries + +- The only subprocess is `tegrastats` (Jetson telemetry): fixed argv list, + no `shell=True`, no user-controlled arguments (the interval is a validated + integer), stdout parsed with anchored regexes, stderr discarded, process + terminated/killed with timeouts and pipes closed on stop. Spawn failure + degrades to "unavailable" rather than raising mid-benchmark. + +## Filesystem / temp / network + +- Library code performs no network access. Downloads happen only through + torchvision (datasets/weights) when the user opts in via CLI/scripts. +- Tests use `tmp_path`/`TemporaryDirectory`; no world-writable fixed paths. +- No archive extraction is performed by earlyon itself. + +## Scan results (this review) + +- No credentials, API keys, tokens or private keys in the tree. +- No private/internal paths, employer identifiers, or non-public material. + The author contact in `pyproject.toml` is deliberate public metadata. +- Coverage output, datasets, build artifacts (`htmlcov/`, `data/`, `dist/`, + `.coverage`) are gitignored and untracked. +- The wheel contains only the `earlyon` package; the sdist prunes `tests/` + (`MANIFEST.in`), so the binary fixture ships in neither artifact. + +## Reporting + +Vulnerabilities: follow `SECURITY.md` (private disclosure; do not open +public issues for security reports). diff --git a/docs/MIGRATION.md b/docs/MIGRATION.md new file mode 100644 index 0000000..16bda77 --- /dev/null +++ b/docs/MIGRATION.md @@ -0,0 +1,55 @@ +# Migrating to earlyon 0.3 + +0.3 changes calibration/routing semantics. Old checkpoints load and migrate +automatically; code that touched the changed fields needs the edits below. + +## Checkpoints (v1 → v2): automatic + +`load_wrapper` detects unversioned (≤0.2) files and migrates them +deterministically, emitting a `UserWarning` describing what changed: + +| v1 field | v2 result | +|---|---| +| scalar `temperature: T` | `temperatures = {every exit: T, "final": T}` | +| confidence threshold `1.0` (active policy) | that exit's `enabled_exits[i] = False` | +| entropy threshold `0.0` (active policy) | that exit's `enabled_exits[i] = False` | +| non-finite/non-positive `temperature` | `1.0` (uncalibrated) + warning | + +Behavioral note: under v1, a "disabled" (threshold-1.0) exit could still fire +when float32 softmax saturated at exactly 1.0. After migration it is strictly +disabled. If you relied on that edge case, re-enable the exit and set a real +threshold. + +Re-saving a migrated model writes `format_version: 2`; v2 files round-trip +with no warnings. Files with a *newer* format version are rejected with an +upgrade message. This is pinned against a genuine v0.2-written fixture in +`tests/test_release_audit.py`. + +`custom_ee` checkpoints cannot be rebuilt from a string — pass a factory: + +```python +model = load_wrapper("ckpt.pth", factory=lambda: custom_ee(build_backbone(), ...)) +``` + +## Code changes + +- **Temperature:** read/write `config.temperatures` (a dict keyed by exit + name plus `"final"`), not `config.temperature`. The scalar is still + accepted by the constructor (broadcast once); mutating it after + construction has no effect on routing. +- **Disabling an exit:** set `config.enabled_exits[i] = False`. Do not use + threshold sentinels; `validate()` requires thresholds in-range. +- **Compute number:** `result.computation_used` still reads, but the field + is `estimated_backbone_flops_fraction` — and it is an estimate (see + `docs/CALIBRATION_AND_BENCHMARK_CONTRACT.md`). +- **CalibrationResult:** `fitted_temperature` is now the final head's fit + (deprecated); use `result.temperatures` / `result.temperature_fits`. + New fields: `enabled_exits`, `exit_distribution`, `num_samples`, + `objective`, `method`, `accuracy_delta`, `schema_version`. +- **Benchmarking:** prefer `benchmark_models({...}, loader=...)`; the old + single-model helpers still work and now share the fair measurement core. + `BenchmarkResult.avg_computation_used` → `avg_estimated_flops_fraction` + (alias kept). +- **Invalid config now raises** (e.g. negative temperature, out-of-range + threshold) from `EarlyExitConfig.validate()` instead of being silently + clamped at inference time. From 5ce0427a92d175a2eb533c62c93876dc223acbb8 Mon Sep 17 00:00:00 2001 From: sohams25 <86193836+sohams25@users.noreply.github.com> Date: Wed, 22 Jul 2026 15:15:39 +0530 Subject: [PATCH 13/16] docs: fix coverage badge to measured 95%, changelog for readiness work, release notes audit section --- CHANGELOG.md | 9 +++++++++ README.md | 2 +- RELEASE_NOTES_DRAFT.md | 21 +++++++++++++++++++++ 3 files changed, 31 insertions(+), 1 deletion(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 81a93c3..13fbbfe 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -53,6 +53,15 @@ format follows [keep a changelog](https://keepachangelog.com/en/1.1.0/). and labels pre-v0.3 benchmark numbers as legacy. ### added +- **release-readiness verification**: independent adversarial audit tests + (`tests/test_release_audit.py`) including a global-vs-per-head temperature + counterfactual, batched-path per-head temperatures, NaN-head safety, + calibration determinism, and structural proof that the staged runtime + skips later stages; a genuine v0.2-written checkpoint fixture pinning the + v1→v2 migration; a post-install wheel smoke script + (`scripts/smoke_test.py`); a bounded seeded CUDA evidence runner + (`scripts/evidence_run.py`); `MANIFEST.in` so the sdist stops shipping a + partial test tree; `SECURITY_REVIEW.md` and `docs/MIGRATION.md`. - **staged deployment** (`earlyon.staged`): a documented protocol (ordered stages emitting continuation features + exit logits, routing between stages) with a verified reference splitter for Sequential backbones — diff --git a/README.md b/README.md index e83a235..c73c336 100644 --- a/README.md +++ b/README.md @@ -5,7 +5,7 @@ @@ -383,7 +383,7 @@ If earlyon saves your model some FLOPs, a citation is welcome: year = {2026}, publisher = {GitHub}, howpublished = {\url{https://github.com/sohams25/earlyon}}, - note = {Version 0.2.0} + note = {Version 0.3.0} } ``` diff --git a/RELEASE_NOTES_DRAFT.md b/RELEASE_NOTES_DRAFT.md index 04d9561..33e5b65 100644 --- a/RELEASE_NOTES_DRAFT.md +++ b/RELEASE_NOTES_DRAFT.md @@ -1,87 +1,133 @@ -# earlyon 0.3.0 — draft release notes (NOT published, NOT tagged) - -Suggested version: **0.3.0** (routing/calibration semantics changed; -checkpoints migrate automatically, but calibrated behavior can differ — -disabled exits are now strictly disabled). - -## Headline - -earlyon 0.3 is a correctness release. It makes the calibration methodology -defensible (per-head temperatures, explicit exit enablement, split -discipline), the measurements fair (one benchmark core, identical samples -and boundaries for every compared model), and the claims honest (estimated -FLOPs labelled as estimates, legacy numbers quarantined, "production-ready" -retired in favor of "deployment-oriented"). - -## Breaking / behavioral changes (all with migration paths) - -- One temperature **per head** (`config.temperatures`), fitted per head when - `fit_temperature=True`. The scalar `temperature` field is a constructor - convenience only; mutate `temperatures` after construction. -- Disabled exits are explicit booleans (`config.enabled_exits`). Threshold - sentinels are gone; a saturated softmax can no longer fire a "disabled" - exit. v1 checkpoints migrate their sentinels with a warning. -- Calibration leaves never-firing exits **disabled** instead of enabled at - an idle threshold; `CalibrationResult` gained enablement, exit - distribution, sample count, objective and method fields. -- `computation_used` → `estimated_backbone_flops_fraction` (read alias - kept). It is an estimate excluding exit heads and routing overhead. -- `BenchmarkResult.avg_computation_used` → `avg_estimated_flops_fraction` - (read alias kept); results now carry boundary/sync/input-source metadata. -- Checkpoints are `format_version: 2`; v1 loads migrate deterministically. - `custom_ee` models reload via `load_wrapper(path, factory=...)`. -- Invalid config now raises from centralized `EarlyExitConfig.validate()` - (previously e.g. a negative temperature was clamped to `1e-6`). - -## New - -- `benchmark_models`: fair multi-model comparison (backbone / wrapper / - static baseline / quantised variant) on identical samples, with accuracy - reported for labelled loaders and explicit model-only vs end-to-end - boundaries. -- `earlyon.staged`: staged-deployment protocol + verified reference splitter - for Sequential backbones; staged execution matches eager routing and - genuinely skips later stages. `docs/STAGED_DEPLOYMENT.md` documents the - contract and the Jetson/TensorRT procedure. -- Jetson: restartable `TegrastatsMonitor`, `None` for missing telemetry, - `profile_with_energy` with real integrated energy (`EnergySummary`). -- `custom_ee`: example args/kwargs, device inference, per-layer feature - extractors, and dry-run validation (exactly-once, in-order exits). -- Lazy `FlopsEstimate` with provenance; reused-module detection. -- `docs/CALIBRATION_AND_BENCHMARK_CONTRACT.md`. - -## Release-readiness verification (post-hardening audit) - -The hardening claims were re-verified independently on -`claude/earlyon-release-readiness`: - -- adversarial tests added, including the decisive counterfactual that a - single global temperature misroutes where per-head temperatures do not, - batched-path per-head temperatures, NaN-emitting heads, calibration - determinism, and structural proof that the staged runtime skips later - stages; -- v1→v2 checkpoint migration verified against a **genuine** v0.2-written - fixture (`tests/fixtures/v1_cifar_resnet20.pth`), not a hand-built dict; -- wheel + sdist build `twine`-clean; wheel installed into a clean venv and - smoked from outside the repo (`scripts/smoke_test.py`); sdist no longer - ships a partial test tree; -- a bounded, seeded CUDA evidence run (`scripts/evidence_run.py`) on - CIFAR-10 with disjoint train/temperature/calibration/test splits and a - static MobileNetV2 baseline — results in `docs/evidence/`; -- security review in `SECURITY_REVIEW.md`; migration guide in - `docs/MIGRATION.md`. - -## Release checklist (when actually releasing) - -- [ ] bump `__version__` and `pyproject.toml` to 0.3.0; move `unreleased` in - CHANGELOG under 0.3.0 with a date -- [ ] regenerate `docs/benchmarks.json` `runs` with - `scripts/run_benchmarks.py` on real hardware; update the README table - from those records and drop the legacy labels for the new numbers -- [ ] run the Jetson procedure in `docs/STAGED_DEPLOYMENT.md` §Jetson if a - device is available (optional for release, required before any Jetson - claim) -- [ ] full gate: `pytest -m "not gpu"`, `pytest -m gpu` (CUDA host), - `mypy earlyon`, `ruff check earlyon tests`, `black --check`, - `isort --check-only` -- [ ] `python -m build` + twine check; follow `docs/PYPI_RELEASE_CHECKLIST.md` +# earlyon v0.3.0 — release notes + +(This file is the canonical text for the v0.3.0 GitHub Release.) + +earlyon 0.3.0 is a correctness release for the early-exit toolkit. It makes +the calibration methodology defensible (per-head temperatures, explicit exit +enablement, strict data-split discipline), the measurements fair (one +benchmark core, identical samples and boundaries for every compared model), +and the claims honest (estimated FLOPs labelled as estimates, legacy numbers +quarantined, "production-ready" retired in favor of "deployment-oriented"). + +## Install + +```bash +pip install earlyon==0.3.0 +``` + +Python 3.10+, torch 2.0+. Existing checkpoints load with automatic +migration — see **Migration** below. + +## Methodological corrections + +- **One temperature per head.** Temperature scaling used to be fit once from + the final classifier's logits and reused at every exit, though each exit + head is a differently miscalibrated classifier. 0.3 fits and applies a + temperature per head (`config.temperatures`), with per-fit convergence + status; a regression test proves a single global temperature misroutes + where per-head fitting does not. +- **Disabled exits cannot fire.** Disabling via threshold sentinels + (confidence `1.0` / entropy `0.0`) was numerically unsound: a + float32-saturated softmax met the criterion. Enablement is now an explicit + boolean per exit (`config.enabled_exits`), honored by the confidence and + entropy policies on the single-sample, batched and staged paths. +- **Staged calibration pipeline.** Collect logits once → fit per-head + temperatures → greedy threshold grid search on the cache → evaluate; each + stage separately testable, the simulator pinned bit-exact against the real + router, threshold search never sees test labels, never-firing exits stay + disabled, empty loaders fail fast. The method is named what it is + (`greedy-coordinate-grid`) — no global-optimality claim. +- **Centralized validation.** `EarlyExitConfig.validate()` raises actionable + errors for invalid config (a negative temperature used to be silently + clamped to `1e-6`, producing an artificially sharp softmax). + +## Fair benchmarking + +`benchmark_models` measures every compared model — full backbone, early-exit +wrapper, a static smaller baseline, a quantised variant — on the **exact +same preloaded sample sequence** with identical warmup, boundary +(model-only vs end-to-end, labelled) and synchronization, reporting +p50/p95/p99, throughput, exit distribution and accuracy for labelled +loaders. Pre-0.3 benchmark records are quarantined as `legacy_v0_2` in +`docs/benchmarks.json`: they fed compared models different inputs and are +not comparable. + +## Honest compute terminology + +`computation_used` is renamed `estimated_backbone_flops_fraction` (read +alias kept). It is a static estimate — it excludes exit-head cost and all +routing overhead, and it is neither a latency nor an energy measurement. +The estimator (`FlopsEstimate`) reports its method and reliability, detects +reused modules (degrading to a warned low-confidence fallback), and runs +lazily so large-model construction is fast. + +## Staged execution + +`earlyon.staged` defines a staged-deployment contract (ordered stages +emitting continuation features + exit logits, routing applied between +stages) with a verified reference splitter for `nn.Sequential` backbones. +Staged execution provably matches eager routing and *structurally* skips +later stages — unlike the all-exits ONNX export +(`export_all_exits_to_onnx`), which always computes every exit and is a +portability artifact, not conditional execution. The supported contract is +deliberately narrow; unsupported graphs are rejected. See +`docs/STAGED_DEPLOYMENT.md`. + +## Checkpoints and migration + +Checkpoints now carry `format_version: 2` (exit-point identity, routing +policy, thresholds, enablement, per-head temperatures, library version) and +are cross-checked against the rebuilt factory on load. Files written by +earlyon ≤ 0.2 migrate automatically and deterministically — scalar +temperature broadcast per head, legacy sentinels → explicit disables — with +a warning; the migration is pinned against a genuine v0.2-written fixture. +`custom_ee` models reload via `load_wrapper(path, factory=...)`. +Details and code-level changes: `docs/MIGRATION.md`. + +## Also fixed + +- `custom_ee`: example args/kwargs for inspection, device inference (no more + CPU probes of CUDA models), per-layer feature extractors for + tuple/dict/odd-rank outputs, and dry-run validation that every exit layer + runs exactly once in the listed order. +- Jetson monitoring: `TegrastatsMonitor` is restartable (a restarted monitor + previously collected nothing), missing telemetry parses to `None` instead + of invented zeros, and `profile_with_energy` distinguishes instantaneous + power, window-average power and trapezoid-integrated energy. + +## Real CUDA evidence (one seeded, bounded run — not a universal claim) + +A deliberately small validation run (CIFAR-10 at 224px, ResNet-18 EE +fine-tuned 2+2 epochs from ImageNet weights, seed 42, disjoint +train/temperature/calibration/test splits, RTX 4050 Laptop GPU; full data in +`docs/evidence/`): + +- early-exit ResNet-18: 92.92% test accuracy vs 94.07% full backbone; + **1.10× throughput** with **worse median latency** (1.43 vs 1.33 ms) and + better tail latency (p95/p99) — routing overhead is real on the ~70% of + images that ran the full network; +- a static MobileNetV2 baseline trained the same way was competitive + (92.67%, 0.99×) — smaller static models remain an essential comparison; +- a noise-input 2.05× figure exists only as a labelled best-case bound, not + a practical speed claim. + +Early exit is **not always faster**; the fair runner exists so you can see +when it isn't. + +## Limitations + +- Dynamic routing is primarily eager PyTorch execution (hooks + host sync); + `torch.compile` is refused with a clear error. +- All-exits ONNX export computes every exit — no conditional execution. +- Staged reference execution supports Sequential backbones only. +- The Jetson/tegrastats procedure is documented but **unmeasured** — no + Jetson numbers exist; TensorRT deployment is not claimed. +- Estimated FLOPs fractions are estimates, not measured latency or energy. +- `forward(mode="inference")` is batch-1; batched routing is conservative. + +## Verification behind this release + +270 tests (incl. CUDA suite on a CUDA host), 95% coverage, mypy strict, +ruff/black/isort clean; wheel + sdist twine-clean and smoked from a clean +environment (`scripts/smoke_test.py`); security review in +`SECURITY_REVIEW.md`; full audit trail in `RELEASE_READINESS_REPORT.md`. diff --git a/earlyon/__init__.py b/earlyon/__init__.py index 737074b..7ced7a8 100644 --- a/earlyon/__init__.py +++ b/earlyon/__init__.py @@ -4,7 +4,7 @@ from earlyon.core.types import BatchedInferenceResult, EarlyExitConfig, ExitPoint, InferenceResult from earlyon.core.wrappers import EarlyExitWrapper -__version__ = "0.2.0" +__version__ = "0.3.0" __all__ = [ "EarlyExitWrapper", diff --git a/pyproject.toml b/pyproject.toml index 1b89487..ac19d7a 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -4,7 +4,7 @@ build-backend = "setuptools.build_meta" [project] name = "earlyon" -version = "0.2.0" +version = "0.3.0" description = "Deployment-oriented early-exit toolkit for PyTorch CV models." readme = "README.md" requires-python = ">=3.10"

    ci python - coverage + coverage mypy version license diff --git a/RELEASE_NOTES_DRAFT.md b/RELEASE_NOTES_DRAFT.md index 894472d..04d9561 100644 --- a/RELEASE_NOTES_DRAFT.md +++ b/RELEASE_NOTES_DRAFT.md @@ -50,6 +50,27 @@ retired in favor of "deployment-oriented"). - Lazy `FlopsEstimate` with provenance; reused-module detection. - `docs/CALIBRATION_AND_BENCHMARK_CONTRACT.md`. +## Release-readiness verification (post-hardening audit) + +The hardening claims were re-verified independently on +`claude/earlyon-release-readiness`: + +- adversarial tests added, including the decisive counterfactual that a + single global temperature misroutes where per-head temperatures do not, + batched-path per-head temperatures, NaN-emitting heads, calibration + determinism, and structural proof that the staged runtime skips later + stages; +- v1→v2 checkpoint migration verified against a **genuine** v0.2-written + fixture (`tests/fixtures/v1_cifar_resnet20.pth`), not a hand-built dict; +- wheel + sdist build `twine`-clean; wheel installed into a clean venv and + smoked from outside the repo (`scripts/smoke_test.py`); sdist no longer + ships a partial test tree; +- a bounded, seeded CUDA evidence run (`scripts/evidence_run.py`) on + CIFAR-10 with disjoint train/temperature/calibration/test splits and a + static MobileNetV2 baseline — results in `docs/evidence/`; +- security review in `SECURITY_REVIEW.md`; migration guide in + `docs/MIGRATION.md`. + ## Release checklist (when actually releasing) - [ ] bump `__version__` and `pyproject.toml` to 0.3.0; move `unreleased` in From e38b0734e411b70087429b19da089c7c0c718105 Mon Sep 17 00:00:00 2001 From: sohams25 <86193836+sohams25@users.noreply.github.com> Date: Wed, 22 Jul 2026 16:22:35 +0530 Subject: [PATCH 14/16] =?UTF-8?q?feat:=20bounded=20CUDA=20evidence=20run?= =?UTF-8?q?=20=E2=80=94=20real=20seeded=20CIFAR-10=20results?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - fix evidence runner OOM on 6 GB GPUs (baseline trains at batch 32, models moved off-GPU between phases, batched eval at 64) - docs/evidence/cuda_evidence.json + CUDA_EVIDENCE.md: seeded 2+2-epoch ResNet-18 EE vs full backbone vs static MobileNetV2 on identical test samples; per-head temperatures all converged and genuinely different; 1.10x throughput with WORSE median latency and better tails, 1.15% test accuracy drop vs 1% calibration budget — negatives reported as-is - README: evidence table with the honest interpretation; trained weights artifact stays local (gitignored) --- README.md | 19 +++ docs/evidence/CUDA_EVIDENCE.md | 81 ++++++++++ docs/evidence/cuda_evidence.json | 263 +++++++++++++++++++++++++++++++ scripts/evidence_run.py | 17 +- 4 files changed, 378 insertions(+), 2 deletions(-) create mode 100644 docs/evidence/CUDA_EVIDENCE.md create mode 100644 docs/evidence/cuda_evidence.json diff --git a/README.md b/README.md index c73c336..280b079 100644 --- a/README.md +++ b/README.md @@ -149,6 +149,25 @@ Reproduce with `python scripts/run_benchmarks.py` (trains and benchmarks) or `python scripts/re_evaluate.py` (from checkpoints). Raw numbers live in [`docs/benchmarks.json`](docs/benchmarks.json). +## Measured results (v0.3 fair runner — bounded evidence run) + +One seeded, deliberately small validation run (2 epochs per stage, RTX 4050 +Laptop GPU, CIFAR-10 at 224px, disjoint train/temperature/calibration/test +splits, identical samples and boundaries for all three models). Full data +and honest interpretation: [`docs/evidence/CUDA_EVIDENCE.md`](docs/evidence/CUDA_EVIDENCE.md). + +| Model | Test acc | p50 | p95 | Throughput | Est. FLOPs fraction | +|---|---:|---:|---:|---:|---:| +| ResNet-18 backbone | 94.07% | 1.33 ms | 1.51 ms | 712 ips | 1.00 | +| ResNet-18 early-exit | 92.92% | 1.43 ms | 1.46 ms | 782 ips (**1.10×**) | 0.88 (estimate) | +| MobileNetV2 static baseline | 92.67% | 1.40 ms | 1.48 ms | 702 ips (0.99×) | 1.00 | + +Read the negative parts too: the early-exit **median** latency is worse than +the backbone's (routing overhead on the 70% of images that don't exit); the +gain is in throughput and the tail (p95/p99), and the static baseline is +competitive at this training budget. That's the honest shape of early exit +on a fast GPU — reproduce with `python scripts/evidence_run.py`. + ## How it compares Compression makes the model cheaper for every input; early exit spends diff --git a/docs/evidence/CUDA_EVIDENCE.md b/docs/evidence/CUDA_EVIDENCE.md new file mode 100644 index 0000000..4dfa315 --- /dev/null +++ b/docs/evidence/CUDA_EVIDENCE.md @@ -0,0 +1,81 @@ +# Bounded CUDA evidence run — 2026-07-22 + +Machine-readable source: [`cuda_evidence.json`](cuda_evidence.json). +Reproduce: `python scripts/evidence_run.py` (seed 42; ~10 min compute on the +hardware below after the CIFAR-10 download). + +**Purpose.** A bounded, seeded, end-to-end *system validation* — training → +per-head temperature fit → threshold calibration → held-out evaluation → +fair 3-model benchmark — under the v0.3 methodology. It is deliberately +under-trained (2 epochs per stage) and is **not** a tuned headline +benchmark. Negative and mixed results below are reported as-is. + +## Setup + +| | | +|---|---| +| Hardware | NVIDIA RTX 4050 Laptop GPU (6 GB), CUDA 12.8 | +| Software | Python 3.13.9, torch 2.10.0+cu128, torchvision 0.25.0, earlyon 0.2.0 (0.3 RC branch) | +| Dataset | CIFAR-10 (torchvision download), images upsampled to 224×224 | +| Splits | train 45,000 · temperature 2,500 · calibration 2,500 · test 10,000 (official) — disjoint; the threshold search never saw test labels | +| Model | `resnet18_ee` (exits after `layer2`, `layer3`; heads: hidden 128, dropout 0.2), ImageNet-pretrained, fine-tuned 2+2 epochs (seed 42) | +| Static baseline | `mobilenet_v2` backbone, ImageNet-pretrained, fine-tuned 2 epochs (batch 32 for memory) | +| Determinism | seed fixes init/data order; bitwise GPU determinism not enforced (cuDNN) | + +## Calibration (never touches test data) + +Per-head fitted temperatures: e0 = 0.730, e1 = 0.641, final = 0.888 (all +fits converged) — three genuinely different values, which is the point of +per-head fitting. Greedy grid (accuracy budget 1%) selected thresholds +[0.7, 0.9] with both exits enabled. Calibration-split accuracy: 94.44% +(final head only) → 93.60% routed (−0.84%, inside the 1% budget on that +split). Calibration took 4.6 s (one cached-logits pass). + +## Held-out test results (10,000 images) + +| Model | Test accuracy | Est. backbone FLOPs fraction | +|---|---:|---:| +| ResNet-18 backbone (full) | **94.07%** | 1.000 | +| ResNet-18 early-exit (routed) | 92.92% | 0.880 (estimate; excludes heads/routing) | +| MobileNetV2 static baseline | 92.67% | 1.000 (of its own, smaller network) | + +Exit distribution: 5.6% at exit 0, 24.9% at exit 1, 69.5% ran the full +network. The routed accuracy drop on *test* is 1.15% — slightly beyond the +1% budget calibrated on the calibration split. That gap is expected +generalization error of the calibration estimate and is reported, not +hidden. + +## Fair benchmark (identical real test samples, model-only boundary, batch 1, 300 runs, 50 warmup, per-iteration CUDA sync) + +| Model | p50 | p95 | p99 | Throughput | Accuracy on timed samples | +|---|---:|---:|---:|---:|---:| +| ResNet-18 backbone | 1.33 ms | 1.51 ms | 1.65 ms | 711.9 ips | 93.7% | +| ResNet-18 early-exit | 1.43 ms | 1.46 ms | 1.48 ms | 781.8 ips | 91.7% | +| MobileNetV2 static | 1.40 ms | 1.48 ms | 1.50 ms | 702.1 ips | 93.0% | + +Speedups (same samples, same boundary): early-exit vs backbone **1.10×** +throughput; static baseline vs backbone 0.99×. Peak CUDA memory during the +timed comparison: 350 MB. Noise-input variant (best-case bound, spurious +exits possible): 2.05× — reported separately in the JSON and *not* a +practical-speed claim. + +## Honest interpretation + +- The early-exit model's **median latency is worse** than the raw backbone + (1.43 vs 1.33 ms) even though throughput is 10% better: when no exit + fires (70% of images) the wrapper pays the full backbone *plus* two head + evaluations and host syncs. The win comes from the 30% of images that + exit early, which also compresses the tail (p95/p99 are better). This is + exactly the routing-overhead behavior the documentation warns about. +- A ~12% estimated FLOPs saving translated to a ~10% throughput gain on + this GPU — estimates and wall-clock are close here, but that is not a + general law. +- At this (deliberately tiny) training budget the static MobileNetV2 is a + serious competitor: 92.67% accuracy at 0.99× speed vs the early-exit's + 92.92% at 1.10×. The early-exit model wins on both axes, but narrowly — + with longer training or a different backbone the comparison could flip, + which is why the fair runner makes the static baseline a first-class + citizen. +- These numbers characterize *this* bounded run on *this* laptop GPU. They + are not Jetson numbers, not ImageNet numbers, and not a general speedup + claim. diff --git a/docs/evidence/cuda_evidence.json b/docs/evidence/cuda_evidence.json new file mode 100644 index 0000000..1f8c69e --- /dev/null +++ b/docs/evidence/cuda_evidence.json @@ -0,0 +1,263 @@ +{ + "purpose": "bounded system-validation run; not a tuned headline benchmark", + "seed": 42, + "determinism_note": "seed fixes init/data order; bitwise GPU determinism not enforced (cuDNN)", + "dataset": { + "name": "CIFAR-10 (torchvision, images upsampled to 224)", + "train": 45000, + "temperature": 2500, + "calibration": 2500, + "test": 10000 + }, + "weights": "ImageNet-pretrained torchvision weights, fine-tuned as recorded below", + "epochs": { + "stage1_backbone": 2, + "stage2_exits": 2, + "static_baseline": 2 + }, + "model": { + "backbone": "resnet18", + "exit_points": [ + { + "name": "e0", + "layer": "layer2", + "in_channels": 128 + }, + { + "name": "e1", + "layer": "layer3", + "in_channels": 256 + } + ], + "head_config": "EarlyExitHead(hidden_dim=128, dropout=0.2)" + }, + "calibration": { + "objective": "accuracy_budget", + "target_accuracy_drop": 0.01, + "method": "greedy-coordinate-grid", + "thresholds": [ + 0.7, + 0.9 + ], + "enabled_exits": [ + true, + true + ], + "temperatures": { + "e0": 0.7298606743211031, + "e1": 0.6408520879825857, + "final": 0.8881403542803983 + }, + "temperature_fit_converged": { + "e0": true, + "e1": true, + "final": true + }, + "calibration_split_baseline_acc": 0.9444, + "calibration_split_routed_acc": 0.936 + }, + "test": { + "early_exit_routed_accuracy": 0.9292, + "backbone_accuracy": 0.9407, + "static_mobilenetv2_accuracy": 0.9267, + "early_exit_estimated_flops_fraction": 0.8799, + "exit_distribution": { + "final": 0.6953, + "exit_1": 0.2491, + "exit_0": 0.0556 + } + }, + "benchmark_real_input": { + "backbone_resnet18": { + "throughput_ips": 711.8584093111814, + "latency_median_ms": 1.328067499343888, + "latency_p50_ms": 1.3283369989949279, + "latency_p95_ms": 1.5121870001166826, + "latency_p99_ms": 1.6473269988637185, + "avg_estimated_flops_fraction": 1.0, + "exit_distribution": { + "final": 1.0 + }, + "num_runs": 300, + "device": "cuda", + "num_warmup": 50, + "batch_size": 1, + "input_shape": [ + 1, + 3, + 224, + 224 + ], + "dtype": "torch.float32", + "boundary": "model-only", + "sync": "cuda-synchronize-per-iteration", + "input_source": "loader", + "accuracy": 0.9366666666666666, + "num_labelled_samples": 300 + }, + "early_exit_resnet18": { + "throughput_ips": 781.8321391791311, + "latency_median_ms": 1.4273374999902444, + "latency_p50_ms": 1.4274259992816951, + "latency_p95_ms": 1.4558230013790308, + "latency_p99_ms": 1.4794830003665993, + "avg_estimated_flops_fraction": 0.8855555555555557, + "exit_distribution": { + "final": 0.73, + "exit_1": 0.19666666666666666, + "exit_0": 0.07333333333333333 + }, + "num_runs": 300, + "device": "cuda", + "num_warmup": 50, + "batch_size": 1, + "input_shape": [ + 1, + 3, + 224, + 224 + ], + "dtype": "torch.float32", + "boundary": "model-only", + "sync": "cuda-synchronize-per-iteration", + "input_source": "loader", + "accuracy": 0.9166666666666666, + "num_labelled_samples": 300 + }, + "static_mobilenetv2": { + "throughput_ips": 702.0757905132444, + "latency_median_ms": 1.398074999997334, + "latency_p50_ms": 1.3982290001877118, + "latency_p95_ms": 1.4844550005364, + "latency_p99_ms": 1.5049649991851766, + "avg_estimated_flops_fraction": 1.0, + "exit_distribution": { + "final": 1.0 + }, + "num_runs": 300, + "device": "cuda", + "num_warmup": 50, + "batch_size": 1, + "input_shape": [ + 1, + 3, + 224, + 224 + ], + "dtype": "torch.float32", + "boundary": "model-only", + "sync": "cuda-synchronize-per-iteration", + "input_source": "loader", + "accuracy": 0.93, + "num_labelled_samples": 300 + } + }, + "benchmark_real_speedups": { + "early_exit_vs_backbone": 1.098, + "static_vs_backbone": 0.986 + }, + "benchmark_noise_input": { + "note": "best-case bound: trained heads may fire spuriously on noise", + "backbone_resnet18": { + "throughput_ips": 755.3621345047061, + "latency_median_ms": 1.3031150001552305, + "latency_p50_ms": 1.3031210000917781, + "latency_p95_ms": 1.3612429993372643, + "latency_p99_ms": 1.9350050006323727, + "avg_estimated_flops_fraction": 1.0, + "exit_distribution": { + "final": 1.0 + }, + "num_runs": 300, + "device": "cuda", + "num_warmup": 50, + "batch_size": 1, + "input_shape": [ + 1, + 3, + 224, + 224 + ], + "dtype": "torch.float32", + "boundary": "model-only", + "sync": "cuda-synchronize-per-iteration", + "input_source": "random-noise", + "accuracy": null, + "num_labelled_samples": 0 + }, + "early_exit_resnet18": { + "throughput_ips": 1551.8133886081237, + "latency_median_ms": 0.6742770001437748, + "latency_p50_ms": 0.6742940004187403, + "latency_p95_ms": 0.7781620006426238, + "latency_p99_ms": 0.7984900003066286, + "avg_estimated_flops_fraction": 0.3333333333333333, + "exit_distribution": { + "exit_0": 1.0 + }, + "num_runs": 300, + "device": "cuda", + "num_warmup": 50, + "batch_size": 1, + "input_shape": [ + 1, + 3, + 224, + 224 + ], + "dtype": "torch.float32", + "boundary": "model-only", + "sync": "cuda-synchronize-per-iteration", + "input_source": "random-noise", + "accuracy": null, + "num_labelled_samples": 0 + }, + "static_mobilenetv2": { + "throughput_ips": 681.161147706457, + "latency_median_ms": 1.4052340002308483, + "latency_p50_ms": 1.4053710001462605, + "latency_p95_ms": 1.5782589998707408, + "latency_p99_ms": 3.479250999589567, + "avg_estimated_flops_fraction": 1.0, + "exit_distribution": { + "final": 1.0 + }, + "num_runs": 300, + "device": "cuda", + "num_warmup": 50, + "batch_size": 1, + "input_shape": [ + 1, + 3, + 224, + 224 + ], + "dtype": "torch.float32", + "boundary": "model-only", + "sync": "cuda-synchronize-per-iteration", + "input_source": "random-noise", + "accuracy": null, + "num_labelled_samples": 0 + }, + "early_exit_vs_backbone_speedup": 2.054 + }, + "peak_cuda_memory_mb_during_real_benchmark": 350.4, + "stage_seconds": { + "stage1_seconds": 220.7, + "stage2_seconds": 71.9, + "baseline_seconds": 284.4, + "baseline_batch_size": 32, + "calibrate_seconds": 4.6, + "test_eval_seconds": 16.8 + }, + "total_wall_seconds": 622.7, + "environment": { + "python": "3.13.9", + "torch": "2.10.0+cu128", + "torchvision": "0.25.0+cu128", + "cuda": "12.8", + "gpu": "NVIDIA GeForce RTX 4050 Laptop GPU", + "earlyon": "0.2.0", + "os": "Linux-6.8.0-106-generic-x86_64-with-glibc2.35" + } +} \ No newline at end of file diff --git a/scripts/evidence_run.py b/scripts/evidence_run.py index c1de90a..ccd22cb 100644 --- a/scripts/evidence_run.py +++ b/scripts/evidence_run.py @@ -83,9 +83,12 @@ def loaders(root: str, image_size: int = 224, batch_size: int = 128): ) return { "train": mk(train_full, train_idx, batch_size, True), + # MobileNetV2 activations at 224px don't fit a 6 GB GPU at batch 128; + # the baseline trains with a smaller batch (recorded in the output) + "train_small_batch": mk(train_full, train_idx, 32, True), "temperature": mk(eval_train, temp_idx, batch_size, False), "calibration": mk(eval_train, calib_idx, batch_size, False), - "test_batched": DataLoader(test, batch_size=batch_size, num_workers=2), + "test_batched": DataLoader(test, batch_size=64, num_workers=2), "test_b1": DataLoader(test, batch_size=1, num_workers=2, pin_memory=True), "counts": { "train": len(train_idx), @@ -145,12 +148,22 @@ def budget_check(stage: str) -> None: budget_check("baseline") # ---- static smaller baseline: MobileNetV2 backbone ---- + # free the early-exit model's GPU residency first (6 GB card) + model = model.cpu() + torch.cuda.empty_cache() baseline = build_model("mobilenetv2", num_classes=10, pretrained=True) t0 = time.time() stage1_train_backbone( - baseline.backbone, data["train"], epochs=args.epochs_baseline, lr=0.002, device=device + baseline.backbone, + data["train_small_batch"], + epochs=args.epochs_baseline, + lr=0.002, + device=device, ) log["stages"]["baseline_seconds"] = round(time.time() - t0, 1) + log["stages"]["baseline_batch_size"] = 32 + baseline = baseline.cpu() + torch.cuda.empty_cache() budget_check("calibration") # ---- calibration: temperatures on the temperature split, thresholds on From dbbd5aef7d526aae205197b0d5a3229158e08fb1 Mon Sep 17 00:00:00 2001 From: sohams25 <86193836+sohams25@users.noreply.github.com> Date: Wed, 22 Jul 2026 16:24:48 +0530 Subject: [PATCH 15/16] docs: release readiness report --- RELEASE_READINESS_REPORT.md | 231 ++++++++++++++++++++++++++++++++++++ 1 file changed, 231 insertions(+) create mode 100644 RELEASE_READINESS_REPORT.md diff --git a/RELEASE_READINESS_REPORT.md b/RELEASE_READINESS_REPORT.md new file mode 100644 index 0000000..9d555b4 --- /dev/null +++ b/RELEASE_READINESS_REPORT.md @@ -0,0 +1,231 @@ +# Release readiness report — earlyon 0.3 release candidate + +Date: 2026-07-22. + +## 1. Executive status + +**COMPLETE.** Every hardening claim from the handoff was independently +re-verified (and, where under-tested, adversarially tested); one packaging +defect and one evidence-runner defect were found and fixed; the package +builds, twine-checks, installs into a clean environment and passes an +out-of-repo smoke; v1 checkpoint migration is proven against a genuine +prior-version file; a bounded, seeded CUDA evidence run produced real +CIFAR-10 numbers with the negatives preserved. No remote state was touched; +no Jetson/TensorRT claims exist because no such hardware exists here. + +## 2. Branches / commits + +- Starting point: `claude/earlyon-hardening` @ `db3832e` (8 hardening + commits on `main` @ `a5f8414`), working tree clean, untouched. +- Work branch: `claude/earlyon-release-readiness` (created from hardening + HEAD; hardening commits preserved, not rebased/squashed). +- Final HEAD: the last commit listed in §16. + +## 3. Environment + +Python 3.13.9 · torch 2.10.0+cu128 · torchvision 0.25.0+cu128 · CUDA 12.8 · +NVIDIA RTX 4050 Laptop GPU (6 GB) · onnx 1.21.0 / onnxruntime 1.25.1 · +fvcore 0.1.5 · Linux 6.8. **Absent:** tegrastats, TensorRT, Jetson (all +verified absent; nothing was claimed from them). + +## 4. Claims independently verified + +All of the handoff's headline claims reproduced from scratch: + +- 261 tests passing at baseline (now 270), 95% coverage (badge said 96% — + corrected), strict mypy clean, ruff/black/isort clean for the CI scope. +- **Per-head temperatures (A):** independent per-head fit with convergence + status; deterministic head mapping; routing applies each head's own T on + the single-sample, batched (newly pinned) and staged paths; persisted in + v2 checkpoints; scalar v1 migrates deterministically; invalid values + raise / fall back safely. New decisive test: a single global temperature + demonstrably misroutes (accuracy 1.0 → <0.5) where per-head does not. +- **Explicit enablement (B):** disabled exits cannot fire at confidence + exactly 1.0 or entropy exactly 0.0 (both policies, both paths); all- + disabled routing reaches the final head; no sentinel thresholds remain; + migration preserves state. +- **Staged calibration (C):** collect/fit/search/evaluate are separable and + contracted; simulator pinned bit-exact against the real router; no test + leakage (split discipline documented and followed by the evidence run); + search is deterministic (newly pinned); edge cases covered: empty loader + raises, single-class data works, no-feasible-threshold → disabled, + NaN-emitting head safely disabled (new), NaN logits rejected in fitting, + non-converged fits fall back to 1.0 with status. +- **Benchmark fairness (D):** identical preloaded samples/order/warmup/ + sync/boundary proven by spy-module tests; batch-1 validated; model-only + vs end-to-end labelled; negative speedups preserved (ratio, no clamp); + full backbone + early-exit + static baseline compared in the evidence run. +- **Compute estimates (E):** `estimated_backbone_flops_fraction` naming, + `FlopsEstimate` provenance, exit-head exclusion disclosed, reused-module + detection → warned low-confidence fallback, lazy + cached analysis + (construction fast). Cache invalidation limitation documented (§17). +- **Checkpoint v2 (F):** format/library version, exit-point identity + cross-check, routing/enablement/temperatures/loss metadata, deterministic + v1 migration, future-version rejection, malformed-file rejection, + `weights_only=True` trust model documented in SECURITY_REVIEW.md. Newly + verified against a **genuine** prior-version checkpoint written by the + actual historical `save_wrapper` (committed fixture, ~1.2 MB, provenance + documented). +- **custom_ee (G):** CPU + CUDA (GPU test passes on this host), kwargs, + tuple and dict outputs via feature extractors (dict newly pinned), + missing/reused/out-of-order exits fail loudly; claims match tested scope + (single-tensor runtime contract stated in the docstring/README). +- **Jetson (H):** restartability, double-start no-op, thread/subprocess/pipe + cleanup, missing-tool degradation, conservative parsing (None ≠ 0), + trapezoidal integration with correct units, instantaneous vs average vs + integrated energy kept distinct — all covered by hardware-free tests. No + non-Jetson output is presented as Jetson evidence anywhere. +- **Staged deployment (I):** newly proven that later stages are *never + executed* when an exit fires (counting-module test); staged == eager + predictions/exit choices across policies, temperatures, enablement; + unsupported graphs rejected; all-exits ONNX vs conditional execution + distinction explicit in API name and docs. + +## 5. Defects discovered (beyond the handoff) + +1. **sdist shipped a partial test tree** (test modules without the fixtures + package) — broken if anyone ran tests from the sdist. +2. **The v1-migration fixture wasn't actually tracked** (`*.pth` gitignore), + so the committed migration test would fail on a fresh clone. +3. **Evidence runner OOM'd on 6 GB GPUs** (MobileNetV2 at batch 128 with the + wrapper still resident). +4. Lint/format debt in `scripts/` and `examples/` (outside CI's checked + scope): unused import, E402s, ambiguous lambda names, unformatted files. +5. README coverage badge overstated coverage (96% vs measured 95%). + +## 6. Fixes made + +(1) `MANIFEST.in` prunes tests from the sdist. (2) fixture force-added with +a provenance README. (3) baseline batch 32 + off-GPU staging between phases. +(4) fixed and brought into the format gate. (5) badge corrected. All +conservative; no behavior changes to library code were needed — the audit +found no functional defect in the hardening work itself. + +## 7. Tests, coverage, static checks (final) + +- `pytest` (full, incl. 6 CUDA tests): **270 passed**, ~13 s. +- Coverage: **95%** (`--cov=earlyon`). +- `mypy earlyon` (strict): clean, 28 files. +- `ruff check earlyon tests scripts examples`: clean. +- `black --check` / `isort --check-only` over the same scope: clean. + +## 8. Packaging + +`python -m build` → `earlyon-0.2.0-py3-none-any.whl` (73 KB) + +`earlyon-0.2.0.tar.gz`; both `twine check` PASSED; `pip check` clean. +Wheel installed into a fresh virtualenv and smoked **from outside the +repo** (`scripts/smoke_test.py`): import/version, model build, training + +routed inference, deterministic calibration, v2 round-trip, v1 migration, +staged==eager, benchmark smoke — all PASS; CLI entry point and all +subcommand `--help`s work from the installed console script. Caveat: the +clean venv used `--system-site-packages` for the torch stack (a from-scratch +torch download was out of scope); earlyon itself and its metadata were +installed with `--no-deps` from the wheel. + +## 9. v1 migration result + +PASS — against both hand-built payloads and the genuine historical fixture: +scalar temperature 1.6 broadcast to all four heads, sentinel threshold 1.0 +→ `enabled_exits=[True, False, True]`, warning emitted, model routes, +re-save produces a silent v2 round-trip. + +## 10. CUDA evidence + +Run completed (seed 42, 2+2+2 epochs, 10.4 min compute; full data in +`docs/evidence/cuda_evidence.json`, interpretation in +`docs/evidence/CUDA_EVIDENCE.md`): + +- ResNet-18 backbone 94.07% test acc, 1.33 ms p50, 712 ips. +- Early-exit ResNet-18 92.92% (−1.15% vs the 1% budget calibrated on the + calibration split — generalization gap reported), est. FLOPs fraction + 0.88, **1.10× throughput but worse median latency** (1.43 ms) with better + tails; 30.5% of images exited early. +- Static MobileNetV2 92.67%, 0.99× — competitive, as the docs predict at + tiny training budgets. +- Noise-input 2.05× recorded separately as a best-case bound. Peak CUDA + memory 350 MB during the timed comparison. No result was tuned on test + data; no negative was suppressed. + +## 11. Jetson / TensorRT status + +No hardware, no runtime, therefore **no claims**: monitor lifecycle, parser +and energy integration are verified hardware-free; the exact device +procedure is documented (`docs/STAGED_DEPLOYMENT.md` §Jetson, README +Reproducibility). Restartability on a real Jetson and any TensorRT staged +run remain external work. + +## 12. Security / privacy + +`SECURITY_REVIEW.md` created. Findings: no secrets/keys/tokens; no private +paths or employer identifiers; datasets and build artifacts gitignored; only +committed binary is the documented 1.2 MB untrained migration fixture; +`torch.load(weights_only=True)` + structural validation on every load path; +single subprocess (tegrastats) with fixed argv and cleanup; no eval/exec/ +shell=True; wheel/sdist contain no tests, data or weights. + +## 13. Public API changes (this branch) + +None. All library-code changes on this branch are tests, scripts, packaging +and docs. (API changes from the hardening branch are summarized in +`docs/MIGRATION.md` and `RELEASE_NOTES_DRAFT.md`.) + +## 14. Documentation changes + +README (architecture diagram, evidence-run results table with negative- +result interpretation, checkpoint-migration + reproducibility sections, +corrected badge), `docs/MIGRATION.md`, `SECURITY_REVIEW.md`, +`PR_BODY_DRAFT.md`, `docs/evidence/CUDA_EVIDENCE.md`, updated +`RELEASE_NOTES_DRAFT.md` and `CHANGELOG.md`, `tests/fixtures/README.md`. + +## 15. Files changed (this branch, 17 files) + +- tests: `tests/test_release_audit.py` (new, 10 tests), + `tests/fixtures/v1_cifar_resnet20.pth` + `README.md` (new) +- scripts: `smoke_test.py` (new), `evidence_run.py` (new), + `run_benchmarks.py` / `re_evaluate.py` / examples (lint/format only) +- packaging: `MANIFEST.in` (new) +- docs: README, CHANGELOG, RELEASE_NOTES_DRAFT, MIGRATION, SECURITY_REVIEW, + PR_BODY_DRAFT, docs/evidence/* (this report) + +## 16. Local commits (`claude/earlyon-hardening..HEAD`) + +1. `5d821aa` chore: bring scripts and examples up to the lint/format gate +2. `de8ce1c` test: independent release audit — adversarial verification +3. `1a0d90f` feat: packaging validation — sdist pruning, wheel smoke, v1 fixture, evidence runner +4. `e381db2` docs: security review, migration guide, PR draft, README architecture +5. `5ce0427` docs: coverage badge fix, changelog, release-notes audit section +6. `e38b073` feat: bounded CUDA evidence run — real seeded CIFAR-10 results +7. (final) docs: release readiness report + +## 17. Remaining external work + +- Jetson: run `earlyon profile` + the staged TensorRT procedure on a real + device before making any Jetson claim. +- Optional: full-length `scripts/run_benchmarks.py` (hours) to refresh + `docs/benchmarks.json` `runs` and retire the legacy README table. +- Torchvision-factory stage maps for `earlyon.staged` (protocol + acceptance + test exist). +- Known limitation (documented): `wrapper.flops_estimate` caches per + instance and does not invalidate if the backbone is structurally mutated + after first inference. +- Version bump to 0.3.0 + changelog dating at actual release time. + +## 18. Commands for the user (NOT executed) + +```bash +# inspect +git log --oneline main..claude/earlyon-release-readiness +git diff main...claude/earlyon-release-readiness + +# push + PR +git push -u origin claude/earlyon-release-readiness +gh pr create --base main --head claude/earlyon-release-readiness \ + --title "earlyon 0.3: correctness hardening + release readiness" \ + --body-file PR_BODY_DRAFT.md + +# after merge: version bump, tag, publish +# edit pyproject.toml + earlyon/__init__.py -> 0.3.0; date the CHANGELOG +git tag -a v0.3.0 -m "earlyon 0.3.0" +git push origin v0.3.0 +python -m build && python -m twine check dist/* && python -m twine upload dist/* +``` From d13d240d140db958fcb4833402f00a7000b9f9d4 Mon Sep 17 00:00:00 2001 From: sohams25 <86193836+sohams25@users.noreply.github.com> Date: Wed, 22 Jul 2026 17:50:19 +0530 Subject: [PATCH 16/16] chore(release): prepare v0.3.0 - version 0.3.0 in pyproject.toml, earlyon/__init__.py, README badge and citation - CHANGELOG: unreleased section dated as 0.3.0 (2026-07-22) - RELEASE_NOTES_DRAFT.md finalized as the canonical v0.3.0 release text (limitations, migration, bounded CUDA evidence with negatives preserved) - PR body header finalized --- CHANGELOG.md | 2 +- PR_BODY_DRAFT.md | 6 +- README.md | 4 +- RELEASE_NOTES_DRAFT.md | 220 +++++++++++++++++++++++++---------------- earlyon/__init__.py | 2 +- pyproject.toml | 2 +- 6 files changed, 141 insertions(+), 95 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 13fbbfe..5ce3442 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -2,7 +2,7 @@ format follows [keep a changelog](https://keepachangelog.com/en/1.1.0/). -## unreleased +## 0.3.0 - 2026-07-22 ### changed — calibration & routing correctness (breaking-ish, migrated) - **per-head temperatures**: `EarlyExitConfig.temperatures` maps every head diff --git a/PR_BODY_DRAFT.md b/PR_BODY_DRAFT.md index 8c3f916..f328471 100644 --- a/PR_BODY_DRAFT.md +++ b/PR_BODY_DRAFT.md @@ -1,7 +1,7 @@ -# PR draft: earlyon 0.3 — correctness hardening + release readiness +# Release v0.3.0: defensible calibration, fair benchmarks, and staged inference -> Draft only. Not opened. Base: `main`. Head: `claude/earlyon-release-readiness` -> (includes `claude/earlyon-hardening`). +> Base: `main`. Head: `claude/earlyon-release-readiness` +> (includes the `claude/earlyon-hardening` work). ## What this PR is diff --git a/README.md b/README.md index 280b079..f4cddf8 100644 --- a/README.md +++ b/README.md @@ -7,7 +7,7 @@ python coverage mypy - version + version license

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