Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
10 changes: 10 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
@@ -1,3 +1,13 @@
# Archive and draft directories
_arxiv/
drafts/

# Backup files
*.bak
*.old
*_old.*
*_backup.*

# Byte-compiled / optimized / DLL files
__pycache__/
*.py[cod]
Expand Down
100 changes: 27 additions & 73 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -2,23 +2,18 @@

Neural network alignment analysis and intelligent pruning framework.

---

## Overview

This framework provides tools for analyzing neural networks through information-theoretic metrics and performing redundancy-aware pruning and quantization.

**Key capabilities:**
- Alignment metrics (Rayleigh Quotient, class-conditioned RQ, mutual information)
- Information-theoretic analysis (redundancy, synergy, PID)
- Pruning strategies (16 methods including magnitude, gradient-based, redundancy-aware)
- Quantization (INT8, INT4, mixed-precision with alignment-guided bit allocation)
- Architecture support (MLPs, CNNs, Transformers, LLMs)
- Data loading (vision and text datasets)
- Evaluation (classification accuracy, perplexity for language models)
- Visualization (plots and reports)

---
Key capabilities:
- Alignment metrics for analyzing neural network weight-input relationships
- Information-theoretic analysis tools
- Pruning strategies with multiple scoring methods
- Quantization with alignment-guided precision selection
- Architecture support for MLPs, CNNs, Transformers, and LLMs
- Data loading for vision and text datasets
- Evaluation and visualization tools

## Installation

Expand All @@ -30,96 +25,55 @@ conda activate alignment
pip install -e .
```

Details: [docs/installation.md](docs/installation.md)

---
See [docs/installation.md](docs/installation.md) for details.

## Usage

### Command Line
Run experiments using configuration files:

```bash
python scripts/run_experiment.py --config configs/examples/mnist_basic.yaml
python scripts/run_experiment.py --config configs/examples/resnet_pruning.yaml
python scripts/run_experiment.py --config configs/examples/llama3_scoring.yaml
python scripts/run_experiment.py --config configs/examples/llama3_quantization.yaml
```

### Python API

```python
from alignment import ModelWrapper, get_metric

wrapper = ModelWrapper(model)
rq = get_metric('rayleigh_quotient')

outputs, acts = wrapper.forward_with_activations(inputs)
weights = wrapper.get_layer_weights()

scores = rq.compute(acts['layer_input'], weights['layer'])
```

### Quantization

```python
from alignment.quantization import quantize_model, find_optimal_bit_allocation
The framework supports:
- Training networks from scratch or loading pre-trained models
- Computing alignment and information-theoretic scores
- Applying pruning with different strategies and distributions
- Quantization with various precision settings

# INT8 quantization
results = quantize_model(model, precision='int8')
Example configurations are available in `configs/examples/`:
- `mnist_basic.yaml` - Basic alignment analysis on MNIST
- `resnet_pruning.yaml` - Pruning ResNet on CIFAR-10
- `llama3_scoring.yaml` - Computing scores for LLaMA models
- `llama3_pruning.yaml` - Pruning transformer networks

# Mixed precision using alignment scores
layer_importance = {layer: rq_scores[layer].mean() for layer in layers}
bit_allocation = find_optimal_bit_allocation(model, layer_importance, target_avg_bits=6.0)
```

---
See `configs/template.yaml` for all available configuration options.

## Documentation

- [Installation](docs/installation.md) - Setup and dependencies
- [Usage Guide](docs/usage.md) - Running experiments
- [User Guide](docs/user_guide.md) - Complete documentation
- [API Reference](docs/api_reference.md) - API details
- [Usage Guide](docs/usage.md) - Running experiments with configs
- [User Guide](docs/user_guide.md) - Detailed framework documentation
- [API Reference](docs/api_reference.md) - API documentation
- [Quick Reference](docs/quick_reference.md) - Code examples
- [Changelog](docs/changelog.md) - Version history

Full documentation: [docs/README.md](docs/README.md)

---

## Configuration

Experiments are configured via YAML files. See `configs/template.yaml` for all parameters.
## Examples

Available examples in `configs/examples/`:
- mnist_basic.yaml
- resnet_pruning.yaml
- llama3_scoring.yaml
- llama3_pruning.yaml
- llama3_quantization.yaml

---

## Code Examples

Python examples in `examples/` directory:
Python scripts demonstrating framework capabilities:

```bash
python examples/07_mnist_intelligent_pruning.py
python examples/08_llama_ffn_pruning.py
python examples/09_attention_neuron_vs_head_pruning.py
```

---


## Testing

```bash
pytest tests/
```

---

## License

See LICENSE file.
Loading
Loading