Skip to content

Releases: dlshriver/dnnv

v0.6.0

02 Aug 12:48
d4f59a0
Compare
Choose a tag to compare

This release brings several new features, some bug fixes, and performance improvements. It also includes commits from 2 new contributors.

Features:

  • support for the ONNX operators Slice (#90) and Split (#81)
  • support for more functions in property specifications (len, min, max, sum, numpy.min, numpy.max, numpy.sum, numpy.mean, numpy.shape) (#85)
  • add support for optional simplifiers (#87)
    • add ReluifyMaxPool to transform MaxPool operations into a sequence of Conv and Relu operations
    • optional verifiers can currently be specified using an environment variable, DNNV_OPTIONAL_SIMPLIFIERS, set to a colon separated list of optional simplifications to apply, e.g., DNNV_OPTIONAL_SIMPLIFIERS=ReluifyMaxPool
  • add support for other optimizer backends to MIPVerify, which can be specified with --mipverify.optimizer=SOLVER (#88)

Performance improvements:

  • cache hashes of complex expressions (#78)
  • testing performance improvements: better caching, split into separate jobs for unit and system for faster failures (#89)
  • optimizations for expression shape and type inference and expression concretization (#96)

Bug fixes:

  • fix non-monotonic bounds updates (#79)
  • fix subprocess command for finding library dependencies (#82)
  • use a more robust url for downloading zlib releases (#82)
  • fixed use of network composition in property specifications (#83)
  • fixes for Dropout operator (#90)
  • add a check for network-free properties (#95)

Contributors in this release:

  • David Shriver (dlshriver)
  • Meriel Stein (MissMeriel)
  • Felipe Toledo (Felipetoledo4815)
  • Samuel Teuber (samysweb)

v0.5.1

31 Jan 15:02
Compare
Choose a tag to compare

Some small optimizations and bug fixes. We now report an error for unbounded inputs addressing #34. We also fix an ExtSlice regression in the DNNP parser and modify the verifier installation scripts to be more robust for some systems.

v0.5.0

27 Jan 23:58
017e1d4
Compare
Choose a tag to compare

Changes:

  • Updated verifiers and use the latest version of Gurobi (now with Docker support!)
  • A significantly improved test suite
  • Support for verifier installation after installing DNNV with pip
  • DNNP finally provides access to the path of the specification being verified by using the path variable
  • Replace simpleparse dependency with dependency on lark and refactor property parsers
  • Updated and improved documentation (https://docs.dnnv.org)
  • Added an expression visitor for inferring types and shapes of DNNP expressions
  • Fixed a bug where logical negations of vector comparisons were not expanded into disjunctions of comparisons

New workflows:
For users that do not need to modify the DNNV source code, the new preferred workflow is to create and/or activate a python (python 3.7 and 3.8 are supported) virtual environment (e.g., python -m venv .venv and source .venv/bin/activate) and install DNNV with pip install dnnv (to install pre-releases use the --pre option for pip: pip install --pre dnnv). After that, verifiers can be managed using the included dnnv_manage command. For example, the nnenum verifier can be installed with dnnv_manage install nnenum.

For those who do need access to the DNNV source, the workflow has been simplified and no longer requires the extra environment management scripts. Simply download the source (and checkout the develop branch), set up your python virtual environment, and then run pip install .. Verifiers can then be installed using dnnv_manage.

v0.5.0a2

12 Dec 04:34
8edf526
Compare
Choose a tag to compare
v0.5.0a2 Pre-release
Pre-release

Changes:

  • Updated verifiers and use the latest version of Gurobi (now with Docker support!)
  • A significantly improved test suite
  • Support for verifier installation after installing DNNV with pip
  • DNNP finally provides access to the path of the specification being verified by using the path variable
  • Replace simpleparse dependency with dependency on lark and refactor property parsers

New workflows:
For users that do not need to modify the DNNV source code, the new preferred workflow is to create and/or activate a python (python 3.7 and 3.8 are supported) virtual environment (e.g., python -m venv .venv and source .venv/bin/activate) and install DNNV with pip install dnnv (to install pre-releases use the --pre option for pip: pip install --pre dnnv). After that, verifiers can be managed using the included dnnv_manage command. For example, the nnenum verifier can be installed with dnnv_manage install nnenum.

For those who do need access to the DNNV source, the workflow has been simplified and no longer requires the extra environment management scripts. Simply download the source (and checkout the develop branch), set up your python virtual environment, and then run pip install .. Verifiers can then be installed using dnnv_manage.

v0.4.8

04 Jun 17:56
179cd09
Compare
Choose a tag to compare
  • Adds ite support to the vnnlib parser
  • Adds NotEqual support to the Canonical property transformer
  • Fix a bug that causes errors when reducing properties with input constraints over slices

note: bumped 2 versions due to incorrect pypi package upload

v0.4.6

01 Jun 17:49
077e727
Compare
Choose a tag to compare
  • extend vnnlib to support and/or
  • fix bug in vnnlib output constraint generator

v0.4.5

24 May 16:19
e9dffa7
Compare
Choose a tag to compare
  • vnnlib improvements and extensions
  • bundle Transpose operations into succeeding Gemm operation
  • reduce memory requirements by removing simple bounds from constraints matrix

v0.4.4

18 Apr 15:16
Compare
Choose a tag to compare
bump version

v0.4.0

13 Feb 00:21
9220b99
Compare
Choose a tag to compare

Update command line interface
Refactor internals
Add new verifiers
Enable property reductions with h-polytope input constraints for some verifiers
Add more ONNX operations

v0.3.0

07 Aug 18:47
a3c747f
Compare
Choose a tag to compare

Major changes:

  • add a parser for vnnlib property format
  • updates property extractor to support more properties for verification
  • support Elu activation
  • bug fix to support flat input tensors

Minor changes:

  • update verifier installation scripts
  • bug fix for property parsing in python3.8
  • skip tests for verifier if not installed