From 4b647b4f804798400d4df856e4b826be7def65f3 Mon Sep 17 00:00:00 2001 From: Brett Date: Tue, 20 Jun 2017 20:55:46 -0400 Subject: [PATCH] updates for sweep --- dp_gan.py | 5 ++++- noise_sweep.sh | 41 ++++++++++++++++++++++++++++++++++++----- noise_sweep_2.sh | 41 ++++++++++++++++++++++++++++++++++++----- priv_calc.py | 11 +++++++++-- 4 files changed, 85 insertions(+), 13 deletions(-) diff --git a/dp_gan.py b/dp_gan.py index c16d1aa..029121d 100644 --- a/dp_gan.py +++ b/dp_gan.py @@ -195,7 +195,10 @@ def build_discriminator(): test_history = defaultdict(list) privacy_history = [] - with tf.Session() as sess: + config = tf.ConfigProto() + config.gpu_options.allow_growth=True + + with tf.Session(config=config) as sess: eps = tf.placeholder(tf.float32) delta = tf.placeholder(tf.float32) diff --git a/noise_sweep.sh b/noise_sweep.sh index b47e496..895b14d 100644 --- a/noise_sweep.sh +++ b/noise_sweep.sh @@ -1,5 +1,36 @@ -CUDA_VISIBLE_DEVICES=0 python dp_gan.py --clip_value 0.0001 --noise 8 --epochs 500 --lr 0.002 --batch_size 100 --prefix p0_ --seed 123 -CUDA_VISIBLE_DEVICES=0 python dp_gan.py --clip_value 0.0001 --noise 8 --epochs 500 --lr 0.002 --batch_size 100 --prefix p1_ --seed 234 -CUDA_VISIBLE_DEVICES=0 python dp_gan.py --clip_value 0.0001 --noise 8 --epochs 500 --lr 0.002 --batch_size 100 --prefix p2_ --seed 567 -CUDA_VISIBLE_DEVICES=0 python dp_gan.py --clip_value 0.0001 --noise 8 --epochs 500 --lr 0.002 --batch_size 100 --prefix p3_ --seed 678 -CUDA_VISIBLE_DEVICES=0 python dp_gan.py --clip_value 0.0001 --noise 8 --epochs 500 --lr 0.002 --batch_size 100 --prefix p4_ --seed 789 +CUDA_VISIBLE_DEVICES="1" python dp_gan.py --noise 2 --clip_value 1e-05 --epochs 500 --lr 0.0002 --batch_size 1 --prefix 2_1e-05_0.0002_ +CUDA_VISIBLE_DEVICES="1" python dp_gan.py --noise 2 --clip_value 0.0001 --epochs 500 --lr 0.0002 --batch_size 1 --prefix 2_0.0001_0.0002_ +CUDA_VISIBLE_DEVICES="1" python dp_gan.py --noise 2 --clip_value 0.001 --epochs 500 --lr 0.0002 --batch_size 1 --prefix 2_0.001_0.0002_ +CUDA_VISIBLE_DEVICES="1" python dp_gan.py --noise 3 --clip_value 1e-05 --epochs 500 --lr 0.0002 --batch_size 1 --prefix 3_1e-05_0.0002_ +CUDA_VISIBLE_DEVICES="1" python dp_gan.py --noise 3 --clip_value 0.0001 --epochs 500 --lr 0.0002 --batch_size 1 --prefix 3_0.0001_0.0002_ +CUDA_VISIBLE_DEVICES="1" python dp_gan.py --noise 3 --clip_value 0.001 --epochs 500 --lr 0.0002 --batch_size 1 --prefix 3_0.001_0.0002_ +CUDA_VISIBLE_DEVICES="1" python dp_gan.py --noise 4 --clip_value 1e-05 --epochs 500 --lr 0.0002 --batch_size 1 --prefix 4_1e-05_0.0002_ +CUDA_VISIBLE_DEVICES="1" python dp_gan.py --noise 4 --clip_value 0.0001 --epochs 500 --lr 0.0002 --batch_size 1 --prefix 4_0.0001_0.0002_ +CUDA_VISIBLE_DEVICES="1" python dp_gan.py --noise 4 --clip_value 0.001 --epochs 500 --lr 0.0002 --batch_size 1 --prefix 4_0.001_0.0002_ +CUDA_VISIBLE_DEVICES="1" python dp_gan.py --noise 8 --clip_value 1e-05 --epochs 500 --lr 0.0002 --batch_size 1 --prefix 8_1e-05_0.0002_ +CUDA_VISIBLE_DEVICES="1" python dp_gan.py --noise 8 --clip_value 0.0001 --epochs 500 --lr 0.0002 --batch_size 1 --prefix 8_0.0001_0.0002_ +CUDA_VISIBLE_DEVICES="1" python dp_gan.py --noise 8 --clip_value 0.001 --epochs 500 --lr 0.0002 --batch_size 1 --prefix 8_0.001_0.0002_ +CUDA_VISIBLE_DEVICES="1" python dp_gan.py --noise 0.25 --clip_value 1e-05 --epochs 500 --lr 0.0002 --batch_size 1 --prefix 0.25_1e-05_0.0002_ +CUDA_VISIBLE_DEVICES="1" python dp_gan.py --noise 0.25 --clip_value 0.0001 --epochs 500 --lr 0.0002 --batch_size 1 --prefix 0.25_0.0001_0.0002_ +CUDA_VISIBLE_DEVICES="1" python dp_gan.py --noise 0.25 --clip_value 0.001 --epochs 500 --lr 0.0002 --batch_size 1 --prefix 0.25_0.001_0.0002_ +CUDA_VISIBLE_DEVICES="1" python dp_gan.py --noise 0.5 --clip_value 1e-05 --epochs 500 --lr 0.0002 --batch_size 1 --prefix 0.5_1e-05_0.0002_ +CUDA_VISIBLE_DEVICES="1" python dp_gan.py --noise 0.5 --clip_value 0.0001 --epochs 500 --lr 0.0002 --batch_size 1 --prefix 0.5_0.0001_0.0002_ +CUDA_VISIBLE_DEVICES="1" python dp_gan.py --noise 0.5 --clip_value 0.001 --epochs 500 --lr 0.0002 --batch_size 1 --prefix 0.5_0.001_0.0002_ +CUDA_VISIBLE_DEVICES="1" python dp_gan.py --noise 1 --clip_value 1e-05 --epochs 500 --lr 0.0002 --batch_size 1 --prefix 1_1e-05_0.0002_ +CUDA_VISIBLE_DEVICES="1" python dp_gan.py --noise 1 --clip_value 0.0001 --epochs 500 --lr 0.0002 --batch_size 1 --prefix 1_0.0001_0.0002_ +CUDA_VISIBLE_DEVICES="1" python dp_gan.py --noise 1 --clip_value 0.001 --epochs 500 --lr 0.0002 --batch_size 1 --prefix 1_0.001_0.0002_ +CUDA_VISIBLE_DEVICES="1" python dp_gan.py --noise 1.5 --clip_value 1e-05 --epochs 500 --lr 0.0002 --batch_size 1 --prefix 1.5_1e-05_0.0002_ +CUDA_VISIBLE_DEVICES="1" python dp_gan.py --noise 1.5 --clip_value 0.0001 --epochs 500 --lr 0.0002 --batch_size 1 --prefix 1.5_0.0001_0.0002_ +CUDA_VISIBLE_DEVICES="1" python dp_gan.py --noise 1.5 --clip_value 0.001 --epochs 500 --lr 0.0002 --batch_size 1 --prefix 1.5_0.001_0.0002_ +CUDA_VISIBLE_DEVICES="1" python dp_gan.py --noise 0.25 --clip_value 1e-05 --epochs 500 --lr 0.002 --batch_size 1 --prefix 0.25_1e-05_0.002_ +CUDA_VISIBLE_DEVICES="1" python dp_gan.py --noise 0.25 --clip_value 0.0001 --epochs 500 --lr 0.002 --batch_size 1 --prefix 0.25_0.0001_0.002_ +CUDA_VISIBLE_DEVICES="1" python dp_gan.py --noise 0.25 --clip_value 0.001 --epochs 500 --lr 0.002 --batch_size 1 --prefix 0.25_0.001_0.002_ +CUDA_VISIBLE_DEVICES="1" python dp_gan.py --noise 0.5 --clip_value 1e-05 --epochs 500 --lr 0.002 --batch_size 1 --prefix 0.5_1e-05_0.002_ +CUDA_VISIBLE_DEVICES="1" python dp_gan.py --noise 0.5 --clip_value 0.0001 --epochs 500 --lr 0.002 --batch_size 1 --prefix 0.5_0.0001_0.002_ +CUDA_VISIBLE_DEVICES="1" python dp_gan.py --noise 0.5 --clip_value 0.001 --epochs 500 --lr 0.002 --batch_size 1 --prefix 0.5_0.001_0.002_ +CUDA_VISIBLE_DEVICES="1" python dp_gan.py --noise 1 --clip_value 1e-05 --epochs 500 --lr 0.002 --batch_size 1 --prefix 1_1e-05_0.002_ +CUDA_VISIBLE_DEVICES="1" python dp_gan.py --noise 1 --clip_value 0.0001 --epochs 500 --lr 0.002 --batch_size 1 --prefix 1_0.0001_0.002_ +CUDA_VISIBLE_DEVICES="1" python dp_gan.py --noise 1 --clip_value 0.001 --epochs 500 --lr 0.002 --batch_size 1 --prefix 1_0.001_0.002_ +CUDA_VISIBLE_DEVICES="1" python dp_gan.py --noise 1.5 --clip_value 1e-05 --epochs 500 --lr 0.002 --batch_size 1 --prefix 1.5_1e-05_0.002_ +CUDA_VISIBLE_DEVICES="1" python dp_gan.py --noise 1.5 --clip_value 0.0001 --epochs 500 --lr 0.002 --batch_size 1 --prefix 1.5_0.0001_0.002_ +CUDA_VISIBLE_DEVICES="1" python dp_gan.py --noise 1.5 --clip_value 0.001 --epochs 500 --lr 0.002 --batch_size 1 --prefix 1.5_0.001_0.002_ diff --git a/noise_sweep_2.sh b/noise_sweep_2.sh index 124c918..b0461b0 100644 --- a/noise_sweep_2.sh +++ b/noise_sweep_2.sh @@ -1,5 +1,36 @@ -CUDA_VISIBLE_DEVICES=1 python dp_gan.py --clip_value 0.0001 --noise 8 --epochs 500 --lr 0.002 --batch_size 100 --prefix p5_ -CUDA_VISIBLE_DEVICES=1 python dp_gan.py --clip_value 0.0001 --noise 8 --epochs 500 --lr 0.002 --batch_size 100 --prefix p6_ -CUDA_VISIBLE_DEVICES=1 python dp_gan.py --clip_value 0.0001 --noise 8 --epochs 500 --lr 0.002 --batch_size 100 --prefix p7_ -CUDA_VISIBLE_DEVICES=1 python dp_gan.py --clip_value 0.0001 --noise 8 --epochs 500 --lr 0.002 --batch_size 100 --prefix p8_ -CUDA_VISIBLE_DEVICES=1 python dp_gan.py --clip_value 0.0001 --noise 8 --epochs 500 --lr 0.002 --batch_size 100 --prefix p9_ +CUDA_VISIBLE_DEVICES="0" python dp_gan.py --noise 2 --clip_value 1e-05 --epochs 500 --lr 2e-05 --batch_size 1 --prefix 2_1e-05_2e-05_ +CUDA_VISIBLE_DEVICES="0" python dp_gan.py --noise 2 --clip_value 0.0001 --epochs 500 --lr 2e-05 --batch_size 1 --prefix 2_0.0001_2e-05_ +CUDA_VISIBLE_DEVICES="0" python dp_gan.py --noise 2 --clip_value 0.001 --epochs 500 --lr 2e-05 --batch_size 1 --prefix 2_0.001_2e-05_ +CUDA_VISIBLE_DEVICES="0" python dp_gan.py --noise 3 --clip_value 1e-05 --epochs 500 --lr 2e-05 --batch_size 1 --prefix 3_1e-05_2e-05_ +CUDA_VISIBLE_DEVICES="0" python dp_gan.py --noise 3 --clip_value 0.0001 --epochs 500 --lr 2e-05 --batch_size 1 --prefix 3_0.0001_2e-05_ +CUDA_VISIBLE_DEVICES="0" python dp_gan.py --noise 3 --clip_value 0.001 --epochs 500 --lr 2e-05 --batch_size 1 --prefix 3_0.001_2e-05_ +CUDA_VISIBLE_DEVICES="0" python dp_gan.py --noise 4 --clip_value 1e-05 --epochs 500 --lr 2e-05 --batch_size 1 --prefix 4_1e-05_2e-05_ +CUDA_VISIBLE_DEVICES="0" python dp_gan.py --noise 4 --clip_value 0.0001 --epochs 500 --lr 2e-05 --batch_size 1 --prefix 4_0.0001_2e-05_ +CUDA_VISIBLE_DEVICES="0" python dp_gan.py --noise 4 --clip_value 0.001 --epochs 500 --lr 2e-05 --batch_size 1 --prefix 4_0.001_2e-05_ +CUDA_VISIBLE_DEVICES="0" python dp_gan.py --noise 8 --clip_value 1e-05 --epochs 500 --lr 2e-05 --batch_size 1 --prefix 8_1e-05_2e-05_ +CUDA_VISIBLE_DEVICES="0" python dp_gan.py --noise 8 --clip_value 0.0001 --epochs 500 --lr 2e-05 --batch_size 1 --prefix 8_0.0001_2e-05_ +CUDA_VISIBLE_DEVICES="0" python dp_gan.py --noise 8 --clip_value 0.001 --epochs 500 --lr 2e-05 --batch_size 1 --prefix 8_0.001_2e-05_ +CUDA_VISIBLE_DEVICES="0" python dp_gan.py --noise 0.25 --clip_value 1e-05 --epochs 500 --lr 2e-05 --batch_size 1 --prefix 0.25_1e-05_2e-05_ +CUDA_VISIBLE_DEVICES="0" python dp_gan.py --noise 0.25 --clip_value 0.0001 --epochs 500 --lr 2e-05 --batch_size 1 --prefix 0.25_0.0001_2e-05_ +CUDA_VISIBLE_DEVICES="0" python dp_gan.py --noise 0.25 --clip_value 0.001 --epochs 500 --lr 2e-05 --batch_size 1 --prefix 0.25_0.001_2e-05_ +CUDA_VISIBLE_DEVICES="0" python dp_gan.py --noise 0.5 --clip_value 1e-05 --epochs 500 --lr 2e-05 --batch_size 1 --prefix 0.5_1e-05_2e-05_ +CUDA_VISIBLE_DEVICES="0" python dp_gan.py --noise 0.5 --clip_value 0.0001 --epochs 500 --lr 2e-05 --batch_size 1 --prefix 0.5_0.0001_2e-05_ +CUDA_VISIBLE_DEVICES="0" python dp_gan.py --noise 0.5 --clip_value 0.001 --epochs 500 --lr 2e-05 --batch_size 1 --prefix 0.5_0.001_2e-05_ +CUDA_VISIBLE_DEVICES="0" python dp_gan.py --noise 1 --clip_value 1e-05 --epochs 500 --lr 2e-05 --batch_size 1 --prefix 1_1e-05_2e-05_ +CUDA_VISIBLE_DEVICES="0" python dp_gan.py --noise 1 --clip_value 0.0001 --epochs 500 --lr 2e-05 --batch_size 1 --prefix 1_0.0001_2e-05_ +CUDA_VISIBLE_DEVICES="0" python dp_gan.py --noise 1 --clip_value 0.001 --epochs 500 --lr 2e-05 --batch_size 1 --prefix 1_0.001_2e-05_ +CUDA_VISIBLE_DEVICES="0" python dp_gan.py --noise 1.5 --clip_value 1e-05 --epochs 500 --lr 2e-05 --batch_size 1 --prefix 1.5_1e-05_2e-05_ +CUDA_VISIBLE_DEVICES="0" python dp_gan.py --noise 1.5 --clip_value 0.0001 --epochs 500 --lr 2e-05 --batch_size 1 --prefix 1.5_0.0001_2e-05_ +CUDA_VISIBLE_DEVICES="0" python dp_gan.py --noise 1.5 --clip_value 0.001 --epochs 500 --lr 2e-05 --batch_size 1 --prefix 1.5_0.001_2e-05_ +CUDA_VISIBLE_DEVICES="0" python dp_gan.py --noise 2 --clip_value 1e-05 --epochs 500 --lr 0.002 --batch_size 1 --prefix 2_1e-05_0.002_ +CUDA_VISIBLE_DEVICES="0" python dp_gan.py --noise 2 --clip_value 0.0001 --epochs 500 --lr 0.002 --batch_size 1 --prefix 2_0.0001_0.002_ +CUDA_VISIBLE_DEVICES="0" python dp_gan.py --noise 2 --clip_value 0.001 --epochs 500 --lr 0.002 --batch_size 1 --prefix 2_0.001_0.002_ +CUDA_VISIBLE_DEVICES="0" python dp_gan.py --noise 3 --clip_value 1e-05 --epochs 500 --lr 0.002 --batch_size 1 --prefix 3_1e-05_0.002_ +CUDA_VISIBLE_DEVICES="0" python dp_gan.py --noise 3 --clip_value 0.0001 --epochs 500 --lr 0.002 --batch_size 1 --prefix 3_0.0001_0.002_ +CUDA_VISIBLE_DEVICES="0" python dp_gan.py --noise 3 --clip_value 0.001 --epochs 500 --lr 0.002 --batch_size 1 --prefix 3_0.001_0.002_ +CUDA_VISIBLE_DEVICES="0" python dp_gan.py --noise 4 --clip_value 1e-05 --epochs 500 --lr 0.002 --batch_size 1 --prefix 4_1e-05_0.002_ +CUDA_VISIBLE_DEVICES="0" python dp_gan.py --noise 4 --clip_value 0.0001 --epochs 500 --lr 0.002 --batch_size 1 --prefix 4_0.0001_0.002_ +CUDA_VISIBLE_DEVICES="0" python dp_gan.py --noise 4 --clip_value 0.001 --epochs 500 --lr 0.002 --batch_size 1 --prefix 4_0.001_0.002_ +CUDA_VISIBLE_DEVICES="0" python dp_gan.py --noise 8 --clip_value 1e-05 --epochs 500 --lr 0.002 --batch_size 1 --prefix 8_1e-05_0.002_ +CUDA_VISIBLE_DEVICES="0" python dp_gan.py --noise 8 --clip_value 0.0001 --epochs 500 --lr 0.002 --batch_size 1 --prefix 8_0.0001_0.002_ +CUDA_VISIBLE_DEVICES="0" python dp_gan.py --noise 8 --clip_value 0.001 --epochs 500 --lr 0.002 --batch_size 1 --prefix 8_0.001_0.002_ diff --git a/priv_calc.py b/priv_calc.py index 49cf19d..0af2379 100644 --- a/priv_calc.py +++ b/priv_calc.py @@ -2,6 +2,7 @@ from privacy_accountant import accountant, utils import argparse import time +import sys import pickle as pkl @@ -15,19 +16,25 @@ def calc_priv(noise, epochs, training_size, batch_size): target_eps = [0.125,0.25,0.5,1,2,4,8] priv_accountant = accountant.GaussianMomentsAccountant(training_size) - print('accum privacy, batches: ' + str(num_batches)) + sys.stderr.write('accum privacy, batches: ' + str(num_batches)) priv_start_time = time.clock() privacy_accum_op = priv_accountant.accumulate_privacy_spending( [None, None], args.noise, batch_size) tf.global_variables_initializer().run() for index in range(num_batches): + if index % 10000 == 0: + sys.stderr.write(str(index)) + pkl.dump(privacy_history, open('./privacy/' + str(noise) + '_' + + str(epochs) + '_' + str(training_size) + '_' + str(batch_size) + + '.p', 'wb')) + with tf.control_dependencies([privacy_accum_op]): spent_eps_deltas = priv_accountant.get_privacy_spent( sess, target_eps=target_eps) privacy_history.append(spent_eps_deltas) sess.run([privacy_accum_op]) - print('priv time: ', time.clock() - priv_start_time) + sys.stderr.write('priv time: ', time.clock() - priv_start_time) if spent_eps_deltas[-3][1] > 0.0001: raise Exception('spent privacy')