Skip to content

VERIFL: Communication-Efficient and Fast Verifiable Aggregation for Federated Learning

Notifications You must be signed in to change notification settings

yujingyue9166/VeriFL

 
 

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

2 Commits
 
 
 
 
 
 

Repository files navigation

VeriFL

Preface

This repository provides two IntelliJ IDEA projects for VeriFL. The project Client involves the Android benchmark for clients participating in VeriFL protocol. The project Server involves the benchmark of the whole VeriFL protocol (see Server/src/java/com/va/server/Main.java and Server/src/java/com/va/server/SimAggregationServer.java for detail).

Requirements

  • OS: Ubuntu 16.04 LTS
  • IDE: IntelliJ IDEA Community Edition 2019.1.3
  • GCC, G++: version 7.4.0
  • JAVA: 1.8.0_211
  • Cmake: version 3.15.3

To Benchmark VeriFL

To run the VeriFL benchmark program in Server folder, download this repository and run the following commands in shell.

cd Server/src/cpp/build
cmake .. && make
cd ../../..

The parameters required to run the benchmark are listed as follows.

Parameters Description
-logR Set the bit length of the modulus R for the quotient ring Z_R
-d Set the dimension of gradient vectors
-N Set the number of clients
-t Set the threshold of secret sharing
-batch Set the batch size in amortization verification
-maskedColl Set dropouts in the MaskedInputCollection round (e.g., 0,10,2,30 represents there are 10 dropouts in the 0-th epoch and 30 dropouts in the 2-th epoch)
-decom Set the number of clients that drop out in the Decommitting round

For example, in Server/ directory, run

java -Xmx8192m -Xms8192m -Xss8192m -jar Server.jar -logR 24 -d 10000 -N 100 -t 25 -batch 1 -maskedColl 0,0 -decom 0

Note that our simulation requires a large amount of memory and the heap size should be large enough.

About

VERIFL: Communication-Efficient and Fast Verifiable Aggregation for Federated Learning

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages

  • C 67.3%
  • HTML 25.8%
  • Makefile 2.4%
  • C++ 2.0%
  • Java 1.6%
  • CMake 0.6%
  • Other 0.3%