Closed skeydan closed 4 years ago
I'll write a more detailed plan in the next day or two, but the short answer is that this will specifically be an R version of https://github.com/google/differential-privacy most likely in the form of a Rcpp based wrapper around the existing C++ code.
Interesting, thanks for letting us know! [I guess I was thinking of TensorFlow Privacy when I asked ...]
Anyway this is awesome - I very much think I'd like to write about this on our blog once it's ready!
The goal is to make the functionality of https://github.com/google/differential-privacy available in R while maintaining qualitatively similar performance. It looks like using Rcpp to wrap the C++ implementation will be slightly easier and much better performing than doing a rewrite in R, so thats the approach I'm assuming. 1) The first step is to make it possible to build the C++ project in a way that is available to R. For now I'm planning on requiring the C++ project to be build separately from the R package ala MXNet since this seems like the fastest path to a MVP. However, making it possible to run the R package with additional installs is a major future goal, as I expect being able to just do a standard install.packages call and be done with it to increase end user adoption. 2) The second step is to set up a package in the standard R format expected by CRAN (see writing R extensions) that includes the necessary configuration for using Rcpp, this is a pretty minor task since devtools will basically do both of these for us, at the same time. 3) Actually wrap the all of the public facing functions. Luckily Rcpp makes this pretty easy once everything else is set up. 4) Test everything on multiple platforms. 5) Port the vignettes/examples and documentation. 6) Release, both here on Github and preferably on CRAN as well.
Sounds great! Let us know if there's anything we can do to help. :-)
Hey,
we came across this and can't help being curious :-)) Sorry!
Would you mind telling us how you plan to implement this? For context, I wrote about differential privacy (TF Privacy) from R on the RStudio AI blog in december ... (https://blogs.rstudio.com/ai/posts/2019-12-20-differential-privacy/)
There, I'm using the "usual" R tensorflow wrapper, accessing the TFP-specific operations (optimizers, basically) using a convenient R package []() that lets us import Python modules and use them directly in integration with R.
In principle, it would be a low-effort thing to create an R package for TFP that uses the existing R packages
keras
andtensorflow
, but adds the TFP-specific optimizers. (We do this all the time for libraries building on TF, like TensorFlow Probability.)The same would in principle go for TensorFlow Federated, although (from what I saw writing https://blogs.rstudio.com/ai/posts/2020-04-08-tf-federated-intro/) it could get tricky (but not impossible) once on arrives at the really low-level parts.
If you'd like to discuss, I'm also on the OpenMined Slack (wrote about Syft recently: https://blogs.rstudio.com/ai/posts/2020_04_29_encrypted_keras_with_syft/, and more is being planned) :-)
@iamtrask