1 research outputs found
ConstraintFlow: A DSL for Specification and Verification of Neural Network Analyses
The uninterpretability of DNNs hinders their deployment to safety-critical
applications. Recent works have shown that Abstract-Interpretation-based formal
certification techniques provide promising avenues for building trust in DNNs
to some extent. The intricate mathematical background of Abstract
Interpretation poses two challenges: (i) easily designing the algorithms that
capture the intricate DNN behavior by balancing cost vs. precision tradeoff,
and (ii) maintaining the over-approximation-based soundness of these
certifiers.
General-purpose programming languages like C++ provide extensive
functionality, however, verifying the soundness of the algorithms written in
them can be impractical. The most commonly used DNN certification libraries
like auto_LiRPA and ERAN prove the correctness of their analyses. However, they
consist of only a few hard-coded abstract domains and abstract transformers (or
transfer functions) and do not allow the user to define new analyses. Further,
these libraries can handle only specific DNN architectures.
To address these issues, we develop a declarative DSL -- ConstraintFlow --
that can be used to specify Abstract Interpretation-based DNN certifiers. In
ConstraintFlow, programmers can easily define various existing and new abstract
domains and transformers, all within just a few 10s of Lines of Code as opposed
to 1000s of LOCs of existing libraries. We also provide lightweight automatic
verification, which can be used to ensure the over-approximation-based
soundness of the certifier code written in ConstraintFlow for arbitrary (but
bounded) DNN architectures. Using this automated verification procedure, for
the first time, we can verify the soundness of state-of-the-art DNN certifiers
for arbitrary DNN architectures, all within a few minutes. We prove the
soundness of our verification procedure and the completeness of a subset of
ConstraintFlow