Skip to content

Offline attack with 4 reference models performs significantly worse than reported in the paper #151

@sophiaBuss0410

Description

@sophiaBuss0410

Dear authors,

Thank you for providing the implementation for RMIA.
After attempts to reproduce the attack on the paper, we observed that the offline attack results with 4 reference models are much lower than those reported in the paper.

Results

Metric Reported Reproduced
Avg. Train Accuracy 99.9% 99.92–100%
Avg. Test Accuracy 92.4% 91.23–91.71%
AUC of RMIA (offline, 4 refs, 2 augs) 71.02(*) 64.67
TPR@0.01%FPR (offline, 4 refs, 2 augs) 2.91%(*) 0.73%
TPR@0.0%FPR (offline, 4 refs, 2 augs) 2.13%(*) 0.57%
AUC of RMIA (offline, 4 refs, 18 augs) 71.02(*) 64.88
TPR@0.01%FPR (offline, 4 refs, 18 augs) 2.91%(*) 0.84%
TPR@0.0%FPR (offline, 4 refs, 18 augs) 2.13%(*) 0.45%

(*) We refer to the values in Table 2 in the paper, which does not clearly state the number of augmentations.


Environment

OS: Linux 4.18.0-372.9.1.el8.x86_64
Python: 3.10.8 [GCC 12.2.0]
CUDA: 11.7
GPU: Tesla V100-PCIE-32GB
TensorFlow: 2.9.2
JAX: 0.3.17

What we did

We employed the code from this tree:
https://github.com/privacytrustlab/ml_privacy_meter/tree/d32734161a3395211fe5f3cd461932290b1fafbe/research/2024_rmia

  1. Train 4 reference models.
# # training 4 ref models
prefix="cifar10_4"

if [ ! -d "logs/${prefix}" ]; then
    # If it doesn't exist, create the folder
    mkdir "logs/${prefix}"
    mkdir "exp/${prefix}"
    echo "Folder 'logs/${prefix}' created."
else
    echo "Folder 'logs/${prefix}' already exists."
fi

n_models_end=3 # train 4 reference models

for model in $(seq 0 1 $n_models_end);
do
    train="CUDA_VISIBLE_DEVICES='0' python3 -u train.py --dataset=cifar10 --epochs=100 --save_steps=100 --arch wrn28-2 --num_experiments 4 --expid ${model} --logdir exp/${prefix} &> 'logs/${prefix}/log_${model}'"
    eval ${train}
done

  1. Train 1 target model.
CUDA_VISIBLE_DEVICES='0' python3 -u train_one_model.py \
    --dataset=cifar10 \
    --epochs=100 \
    --save_steps=100 \
    --arch wrn28-2 \
    --expid 0 \
    --logdir exp/cifar10_target &> logs/cifar10_target/log_0

train.py was modified to train_one_model.py as below to set num_experiments None and enable one model training:

# elif FLAGS.expid is not None:
elif FLAGS.expid is not None and FLAGS.num_experiments is not None:

elif FLAGS.expid is not None:

  1. python main_one_target_model.py --cf attack_configs/cifar10/rmia_offline_2_ref_models.yaml

main.py was modified to main_one_target_model.py as below to set model None to load the target model logits.

model_logits, _ = load_input_logits(models_path, epoch, 
# model=model_index,
model=None,
num_augmentations=nb_augmentations)

model_logits, _ = load_input_logits(models_path, epoch, model=model_index, num_augmentations=nb_augmentations)

Config was modified as below:

nb_augmentation: 18 # for aug=18
nb_augmentation: 2 # for aug=2

data:
  target_dir: scripts/exp/cifar10_target # directory containing logits of one target model
  reference_dir: scripts/exp/cifar10_4 # directory containing logits of 4 reference models

We trained the one target model because specifying the same directory (scripts/exp/cifar10_4) faced a shape error.
I’m happy to share full logs or run additional experiments if that helps.

Thank you for your work!

Best regards,

Haruka Buss

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