Skip to content

CROWN causes CUDA OOM on YOLO model; IBP-only leads to huge bound values and shape errors #97

@AmiraElouazzani

Description

@AmiraElouazzani

Hi, I'm trying to use alpha-beta-CROWN for verifying a truncated YOLO-based model. However, I'm running into two different major issues depending on the bound propagation method:

When I try to use CROWN or CROWN-ibp, I immediately run into CUDA out-of-memory errors.
Reducing the batch size doesn't help much and neither do the parameters that are mentioned to help with memory problems. I suspect this indicates that the method may not scale to large models like YOLO (with large input size and many convolutional layers).

When I use IBP alone (method='IBP'), the model runs, but the computed lower bounds have absurdly large negative values, e.g., -1e+26.
After this, I get shape mismatch or value errors (like expected 3D got 2D) later in the pipeline.
Traceback (most recent call last):

  File "/beegfs/home/u1266/abcrown/alpha-beta-CROWN/complete_verifier/abcrown.py", line 822, in <module>
    abcrown.main()
  File "/beegfs/home/u1266/abcrown/alpha-beta-CROWN/complete_verifier/abcrown.py", line 740, in main
    incomplete_verification_output = self.incomplete_verifier(
  File "/beegfs/home/u1266/abcrown/alpha-beta-CROWN/complete_verifier/abcrown.py", line 160, in incomplete_verifier
    global_lb, ret = model.build(
  File "/beegfs/home/u1266/abcrown/alpha-beta-CROWN/complete_verifier/beta_CROWN_solver.py", line 557, in build
    lb, ub, A = ret
ValueError: not enough values to unpack (expected 3, got 2)

This is my YAML configuration file:

general:
  device: cuda
  save_adv_example: true
  show_adv_example: true
model:
  name: yolov5n
  path: ../../myYolo/checkpoints/epoch_25.pt
  input_shape: [1, 3, 224, 224]

data:
  dataset: Customized("caltech.dataCaltech", "load_caltech_sample")
  start: 1
  end: 1
  mean: [0]
  std: [1]
  num_outputs: 257

specification:

  epsilon: 0.1
  vnnlib_path: ../spec_eps001_class500.vnnlib

solver:
  batch_size: 1024
  bound_prop_method: crown

Is it expected that CROWN doesn’t scale to models like YOLO?
Should IBP produce such extreme values?
Any guidance on how to adapt this tool for larger models like YOLO?

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions