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):
30def run_script(scriptName: str, configFile: str):
31    run(f"python {scriptName} --config {configFile}", pty=True)
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)