Releases: frgfm/torch-scan
v0.1.2: Improved project quality and some layers' support fixed
This release fixes the support of some layers and improves the project quality.
Note: torchscan 0.1.2 requires PyTorch 1.5 or higher.
Highlights
🎨 Documentation theme
It was time to update the documentation, thus the theme was changed from Read the Docs to Furo (#61)
This comes with nice features like dark mode and edit button!
🧹 Code quality
Getting a clean, maintainable code base is one of the key catalyst aspects for an OSS project. As such, a few improvements have been made:
- codebase quality : adding annotation typing (#30), black formatting (#58)
- moved legacy
requirements.txt
topyproject.toml
(#58, #59) - added a Makefile for easier development (#61)
Breaking changes
⚠️ Branch renaming
The master
branch was renamed into main
(#60), so if you were installing from source a specific branch name, make sure to update this reference!
What's Changed
Breaking Changes 🛠
New Features 🚀
- ci: Added FUNDING button by @frgfm in #71
- docs: Added list of supported layers to documentation by @frgfm in #74
Bug Fixes 🐛
- fix: Fixed RF computation and added effective stride and padding by @frgfm in #33
- chore: Fixed doc deploy by @frgfm in #35
- fix: Fixed MAC/FLOP computation for Linear in higher dimensions by @frgfm in #52
- fix: read encoding with utf-8 by @joonas-yoon in #56
- fix: Fixed GPU RAM estimation by @frgfm in #64
- docs: Fixed author entry in pyproject by @frgfm in #67
- fix: Fixed release job and conda recipe by @frgfm in #75
Improvements
- fix: Fixed support of modules that are used multiple times during forward by @frgfm in #24
- feat: Added support of dilation in receptive field computation by @frgfm in #28
- chore: Added annotation typing by @frgfm in #30
- style: Reorganized print with dynamic column width resolution by @frgfm in #32
- feat: Switched correctly the RF computation order by @frgfm in #34
- style: Fixed annotation typing by @frgfm in #38
- chore: Updated CI jobs and added multi-version docs by @frgfm in #47
- feat: Added FLOPS estimation support for nn.Transformer by @frgfm in #48
- refactor: Improved project code quality by @frgfm in #53
- refactor: Refactored setup and tool config into setup.cfg by @frgfm in #57
- style: Added black formatting & refactored configs into pyproject.toml by @frgfm in #58
- ci: Deprecates old requirements.txt by @frgfm in #59
- docs: Updated documentation theme and README by @frgfm in #61
- docs: Updated documentation theme by @frgfm in #62
- style: Updated mypy and isort configs by @frgfm in #66
- chore: Improved version specifiers and fixed conda recipe by @frgfm in #68
- ci: Updates the Python version of the CI & file headers by @frgfm in #69
- docs: Fixed README badge and updated documentation by @frgfm in #70
- docs: Improved documentation build script by @frgfm in #72
- style: Renamed variables to avoid built-in names by @frgfm in #73
New Contributors
- @joonas-yoon made their first contribution in #56
Full Changelog: v0.1.1...v0.1.2
Extended module support and experimental receptive field computation
This release adds support of more modules by the crawler and enables receptive field computation for highway nets.
Note: torchscan 0.1.1 requires PyTorch 1.1 or newer.
Highlights
Modules
In-hook information extraction for supported torch.nn.Module
New
- Add experimental support of receptive field estimation for the following
torch.nn.Module
:Identity
,Linear
,Identity
,ReLU
,ELU
,LeakyReLU
,ReLU6
,Tanh
,Sigmoid
,_ConvTransposeNd
,_ConvNd
,_BatchNorm
,_MaxPoolNd
,_AvgPoolNd
,_AdaptiveMaxPoolNd
,_AdaptiveAvgPoolNd
,Dropout
(#21).
Fixes
- Fixed transposed convolutions identification (#14)
- Fixed flops, macs & dmas estimation for pooling operations (#19, #20)
## Crawler
Module hooking agent
New
- Added an experimental feature
receptive_field
in thesummary
function (#21)
Test
Verifications of the package well-being before release
New
- Updated test for
torchscan.modules
(#21)
Documentation
Online resources for potential users
Improvements
Fixes
- Fixed documentation deployment (#16)
Others
Other tools and implementations
Parameters, FLOPs and memory access profiler
This release adds a module crawler to pick up relevant inference information.
Note: torchscan 0.1.0 requires PyTorch 1.1 or newer.
Highlights
Modules
In-hook information extraction for supported torch.nn.Module
New
- Add FLOPs, MACs and DMAs estimation support for the following
torch.nn.Module
:Identity
,Linear
,Identity
,ReLU
,ELU
,LeakyReLU
,ReLU6
,Tanh
,Sigmoid
,_ConvTransposeMixin
,_ConvNd
,_BatchNorm
,_MaxPoolNd
,_AvgPoolNd
,_AdaptiveMaxPoolNd
,_AdaptiveAvgPoolNd
,Dropout
(#1, #6, #7).
Process
Python process information related
New
- Add
get_process_gpu_ram
to retrieve GPU RAM usage of the current Python process (#1).
## Crawler
Module hooking agent
New
- Add
crawl_module
to store all module information in a pythondict
(#1, #6) - Add
summary
for high-level console-printed information (#1)
Test
Verifications of the package well-being before release
New
- Add test for
torchscan.modules
(#1 , #6, #7) - Add test for
torschscan.process
(#1, #6) - Add test for
torschscan.crawler
(#6) - Add test for
torschscan.utils
(#1, #6)
Documentation
Online resources for potential users
New
- Add sphinx automatic documentation build for existing features (#1)
- Add contribution guidelines (#1)
- Add installation, usage, and benchmark in readme (#1, #2, #8)
Others
Other tools and implementations
- Add ̀format_info
to generate a string output from the
crawl_module` returned dictionary (#1). - Add
aggregate_info
to aggregatecrawl_module
output to a specific depth (#1). - Add
scripts/benchmark.py
to displaycrawl_module
information on alltorchvision
classification models (#1 )
Notes: upon the next torch
release, _ConvTransposeMixin
will be renamed to _ConvTransposeNd