Adding parallelizing script and a dummy config generator
This commit is contained in:
parent
c010e08e9b
commit
1e8cc292e1
|
@ -0,0 +1,74 @@
|
|||
import os
|
||||
|
||||
from explaining_framework.utils.io import write_yaml
|
||||
from torch_geometric.data.makedirs import makedirs
|
||||
|
||||
|
||||
def divide_chunks(l, n):
|
||||
for i in range(0, len(l), n):
|
||||
yield l[i : i + n]
|
||||
|
||||
|
||||
if "__main__" == __name__:
|
||||
config_folder = os.path.abspath(
|
||||
os.path.join(os.path.dirname(__name__), "../../", "configs")
|
||||
)
|
||||
makedirs(config_folder)
|
||||
explaining_folder = os.path.join(config_folder, "explaining")
|
||||
makedirs(explaining_folder)
|
||||
explainer_folder = os.path.join(config_folder, "explaining")
|
||||
makedirs(explainer_folder)
|
||||
|
||||
DATASET = ["CIFAR10"]
|
||||
EXPLAINER = [
|
||||
"CAM",
|
||||
"GradCAM",
|
||||
"GNN_LRP",
|
||||
"GradExplainer",
|
||||
"GuidedBackPropagation",
|
||||
"IntegratedGradients",
|
||||
"PGExplainer",
|
||||
"PGMExplainer",
|
||||
"RandomExplainer",
|
||||
"SubgraphX",
|
||||
"GraphMASK",
|
||||
"GNNExplainer",
|
||||
"EIXGNN",
|
||||
"SCGNN",
|
||||
]
|
||||
|
||||
for dataset_name in DATASET:
|
||||
for chunk in divide_chunks(list(range(10000)), 500):
|
||||
for model_kind in ["best", "worst"]:
|
||||
for explainer_name in EXPLAINER:
|
||||
explaining_cfg = {}
|
||||
|
||||
# explaining_cfg['adjust']['strategy']= 'rpns'
|
||||
# explaining_cfg['attack']['name']= 'all'
|
||||
explaining_cfg[
|
||||
"cfg_dest"
|
||||
] = f"dataset={dataset_name}-model={model_kind}=explainer={explainer_name}-chunk=[{chunk[0]},{chunk[-1]}]"
|
||||
explaining_cfg["dataset"] = {}
|
||||
explaining_cfg["dataset"]["name"] = dataset_name
|
||||
explaining_cfg["dataset"]["item"] = chunk
|
||||
# explaining_cfg['explainer']['cfg']= 'default'
|
||||
explaining_cfg["explainer"] = {}
|
||||
explaining_cfg["explainer"]["name"] = explainer_name
|
||||
explaining_cfg["explanation_type"] = "phenomenon"
|
||||
# explaining_cfg['metrics']['accuracy']['name']='all'
|
||||
# explaining_cfg['metrics']['fidelity']['name']='all'
|
||||
# explaining_cfg['metrics']['sparsity']['name']='all'
|
||||
explaining_cfg["model"] = {}
|
||||
explaining_cfg["model"]["ckpt"] = model_kind
|
||||
explaining_cfg["model"][
|
||||
"path"
|
||||
] = "/home/SIC/araison/test_ggym/pytorch_geometric/graphgym/results"
|
||||
# explaining_cfg['out_dir']='./explanation'
|
||||
# explaining_cfg['print']='both'
|
||||
# explaining_cfg['threshold']['config']['type']='all'
|
||||
# explaining_cfg['threshold']['value']['hard']=[0.1, 0.2, 0.3, 0.4, 0.5, 0.6, 0.7, 0.8, 0.9]
|
||||
# explaining_cfg['threshold']['value']['topk']=[2, 3, 5, 10, 20, 30, 50]
|
||||
write_yaml(
|
||||
explaining_cfg,
|
||||
explaining_folder + "/" + explaining_cfg["cfg_dest"] + ".yaml",
|
||||
)
|
|
@ -0,0 +1,22 @@
|
|||
CONFIG_DIR=$1
|
||||
MAX_JOBS=${3:-3}
|
||||
SLEEP=${4:-1}
|
||||
MAIN=${5:-main}
|
||||
GPU=${6:-0}
|
||||
|
||||
(
|
||||
trap 'kill 0' SIGINT
|
||||
CUR_JOBS=0
|
||||
for CONFIG in "$CONFIG_DIR"/*.yaml; do
|
||||
if [ "$CONFIG" != "$CONFIG_DIR/*.yaml" ]; then
|
||||
((CUR_JOBS >= MAX_JOBS)) && wait -n
|
||||
export CUDA_VISIBLE_DEVICES=$GPU
|
||||
python3 $MAIN.py --explaining_cfg $CONFIG &
|
||||
echo $CONFIG
|
||||
sleep $SLEEP
|
||||
((++CUR_JOBS))
|
||||
fi
|
||||
done
|
||||
|
||||
wait
|
||||
)
|
Loading…
Reference in New Issue