Skip to main content

UnstructuredPruner

Struct UnstructuredPruner 

Source
pub struct UnstructuredPruner { /* private fields */ }
Expand description

Unstructured pruner for element-wise weight removal

This is the main orchestrator for unstructured pruning operations, supporting various importance methods, mask creation modes, and advanced features like lottery ticket rewinding.

Implementations§

Source§

impl UnstructuredPruner

Source

pub fn new(config: PruningConfig, importance_method: ImportanceMethod) -> Self

Creates a new unstructured pruner

Source

pub fn with_mask_mode(self, mode: MaskCreationMode) -> Self

Sets the mask creation mode

Source

pub fn enable_lottery_ticket(&mut self, initial_weights: Vec<WeightTensor>)

Enables lottery ticket hypothesis support

Source

pub fn disable_lottery_ticket(&mut self)

Disables lottery ticket support

Source

pub fn masks(&self) -> &[PruningMask]

Returns the current masks

Source

pub fn current_iteration(&self) -> usize

Returns the current iteration

Source

pub fn lottery_ticket_state(&self) -> Option<&LotteryTicketState>

Returns the lottery ticket state if enabled

Source

pub fn rewind_to_initial(&self) -> Option<Vec<WeightTensor>>

Rewinds to initial weights with current masks (lottery ticket)

Source

pub fn compute_importance( &mut self, weights: &WeightTensor, gradient_info: Option<&GradientInfo>, ) -> Vec<f32>

Computes importance scores for a weight tensor

§Arguments
  • weights - The weight tensor to compute importance for
  • gradient_info - Optional gradient information for gradient-based methods
§Returns

Vector of importance scores (same length as weights)

Source

pub fn create_mask(&self, importance: &[f32], shape: &[usize]) -> PruningMask

Creates a pruning mask based on importance scores and mask mode

§Arguments
  • importance - Importance scores for each weight
  • shape - Shape of the weight tensor
Source

pub fn prune_tensor( &mut self, weights: &WeightTensor, ) -> Result<(WeightTensor, PruningMask)>

Prunes a single weight tensor

§Arguments
  • weights - The weight tensor to prune
§Returns

Tuple of (pruned weights, mask)

§Errors

Returns an error if pruning fails

Source

pub fn prune_tensor_with_gradients( &mut self, weights: &WeightTensor, gradient_info: Option<&GradientInfo>, ) -> Result<(WeightTensor, PruningMask)>

Prunes a single weight tensor with gradient information

§Arguments
  • weights - The weight tensor to prune
  • gradient_info - Optional gradient information
§Returns

Tuple of (pruned weights, mask)

§Errors

Returns an error if pruning fails

Source

pub fn prune_tensors_global( &mut self, tensors: &[WeightTensor], ) -> Result<(Vec<WeightTensor>, Vec<PruningMask>)>

Prunes multiple weight tensors globally

For global pruning, importance scores are computed across all tensors and a single threshold is applied.

§Arguments
  • tensors - Weight tensors to prune
§Returns

Tuple of (pruned tensors, masks)

§Errors

Returns an error if pruning fails

Source

pub fn prune_tensors_global_with_gradients( &mut self, tensors: &[WeightTensor], gradient_infos: &[GradientInfo], ) -> Result<(Vec<WeightTensor>, Vec<PruningMask>)>

Prunes multiple weight tensors globally with gradient information

§Arguments
  • tensors - Weight tensors to prune
  • gradient_infos - Gradient information for each tensor
§Returns

Tuple of (pruned tensors, masks)

§Errors

Returns an error if pruning fails

Source

pub fn prune_tensors_layerwise( &mut self, tensors: &[WeightTensor], ) -> Result<(Vec<WeightTensor>, Vec<PruningMask>)>

Prunes multiple weight tensors layer-wise

Each tensor is pruned independently with the same sparsity target.

§Arguments
  • tensors - Weight tensors to prune
§Returns

Tuple of (pruned tensors, masks)

§Errors

Returns an error if pruning fails

Source

pub fn prune_tensors_layerwise_with_gradients( &mut self, tensors: &[WeightTensor], gradient_infos: &[GradientInfo], ) -> Result<(Vec<WeightTensor>, Vec<PruningMask>)>

