Commit graph

581 commits

Author SHA1 Message Date
Michael Reneer
7396ad62da Update TensorFlow Privacy to use Python 3 super().
PiperOrigin-RevId: 424916118
2022-01-28 11:26:34 -08:00
Michael Reneer
9050f18b59 Update TensorFlow Privacy to use Python 3 metaclass.
PiperOrigin-RevId: 424773127
2022-01-27 20:32:04 -08:00
Michael Reneer
b0803999ad Add license and missing build targets to __init__.py files in TensorFlow Privacy.
* Added license.
* Removed `.../membership_inference_attack/codelabs/__init__.py`, this code does not look like it needs to be part of the Python package.
* Removed `.../research/pate_2017/__init__.py`, this code does not look like it needs to be part of the Python package.

PiperOrigin-RevId: 424682641
2022-01-27 12:40:23 -08:00
Michael Reneer
c36ce6d799 Normalize mpmath imports in TensorFlow Privacy to be more friendly with strict dependencies and lint.
PiperOrigin-RevId: 424681602
2022-01-27 12:35:43 -08:00
Michael Reneer
81a11eb824 Remove the mock dependency from TensorFlow Privacy, this is now part of the Python standard library.
PiperOrigin-RevId: 424681527
2022-01-27 12:34:59 -08:00
Michael Reneer
a749ce4e30 Remove TensorFlow Privacy __future__ imports.
Note: Exclude changes to the research directory.
PiperOrigin-RevId: 424650953
2022-01-27 10:37:22 -08:00
Michael Reneer
cfb1b881d8 Normalize scipy imports in TensorFlow Privacy to be more friendly with strict dependencies and lint.
PiperOrigin-RevId: 424649853
2022-01-27 10:33:23 -08:00
Michael Reneer
47b439e376 Remove TensorFlow Privacy dependency on six.
Python 2 is not supported, please use Python 3.

PiperOrigin-RevId: 424435761
2022-01-26 13:56:30 -08:00
Michael Reneer
1424cb2418 Rename TensorFlow Privacy Python tests to have the name foo_test.
* Renamed Python test.
* Fixed usage of deprecated `assertRaisesRegexp`.

Python tooling pattern matches on file name, so it is important for tests to end with the suffix "_test" in order to interact with such tooling well.

In this case, these test are getting lint errors they should not and not getting lint errors they should.

PiperOrigin-RevId: 424433864
2022-01-26 13:48:31 -08:00
Michael Reneer
75f88f8120 Sort TensorFlow Privacy requirements and required dependencies.
Sorting alphabetically this can help keep these lists maintained, in sync, and current.

PiperOrigin-RevId: 424433354
2022-01-26 13:46:23 -08:00
Michael Reneer
28dbbbb9e5 Remove TensorFlow Privacy Python lint as directive.
This is now the default behavior.

