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:
BaseInjectorExhaustive 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:
BaseInjectorStochastic 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:
ABCAbstract 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:
- Returns:
Results of the injection process, including affected tensor locations and scores.
- Return type:
- Raises:
ValueError – If bit_i is out of range or layer_name is invalid.