Prunes multiple weight tensors layer-wise with gradient information

§Arguments
  • tensors - Weight tensors to prune
  • gradient_infos - Gradient information for each tensor
§Returns

Tuple of (pruned tensors, masks)

§Errors

Returns an error if pruning fails

Source

pub fn current_sparsity(&self) -> f32

Returns the current overall sparsity

Source

pub fn iterative_prune<F: FineTuneCallback>( &mut self, initial_weights: Vec<WeightTensor>, callback: &mut F, ) -> Result<(Vec<WeightTensor>, Vec<PruningMask>)>

Performs iterative pruning with fine-tuning

§Arguments
  • initial_weights - Initial weight tensors
  • callback - Fine-tuning callback
§Returns

Final pruned weights and masks after all iterations

§Errors

Returns an error if pruning or fine-tuning fails

Source

pub fn compute_stats(&self, original_tensors: &[WeightTensor]) -> PruningStats

Computes pruning statistics

Auto Trait Implementations§

Blanket Implementations§

Source§

impl<T> Any for T
where T: 'static + ?Sized,

Source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
Source§

impl<T> Borrow<T> for T
where T: ?Sized,

Source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
Source§

impl<T> BorrowMut<T> for T
where T: ?Sized,

Source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

Source§

impl<T> Instrument for T

Source§

fn instrument(self, span: Span) -> Instrumented<Self>

Instruments this type with the provided Span, returning an Instrumented wrapper. Read more
Source§

fn in_current_span(self) -> Instrumented<Self>

Instruments this type with the current Span, returning an Instrumented wrapper. Read more
Source§

impl<T, U> Into<U> for T
where U: From<T>,

Source§

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

Source§

impl<T> IntoEither for T

Source§

fn into_either(self, into_left: bool) -> Either<Self, Self>

Converts self into a Left variant of Either<Self, Self> if into_left is true. Converts self into a Right variant of Either<Self, Self> otherwise. Read more
Source§

fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
where F: FnOnce(&Self) -> bool,

Converts self into a Left variant of Either<Self, Self> if into_left(&self) returns true. Converts self into a Right variant of Either<Self, Self> otherwise. Read more
Source§

impl<T> Pointable for T

Source§

const ALIGN: usize

The alignment of pointer.
Source§

type Init = T

The type for initializers.
Source§

unsafe fn init(init: <T as Pointable>::Init) -> usize

Initializes a with the given initializer. Read more
Source§

unsafe fn deref<'a>(ptr: usize) -> &'a T

Dereferences the given pointer. Read more
Source§

unsafe fn deref_mut<'a>(ptr: usize) -> &'a mut T

Mutably dereferences the given pointer. Read more
Source§

unsafe fn drop(ptr: usize)

Drops the object pointed to by the given pointer. Read more
Source§

impl<T> PolicyExt for T
where T: ?Sized,

Source§

fn and<P, B, E>(self, other: P) -> And<T, P>
where T: Policy<B, E>, P: Policy<B, E>,

Create a new Policy that returns Action::Follow only if self and other return Action::Follow. Read more
Source§

fn or<P, B, E>(self, other: P) -> Or<T, P>
where T: Policy<B, E>, P: Policy<B, E>,

Create a new Policy that returns Action::Follow if either self or other returns Action::Follow. Read more
Source§

impl<T> Same for T

Source§

type Output = T

Should always be Self
Source§

impl<T, U> TryFrom<U> for T
where U: Into<T>,

Source§

type Error = Infallible

The type returned in the event of a conversion error.
Source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
Source§

impl<T, U> TryInto<U> for T
where U: TryFrom<T>,

Source§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
Source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.
Source§

impl<V, T> VZip<V> for T
where V: MultiLane<T>,

Source§

fn vzip(self) -> V

Source§

impl<T> WithSubscriber for T

Source§

fn with_subscriber<S>(self, subscriber: S) -> WithDispatch<Self>
where S: Into<Dispatch>,

Attaches the provided Subscriber to this type, returning a WithDispatch wrapper. Read more
Source§

fn with_current_subscriber(self) -> WithDispatch<Self>

Attaches the current default Subscriber to this type, returning a WithDispatch wrapper. Read more