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: 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"
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"

# 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.