PiperOrigin-RevId: 424403961
2022-01-26 11:47:14 -08:00
Michael Reneer
b309916927 Fix TensorFlow Privacy g-importing-member lint error.
PiperOrigin-RevId: 424356142
2022-01-26 08:40:57 -08:00
Michael Reneer
4b76e882bc Fix lint errors in dp_optimizer_test.
PiperOrigin-RevId: 424183036
2022-01-25 14:36:57 -08:00
Shuang Song
3a4c4400a6 For MIA in seq2seq model, add support for graph mode, add data information and fix small typo in seq2seq_membership_inference_codelab.ipynb.
PiperOrigin-RevId: 422909904
2022-01-19 14:50:48 -08:00
David Marn
f47200f60d Updates the path for seq2seq codelab colab button.
PiperOrigin-RevId: 421607919
2022-01-13 10:53:33 -08:00
Shuang Song
f301595ba5 Fix a bug in keras_evaluation and its example.
PiperOrigin-RevId: 420787967
2022-01-10 09:58:39 -08:00
Galen Andrew
867f3d4c55 Minor bug in tree aggregation accountant test.
PiperOrigin-RevId: 420145652
2022-01-06 14:32:52 -08:00
Galen Andrew
dd1e6f2d0c Automated rollback of commit 668afa892e
PiperOrigin-RevId: 419910568
2022-01-05 14:13:54 -08:00
Galen Andrew
668afa892e Migrate references to dp_event to Google DP libraries.
PiperOrigin-RevId: 419663382
2022-01-04 13:11:10 -08:00
Shuang Song
8d147bc9d7 For MIA plotting, allow customized plotting function and set equal x and y aspects.
PiperOrigin-RevId: 417852309
2021-12-22 11:08:54 -08:00
Steve Chien
c6576f60c4 Ensure that apply_gradients in dp_optimizer.py is using intended arguments for calls to superclass.
PiperOrigin-RevId: 417654563
2021-12-21 11:06:10 -08:00
Steve Chien
347b99d412 Apply fix to apply_gradients method in vectorized DP Keras optimizer that affected gradient aggregation in multi-replica training.
PiperOrigin-RevId: 417506496
2021-12-20 17:10:39 -08:00
A. Unique TensorFlower
31f110698d Fix of the apply_gradients in Keras DP optimizer.
PiperOrigin-RevId: 417503887
2021-12-20 16:52:50 -08:00
David Marn
03014d0e99 Adds an init file to secret sharer.
PiperOrigin-RevId: 416819054
2021-12-16 08:38:46 -08:00
Zheng Xu
38eface1fd zCDP for tree aggregation.
PiperOrigin-RevId: 416338656
2021-12-14 10:33:04 -08:00
Zheng Xu
8850c23f67 Move tree_aggregation accountant to their own module.
PiperOrigin-RevId: 414770173
2021-12-07 10:48:55 -08:00
Zheng Xu
245fd069ca RDP accounting for tree aggregation without restart. This implements the dynamic programming algorithm detailed in the updated version of "Practical and Private (Deep) Learning without Sampling or Shuffling"
https://arxiv.org/abs/2103.00039.

PiperOrigin-RevId: 414583453
2021-12-06 17:38:48 -08:00
A. Unique TensorFlower
49db04e356 Overwrite the get_config method for dp_optimizer to reflect the actual parameters required(noise_multiplier, l2_norm_clip)
PiperOrigin-RevId: 413520270
2021-12-01 15:06:31 -08:00
Wennan Zhu
290ecf7797 Create a hierarchical histogram IterativeProcess that is compatible with tff.backends.mapreduce.MapReduceForm.
PiperOrigin-RevId: 411845363
2021-11-23 10:38:16 -08:00
David Marn
7c4f5bab09 Allows one to run a test on probabilities alone.
PiperOrigin-RevId: 409095932
2021-11-11 02:17:00 -08:00
Zheng Xu
9757e1bc87 Update the tree aggregation RDP accounting for restarts. This prevents the potential inaccurate usage of the previous implementation for no-restarts.
PiperOrigin-RevId: 406878834
2021-11-01 11:39:49 -07:00
A. Unique TensorFlower
c5cb687507 Allow using gradient tape for gradient calculation in graph mode.
PiperOrigin-RevId: 406217961
2021-10-28 14:26:33 -07:00
Steve Chien
c530356ae9 Add tests for varying number of microbatches in dp_optimizer_test.py.
PiperOrigin-RevId: 404072714
2021-10-18 15:09:07 -07:00
Galen Andrew
977647a3bf Add support for subsampled multi-Gaussian queries (composition of several Gaussian queries that may have different noise multipliers). This is used, for example, by QuantileAdaptiveClipSumQuery.
PiperOrigin-RevId: 402693872
2021-10-12 17:13:25 -07:00
Zheng Xu
98df2fed61 Fix a typo in test comment.
PiperOrigin-RevId: 402327052
2021-10-11 10:04:00 -07:00
Zheng Xu
27bb6e48d9 Time based indicator for restart query.
PiperOrigin-RevId: 401871582
2021-10-08 15:40:57 -07:00
Zheng Xu
7426a4ec30 Update tree aggregation rdp accountant to allow different number of max_participation.
PiperOrigin-RevId: 399510813
2021-09-28 13:04:21 -07:00
Zheng Xu
99c82a49d8 Function to reset tree for tree aggregation based quantile estimation.
PiperOrigin-RevId: 399508765
2021-09-28 12:55:52 -07:00
Galen Andrew
b8b4c4b264 Much more detailed documentation for DpEvent.
The as yet unused `TreeAggregationDpEvent` is removed. It will be added as a custom `DpEvent` alongside the DpQueries in tree_aggregation_query.py in the near future.

