Overview
In this release, NNSmith is made more robust, systematic and extensible. It also supports a wider range of operators, data types and frontends/backends. We upstreamed the main infrastructure improvements done during the NeuRI project (algorithmic parts will be upstreamed in incoming releases), making it "a fuzzer infrastructure" in addition to simply "a fuzzer" for DL frameworks. Open-source developers can easily build or extend their own fuzzers based on NNSmith now. The documentation and GitHub experience are also improved to make it more approachable.
Notable Changes
- Adding more ops for TF (#55)
- Add UB and vulnerable ops filter (#56)
- Resuming coverage instrumentation (#60)
- GraphIR for systematic model manipulation (#61, #64, #66)
- Adding versioning information for nnsmith/model/backend (#63)
- Concolic generation (#66)
- Sharpening and testing user-defined constraints (#72)
- Include and exclude ops by name and data types (#72)
- Adding more complete data types (#74, #76)
- Deprecate support for
iree
(#74) - Supporting
torchjit
as backend (#79) - Run eager mode on GPU if the backend target is CUDA (#89)
- Fixing or improving operator rules: Pool2d, InterpBase, ReduceBase (#66), Reshape (11a29ef), broadcast, Abs, ReflectPad, ArgMin/Max (#74), TFMatMul (#95)
- Adapting TF's naming convention in GraphIR's var names (#66)
- Harnessing hydra dependencies (#66, #68)
- Documentation (#57, #58, #60, bf1f592, dce784a, ba486ca)
- Fixing and supporting fp16 (#85, #89)
- Contribution guidance (#86)
- Code of conduct (#82)
- Issue templates (#80)
- Bug report links are being listed and maintained (#90)
- Defaultify to
symbolic-cinit
as generation mode (#96)
See the full commit list: a8307f2...b4b9fac
PyPI Release
https://pypi.org/project/nnsmith/0.1.0/
Contributors
Thanks, @soodoshll and many others for issue reporting.