Nvidia recently released its Federated Learning Application Runtime Environment, NVFlare to help developers easily bring federated learning to production. It includes machine learning algorithms easily adapted to FL and the ability to add privacy preserving measures such as differential privacy or homomorphic encryption. One of the particularly exciting portions of this product is the FL Simulator, which allows developers to test federated learning applications thoroughly prior to deployment. When the application is ready for deployment, Nvidia has provided developers with best practices, guidelines and answers to frequently asked questions to really help move federated learning from research to production.
Nvidia has included several examples with Flare to help developers become comfortable with the product and excitingly, in several of the examples, has used OpenMined’s PSI library. The PSI library implements private set intersection protocol. This protocol is used when two parties each have a dataset and they want to know the intersection, or overlap, in the two datasets. Each party encrypts their data with their own secret key and sends it to the other. The server will then re-encrypt the data received from the requester with the server secret key and return it to the requester. The requester will use their secret key to decrypt this double encrypted set of data and compare it to the original set of data sent by the server. If it is both in the original set sent from the server and the set that had been encrypted twice and un-encrypted once, then it is in both of the datasets. The documentation in the OpenMined PSI library and the NVFlare PSI email matching example explains the details of this much more completely. The Flare PSI operator is developed using the OpenMined PSI library and expands it for multi-party use.
The PSI library is used both in Flare’s PSI example mentioned above and the split learning example using Cifar 10 where one client holds the images of the dataset and the other holds the labels with both parties passing activations and gradients between each other. This example uses the PSI library to check the intersection of the dataset from each client prior to running the experiments.