PiperOrigin-RevId: 398808647
2021-09-24 13:59:42 -07:00
Galen Andrew
39c75f62af DpEventBuilder tracks the order of events, instead of just maintaining a multiset.
Existing approaches to accounting are generally agnostic to the order of composition, even when the composition is adaptive. But in principle it is possible for an accountant to require such information, so we had better not throw it away.

Note that `ComposedDpEvent` is now treated like any other `DpEvent`, not taken apart and the components added separately as it was. The reason for this is that a common pattern may be to compose a series of `ComposedDpEvent`s that have identical substructure. We want the `DpEventBuilder` to represent this as a single `SelfComposedDpEvent`, not a linearly-growing `ComposedDpEvent`.

PiperOrigin-RevId: 398359519
2021-09-22 16:37:46 -07:00
Galen Andrew
67a7096d52 ComposedDpEvent can be a list of any DpEvent, not only SelfComposedDpEvent. For example there is no reason we shouldn't be able to compose a single GaussianDpEvent and a single LaplaceDpEvent without having to wrap them in SelfComposedDpEvent with count == 1.
PiperOrigin-RevId: 398288473
2021-09-22 11:31:01 -07:00
Zheng Xu
c39d628e16 Change PeriodicRoundRestartIndicator to return the first True at a given number of calls. Also update the code style to be more compatible with graph mode and TFF.
PiperOrigin-RevId: 397918733
2021-09-20 22:38:48 -07:00
Galen Andrew
388f46ffa0 Adds RdpAccountant: implementation of PrivacyAccountant for RDP. Also adds UnsupportedEventError for handling unsupported events by PrivacyAccountant.
PiperOrigin-RevId: 397878895
2021-09-20 17:19:51 -07:00
Zheng Xu
b572707cfc Update reset and pre-process functions for tree aggregation queries. Minor comments update for adaptive clip query tests.
PiperOrigin-RevId: 396483111
2021-09-13 17:48:11 -07:00
Steve Chien
0d05f2eb18 Fix link to API documentation in guide page.
PiperOrigin-RevId: 396006636
2021-09-10 14:22:08 -07:00
A. Unique TensorFlower
7f22cbeb89 Add support of large batch emulation to Tensorflow Privacy Keras optimizer.
PiperOrigin-RevId: 395802081
2021-09-09 15:37:54 -07:00
Zheng Xu
a9764e3e7d TFF: cleanup the TFP query usage in tff.analytics; remove dependency on internal TFP structure.
TFP: remove duplicate TreeRangeSumQuery in `tree_aggregation_query`

PiperOrigin-RevId: 395618363
2021-09-08 21:05:53 -07:00
Zheng Xu
c5f35b3ca1 Try to fix flakiness by reducing the number of query construction.
PiperOrigin-RevId: 395552656
2021-09-08 13:59:15 -07:00
Galen Andrew
06eef51369 New version 0.7.3
PiperOrigin-RevId: 395263672
2021-09-07 09:24:02 -07:00
Zheng Xu
a20cbf9578 RDP for tree aggregation. See "Practical and Private (Deep) Learning without Sampling or Shuffling" https://arxiv.org/abs/2103.00039 for more details. See tests for example usage for calculating epsilon.
PiperOrigin-RevId: 394770205
2021-09-03 15:42:46 -07:00