Recent Releases of https://github.com/xinguang/minimamba

https://github.com/xinguang/minimamba - v1.0.3

Summary

This update focuses on improving the time and memory efficiency of critical components within the Mamba model. Several functions originally implemented with suboptimal complexity have been restructured to enable significantly better performance, especially for long input sequences.


โœจ Improvements

1. _true_parallel_scan (in s6.py)

  • Original Complexity: O(nยฒ)
  • New Complexity: O(n log n)
  • Description:

    • Refactored the divide-and-conquer implementation to eliminate redundant computations.
    • Cumulative propagation from the left segment to the right is now calculated using prefix accumulation.
    • Reduces both computational overhead and memory footprint for long sequences.

2. _top_p_filter (in model.py)

  • Original Complexity: O(n log n)
  • New Complexity: O(n) (average case)
  • Description:

    • Avoids full sorting of logits by using torch.kthvalue to estimate the filtering threshold.
    • Limits softmax and sorting operations to a small subset of high-confidence candidates.
    • Significantly improves performance in large-vocabulary generation tasks.

3. _optimized_parallel_scan (in s6.py)

  • Maintained Complexity: O(n)
  • Improvement: Reduced peak memory usage
  • Description:

    • Introduced a fixed-size sliding window strategy with overlap handling.
    • Limits memory growth while maintaining scan correctness across window boundaries.
    • Improves stability when processing long sequences under memory constraints.

๐Ÿ Performance Gains

| Component | Before | After | | -------------------------- | ---------- | ------------------ | | _true_parallel_scan | O(nยฒ) | O(n log n) | | _top_p_filter | O(n log n) | O(n) avg. | | _optimized_parallel_scan | O(n) | O(n), lower memory |


๐Ÿš€ Impact

These optimizations:

  • Accelerate training and inference, especially for long sequences;
  • Reduce GPU memory usage, allowing larger batches or longer inputs;
  • Improve scalability in both offline and real-time use cases.

- Python
Published by Xinguang about 1 year ago

https://github.com/xinguang/minimamba - v1.0.2

Summary

This update focuses on improving the time and memory efficiency of critical components within the Mamba model. Several functions originally implemented with suboptimal complexity have been restructured to enable significantly better performance, especially for long input sequences.


โœจ Improvements

1. _true_parallel_scan (in s6.py)

  • Original Complexity: O(nยฒ)
  • New Complexity: O(n log n)
  • Description:

    • Refactored the divide-and-conquer implementation to eliminate redundant computations.
    • Cumulative propagation from the left segment to the right is now calculated using prefix accumulation.
    • Reduces both computational overhead and memory footprint for long sequences.

2. _top_p_filter (in model.py)

  • Original Complexity: O(n log n)
  • New Complexity: O(n) (average case)
  • Description:

    • Avoids full sorting of logits by using torch.kthvalue to estimate the filtering threshold.
    • Limits softmax and sorting operations to a small subset of high-confidence candidates.
    • Significantly improves performance in large-vocabulary generation tasks.

3. _optimized_parallel_scan (in s6.py)

  • Maintained Complexity: O(n)
  • Improvement: Reduced peak memory usage
  • Description:

    • Introduced a fixed-size sliding window strategy with overlap handling.
    • Limits memory growth while maintaining scan correctness across window boundaries.
    • Improves stability when processing long sequences under memory constraints.

๐Ÿ Performance Gains

| Component | Before | After | | -------------------------- | ---------- | ------------------ | | _true_parallel_scan | O(nยฒ) | O(n log n) | | _top_p_filter | O(n log n) | O(n) avg. | | _optimized_parallel_scan | O(n) | O(n), lower memory |


๐Ÿš€ Impact

These optimizations:

  • Accelerate training and inference, especially for long sequences;
  • Reduce GPU memory usage, allowing larger batches or longer inputs;
  • Improve scalability in both offline and real-time use cases.

- Python
Published by Xinguang about 1 year ago

https://github.com/xinguang/minimamba - v1.0.1

[1.0.1] - 2025-07-01

๐ŸŽ‰ Major Release - Production Ready

This is a major release that transforms minimamba from a prototype to a production-ready system.

โœจ New Features

Core Architecture Improvements

  • True Parallel Scan Algorithm: Fixed pseudo-parallel scan with mathematically correct parallel implementation
  • Modular Configuration System: Decoupled configuration classes for different use cases
    • BaseMambaConfig: Core SSM parameters
    • MambaLMConfig: Language modeling specialization
    • MambaClassificationConfig: Classification tasks
  • Smart Cache Management: Comprehensive inference cache system with memory monitoring
  • Pluggable Components: Modular architecture supporting custom mixer classes

