Module neuralops.core.compression_engine
Compression pipeline – orchestrates multiple compressors sequentially.
Functions
def compress_model(model: torch.nn.modules.module.Module,
config: dict[str, typing.Any],
tokenizer=None) ‑> torch.nn.modules.module.Module-
Expand source code
def compress_model( model: nn.Module, config: dict[str, Any], tokenizer=None, ) -> nn.Module: """Convenience function to compress a model with a configuration dict.""" pipeline = CompressionPipeline(model, config, tokenizer) return pipeline.run()Convenience function to compress a model with a configuration dict.
Classes
class CompressionPipeline (model: torch.nn.modules.module.Module,
config: dict[str, typing.Any],
tokenizer=None)-
Expand source code
class CompressionPipeline: """Apply a sequence of compression steps to a model.""" def __init__( self, model: nn.Module, config: dict[str, Any], tokenizer=None, ) -> None: self.model = model self.config = config self.tokenizer = tokenizer if tokenizer is not None: self.model.tokenizer = tokenizer def run(self) -> nn.Module: """Execute the run operation and return results.""" compressors_cfg = self.config.get("compressors", []) if not compressors_cfg: logger.info("No compressors specified. Returning original model.") return self.model seed = self.config.get("seed") if seed is not None: set_seed(seed) for i, comp_cfg in enumerate(compressors_cfg): method = comp_cfg.pop("method") logger.info("Step %d: Applying compressor '%s'", i + 1, method) compressor_cls = COMPRESSOR_REGISTRY.resolve(method) merged_cfg = {**self.config, **comp_cfg} merged_cfg.pop("compressors", None) compressor = compressor_cls(self.model, **merged_cfg) self.model, stats = compressor.compress() if stats: logger.info("%s", compressor.summary()) return self.modelApply a sequence of compression steps to a model.
Methods
def run(self) ‑> torch.nn.modules.module.Module-
Expand source code
def run(self) -> nn.Module: """Execute the run operation and return results.""" compressors_cfg = self.config.get("compressors", []) if not compressors_cfg: logger.info("No compressors specified. Returning original model.") return self.model seed = self.config.get("seed") if seed is not None: set_seed(seed) for i, comp_cfg in enumerate(compressors_cfg): method = comp_cfg.pop("method") logger.info("Step %d: Applying compressor '%s'", i + 1, method) compressor_cls = COMPRESSOR_REGISTRY.resolve(method) merged_cfg = {**self.config, **comp_cfg} merged_cfg.pop("compressors", None) compressor = compressor_cls(self.model, **merged_cfg) self.model, stats = compressor.compress() if stats: logger.info("%s", compressor.summary()) return self.modelExecute the run operation and return results.