From 293ef4dbeb6c1587e071cc64017aaa7998f7e0bc Mon Sep 17 00:00:00 2001 From: Michele Alberti <michele.alberti@cea.fr> Date: Fri, 2 Jun 2023 10:57:16 +0200 Subject: [PATCH] [config] Add first support for abcrown config files. --- config/abcrown/acasxu.yaml | 27 +++++++++++++++++++++++++++ config/caisar-detection-data.conf | 11 +++++++++++ config/dune | 3 ++- src/verification.ml | 3 +++ tests/autodetect.t | 4 +++- 5 files changed, 46 insertions(+), 2 deletions(-) create mode 100644 config/abcrown/acasxu.yaml diff --git a/config/abcrown/acasxu.yaml b/config/abcrown/acasxu.yaml new file mode 100644 index 0000000..22d1141 --- /dev/null +++ b/config/abcrown/acasxu.yaml @@ -0,0 +1,27 @@ +# Configuration file for running the ACASXu benchmark (all properties). +general: + enable_incomplete_verification: False + loss_reduction_func: max +data: + num_outputs: 5 +solver: + batch_size: 1000 # Number of parallel domains to compute on GPU. + bound_prop_method: crown + beta-crown: + iteration: 10 # Iterations for computing intermediate layer bounds. + alpha-crown: + iteration: 10 + share_slopes: True # This produces slightly looser bounds, but faster. +bab: + branching: + method: naive # Split on input space. + candidates: 3 + sb_coeff_thresh: 0.01 + input_split: + enable: True + enhanced_bound_prop_method: alpha-crown + enhanced_bound_patience: 20 + enhanced_branching_method: sb + attack_patience: 80 +attack: + pgd_order: after diff --git a/config/caisar-detection-data.conf b/config/caisar-detection-data.conf index 47825ee..b762961 100644 --- a/config/caisar-detection-data.conf +++ b/config/caisar-detection-data.conf @@ -108,6 +108,17 @@ command = "%e --device cpu --onnx_path %{nnet-onnx} --vnnlib_path %f --timeout % driver = "caisar_drivers/abcrown.drv" use_at_auto_level = 1 +[ATP abcrown] +name = "alpha-beta-CROWN" +alternative = "ACAS" +exec = "abcrown.sh" +version_switch = "--version" +version_regexp = "\\(dummy-version\\)" +version_ok = "dummy-version" +command = "%e --device cpu --onnx_path %{nnet-onnx} --vnnlib_path %f --config %{config}/abcrown/acasxu.yaml --timeout %t" +driver = "caisar_drivers/abcrown.drv" +use_at_auto_level = 1 + [ATP saver] name = "SAVer" exec = "saver" diff --git a/config/dune b/config/dune index 3bf2582..5401292 100644 --- a/config/dune +++ b/config/dune @@ -3,8 +3,9 @@ (site (caisar config))) (files - custom_transformations.py caisar-detection-data.conf + custom_transformations.py + (abcrown/acasxu.yaml as abcrown/acasxu.yaml) (drivers/pyrat.drv as drivers/pyrat.drv) (drivers/marabou.drv as drivers/marabou.drv) (drivers/saver.drv as drivers/saver.drv) diff --git a/src/verification.ml b/src/verification.ml index ce6f2f7..f7c4914 100644 --- a/src/verification.ml +++ b/src/verification.ml @@ -150,6 +150,8 @@ let answer_aimos limit config env config_prover dataset task = (answer, additional_info) let nnet_or_onnx = Re__Core.(compile (str "%{nnet-onnx}")) +let config_re = Re__Core.(compile (str "%{config}")) +let config_site = List.hd_exn Dirs.Sites.config let call_prover_on_task limit config command driver task = let prover_call = @@ -247,6 +249,7 @@ let answer_generic limit config prover config_prover driver ~proof_strategy task Whyconf.get_complete_command ~with_steps:false config_prover in let command = Re__Core.replace_string nnet_or_onnx ~by:nn_file command in + let command = Re__Core.replace_string config_re ~by:config_site command in List.map tasks ~f:(call_prover_on_task limit config command driver)) in let prover_answer = combine_prover_answers answers in diff --git a/tests/autodetect.t b/tests/autodetect.t index 6c4a2f4..cd2e8ef 100644 --- a/tests/autodetect.t +++ b/tests/autodetect.t @@ -53,9 +53,10 @@ Test autodetect <autodetect>Found prover PyRAT version 1.1 (alternative: ACAS) <autodetect>Found prover nnenum version dummy-version, OK. <autodetect>Found prover alpha-beta-CROWN version dummy-version, OK. + <autodetect>Found prover alpha-beta-CROWN version dummy-version (alternative: ACAS) <autodetect>Found prover SAVer version v1.0, OK. <autodetect>Found prover AIMOS version 1.0, OK. - <autodetect>10 prover(s) added + <autodetect>11 prover(s) added [caisar] AIMOS 1.0 Alt-Ergo 2.4.0 CVC5 1.0.2 @@ -65,4 +66,5 @@ Test autodetect PyRAT 1.1 (VNNLIB) SAVer v1.0 alpha-beta-CROWN dummy-version + alpha-beta-CROWN dummy-version (ACAS) nnenum dummy-version -- GitLab