Core Module

The core module provides the main SEU injection functionality.

Exhaustive SEU Injector

class seu_injection.core.ExhaustiveSEUInjector(trained_model, criterion, device=None, x=None, y=None, data_loader=None)[source]

Bases: BaseInjector

Exhaustive SEU injector for PyTorch models.

Systematically flips each bit in float32 weights across all layers (or a specified layer), evaluating model performance after each injection.

Notes

  • Use for detailed vulnerability analysis of small models or specific layers.

  • For large models, use StochasticSEUInjector for efficiency.

  • All injections are reversible; model is restored after each run.

Example

>>> injector = ExhaustiveSEUInjector(model, criterion, x=data, y=labels)
>>> results = injector.run_injector(bit_i=15)
>>> print(len(results['criterion_score']))

Stochastic SEU Injector

class seu_injection.core.StochasticSEUInjector(trained_model, criterion, device=None, x=None, y=None, data_loader=None)[source]

Bases: BaseInjector

Stochastic SEU injector for PyTorch models.

Randomly flips bits in float32 weights across all layers (or a specified layer), evaluating model performance after each injection.

Notes

  • Use for statistical fault analysis in large models.

  • Injection probability p controls sample size and efficiency.

  • All injections are reversible; model is restored after each run.

Example

>>> injector = StochasticSEUInjector(model, criterion, x=data, y=labels)
>>> results = injector.run_injector(bit_i=15, p=0.01)
>>> print(len(results['criterion_score']))

Base Injector

class seu_injection.core.base_injector.BaseInjector(trained_model, criterion, device=None, x=None, y=None, data_loader=None)[source]

Bases: ABC

Abstract base class for SEU fault injection in PyTorch models.

Supports systematic and stochastic bit-flip injection to evaluate model robustness. Device-aware operation and flexible evaluation via user-supplied criterion.

Notes

  • All injections are reversible; model is unchanged after each run.

  • Use either (x, y) or data_loader for evaluation, not both.

  • Model parameters must be float32 tensors for bit-flip operations.

  • Device is auto-detected if not specified.

Example

>>> injector = ExhaustiveSEUInjector(model, criterion, x=x, y=y)
>>> results = injector.run_injector(bit_i=15)
>>> print(injector.baseline_score)
__init__(trained_model, criterion, device=None, x=None, y=None, data_loader=None)[source]

Initialize injector with model, criterion, device, and data.

Parameters:
  • trained_model (Module) – PyTorch model to inject faults into.

  • criterion (Callable[..., float]) – Function to evaluate model performance.

  • device (Union[str, device, None]) – Target device (‘cpu’, ‘cuda’, etc.). Auto-detects if None.

  • x (Union[Tensor, ndarray, None]) – Input data tensor (optional).

  • y (Union[Tensor, ndarray, None]) – Target labels tensor (optional).

  • data_loader (Optional[DataLoader]) – DataLoader for evaluation (optional).

Raises:

ValueError – If both data_loader and (x, y) are provided, or neither.

run_injector(bit_i, layer_name=None, **kwargs)[source]

Run the fault injection process.

Parameters:
  • bit_i (int) – Bit position to flip (0-31). 0 is the sign bit

  • layer_name (Optional[str]) – Name of the layer to target (None for all layers).

  • **kwargs – Additional arguments for the injection process.

Returns:

Results of the injection process, including affected tensor locations and scores.

Return type:

dict[str, list[Any]]

Raises:

ValueError – If bit_i is out of range or layer_name is invalid.