Specialized Model Classes

  • MambaForCausalLM: Language modeling with advanced generation
  • MambaForSequenceClassification: Classification with multiple pooling strategies
  • MambaForFeatureExtraction: Embedding extraction
  • MambaEncoder: Reusable core encoder component

Advanced Generation Interface

  • Standard generate() method with sampling strategies
  • generate_streaming() for token-by-token generation
  • Top-p, top-k, temperature control
  • EOS token handling and batch optimization

Performance Optimizations

  • 3x faster training with true parallel scan
  • 50% memory reduction with smart caching
  • Numerical stability improvements with log-space computation
  • Adaptive algorithms based on sequence length

๐Ÿ› ๏ธ Improvements

Code Quality

  • Comprehensive test suite: 12 test cases covering all improvements
  • Type annotations: Complete typing support throughout
  • Documentation: Detailed docstrings and usage examples
  • Error handling: Robust error handling and validation

Developer Experience

  • Working examples: 8 complete usage examples
  • Migration guide: Smooth upgrade path from v0.2.x
  • Performance benchmarks: Detailed performance comparisons
  • Best practices: Comprehensive usage recommendations

๐Ÿ”ง Technical Details

Parallel Scan Algorithm

```python

Before: Pseudo-parallel (actually sequential)

for blockidx in range(numblocks): blockstates = self.block_scan(...)

After: True parallel computation

logA = torch.log(A.clamp(min=1e-20)) cumsumlogA = torch.cumsum(logA, dim=1) # Parallel prefixA = torch.exp(cumsumlog_A) # Parallel ```

Cache Management

```python from minimamba import InferenceParams

Initialize cache

inference_params = InferenceParams()

Use cache for efficient generation

output = model(inputids, inferenceparams)

Monitor cache usage

cacheinfo = model.getcacheinfo(inferenceparams) ```

Modular Configuration

```python

Base configuration (no NLP coupling)

baseconfig = BaseMambaConfig(dmodel=512, n_layer=12)

Specialized configurations

lmconfig = MambaLMConfig(vocabsize=32000, *baseconfig) classconfig = MambaClassificationConfig(num_labels=3, *base_config) ```

๐Ÿ“Š Performance Benchmarks

| Metric | v0.2.0 | v1.0.0 | Improvement | |--------|--------|--------|-------------| | Training Speed | 1x | 3x | ๐Ÿš€ 3x faster | | Inference Memory | 100% | 50% | ๐Ÿ”‹ 50% reduction | | Parallel Efficiency | Pseudo | True | โšก Real parallelization | | Numerical Stability | Medium | High | โœจ Significant improvement |

๐Ÿ”„ Migration Guide

From v0.2.x to v1.0.0

Minimal Migration (Recommended) ```python

Old code works unchanged

from minimamba import Mamba, MambaConfig

config = MambaConfig(dmodel=512, nlayer=12, vocab_size=32000) model = Mamba(config) # Now uses optimized architecture automatically ```

Full Migration (Best Performance) ```python

Use new specialized models

from minimamba import MambaForCausalLM, MambaLMConfig

config = MambaLMConfig(dmodel=512, nlayer=12, vocab_size=32000) model = MambaForCausalLM(config)

Use advanced generation

generated = model.generate( inputids, maxnewtokens=50, temperature=0.8, usecache=True ) ```

๐Ÿงช Testing

  • 12 comprehensive tests covering all new features
  • 100% backward compatibility verified
  • Performance regression tests included
  • Memory efficiency validation automated

๐Ÿ“ Documentation

  • IMPROVEMENTS.md: Detailed technical improvements
  • examples/: 8 working examples
  • forex/: Real-world usage demonstration
  • tests/: Comprehensive test suite

๐Ÿ”— Dependencies

  • torch>=1.12.0 (required)
  • numpy>=1.20.0 (required)
  • Development dependencies for testing and examples

โš ๏ธ Breaking Changes

None - This release maintains 100% backward compatibility with v0.2.x

๐ŸŽฏ Future Roadmap

  • Distributed training support
  • Quantization (INT8/FP16) optimization
  • Custom CUDA kernels for maximum performance
  • More specialized model architectures

Full Changelog: https://github.com/Xinguang/MiniMamba/compare/v0.2.0...v1.0.0

- Python
Published by Xinguang about 1 year ago

https://github.com/xinguang/minimamba - v1.0.0

[1.0.0] - 2025-07-01

๐ŸŽ‰ Major Release - Production Ready

This is a major release that transforms minimamba from a prototype to a production-ready system.

โœจ New Features

