This repository contains scripts and instructions for reproducing the experiments in our arXiv '21 paper FLASHE.
FLASHE is integrated as a pluggable module in FATE v1.2.0, an open-source industrial platform crafted by WeBank for cross-silo federated learning.
You may want to use commands like git diff
to see what have been changed since the fork (i.e., the first commit).
The output of the experiment will validate the following major claims in our background part (section 2 in paper) and evaluation part (section 6 in paper):
- FLASHE outperforms batching versions of the three baselines by 3.2×-15.1× in iteration time and 2.1×-42.4× in network footprint. Compared to plaintext training, FLASHE achieves near-optimality efficiency with overhead ≤6% and 0% in traffic (§6.2) —> Figure 7 and 8.
- FLASHE brings down at least 13×-63× of the computation overhead and 48× of the communication overhead of general HEs when sparsification is employed (§6.4) —> Figure 10 and 11.
- FLASHE's mask precomputation effectively eliminates the cryptographic overhead (rendering it < 0.1s) (§6.6) —> Figure 13.
- The enormous performance of general HE schemes like Paillier, FV, and CKKS raises significant efficiency and scalability concerns. Even with the aid of batch encryption, the message inflation factor remains suboptimal (§2.2 and §2.3) —> Table 2.
- FLASHE exhibits near-optimality when it comes to economic cost (≤5%). Compared with batching versions of the baselines, the savings are significant (up to 73%-94%) (§6.3) —> Figure 9 and Table 4.
- FLASHE's double masking scheme achieves optimal latency when the client dropout is mild (§6.5) —> Figure 12.
Please go to ./deployment
directory and follow the deployment README to run related scripts.
Please go to ./simulation
directory and follow the simulation README to run related scripts.
Repo Root
|---- arch # (FATE internal)
|---- cluster-deploy # (FATE internal)
|---- examples # Example datasets and configurations of FLASHE
|---- deployment # Procedures for deploying and evaluating FLASHE
|---- fate_flow # (FATE internal)
|---- federatedml # (FATE internal)
|---- simulation # Procedures related to simulation in FLASHE
|---- utils # Tools helpful for playing with FATE/FLASHE
|---- eggroll # (FATE generated)
|---- fate-flow # (FATE generated)
Please consider to cite our paper if you use the code or data in your research project.
@inproceedings{FLASHE-arxiv21,
title={FLASHE: Additively Symmetric Homomorphic Encryption for Cross-Silo Federated Learning},
author={Zhifeng Jiang and Wei Wang and Yang Liu},
booktitle={arXiv:2109.00675},
year={2021}
}
Thanks to Chengliang Zhang and Junzhe Xia for their engineering advice regarding FATE. Thanks to Minchen Yu for his suggestions on development automation.
Zhifeng Jiang ([email protected])