Metadata-Version: 2.1
Name: memoraith
Version: 0.2.0
Summary: Advanced lightweight model profiler for deep learning frameworks
Home-page: https://github.com/mehdi342/Memoraith
Author: Mehdi El Jouhfi
Author-email: midojouhfi@gmail.com
Project-URL: Bug Reports, https://github.com/mehdi342/Memoraith/issues
Project-URL: Source, https://github.com/mehdi342/Memoraith/
Classifier: Development Status :: 4 - Beta
Classifier: Intended Audience :: Developers
Classifier: Intended Audience :: Science/Research
Classifier: License :: OSI Approved :: MIT License
Classifier: Programming Language :: Python :: 3
Classifier: Programming Language :: Python :: 3.7
Classifier: Programming Language :: Python :: 3.8
Classifier: Programming Language :: Python :: 3.9
Classifier: Topic :: Scientific/Engineering :: Artificial Intelligence
Requires-Python: >=3.7
Description-Content-Type: text/markdown
License-File: LICENSE
Requires-Dist: torch >=1.7.0
Requires-Dist: tensorflow >=2.4.0
Requires-Dist: matplotlib >=3.3.0
Requires-Dist: seaborn >=0.11.0
Requires-Dist: plotly >=4.14.0
Requires-Dist: pandas >=1.2.0
Requires-Dist: jinja2 >=2.11.0
Requires-Dist: pdfkit >=0.6.0
Requires-Dist: psutil >=5.8.0
Requires-Dist: pynvml >=8.0.0
Requires-Dist: colorama >=0.4.4
Requires-Dist: tqdm >=4.60.0
Requires-Dist: aiofiles >=0.6.0
Requires-Dist: asyncio >=3.4.3
Requires-Dist: networkx >=2.5
Provides-Extra: dev
Requires-Dist: pytest >=6.2.0 ; extra == 'dev'
Requires-Dist: pytest-asyncio >=0.14.0 ; extra == 'dev'
Requires-Dist: black >=20.8b1 ; extra == 'dev'
Requires-Dist: isort >=5.7.0 ; extra == 'dev'
Requires-Dist: flake8 >=3.8.0 ; extra == 'dev'
Requires-Dist: mypy >=0.800 ; extra == 'dev'
Requires-Dist: tox >=3.20.0 ; extra == 'dev'
Requires-Dist: sphinx >=3.4.3 ; extra == 'dev'
Requires-Dist: sphinx-rtd-theme >=0.5.1 ; extra == 'dev'
Provides-Extra: full
Requires-Dist: torch >=1.7.0 ; extra == 'full'
Requires-Dist: tensorflow >=2.4.0 ; extra == 'full'
Requires-Dist: tensorboard >=2.4.0 ; extra == 'full'
Requires-Dist: optuna >=2.3.0 ; extra == 'full'
Requires-Dist: ray >=1.2.0 ; extra == 'full'

# Memoraith

Memoraith is a cutting-edge, lightweight model profiler for deep learning frameworks, developed by Mehdi El Jouhfi. It's designed to revolutionize the optimization of neural network models by providing unparalleled insights into their performance characteristics.

## Features

- Advanced support for PyTorch and TensorFlow models
- High-precision profiling of memory usage (CPU and GPU)
- Microsecond-accurate computation time measurement for each layer
- Sophisticated bottleneck and anomaly detection algorithms
- Generation of comprehensive, interactive reports with advanced visualizations
- Real-time visualization capabilities with minimal overhead
- Flexible programmatic and command-line interfaces

## Installation

Install Memoraith using pip:

```bash
pip install memoraith
```

For GPU support and additional features:

```bash
pip install memoraith[full]
```

## Quick Start

Here's an example of Memoraith in action with a PyTorch model:

```python
from memoraith import profile_model, set_output_path
import torch
import torch.nn as nn

set_output_path('profiling_results/')

class AdvancedNet(nn.Module):
    def __init__(self):
        super(AdvancedNet, self).__init__()
        self.conv1 = nn.Conv2d(3, 64, kernel_size=3, padding=1)
        self.conv2 = nn.Conv2d(64, 128, kernel_size=3, padding=1)
        self.fc = nn.Linear(128 * 8 * 8, 10)

    def forward(self, x):
        x = torch.relu(self.conv1(x))
        x = torch.relu(self.conv2(x))
        x = x.view(x.size(0), -1)
        return self.fc(x)

@profile_model(memory=True, computation=True, gpu=True, network=True)
def train_model(model):
    optimizer = torch.optim.Adam(model.parameters())
    for _ in range(100):
        input_data = torch.randn(32, 3, 32, 32)
        output = model(input_data)
        loss = output.sum()
        loss.backward()
        optimizer.step()

if __name__ == "__main__":
    model = AdvancedNet()
    train_model(model)
```

This will generate a comprehensive profiling report in the 'profiling_results/' directory.

## Documentation

For detailed information on Memoraith's advanced features, please refer to our [comprehensive documentation](https://memoraith.readthedocs.io).

## Contributing

Contributions are welcome! Please read our [Contributing Guide](CONTRIBUTING.md) for details on our code of conduct and the process for submitting pull requests.

## License

Memoraith is released under the MIT License. See the [LICENSE](LICENSE) file for more details.

## Support

If you encounter any issues or have questions, please file an issue on the [GitHub issue tracker](https://github.com/mehdi342/Memoraith/issues).

## Citing Memoraith

If you use Memoraith in your research, please cite it as follows:

```bibtex
@software{memoraith,
  author = {El Jouhfi, Mehdi},
  title = {Memoraith: Advanced Lightweight Model Profiler for Deep Learning},
  year = {2024},
  url = {https://github.com/mehdi342/Memoraith}
}
```

## Contact

For inquiries, please contact Mehdi El Jouhfi at midojouhfi@gmail.com.