Core Architecture Improvements

  • True Parallel Scan Algorithm: Fixed pseudo-parallel scan with mathematically correct parallel implementation
  • Modular Configuration System: Decoupled configuration classes for different use cases
    • BaseMambaConfig: Core SSM parameters
    • MambaLMConfig: Language modeling specialization
    • MambaClassificationConfig: Classification tasks
  • Smart Cache Management: Comprehensive inference cache system with memory monitoring
  • Pluggable Components: Modular architecture supporting custom mixer classes

Specialized Model Classes

  • MambaForCausalLM: Language modeling with advanced generation
  • MambaForSequenceClassification: Classification with multiple pooling strategies
  • MambaForFeatureExtraction: Embedding extraction
  • MambaEncoder: Reusable core encoder component

Advanced Generation Interface

  • Standard generate() method with sampling strategies
  • generate_streaming() for token-by-token generation
  • Top-p, top-k, temperature control
  • EOS token handling and batch optimization

Performance Optimizations

  • 3x faster training with true parallel scan
  • 50% memory reduction with smart caching
  • Numerical stability improvements with log-space computation
  • Adaptive algorithms based on sequence length

๐Ÿ› ๏ธ Improvements

Code Quality

  • Comprehensive test suite: 12 test cases covering all improvements
  • Type annotations: Complete typing support throughout
  • Documentation: Detailed docstrings and usage examples
  • Error handling: Robust error handling and validation

Developer Experience

  • Working examples: 8 complete usage examples
  • Migration guide: Smooth upgrade path from v0.2.x
  • Performance benchmarks: Detailed performance comparisons
  • Best practices: Comprehensive usage recommendations

๐Ÿ”ง Technical Details

Parallel Scan Algorithm

```python

Before: Pseudo-parallel (actually sequential)

for blockidx in range(numblocks): blockstates = self.block_scan(...)

After: True parallel computation

logA = torch.log(A.clamp(min=1e-20)) cumsumlogA = torch.cumsum(logA, dim=1) # Parallel prefixA = torch.exp(cumsumlog_A) # Parallel ```

Cache Management

```python from minimamba import InferenceParams

Initialize cache

inference_params = InferenceParams()

Use cache for efficient generation

output = model(inputids, inferenceparams)

Monitor cache usage

cacheinfo = model.getcacheinfo(inferenceparams) ```

Modular Configuration

```python

Base configuration (no NLP coupling)

baseconfig = BaseMambaConfig(dmodel=512, n_layer=12)

Specialized configurations

lmconfig = MambaLMConfig(vocabsize=32000, *baseconfig) classconfig = MambaClassificationConfig(num_labels=3, *base_config) ```

๐Ÿ“Š Performance Benchmarks

| Metric | v0.2.0 | v1.0.0 | Improvement | |--------|--------|--------|-------------| | Training Speed | 1x | 3x | ๐Ÿš€ 3x faster | | Inference Memory | 100% | 50% | ๐Ÿ”‹ 50% reduction | | Parallel Efficiency | Pseudo | True | โšก Real parallelization | | Numerical Stability | Medium | High | โœจ Significant improvement |

๐Ÿ”„ Migration Guide

From v0.2.x to v1.0.0

Minimal Migration (Recommended) ```python

Old code works unchanged

from minimamba import Mamba, MambaConfig

config = MambaConfig(dmodel=512, nlayer=12, vocab_size=32000) model = Mamba(config) # Now uses optimized architecture automatically ```

Full Migration (Best Performance) ```python

Use new specialized models

from minimamba import MambaForCausalLM, MambaLMConfig

config = MambaLMConfig(dmodel=512, nlayer=12, vocab_size=32000) model = MambaForCausalLM(config)

Use advanced generation

generated = model.generate( inputids, maxnewtokens=50, temperature=0.8, usecache=True ) ```

๐Ÿงช Testing

  • 12 comprehensive tests covering all new features
  • 100% backward compatibility verified
  • Performance regression tests included
  • Memory efficiency validation automated

๐Ÿ“ Documentation

  • IMPROVEMENTS.md: Detailed technical improvements
  • examples/: 8 working examples
  • forex/: Real-world usage demonstration
  • tests/: Comprehensive test suite

๐Ÿ”— Dependencies

  • torch>=1.12.0 (required)
  • numpy>=1.20.0 (required)
  • Development dependencies for testing and examples

โš ๏ธ Breaking Changes

None - This release maintains 100% backward compatibility with v0.2.x

๐ŸŽฏ Future Roadmap

  • Distributed training support
  • Quantization (INT8/FP16) optimization
  • Custom CUDA kernels for maximum performance
  • More specialized model architectures

- Python
Published by Xinguang about 1 year ago