What is this repository for?
- [ICDE'24] PP-Stream: Toward High-Performance Privacy-Preserving Neural Network Inference via Distributed Stream Processing
Dependencies
How to run it?
Step 1: code preparation
- source code
modelprovider/afstream-0.2.0/apps/paillier_worker/dataprovider/afstream-0.2.0/apps/paillier_worker/dataprovider/SP
- configuration files
modelprovider/afstream-0.2.0/conf/paillier_worker/paillier_worker.inidataprovider/afstream-0.2.0/conf/paillier_worker/paillier_worker.ini
- key files
publicdata/paillier_pub_key.txtpublicdata/paillier_priv_key.txt
Step 2: build and compile executable files
cd modelprovider/afstream-0.2.0/apps/paillier_worker make cd dataprovider/afstream-0.2.0/apps/paillier_worker make cd dataprovider/SP make
Step 3: execute
# In modelprovider/afstream-0.2.0/apps/paillier_worker/: # In terminal 1: ./conv_cm_worker ../../conf/paillier_worker/paillier_worker.ini CONV_CM_Worker1 0 # In terminal 2: ./fc2_cm_worker ../../conf/paillier_worker/paillier_worker.ini FC2_CM_Worker1 0 # Interminal 3: ./fc3_cm_worker ../../conf/paillier_worker/paillier_worker.ini FC3_CM_Worker1 0 # In dataprovider/afstream-0.2.0/apps/paillier_worker/: # In terminal 4: ./relu_cm_worker ../../conf/paillier_worker/paillier_worker.ini ReLU_CM_Worker1 0 # In terminal 5: ./relu_merge_worker ../../conf/paillier_worker/paillier_worker.ini ReLU_Merge_Worker1 0 # In terminal 6: ./relu_cm_worker ../../conf/paillier_worker/paillier_worker.ini ReLU2_CM_Worker1 0 # In terminal 7: ./relu_merge_worker ../../conf/paillier_worker/paillier_worker.ini ReLU2_Merge_Worker1 0 # In terminal 8: ./fc3_merge_worker ../../conf/paillier_worker/paillier_worker.ini FC3_Merge_Worker1 0 In dataprovider/SP (send encrypted tensor to model provider): # In terminal 9: ./service_provider1
Acknowledgement
- Thank Boyang Xia for his contributions and comments to the early version of this project.