entrenar/prune/mod.rs
1//! Neural network pruning integration for Entrenar
2//!
3//! This module provides training-time pruning capabilities that integrate
4//! with the Aprender pruning primitives. It implements:
5//!
6//! - **Pruning Schedules**: OneShot, Gradual, and Cubic sparsity schedules
7//! - **Pruning Callback**: Integration with the training loop
8//! - **Calibration Pipeline**: Activation collection for Wanda/SparseGPT
9//! - **Prune-Finetune Pipeline**: End-to-end pruning workflow
10//!
11//! # Toyota Way Principles
12//!
13//! - **Kaizen** (Continuous Improvement): Gradual pruning schedules
14//! - **Jidoka** (Quality at Source): Validates sparsity at each step
15//! - **Genchi Genbutsu** (Go and See): Uses real activation data
16//!
17//! # Example
18//!
19//! ```ignore
20//! use entrenar::prune::{PruningSchedule, PruningCallback, PruningConfig};
21//! use aprender::pruning::{MagnitudeImportance, WandaPruner};
22//!
23//! let schedule = PruningSchedule::Gradual {
24//! start_step: 1000,
25//! end_step: 10000,
26//! initial_sparsity: 0.0,
27//! final_sparsity: 0.5,
28//! frequency: 100,
29//! };
30//!
31//! let config = PruningConfig::default()
32//! .with_schedule(schedule)
33//! .with_target_sparsity(0.5);
34//!
35//! let callback = PruningCallback::new(config);
36//! trainer.add_callback(callback);
37//! ```
38//!
39//! # References
40//!
41//! - Han, S., et al. (2015). Learning both weights and connections. NeurIPS.
42//! - Sun, M., et al. (2023). A simple and effective pruning approach. arXiv:2306.11695.
43//! - Zhu, M., & Gupta, S. (2017). To prune, or not to prune. arXiv:1710.01878.
44
45mod calibrate;
46mod callback;
47mod config;
48mod data_loader;
49#[cfg(test)]
50mod falsification_checklist;
51#[cfg(test)]
52mod golden_traces;
53mod pipeline;
54mod schedule;
55#[cfg(test)]
56mod snapshot_tests;
57mod trainer_integration;
58
59pub use calibrate::{CalibrationCollector, CalibrationConfig};
60pub use callback::PruningCallback;
61pub use config::{PruneMethod, PruningConfig, SparsityPatternConfig};
62pub use data_loader::{CalibrationDataConfig, CalibrationDataLoader};
63pub use pipeline::{PruneFinetunePipeline, PruningMetrics, PruningStage};
64pub use schedule::PruningSchedule;
65pub use trainer_integration::{PruneTrainer, PruneTrainerConfig};