main
1from os import environ 2import argparse 3from typing import Dict 4 5from invoke import run 6 7import configuration as con 8import attack_model as am 9import attack_data as ad 10 11# Tensorflow C++ backend logging verbosity 12environ["TF_CPP_MIN_LOG_LEVEL"] = "2" # NOQA 13 14 15def parse_args() -> Dict: 16 parser = argparse.ArgumentParser(description='Launch a membership inference attack pipeline') 17 parser.add_argument('--config', help='Relative path to config file.',) 18 parser.add_argument( 19 '--prepare', 20 action="store_true", 21 help="Prepare all data and train models to launch the attack.") 22 parser.add_argument( 23 '--evaluate', 24 action="store_true", 25 help="Evaluate attack accuracy by loading models and data from disk.") 26 return vars(parser.parse_args()) 27 28 29def run_script(scriptName: str, configFile: str): 30 run(f"python {scriptName} --config {configFile}", pty=True) 31 32 33def prepare(configFile: str): 34 35 run_script(f"download.py", configFile) 36 run_script(f"datasets.py", configFile) 37 run_script(f"target_models.py", configFile) 38 run_script(f"shadow_data.py", configFile) 39 run_script(f"shadow_models.py", configFile) 40 run_script(f"attack_data.py", configFile) 41 run_script(f"attack_model.py", configFile) 42 run_script(f"attack_pipeline.py", configFile) 43 44if __name__ == "__main__": 45 options = parse_args() 46 configFileName = options["config"] 47 prepare(configFileName)
def
parse_args() -> Dict:
16def parse_args() -> Dict: 17 parser = argparse.ArgumentParser(description='Launch a membership inference attack pipeline') 18 parser.add_argument('--config', help='Relative path to config file.',) 19 parser.add_argument( 20 '--prepare', 21 action="store_true", 22 help="Prepare all data and train models to launch the attack.") 23 parser.add_argument( 24 '--evaluate', 25 action="store_true", 26 help="Evaluate attack accuracy by loading models and data from disk.") 27 return vars(parser.parse_args())
def
run_script(scriptName: str, configFile: str):
def
prepare(configFile: str):
34def prepare(configFile: str): 35 36 run_script(f"download.py", configFile) 37 run_script(f"datasets.py", configFile) 38 run_script(f"target_models.py", configFile) 39 run_script(f"shadow_data.py", configFile) 40 run_script(f"shadow_models.py", configFile) 41 run_script(f"attack_data.py", configFile) 42 run_script(f"attack_model.py", configFile) 43 run_script(f"attack_pipeline.py", configFile)